From d876a923b9d14410b4d8b860239ea4462dd6243a Mon Sep 17 00:00:00 2001 From: Mr Extremez Date: Mon, 25 Nov 2019 11:08:56 -0600 Subject: [PATCH] Cleanup part 1 (#213) * Clean up part 1 - Removed lots of dead code - Removed unncessary files not in use - Cleaned up small bits of code - Removed a few warnings - Server.java ---> GameEngine.java - Constants.java ---> GameConstants.java * Cape Dye Rewrote cape dying * Packaging - redone ----> com.rebotted * PacketSender/clean up - ActionSender ---> PacketSender - Moved many more packets to packetsender - Cleaned up more dead code * Merge Client/Player - Merged Client.java with Player.java (both were doing same thing so redundant to have both) - Removed some more dead code - Tidy a few small things up * Quests/more clean up - Removed more dead code - Made quests static in order to clean them up a bit * More cleanup - Removed some more of the dead quest code - Correcting naming of some of the shop variables --- .../{redone => com/rebotted}/Connection.java | 633 +- .../rebotted/GameConstants.java} | 381 +- .../rebotted/GameEngine.java} | 416 +- .../rebotted}/event/CycleEvent.java | 44 +- .../rebotted}/event/CycleEventContainer.java | 274 +- .../rebotted}/event/CycleEventHandler.java | 284 +- .../rebotted}/game/bots/Bot.java | 16 +- .../rebotted}/game/bots/BotConstants.java | 2 +- .../rebotted}/game/bots/BotHandler.java | 44 +- .../rebotted}/game/content/BankPin.java | 699 +- .../rebotted}/game/content/EmoteHandler.java | 141 +- .../game/content/combat/CombatAssistant.java | 4760 +++-- .../game/content/combat/Specials.java | 801 +- .../content/combat/magic/CastOnOther.java | 167 +- .../combat/magic/CastRequirements.java | 122 +- .../game/content/combat/magic/Enchanting.java | 497 +- .../game/content/combat/magic/MagicData.java | 776 +- .../content/combat/magic/MagicMaxHit.java | 76 +- .../combat/magic/MagicRequirements.java | 350 +- .../content/combat/magic/MagicSpells.java | 277 +- .../content/combat/magic/MagicTeleports.java | 848 +- .../content/combat/magic/NonCombatSpells.java | 46 +- .../game/content/combat/melee/MeleeData.java | 926 +- .../content/combat/melee/MeleeMaxHit.java | 104 +- .../content/combat/melee/PlayerKilling.java | 142 +- .../content/combat/npcs/NpcAggressive.java | 62 +- .../game/content/combat/npcs/NpcCombat.java | 1359 +- .../game/content/combat/npcs/NpcEmotes.java | 362 +- .../combat/prayer/ActivatePrayers.java | 287 + .../content/combat/prayer/PrayerData.java | 144 +- .../content/combat/prayer/PrayerDrain.java | 49 + .../content/combat/range/DwarfCannon.java | 1035 +- .../game/content/combat/range/RangeData.java | 740 +- .../content/combat/range/RangeMaxHit.java | 202 +- .../game/content/consumables/Beverages.java | 433 +- .../game/content/consumables/Food.java | 508 +- .../game/content/consumables/Kebabs.java | 272 +- .../game/content/consumables/Potions.java | 946 +- .../rebotted/game/content/guilds/Guilds.java | 186 + .../content/guilds/impl/RangersGuild.java | 361 + .../game/content/minigames/Barrows.java | 560 +- .../game/content/minigames/Dueling.java | 1707 +- .../game/content/minigames/FightCaves.java | 831 +- .../game/content/minigames/FightPits.java | 468 +- .../game/content/minigames/MageArena.java | 534 +- .../game/content/minigames/PestControl.java | 891 +- .../content/minigames/TreasureTrails.java | 836 +- .../castlewars/CastleWarObjects.java | 280 + .../minigames/castlewars/CastleWars.java | 1685 +- .../minigames/trawler/GroupMinigame.java | 16 +- .../content/minigames/trawler/Trawler.java | 1750 +- .../minigames/trawler/TrawlerWaitingRoom.java | 170 +- .../minigames/trawler/WaitingRoom.java | 223 +- .../rebotted}/game/content/music/Music.java | 418 +- .../game/content/music/PlayList.java | 451 +- .../content/music/sound/CombatSounds.java | 818 +- .../game/content/music/sound/SoundList.java | 222 +- .../game/content/quests/QuestAssistant.java | 654 +- .../game/content/quests/QuestRewards.java | 163 + .../quests/impl/BlackKnightsFortress.java | 44 + .../content/quests/impl/CooksAssistant.java | 62 + .../game/content/quests/impl/DoricsQuest.java | 72 + .../content/quests/impl/GertrudesCat.java | 92 + .../game/content/quests/impl/ImpCatcher.java | 46 + .../content/quests/impl/KnightsSword.java | 193 + .../content/quests/impl/PiratesTreasure.java | 100 + .../content/quests/impl/RestlessGhost.java | 70 + .../game/content/quests/impl/RomeoJuliet.java | 355 + .../content/quests/impl/RuneMysteries.java | 65 + .../content/quests/impl/SheepShearer.java | 54 + .../game/content/quests/impl/ShieldArrav.java | 33 +- .../content/quests/impl/VampyreSlayer.java | 145 +- .../content/quests/impl/WitchsPotion.java | 54 + .../game/content/random/Balloons.java | 107 +- .../game/content/random/HolidayDrops.java | 128 +- .../game/content/random/Holidays.java | 180 +- .../game/content/random/PartyRoom.java | 470 +- .../content/randomevents/EvilChicken.java | 27 + .../content/randomevents/FreakyForester.java | 142 +- .../game/content/randomevents/Frog.java | 100 +- .../game/content/randomevents/GenieLamp.java | 210 +- .../randomevents/RandomEventHandler.java | 80 + .../game/content/randomevents/RiverTroll.java | 28 + .../game/content/randomevents/RockGolem.java | 60 +- .../content/randomevents/SandwhichLady.java | 320 +- .../game/content/randomevents/Shade.java | 35 + .../game/content/randomevents/Swarm.java | 130 +- .../game/content/randomevents/TreeSpirit.java | 35 + .../game/content/randomevents/Zombie.java | 54 +- .../rebotted}/game/content/skills/Menus.java | 22 +- .../game/content/skills/SkillHandler.java | 187 + .../game/content/skills/SkillInterfaces.java | 4822 ++--- .../game/content/skills/SkillMenu.java | 224 +- .../game/content/skills/agility/Agility.java | 1390 +- .../skills/agility/AgilityShortcut.java | 252 + .../skills/agility/ApeAtollAgility.java | 350 +- .../skills/agility/BarbarianAgility.java | 308 +- .../content/skills/agility/GnomeAgility.java | 250 +- .../skills/agility/PyramidAgility.java | 722 +- .../skills/agility/WerewolfAgility.java | 376 +- .../skills/agility/WildernessAgility.java | 238 +- .../game/content/skills/cooking/Cooking.java | 619 +- .../skills/cooking/CookingTutorialIsland.java | 366 +- .../game/content/skills/cooking/Potatoes.java | 235 +- .../game/content/skills/core/Fishing.java | 1103 +- .../game/content/skills/core/Mining.java | 122 +- .../game/content/skills/core/Prayer.java | 194 +- .../game/content/skills/core/Woodcutting.java | 817 +- .../content/skills/crafting/CraftingData.java | 734 +- .../content/skills/crafting/GemCutting.java | 76 + .../content/skills/crafting/GlassBlowing.java | 33 +- .../skills/crafting/JewelryMaking.java | 388 +- .../skills/crafting/LeatherMaking.java | 379 +- .../game/content/skills/crafting/Pottery.java | 190 + .../content/skills/crafting/SoftClay.java | 52 + .../content/skills/crafting/Spinning.java | 158 +- .../game/content/skills/crafting/Tanning.java | 64 + .../content/skills/farming/Allotments.java | 50 +- .../game/content/skills/farming/Farming.java | 50 +- .../skills/farming/FarmingConstants.java | 2 +- .../game/content/skills/farming/Flowers.java | 48 +- .../game/content/skills/farming/Herbs.java | 24 + .../game/content/skills/farming/Patch.java | 22 +- .../content/skills/firemaking/Firemaking.java | 326 +- .../content/skills/firemaking/LogData.java | 66 +- .../content/skills/fletching/ArrowMaking.java | 316 +- .../content/skills/fletching/LogCutting.java | 895 +- .../skills/fletching/LogCuttingInterface.java | 84 + .../content/skills/fletching/Stringing.java | 230 +- .../skills/herblore/GrindingAction.java | 46 + .../content/skills/herblore/Herblore.java | 379 +- .../skills/runecrafting/AbyssalHandler.java | 52 + .../runecrafting/RuneCraftingActions.java | 221 + .../skills/runecrafting/Runecrafting.java | 390 +- .../game/content/skills/slayer/Slayer.java | 1169 +- .../skills/slayer/SlayerRequirements.java | 82 + .../skills/smithing/SilverCrafting.java | 296 +- .../content/skills/smithing/Smelting.java | 672 +- .../content/skills/smithing/Smithing.java | 1756 +- .../skills/smithing/SmithingInterface.java | 679 + .../content/skills/smithing/Superheat.java | 73 + .../content/skills/thieving/Pickpocket.java | 527 +- .../game/content/skills/thieving/Stalls.java | 437 +- .../content/skills/thieving/ThieveOther.java | 172 +- .../game/content/traveling/Desert.java | 270 +- .../game/content/traveling/GnomeGlider.java | 176 +- .../game/content/traveling/Sailing.java | 151 + .../rebotted}/game/dialogues/Dialogue.java | 40 +- .../game/dialogues/DialogueHandler.java | 14656 ++++++++-------- .../game/globalworldobjects/ClimbOther.java | 112 +- .../game/globalworldobjects/Doors.java | 550 +- .../game/globalworldobjects/DoubleDoors.java | 774 +- .../game/globalworldobjects/DoubleGates.java | 360 +- .../game/globalworldobjects/GateHandler.java | 390 +- .../game/globalworldobjects/PassDoor.java | 114 + .../game/globalworldobjects/SingleGates.java | 46 +- .../src/com/rebotted/game/items/GameItem.java | 16 + .../rebotted}/game/items/GroundItem.java | 88 +- .../rebotted}/game/items/Item.java | 40 +- .../rebotted}/game/items/ItemAssistant.java | 5475 +++--- .../rebotted}/game/items/ItemDefinitions.java | 686 +- .../rebotted}/game/items/ItemList.java | 32 +- .../src/com/rebotted/game/items/UseItem.java | 377 + .../rebotted/game/items}/Weight.java | 162 +- .../com/rebotted/game/items/impl/CapeDye.java | 76 + .../game/items/impl/ExperienceLamp.java | 162 + .../rebotted}/game/items/impl/Fillables.java | 229 +- .../rebotted}/game/items/impl/Flowers.java | 369 +- .../game/items/impl/HandleEmpty.java | 105 +- .../game/items/impl/LightSources.java | 84 + .../game/items/impl/PotionMixing.java | 198 +- .../game/items/impl/RareProtection.java | 75 + .../rebotted}/game/items/impl/Teles.java | 112 +- .../game/items/impl/WeaponPoison.java | 297 +- .../rebotted}/game/npcs/NPCDefinition.java | 4 +- .../rebotted}/game/npcs/Npc.java | 929 +- .../rebotted}/game/npcs/NpcActions.java | 2441 ++- .../rebotted}/game/npcs/NpcData.java | 942 +- .../rebotted}/game/npcs/NpcHandler.java | 2833 ++- .../rebotted}/game/npcs/NpcList.java | 26 +- .../rebotted}/game/npcs/NpcSize.java | 286 +- .../rebotted}/game/npcs/drops/ItemDrop.java | 4 +- .../rebotted}/game/npcs/drops/NPCDrops.java | 4650 ++--- .../game/npcs/drops/NPCDropsHandler.java | 500 +- .../com/rebotted/game/npcs/impl/MilkCow.java | 50 + .../rebotted}/game/npcs/impl/Pets.java | 181 +- .../rebotted}/game/objects/Object.java | 68 +- .../game/objects/ObjectDefaults.java | 122 +- .../rebotted}/game/objects/Objects.java | 167 +- .../game/objects/ObjectsActions.java | 5756 +++--- .../rebotted/game/objects/impl/AxeInLog.java | 19 + .../game/objects/impl/BrimhavenVines.java | 61 + .../rebotted}/game/objects/impl/Climbing.java | 1569 +- .../game/objects/impl/CrystalChest.java | 150 +- .../game/objects/impl/FlourMill.java | 232 +- .../rebotted}/game/objects/impl/Levers.java | 106 +- .../game/objects/impl/OtherObjects.java | 300 +- .../rebotted}/game/objects/impl/Pickable.java | 134 +- .../game/objects/impl/Searching.java | 84 +- .../game/objects/impl/SpecialObjects.java | 238 +- .../rebotted/game/objects/impl/UseOther.java | 30 + .../com/rebotted/game/objects/impl/Webs.java | 40 + .../src/com/rebotted/game/players/Client.java | 30 + .../game/players/HighscoresHandler.java | 134 +- .../rebotted}/game/players/Location.java | 40 +- .../rebotted}/game/players/Player.java | 5337 +++--- .../rebotted}/game/players/PlayerAction.java | 76 +- .../game/players/PlayerAssistant.java | 6282 +++---- .../rebotted}/game/players/PlayerHandler.java | 813 +- .../rebotted}/game/players/PlayerSave.java | 1707 +- .../com/rebotted/game/players/Position.java | 37 + .../rebotted}/game/players/Trading.java | 1111 +- .../game/players/antimacro/AntiSpam.java | 74 +- .../rebotted}/game/shops/ShopAssistant.java | 1203 +- .../com/rebotted/game/shops/ShopHandler.java | 248 + .../rebotted}/game/shops/Shops.java | 206 +- .../integrations/PlayersOnlineWebsite.java | 6 +- .../integrations/RegisteredAccsWebsite.java | 4 +- .../integrations/SettingsLoader.java | 9 +- .../integrations/discord/DiscordActivity.java | 4 +- .../integrations/discord/JavaCord.java | 7 +- .../discord/commands/Commands.java | 2 +- .../integrations/discord/commands/Forum.java | 2 +- .../discord/commands/HeatMap.java | 2 +- .../discord/commands/Hiscores.java | 2 +- .../integrations/discord/commands/Issues.java | 2 +- .../integrations/discord/commands/Online.java | 5 +- .../discord/commands/Players.java | 5 +- .../integrations/discord/commands/Vote.java | 2 +- .../discord/commands/Website.java | 2 +- .../rebotted}/net/CodecFactory.java | 80 +- .../rebotted}/net/ConnectionHandler.java | 126 +- .../net/ConnectionThrottleFilter.java | 264 +- .../rebotted}/net/GameCodecFactory.java | 92 +- .../rebotted}/net/HostList.java | 114 +- .../{redone => com/rebotted}/net/Packet.java | 608 +- .../rebotted}/net/PacketBuffer.java | 208 +- .../rebotted}/net/PacketBuilder.java | 20 +- .../rebotted/net/PacketSender.java} | 1676 +- .../net/RS2LoginProtocolDecoder.java | 602 +- .../rebotted}/net/RS2ProtocolDecoder.java | 290 +- .../rebotted}/net/RS2ProtocolEncoder.java | 164 +- .../rebotted}/net/StaticPacketBuilder.java | 770 +- .../rebotted}/net/packets/PacketHandler.java | 351 +- .../com/rebotted/net/packets/PacketType.java | 8 + .../net/packets/impl/AttackPlayer.java | 609 +- .../rebotted}/net/packets/impl/Bank10.java | 198 +- .../rebotted}/net/packets/impl/Bank5.java | 194 +- .../rebotted}/net/packets/impl/BankAll.java | 287 +- .../rebotted}/net/packets/impl/BankX1.java | 72 +- .../rebotted}/net/packets/impl/BankX2.java | 148 +- .../net/packets/impl/ChallengePlayer.java | 30 + .../net/packets/impl/ChangeAppearance.java | 181 +- .../net/packets/impl/ChangeRegions.java | 35 + .../rebotted}/net/packets/impl/Chat.java | 63 +- .../rebotted}/net/packets/impl/ClickItem.java | 599 +- .../rebotted}/net/packets/impl/ClickNPC.java | 728 +- .../net/packets/impl/ClickObject.java | 489 + .../rebotted}/net/packets/impl/ClickTab.java | 298 +- .../net/packets/impl/ClickingButtons.java | 5255 +++--- .../net/packets/impl/ClickingInGame.java | 16 + .../net/packets/impl/ClickingStuff.java | 108 +- .../rebotted}/net/packets/impl/Commands.java | 1488 +- .../rebotted}/net/packets/impl/DropItem.java | 733 +- .../net/packets/impl/FollowPlayer.java | 24 + .../rebotted/net/packets/impl/IdleLogout.java | 19 + .../net/packets/impl/ItemClick2.java | 69 +- .../packets/impl/ItemClick2OnGroundItem.java | 57 +- .../net/packets/impl/ItemClick3.java | 180 +- .../net/packets/impl/ItemOnGroundItem.java | 92 +- .../net/packets/impl/ItemOnItem.java | 44 +- .../rebotted}/net/packets/impl/ItemOnNpc.java | 119 +- .../net/packets/impl/ItemOnObject.java | 438 +- .../net/packets/impl/ItemOnPlayer.java | 108 +- .../net/packets/impl/MagicOnFloorItems.java | 229 +- .../net/packets/impl/MagicOnItems.java | 55 +- .../rebotted}/net/packets/impl/MoveItems.java | 66 +- .../net/packets/impl/PickupItem.java | 201 +- .../net/packets/impl/PrivateMessaging.java | 316 +- .../net/packets/impl/RemoveItem.java | 200 +- .../com/rebotted/net/packets/impl/Report.java | 17 + .../net/packets/impl/ReportHandler.java | 383 +- .../net/packets/impl/SilentPacket.java | 15 + .../rebotted}/net/packets/impl/Trade.java | 78 +- .../rebotted}/net/packets/impl/Walking.java | 419 +- .../rebotted}/net/packets/impl/WearItem.java | 131 +- .../rebotted}/net/rsa/RSAKeyGen.java | 114 +- .../{redone => com/rebotted}/net/rsa/rsapriv | 6 +- .../{redone => com/rebotted}/net/rsa/rsapub | 6 +- .../rebotted}/util/GameLogger.java | 224 +- .../rebotted}/util/HostBlacklist.java | 72 +- .../rebotted}/util/ISAACRandomGen.java | 350 +- .../{redone => com/rebotted}/util/Misc.java | 640 +- .../{redone => com/rebotted}/util/Stream.java | 838 +- .../rebotted}/util/XStreamUtil.java | 6 +- .../rebotted}/world/GameObject.java | 76 +- .../rebotted}/world/GlobalDropsHandler.java | 731 +- .../rebotted}/world/ItemHandler.java | 72 +- .../rebotted}/world/ObjectHandler.java | 696 +- .../rebotted}/world/ObjectManager.java | 574 +- .../{redone => com/rebotted}/world/Tile.java | 66 +- .../rebotted}/world/TileControl.java | 320 +- .../rebotted}/world/clip/ByteStream.java | 190 +- .../rebotted}/world/clip/ByteStreamExt.java | 204 +- .../rebotted}/world/clip/MemoryArchive.java | 70 +- .../rebotted}/world/clip/ObjectDef.java | 632 +- .../rebotted}/world/clip/PathFinder.java | 834 +- .../rebotted}/world/clip/Region.java | 1652 +- 2006Redone Server/src/redone/event/Task.java | 180 - .../src/redone/event/TaskScheduler.java | 114 - .../game/content/MemberShipHandler.java | 90 - .../combat/prayer/ActivatePrayers.java | 351 - .../content/combat/prayer/PrayerDrain.java | 49 - .../redone/game/content/guilds/Guilds.java | 186 - .../content/guilds/impl/RangersGuild.java | 363 - .../castlewars/CastleWarObjects.java | 280 - .../game/content/quests/QuestRewards.java | 163 - .../quests/impl/BlackKnightsFortress.java | 57 - .../content/quests/impl/CooksAssistant.java | 68 - .../game/content/quests/impl/DoricsQuest.java | 78 - .../content/quests/impl/GertrudesCat.java | 100 - .../game/content/quests/impl/ImpCatcher.java | 51 - .../content/quests/impl/KnightsSword.java | 193 - .../content/quests/impl/PiratesTreasure.java | 105 - .../content/quests/impl/RestlessGhost.java | 81 - .../game/content/quests/impl/RomeoJuliet.java | 361 - .../content/quests/impl/RuneMysteries.java | 72 - .../content/quests/impl/SheepShearer.java | 62 - .../content/quests/impl/WitchsPotion.java | 61 - .../content/randomevents/EvilChicken.java | 27 - .../randomevents/RandomEventHandler.java | 80 - .../game/content/randomevents/RiverTroll.java | 28 - .../game/content/randomevents/Shade.java | 35 - .../game/content/randomevents/TreeSpirit.java | 35 - .../game/content/skills/SkillHandler.java | 203 - .../skills/agility/AgilityShortcut.java | 251 - .../content/skills/crafting/GemCutting.java | 76 - .../game/content/skills/crafting/Pottery.java | 190 - .../content/skills/crafting/SoftClay.java | 54 - .../game/content/skills/crafting/Tanning.java | 64 - .../game/content/skills/farming/Herbs.java | 24 - .../skills/fletching/LogCuttingInterface.java | 104 - .../skills/herblore/GrindingAction.java | 50 - .../skills/runecrafting/AbyssalHandler.java | 52 - .../runecrafting/RuneCraftingActions.java | 222 - .../skills/slayer/SlayerRequirements.java | 83 - .../skills/smithing/SmithingInterface.java | 679 - .../content/skills/smithing/Superheat.java | 80 - .../game/content/traveling/Sailing.java | 151 - .../game/globalworldobjects/PassDoor.java | 114 - .../src/redone/game/items/GameItem.java | 16 - .../src/redone/game/items/UseItem.java | 379 - .../src/redone/game/items/impl/CapeDye.java | 82 - .../game/items/impl/ExperienceLamp.java | 162 - .../redone/game/items/impl/LightSources.java | 84 - .../game/items/impl/RareProtection.java | 76 - .../src/redone/game/items/impl/Trails.java | 724 - .../src/redone/game/npcs/impl/MilkCow.java | 50 - .../redone/game/objects/impl/AxeInLog.java | 21 - .../game/objects/impl/BrimhavenVines.java | 60 - .../redone/game/objects/impl/UseOther.java | 30 - .../src/redone/game/objects/impl/Webs.java | 41 - .../src/redone/game/players/Client.java | 1400 -- .../src/redone/game/players/Position.java | 37 - .../game/players/antimacro/AntiBotting.java | 30 - .../src/redone/game/shops/ShopHandler.java | 239 - .../src/redone/net/packets/PacketType.java | 8 - .../net/packets/impl/ChallengePlayer.java | 36 - .../net/packets/impl/ChangeRegions.java | 34 - .../src/redone/net/packets/impl/ClanChat.java | 20 - .../redone/net/packets/impl/ClickObject.java | 493 - .../net/packets/impl/ClickingInGame.java | 16 - .../redone/net/packets/impl/Countdown.java | 127 - .../redone/net/packets/impl/FollowPlayer.java | 36 - .../redone/net/packets/impl/IdleLogout.java | 20 - .../src/redone/net/packets/impl/Report.java | 17 - .../redone/net/packets/impl/SilentPacket.java | 15 - 2006Redone Server/src/redone/world/Clan.java | 20 - .../src/redone/world/ClanChatHandler.java | 206 - 379 files changed, 80684 insertions(+), 83170 deletions(-) rename 2006Redone Server/src/{redone => com/rebotted}/Connection.java (91%) rename 2006Redone Server/src/{redone/Constants.java => com/rebotted/GameConstants.java} (92%) rename 2006Redone Server/src/{redone/Server.java => com/rebotted/GameEngine.java} (70%) rename 2006Redone Server/src/{redone => com/rebotted}/event/CycleEvent.java (89%) rename 2006Redone Server/src/{redone => com/rebotted}/event/CycleEventContainer.java (92%) rename 2006Redone Server/src/{redone => com/rebotted}/event/CycleEventHandler.java (94%) rename 2006Redone Server/src/{redone => com/rebotted}/game/bots/Bot.java (88%) rename 2006Redone Server/src/{redone => com/rebotted}/game/bots/BotConstants.java (69%) rename 2006Redone Server/src/{redone => com/rebotted}/game/bots/BotHandler.java (84%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/BankPin.java (71%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/EmoteHandler.java (89%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/combat/CombatAssistant.java (86%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/combat/Specials.java (76%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/combat/magic/CastOnOther.java (59%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/combat/magic/CastRequirements.java (59%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/combat/magic/Enchanting.java (91%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/combat/magic/MagicData.java (91%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/combat/magic/MagicMaxHit.java (84%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/combat/magic/MagicRequirements.java (87%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/combat/magic/MagicSpells.java (79%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/combat/magic/MagicTeleports.java (73%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/combat/magic/NonCombatSpells.java (70%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/combat/melee/MeleeData.java (88%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/combat/melee/MeleeMaxHit.java (89%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/combat/melee/PlayerKilling.java (91%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/combat/npcs/NpcAggressive.java (81%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/combat/npcs/NpcCombat.java (89%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/combat/npcs/NpcEmotes.java (95%) create mode 100644 2006Redone Server/src/com/rebotted/game/content/combat/prayer/ActivatePrayers.java rename 2006Redone Server/src/{redone => com/rebotted}/game/content/combat/prayer/PrayerData.java (95%) create mode 100644 2006Redone Server/src/com/rebotted/game/content/combat/prayer/PrayerDrain.java rename 2006Redone Server/src/{redone => com/rebotted}/game/content/combat/range/DwarfCannon.java (78%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/combat/range/RangeData.java (84%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/combat/range/RangeMaxHit.java (90%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/consumables/Beverages.java (65%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/consumables/Food.java (90%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/consumables/Kebabs.java (68%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/consumables/Potions.java (90%) create mode 100644 2006Redone Server/src/com/rebotted/game/content/guilds/Guilds.java create mode 100644 2006Redone Server/src/com/rebotted/game/content/guilds/impl/RangersGuild.java rename 2006Redone Server/src/{redone => com/rebotted}/game/content/minigames/Barrows.java (82%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/minigames/Dueling.java (77%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/minigames/FightCaves.java (85%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/minigames/FightPits.java (65%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/minigames/MageArena.java (79%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/minigames/PestControl.java (80%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/minigames/TreasureTrails.java (91%) create mode 100644 2006Redone Server/src/com/rebotted/game/content/minigames/castlewars/CastleWarObjects.java rename 2006Redone Server/src/{redone => com/rebotted}/game/content/minigames/castlewars/CastleWars.java (70%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/minigames/trawler/GroupMinigame.java (75%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/minigames/trawler/Trawler.java (79%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/minigames/trawler/TrawlerWaitingRoom.java (71%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/minigames/trawler/WaitingRoom.java (76%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/music/Music.java (87%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/music/PlayList.java (87%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/music/sound/CombatSounds.java (92%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/music/sound/SoundList.java (92%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/quests/QuestAssistant.java (55%) create mode 100644 2006Redone Server/src/com/rebotted/game/content/quests/QuestRewards.java create mode 100644 2006Redone Server/src/com/rebotted/game/content/quests/impl/BlackKnightsFortress.java create mode 100644 2006Redone Server/src/com/rebotted/game/content/quests/impl/CooksAssistant.java create mode 100644 2006Redone Server/src/com/rebotted/game/content/quests/impl/DoricsQuest.java create mode 100644 2006Redone Server/src/com/rebotted/game/content/quests/impl/GertrudesCat.java create mode 100644 2006Redone Server/src/com/rebotted/game/content/quests/impl/ImpCatcher.java create mode 100644 2006Redone Server/src/com/rebotted/game/content/quests/impl/KnightsSword.java create mode 100644 2006Redone Server/src/com/rebotted/game/content/quests/impl/PiratesTreasure.java create mode 100644 2006Redone Server/src/com/rebotted/game/content/quests/impl/RestlessGhost.java create mode 100644 2006Redone Server/src/com/rebotted/game/content/quests/impl/RomeoJuliet.java create mode 100644 2006Redone Server/src/com/rebotted/game/content/quests/impl/RuneMysteries.java create mode 100644 2006Redone Server/src/com/rebotted/game/content/quests/impl/SheepShearer.java rename 2006Redone Server/src/{redone => com/rebotted}/game/content/quests/impl/ShieldArrav.java (77%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/quests/impl/VampyreSlayer.java (68%) create mode 100644 2006Redone Server/src/com/rebotted/game/content/quests/impl/WitchsPotion.java rename 2006Redone Server/src/{redone => com/rebotted}/game/content/random/Balloons.java (71%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/random/HolidayDrops.java (65%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/random/Holidays.java (52%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/random/PartyRoom.java (58%) create mode 100644 2006Redone Server/src/com/rebotted/game/content/randomevents/EvilChicken.java rename 2006Redone Server/src/{redone => com/rebotted}/game/content/randomevents/FreakyForester.java (59%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/randomevents/Frog.java (88%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/randomevents/GenieLamp.java (88%) create mode 100644 2006Redone Server/src/com/rebotted/game/content/randomevents/RandomEventHandler.java create mode 100644 2006Redone Server/src/com/rebotted/game/content/randomevents/RiverTroll.java rename 2006Redone Server/src/{redone => com/rebotted}/game/content/randomevents/RockGolem.java (81%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/randomevents/SandwhichLady.java (59%) create mode 100644 2006Redone Server/src/com/rebotted/game/content/randomevents/Shade.java rename 2006Redone Server/src/{redone => com/rebotted}/game/content/randomevents/Swarm.java (54%) create mode 100644 2006Redone Server/src/com/rebotted/game/content/randomevents/TreeSpirit.java rename 2006Redone Server/src/{redone => com/rebotted}/game/content/randomevents/Zombie.java (77%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/Menus.java (56%) create mode 100644 2006Redone Server/src/com/rebotted/game/content/skills/SkillHandler.java rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/SkillInterfaces.java (96%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/SkillMenu.java (85%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/agility/Agility.java (88%) create mode 100644 2006Redone Server/src/com/rebotted/game/content/skills/agility/AgilityShortcut.java rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/agility/ApeAtollAgility.java (83%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/agility/BarbarianAgility.java (88%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/agility/GnomeAgility.java (93%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/agility/PyramidAgility.java (92%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/agility/WerewolfAgility.java (91%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/agility/WildernessAgility.java (90%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/cooking/Cooking.java (67%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/cooking/CookingTutorialIsland.java (68%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/cooking/Potatoes.java (80%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/core/Fishing.java (83%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/core/Mining.java (77%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/core/Prayer.java (67%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/core/Woodcutting.java (58%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/crafting/CraftingData.java (95%) create mode 100644 2006Redone Server/src/com/rebotted/game/content/skills/crafting/GemCutting.java rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/crafting/GlassBlowing.java (81%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/crafting/JewelryMaking.java (61%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/crafting/LeatherMaking.java (53%) create mode 100644 2006Redone Server/src/com/rebotted/game/content/skills/crafting/Pottery.java create mode 100644 2006Redone Server/src/com/rebotted/game/content/skills/crafting/SoftClay.java rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/crafting/Spinning.java (58%) create mode 100644 2006Redone Server/src/com/rebotted/game/content/skills/crafting/Tanning.java rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/farming/Allotments.java (51%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/farming/Farming.java (66%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/farming/FarmingConstants.java (95%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/farming/Flowers.java (66%) create mode 100644 2006Redone Server/src/com/rebotted/game/content/skills/farming/Herbs.java rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/farming/Patch.java (69%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/firemaking/Firemaking.java (68%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/firemaking/LogData.java (89%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/fletching/ArrowMaking.java (63%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/fletching/LogCutting.java (67%) create mode 100644 2006Redone Server/src/com/rebotted/game/content/skills/fletching/LogCuttingInterface.java rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/fletching/Stringing.java (53%) create mode 100644 2006Redone Server/src/com/rebotted/game/content/skills/herblore/GrindingAction.java rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/herblore/Herblore.java (68%) create mode 100644 2006Redone Server/src/com/rebotted/game/content/skills/runecrafting/AbyssalHandler.java create mode 100644 2006Redone Server/src/com/rebotted/game/content/skills/runecrafting/RuneCraftingActions.java rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/runecrafting/Runecrafting.java (80%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/slayer/Slayer.java (76%) create mode 100644 2006Redone Server/src/com/rebotted/game/content/skills/slayer/SlayerRequirements.java rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/smithing/SilverCrafting.java (77%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/smithing/Smelting.java (79%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/smithing/Smithing.java (78%) create mode 100644 2006Redone Server/src/com/rebotted/game/content/skills/smithing/SmithingInterface.java create mode 100644 2006Redone Server/src/com/rebotted/game/content/skills/smithing/Superheat.java rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/thieving/Pickpocket.java (85%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/thieving/Stalls.java (58%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/skills/thieving/ThieveOther.java (53%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/traveling/Desert.java (54%) rename 2006Redone Server/src/{redone => com/rebotted}/game/content/traveling/GnomeGlider.java (71%) create mode 100644 2006Redone Server/src/com/rebotted/game/content/traveling/Sailing.java rename 2006Redone Server/src/{redone => com/rebotted}/game/dialogues/Dialogue.java (56%) rename 2006Redone Server/src/{redone => com/rebotted}/game/dialogues/DialogueHandler.java (89%) rename 2006Redone Server/src/{redone => com/rebotted}/game/globalworldobjects/ClimbOther.java (69%) rename 2006Redone Server/src/{redone => com/rebotted}/game/globalworldobjects/Doors.java (92%) rename 2006Redone Server/src/{redone => com/rebotted}/game/globalworldobjects/DoubleDoors.java (90%) rename 2006Redone Server/src/{redone => com/rebotted}/game/globalworldobjects/DoubleGates.java (96%) rename 2006Redone Server/src/{redone => com/rebotted}/game/globalworldobjects/GateHandler.java (86%) create mode 100644 2006Redone Server/src/com/rebotted/game/globalworldobjects/PassDoor.java rename 2006Redone Server/src/{redone => com/rebotted}/game/globalworldobjects/SingleGates.java (58%) create mode 100644 2006Redone Server/src/com/rebotted/game/items/GameItem.java rename 2006Redone Server/src/{redone => com/rebotted}/game/items/GroundItem.java (87%) rename 2006Redone Server/src/{redone => com/rebotted}/game/items/Item.java (92%) rename 2006Redone Server/src/{redone => com/rebotted}/game/items/ItemAssistant.java (78%) rename 2006Redone Server/src/{redone => com/rebotted}/game/items/ItemDefinitions.java (94%) rename 2006Redone Server/src/{redone => com/rebotted}/game/items/ItemList.java (86%) create mode 100644 2006Redone Server/src/com/rebotted/game/items/UseItem.java rename 2006Redone Server/src/{redone/game/items/impl => com/rebotted/game/items}/Weight.java (53%) create mode 100644 2006Redone Server/src/com/rebotted/game/items/impl/CapeDye.java create mode 100644 2006Redone Server/src/com/rebotted/game/items/impl/ExperienceLamp.java rename 2006Redone Server/src/{redone => com/rebotted}/game/items/impl/Fillables.java (88%) rename 2006Redone Server/src/{redone => com/rebotted}/game/items/impl/Flowers.java (70%) rename 2006Redone Server/src/{redone => com/rebotted}/game/items/impl/HandleEmpty.java (57%) create mode 100644 2006Redone Server/src/com/rebotted/game/items/impl/LightSources.java rename 2006Redone Server/src/{redone => com/rebotted}/game/items/impl/PotionMixing.java (92%) create mode 100644 2006Redone Server/src/com/rebotted/game/items/impl/RareProtection.java rename 2006Redone Server/src/{redone => com/rebotted}/game/items/impl/Teles.java (68%) rename 2006Redone Server/src/{redone => com/rebotted}/game/items/impl/WeaponPoison.java (93%) rename 2006Redone Server/src/{redone => com/rebotted}/game/npcs/NPCDefinition.java (97%) rename 2006Redone Server/src/{redone => com/rebotted}/game/npcs/Npc.java (91%) rename 2006Redone Server/src/{redone => com/rebotted}/game/npcs/NpcActions.java (90%) rename 2006Redone Server/src/{redone => com/rebotted}/game/npcs/NpcData.java (94%) rename 2006Redone Server/src/{redone => com/rebotted}/game/npcs/NpcHandler.java (86%) rename 2006Redone Server/src/{redone => com/rebotted}/game/npcs/NpcList.java (81%) rename 2006Redone Server/src/{redone => com/rebotted}/game/npcs/NpcSize.java (97%) rename 2006Redone Server/src/{redone => com/rebotted}/game/npcs/drops/ItemDrop.java (90%) rename 2006Redone Server/src/{redone => com/rebotted}/game/npcs/drops/NPCDrops.java (97%) rename 2006Redone Server/src/{redone => com/rebotted}/game/npcs/drops/NPCDropsHandler.java (93%) create mode 100644 2006Redone Server/src/com/rebotted/game/npcs/impl/MilkCow.java rename 2006Redone Server/src/{redone => com/rebotted}/game/npcs/impl/Pets.java (87%) rename 2006Redone Server/src/{redone => com/rebotted}/game/objects/Object.java (72%) rename 2006Redone Server/src/{redone => com/rebotted}/game/objects/ObjectDefaults.java (77%) rename 2006Redone Server/src/{redone => com/rebotted}/game/objects/Objects.java (89%) rename 2006Redone Server/src/{redone => com/rebotted}/game/objects/ObjectsActions.java (79%) create mode 100644 2006Redone Server/src/com/rebotted/game/objects/impl/AxeInLog.java create mode 100644 2006Redone Server/src/com/rebotted/game/objects/impl/BrimhavenVines.java rename 2006Redone Server/src/{redone => com/rebotted}/game/objects/impl/Climbing.java (78%) rename 2006Redone Server/src/{redone => com/rebotted}/game/objects/impl/CrystalChest.java (69%) rename 2006Redone Server/src/{redone => com/rebotted}/game/objects/impl/FlourMill.java (60%) rename 2006Redone Server/src/{redone => com/rebotted}/game/objects/impl/Levers.java (72%) rename 2006Redone Server/src/{redone => com/rebotted}/game/objects/impl/OtherObjects.java (84%) rename 2006Redone Server/src/{redone => com/rebotted}/game/objects/impl/Pickable.java (64%) rename 2006Redone Server/src/{redone => com/rebotted}/game/objects/impl/Searching.java (83%) rename 2006Redone Server/src/{redone => com/rebotted}/game/objects/impl/SpecialObjects.java (56%) create mode 100644 2006Redone Server/src/com/rebotted/game/objects/impl/UseOther.java create mode 100644 2006Redone Server/src/com/rebotted/game/objects/impl/Webs.java create mode 100644 2006Redone Server/src/com/rebotted/game/players/Client.java rename 2006Redone Server/src/{redone => com/rebotted}/game/players/HighscoresHandler.java (91%) rename 2006Redone Server/src/{redone => com/rebotted}/game/players/Location.java (90%) rename 2006Redone Server/src/{redone => com/rebotted}/game/players/Player.java (58%) rename 2006Redone Server/src/{redone => com/rebotted}/game/players/PlayerAction.java (80%) rename 2006Redone Server/src/{redone => com/rebotted}/game/players/PlayerAssistant.java (66%) rename 2006Redone Server/src/{redone => com/rebotted}/game/players/PlayerHandler.java (86%) rename 2006Redone Server/src/{redone => com/rebotted}/game/players/PlayerSave.java (94%) create mode 100644 2006Redone Server/src/com/rebotted/game/players/Position.java rename 2006Redone Server/src/{redone => com/rebotted}/game/players/Trading.java (80%) rename 2006Redone Server/src/{redone => com/rebotted}/game/players/antimacro/AntiSpam.java (82%) rename 2006Redone Server/src/{redone => com/rebotted}/game/shops/ShopAssistant.java (62%) create mode 100644 2006Redone Server/src/com/rebotted/game/shops/ShopHandler.java rename 2006Redone Server/src/{redone => com/rebotted}/game/shops/Shops.java (91%) rename 2006Redone Server/src/{redone => com/rebotted}/integrations/PlayersOnlineWebsite.java (93%) rename 2006Redone Server/src/{redone => com/rebotted}/integrations/RegisteredAccsWebsite.java (93%) rename 2006Redone Server/src/{redone => com/rebotted}/integrations/SettingsLoader.java (88%) rename 2006Redone Server/src/{redone => com/rebotted}/integrations/discord/DiscordActivity.java (89%) rename 2006Redone Server/src/{redone => com/rebotted}/integrations/discord/JavaCord.java (92%) rename 2006Redone Server/src/{redone => com/rebotted}/integrations/discord/commands/Commands.java (95%) rename 2006Redone Server/src/{redone => com/rebotted}/integrations/discord/commands/Forum.java (91%) rename 2006Redone Server/src/{redone => com/rebotted}/integrations/discord/commands/HeatMap.java (90%) rename 2006Redone Server/src/{redone => com/rebotted}/integrations/discord/commands/Hiscores.java (91%) rename 2006Redone Server/src/{redone => com/rebotted}/integrations/discord/commands/Issues.java (91%) rename 2006Redone Server/src/{redone => com/rebotted}/integrations/discord/commands/Online.java (83%) rename 2006Redone Server/src/{redone => com/rebotted}/integrations/discord/commands/Players.java (88%) rename 2006Redone Server/src/{redone => com/rebotted}/integrations/discord/commands/Vote.java (91%) rename 2006Redone Server/src/{redone => com/rebotted}/integrations/discord/commands/Website.java (91%) rename 2006Redone Server/src/{redone => com/rebotted}/net/CodecFactory.java (92%) rename 2006Redone Server/src/{redone => com/rebotted}/net/ConnectionHandler.java (92%) rename 2006Redone Server/src/{redone => com/rebotted}/net/ConnectionThrottleFilter.java (95%) rename 2006Redone Server/src/{redone => com/rebotted}/net/GameCodecFactory.java (89%) rename 2006Redone Server/src/{redone => com/rebotted}/net/HostList.java (84%) rename 2006Redone Server/src/{redone => com/rebotted}/net/Packet.java (95%) rename 2006Redone Server/src/{redone => com/rebotted}/net/PacketBuffer.java (93%) rename 2006Redone Server/src/{redone => com/rebotted}/net/PacketBuilder.java (76%) rename 2006Redone Server/src/{redone/net/ActionSender.java => com/rebotted/net/PacketSender.java} (53%) rename 2006Redone Server/src/{redone => com/rebotted}/net/RS2LoginProtocolDecoder.java (92%) rename 2006Redone Server/src/{redone => com/rebotted}/net/RS2ProtocolDecoder.java (92%) rename 2006Redone Server/src/{redone => com/rebotted}/net/RS2ProtocolEncoder.java (95%) rename 2006Redone Server/src/{redone => com/rebotted}/net/StaticPacketBuilder.java (95%) rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/PacketHandler.java (54%) create mode 100644 2006Redone Server/src/com/rebotted/net/packets/PacketType.java rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/impl/AttackPlayer.java (77%) rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/impl/Bank10.java (82%) rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/impl/Bank5.java (83%) rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/impl/BankAll.java (87%) rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/impl/BankX1.java (78%) rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/impl/BankX2.java (84%) create mode 100644 2006Redone Server/src/com/rebotted/net/packets/impl/ChallengePlayer.java rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/impl/ChangeAppearance.java (87%) create mode 100644 2006Redone Server/src/com/rebotted/net/packets/impl/ChangeRegions.java rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/impl/Chat.java (66%) rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/impl/ClickItem.java (77%) rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/impl/ClickNPC.java (88%) create mode 100644 2006Redone Server/src/com/rebotted/net/packets/impl/ClickObject.java rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/impl/ClickTab.java (76%) rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/impl/ClickingButtons.java (85%) create mode 100644 2006Redone Server/src/com/rebotted/net/packets/impl/ClickingInGame.java rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/impl/ClickingStuff.java (64%) rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/impl/Commands.java (81%) rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/impl/DropItem.java (66%) create mode 100644 2006Redone Server/src/com/rebotted/net/packets/impl/FollowPlayer.java create mode 100644 2006Redone Server/src/com/rebotted/net/packets/impl/IdleLogout.java rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/impl/ItemClick2.java (65%) rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/impl/ItemClick2OnGroundItem.java (57%) rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/impl/ItemClick3.java (81%) rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/impl/ItemOnGroundItem.java (69%) rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/impl/ItemOnItem.java (70%) rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/impl/ItemOnNpc.java (68%) rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/impl/ItemOnObject.java (77%) rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/impl/ItemOnPlayer.java (64%) rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/impl/MagicOnFloorItems.java (81%) rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/impl/MagicOnItems.java (73%) rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/impl/MoveItems.java (77%) rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/impl/PickupItem.java (64%) rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/impl/PrivateMessaging.java (80%) rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/impl/RemoveItem.java (78%) create mode 100644 2006Redone Server/src/com/rebotted/net/packets/impl/Report.java rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/impl/ReportHandler.java (89%) create mode 100644 2006Redone Server/src/com/rebotted/net/packets/impl/SilentPacket.java rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/impl/Trade.java (53%) rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/impl/Walking.java (80%) rename 2006Redone Server/src/{redone => com/rebotted}/net/packets/impl/WearItem.java (70%) rename 2006Redone Server/src/{redone => com/rebotted}/net/rsa/RSAKeyGen.java (95%) rename 2006Redone Server/src/{redone => com/rebotted}/net/rsa/rsapriv (99%) rename 2006Redone Server/src/{redone => com/rebotted}/net/rsa/rsapub (99%) rename 2006Redone Server/src/{redone => com/rebotted}/util/GameLogger.java (96%) rename 2006Redone Server/src/{redone => com/rebotted}/util/HostBlacklist.java (93%) rename 2006Redone Server/src/{redone => com/rebotted}/util/ISAACRandomGen.java (94%) rename 2006Redone Server/src/{redone => com/rebotted}/util/Misc.java (94%) rename 2006Redone Server/src/{redone => com/rebotted}/util/Stream.java (94%) rename 2006Redone Server/src/{redone => com/rebotted}/util/XStreamUtil.java (91%) rename 2006Redone Server/src/{redone => com/rebotted}/world/GameObject.java (89%) rename 2006Redone Server/src/{redone => com/rebotted}/world/GlobalDropsHandler.java (83%) rename 2006Redone Server/src/{redone => com/rebotted}/world/ItemHandler.java (80%) rename 2006Redone Server/src/{redone => com/rebotted}/world/ObjectHandler.java (85%) rename 2006Redone Server/src/{redone => com/rebotted}/world/ObjectManager.java (70%) rename 2006Redone Server/src/{redone => com/rebotted}/world/Tile.java (89%) rename 2006Redone Server/src/{redone => com/rebotted}/world/TileControl.java (93%) rename 2006Redone Server/src/{redone => com/rebotted}/world/clip/ByteStream.java (93%) rename 2006Redone Server/src/{redone => com/rebotted}/world/clip/ByteStreamExt.java (94%) rename 2006Redone Server/src/{redone => com/rebotted}/world/clip/MemoryArchive.java (92%) rename 2006Redone Server/src/{redone => com/rebotted}/world/clip/ObjectDef.java (95%) rename 2006Redone Server/src/{redone => com/rebotted}/world/clip/PathFinder.java (78%) rename 2006Redone Server/src/{redone => com/rebotted}/world/clip/Region.java (96%) delete mode 100644 2006Redone Server/src/redone/event/Task.java delete mode 100644 2006Redone Server/src/redone/event/TaskScheduler.java delete mode 100644 2006Redone Server/src/redone/game/content/MemberShipHandler.java delete mode 100644 2006Redone Server/src/redone/game/content/combat/prayer/ActivatePrayers.java delete mode 100644 2006Redone Server/src/redone/game/content/combat/prayer/PrayerDrain.java delete mode 100644 2006Redone Server/src/redone/game/content/guilds/Guilds.java delete mode 100644 2006Redone Server/src/redone/game/content/guilds/impl/RangersGuild.java delete mode 100644 2006Redone Server/src/redone/game/content/minigames/castlewars/CastleWarObjects.java delete mode 100644 2006Redone Server/src/redone/game/content/quests/QuestRewards.java delete mode 100644 2006Redone Server/src/redone/game/content/quests/impl/BlackKnightsFortress.java delete mode 100644 2006Redone Server/src/redone/game/content/quests/impl/CooksAssistant.java delete mode 100644 2006Redone Server/src/redone/game/content/quests/impl/DoricsQuest.java delete mode 100644 2006Redone Server/src/redone/game/content/quests/impl/GertrudesCat.java delete mode 100644 2006Redone Server/src/redone/game/content/quests/impl/ImpCatcher.java delete mode 100644 2006Redone Server/src/redone/game/content/quests/impl/KnightsSword.java delete mode 100644 2006Redone Server/src/redone/game/content/quests/impl/PiratesTreasure.java delete mode 100644 2006Redone Server/src/redone/game/content/quests/impl/RestlessGhost.java delete mode 100644 2006Redone Server/src/redone/game/content/quests/impl/RomeoJuliet.java delete mode 100644 2006Redone Server/src/redone/game/content/quests/impl/RuneMysteries.java delete mode 100644 2006Redone Server/src/redone/game/content/quests/impl/SheepShearer.java delete mode 100644 2006Redone Server/src/redone/game/content/quests/impl/WitchsPotion.java delete mode 100644 2006Redone Server/src/redone/game/content/randomevents/EvilChicken.java delete mode 100644 2006Redone Server/src/redone/game/content/randomevents/RandomEventHandler.java delete mode 100644 2006Redone Server/src/redone/game/content/randomevents/RiverTroll.java delete mode 100644 2006Redone Server/src/redone/game/content/randomevents/Shade.java delete mode 100644 2006Redone Server/src/redone/game/content/randomevents/TreeSpirit.java delete mode 100644 2006Redone Server/src/redone/game/content/skills/SkillHandler.java delete mode 100644 2006Redone Server/src/redone/game/content/skills/agility/AgilityShortcut.java delete mode 100644 2006Redone Server/src/redone/game/content/skills/crafting/GemCutting.java delete mode 100644 2006Redone Server/src/redone/game/content/skills/crafting/Pottery.java delete mode 100644 2006Redone Server/src/redone/game/content/skills/crafting/SoftClay.java delete mode 100644 2006Redone Server/src/redone/game/content/skills/crafting/Tanning.java delete mode 100644 2006Redone Server/src/redone/game/content/skills/farming/Herbs.java delete mode 100644 2006Redone Server/src/redone/game/content/skills/fletching/LogCuttingInterface.java delete mode 100644 2006Redone Server/src/redone/game/content/skills/herblore/GrindingAction.java delete mode 100644 2006Redone Server/src/redone/game/content/skills/runecrafting/AbyssalHandler.java delete mode 100644 2006Redone Server/src/redone/game/content/skills/runecrafting/RuneCraftingActions.java delete mode 100644 2006Redone Server/src/redone/game/content/skills/slayer/SlayerRequirements.java delete mode 100644 2006Redone Server/src/redone/game/content/skills/smithing/SmithingInterface.java delete mode 100644 2006Redone Server/src/redone/game/content/skills/smithing/Superheat.java delete mode 100644 2006Redone Server/src/redone/game/content/traveling/Sailing.java delete mode 100644 2006Redone Server/src/redone/game/globalworldobjects/PassDoor.java delete mode 100644 2006Redone Server/src/redone/game/items/GameItem.java delete mode 100644 2006Redone Server/src/redone/game/items/UseItem.java delete mode 100644 2006Redone Server/src/redone/game/items/impl/CapeDye.java delete mode 100644 2006Redone Server/src/redone/game/items/impl/ExperienceLamp.java delete mode 100644 2006Redone Server/src/redone/game/items/impl/LightSources.java delete mode 100644 2006Redone Server/src/redone/game/items/impl/RareProtection.java delete mode 100644 2006Redone Server/src/redone/game/items/impl/Trails.java delete mode 100644 2006Redone Server/src/redone/game/npcs/impl/MilkCow.java delete mode 100644 2006Redone Server/src/redone/game/objects/impl/AxeInLog.java delete mode 100644 2006Redone Server/src/redone/game/objects/impl/BrimhavenVines.java delete mode 100644 2006Redone Server/src/redone/game/objects/impl/UseOther.java delete mode 100644 2006Redone Server/src/redone/game/objects/impl/Webs.java delete mode 100644 2006Redone Server/src/redone/game/players/Client.java delete mode 100644 2006Redone Server/src/redone/game/players/Position.java delete mode 100644 2006Redone Server/src/redone/game/players/antimacro/AntiBotting.java delete mode 100644 2006Redone Server/src/redone/game/shops/ShopHandler.java delete mode 100644 2006Redone Server/src/redone/net/packets/PacketType.java delete mode 100644 2006Redone Server/src/redone/net/packets/impl/ChallengePlayer.java delete mode 100644 2006Redone Server/src/redone/net/packets/impl/ChangeRegions.java delete mode 100644 2006Redone Server/src/redone/net/packets/impl/ClanChat.java delete mode 100644 2006Redone Server/src/redone/net/packets/impl/ClickObject.java delete mode 100644 2006Redone Server/src/redone/net/packets/impl/ClickingInGame.java delete mode 100644 2006Redone Server/src/redone/net/packets/impl/Countdown.java delete mode 100644 2006Redone Server/src/redone/net/packets/impl/FollowPlayer.java delete mode 100644 2006Redone Server/src/redone/net/packets/impl/IdleLogout.java delete mode 100644 2006Redone Server/src/redone/net/packets/impl/Report.java delete mode 100644 2006Redone Server/src/redone/net/packets/impl/SilentPacket.java delete mode 100644 2006Redone Server/src/redone/world/Clan.java delete mode 100644 2006Redone Server/src/redone/world/ClanChatHandler.java diff --git a/2006Redone Server/src/redone/Connection.java b/2006Redone Server/src/com/rebotted/Connection.java similarity index 91% rename from 2006Redone Server/src/redone/Connection.java rename to 2006Redone Server/src/com/rebotted/Connection.java index c2abecfb..a458c8d2 100644 --- a/2006Redone Server/src/redone/Connection.java +++ b/2006Redone Server/src/com/rebotted/Connection.java @@ -1,318 +1,315 @@ -package redone; - -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.util.ArrayList; - -import redone.game.players.Client; - -/** - * Connection Check Class - * - * @author Ryan / Lmctruck30 - */ - -public class Connection { - - public static ArrayList bannedIps = new ArrayList(); - public static ArrayList bannedNames = new ArrayList(); - public static ArrayList mutedIps = new ArrayList(); - public static ArrayList mutedNames = new ArrayList(); - public static ArrayList loginLimitExceeded = new ArrayList(); - - /** - * Adds the banned usernames and ips from the text file to the ban list - **/ - public static void initialize() { - banUsers(); - banIps(); - muteUsers(); - muteIps(); - } - - /** - * Adding Name To List - */ - public static void addIpToLoginList(String IP) { - loginLimitExceeded.add(IP); - } - - /** - * Remove Ip From List - */ - public static void removeIpFromLoginList(String IP) { - loginLimitExceeded.remove(IP); - } - - /** - * Clear Name List - */ - public static void clearLoginList() { - loginLimitExceeded.clear(); - } - - public static boolean checkLoginList(String IP) { - loginLimitExceeded.add(IP); - int num = 0; - for (String ips : loginLimitExceeded) { - if (IP.equals(ips)) { - num++; - } - } - if (num > 5) { - return true; - } - return false; - } - - public static void unMuteUser(String name) { - mutedNames.remove(name); - deleteFromFile("./data/bans/UsersMuted.txt", name); - } - - public static void unIPMuteUser(String name) { - mutedIps.remove(name); - deleteFromFile("./data/bans/IpsMuted.txt", name); - } - - /** - * Adding Ban IP - **/ - public static void addIpToBanList(String IP) { - bannedIps.add(IP); - } - - public static void addIpToMuteList(String IP) { - mutedIps.add(IP); - addIpToMuteFile(IP); - } - - /** - * Removing Ban IP - **/ - public static void removeIpFromBanList(String IP) { - bannedIps.remove(IP); - } - - /** - * Contains Ban IP - **/ - public static boolean isIpBanned(String IP) { - if (bannedIps.contains(IP)) { - return true; - } - return false; - } - - /** - * Adding banned username - **/ - public static void addNameToBanList(String name) { - bannedNames.add(name.toLowerCase()); - } - - public static void addNameToMuteList(String name) { - mutedNames.add(name.toLowerCase()); - addUserToFile(name); - } - - /** - * Removing banned username - **/ - public static void removeNameFromBanList(String name) { - bannedNames.remove(name.toLowerCase()); - deleteFromFile("./data/bans/UsersBanned.txt", name); - } - - public static void removeNameFromMuteList(String name) { - bannedNames.remove(name.toLowerCase()); - deleteFromFile("./data/bans/UsersMuted.txt", name); - } - - public static void deleteFromFile(String file, String name) { - try { - BufferedReader r = new BufferedReader(new FileReader(file)); - ArrayList contents = new ArrayList(); - while (true) { - String line = r.readLine(); - if (line == null) { - break; - } else { - line = line.trim(); - } - if (!line.equalsIgnoreCase(name)) { - contents.add(line); - } - } - r.close(); - BufferedWriter w = new BufferedWriter(new FileWriter(file)); - for (String line : contents) { - w.write(line, 0, line.length()); - w.newLine(); - } - w.flush(); - w.close(); - } catch (Exception e) { - } - } - - /** - * Contains banned username - **/ - public static boolean isNamedBanned(String name) { - if (bannedNames.contains(name.toLowerCase())) { - return true; - } - return false; - } - - /** - * Reads all usernames from text file then adds them all to the ban list - **/ - public static void banUsers() { - try { - BufferedReader in = new BufferedReader(new FileReader( - "./data/bans/UsersBanned.txt")); - String data = null; - try { - while ((data = in.readLine()) != null) { - addNameToBanList(data); - } - } finally { - in.close(); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - - public static void muteUsers() { - try { - BufferedReader in = new BufferedReader(new FileReader( - "./data/bans/UsersMuted.txt")); - String data = null; - try { - while ((data = in.readLine()) != null) { - mutedNames.add(data); - } - } finally { - in.close(); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * Reads all the Ips from text file then adds them all to ban list - **/ - public static void banIps() { - try { - BufferedReader in = new BufferedReader(new FileReader( - "./data/bans/IpsBanned.txt")); - String data = null; - try { - while ((data = in.readLine()) != null) { - addIpToBanList(data); - } - } finally { - in.close(); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - - public static void muteIps() { - try { - BufferedReader in = new BufferedReader(new FileReader( - "./data/bans/IpsMuted.txt")); - String data = null; - try { - while ((data = in.readLine()) != null) { - mutedIps.add(data); - } - } finally { - in.close(); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * Writes the username into the text file - when using the ::ban playername - * command - **/ - public static void addNameToFile(String Name) { - try { - BufferedWriter out = new BufferedWriter(new FileWriter( - "./data/bans/UsersBanned.txt", true)); - try { - out.newLine(); - out.write(Name); - } finally { - out.close(); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - - public static void addUserToFile(String Name) { - try { - BufferedWriter out = new BufferedWriter(new FileWriter( - "./data/bans/UsersMuted.txt", true)); - try { - out.newLine(); - out.write(Name); - } finally { - out.close(); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * Writes the IP into the text file - use ::ipban username - **/ - public static void addIpToFile(String Name) { - try { - BufferedWriter out = new BufferedWriter(new FileWriter( - "./data/bans/IpsBanned.txt", true)); - try { - out.newLine(); - out.write(Name); - } finally { - out.close(); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - - public static void addIpToMuteFile(String Name) { - try { - BufferedWriter out = new BufferedWriter(new FileWriter( - "./data/bans/IpsMuted.txt", true)); - try { - out.newLine(); - out.write(Name); - } finally { - out.close(); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - - public static boolean isMuted(Client c) { - return mutedNames.contains(c.playerName.toLowerCase()) - || mutedIps.contains(c.connectedFrom); - } - -} +package com.rebotted; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; +import com.rebotted.game.players.Player; + +/** + * Connection Check Class + * + * @author Ryan / Lmctruck30 + */ + +public class Connection { + + public static ArrayList bannedIps = new ArrayList(); + public static ArrayList bannedNames = new ArrayList(); + public static ArrayList mutedIps = new ArrayList(); + public static ArrayList mutedNames = new ArrayList(); + public static ArrayList loginLimitExceeded = new ArrayList(); + + /** + * Adds the banned usernames and ips from the text file to the ban list + **/ + public static void initialize() { + banUsers(); + banIps(); + muteUsers(); + muteIps(); + } + + /** + * Adding Name To List + */ + public static void addIpToLoginList(String IP) { + loginLimitExceeded.add(IP); + } + + /** + * Remove Ip From List + */ + public static void removeIpFromLoginList(String IP) { + loginLimitExceeded.remove(IP); + } + + /** + * Clear Name List + */ + public static void clearLoginList() { + loginLimitExceeded.clear(); + } + + public static boolean checkLoginList(String IP) { + loginLimitExceeded.add(IP); + int num = 0; + for (String ips : loginLimitExceeded) { + if (IP.equals(ips)) { + num++; + } + } + if (num > 5) { + return true; + } + return false; + } + + public static void unMuteUser(String name) { + mutedNames.remove(name); + deleteFromFile("./data/bans/UsersMuted.txt", name); + } + + public static void unIPMuteUser(String name) { + mutedIps.remove(name); + deleteFromFile("./data/bans/IpsMuted.txt", name); + } + + /** + * Adding Ban IP + **/ + public static void addIpToBanList(String IP) { + bannedIps.add(IP); + } + + public static void addIpToMuteList(String IP) { + mutedIps.add(IP); + addIpToMuteFile(IP); + } + + /** + * Removing Ban IP + **/ + public static void removeIpFromBanList(String IP) { + bannedIps.remove(IP); + } + + /** + * Contains Ban IP + **/ + public static boolean isIpBanned(String IP) { + if (bannedIps.contains(IP)) { + return true; + } + return false; + } + + /** + * Adding banned username + **/ + public static void addNameToBanList(String name) { + bannedNames.add(name.toLowerCase()); + } + + public static void addNameToMuteList(String name) { + mutedNames.add(name.toLowerCase()); + addUserToFile(name); + } + + /** + * Removing banned username + **/ + public static void removeNameFromBanList(String name) { + bannedNames.remove(name.toLowerCase()); + deleteFromFile("./data/bans/UsersBanned.txt", name); + } + + public static void removeNameFromMuteList(String name) { + bannedNames.remove(name.toLowerCase()); + deleteFromFile("./data/bans/UsersMuted.txt", name); + } + + public static void deleteFromFile(String file, String name) { + try { + BufferedReader r = new BufferedReader(new FileReader(file)); + ArrayList contents = new ArrayList(); + while (true) { + String line = r.readLine(); + if (line == null) { + break; + } else { + line = line.trim(); + } + if (!line.equalsIgnoreCase(name)) { + contents.add(line); + } + } + r.close(); + BufferedWriter w = new BufferedWriter(new FileWriter(file)); + for (String line : contents) { + w.write(line, 0, line.length()); + w.newLine(); + } + w.flush(); + w.close(); + } catch (Exception e) { + } + } + + /** + * Contains banned username + **/ + public static boolean isNamedBanned(String name) { + if (bannedNames.contains(name.toLowerCase())) { + return true; + } + return false; + } + + /** + * Reads all usernames from text file then adds them all to the ban list + **/ + public static void banUsers() { + try { + BufferedReader in = new BufferedReader(new FileReader( + "./data/bans/UsersBanned.txt")); + String data = null; + try { + while ((data = in.readLine()) != null) { + addNameToBanList(data); + } + } finally { + in.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static void muteUsers() { + try { + BufferedReader in = new BufferedReader(new FileReader( + "./data/bans/UsersMuted.txt")); + String data = null; + try { + while ((data = in.readLine()) != null) { + mutedNames.add(data); + } + } finally { + in.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * Reads all the Ips from text file then adds them all to ban list + **/ + public static void banIps() { + try { + BufferedReader in = new BufferedReader(new FileReader( + "./data/bans/IpsBanned.txt")); + String data = null; + try { + while ((data = in.readLine()) != null) { + addIpToBanList(data); + } + } finally { + in.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static void muteIps() { + try { + BufferedReader in = new BufferedReader(new FileReader( + "./data/bans/IpsMuted.txt")); + String data = null; + try { + while ((data = in.readLine()) != null) { + mutedIps.add(data); + } + } finally { + in.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * Writes the username into the text file - when using the ::ban playername + * command + **/ + public static void addNameToFile(String Name) { + try { + BufferedWriter out = new BufferedWriter(new FileWriter( + "./data/bans/UsersBanned.txt", true)); + try { + out.newLine(); + out.write(Name); + } finally { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static void addUserToFile(String Name) { + try { + BufferedWriter out = new BufferedWriter(new FileWriter( + "./data/bans/UsersMuted.txt", true)); + try { + out.newLine(); + out.write(Name); + } finally { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * Writes the IP into the text file - use ::ipban username + **/ + public static void addIpToFile(String Name) { + try { + BufferedWriter out = new BufferedWriter(new FileWriter( + "./data/bans/IpsBanned.txt", true)); + try { + out.newLine(); + out.write(Name); + } finally { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static void addIpToMuteFile(String Name) { + try { + BufferedWriter out = new BufferedWriter(new FileWriter("./data/bans/IpsMuted.txt", true)); + try { + out.newLine(); + out.write(Name); + } finally { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static boolean isMuted(Player player) { + return mutedNames.contains(player.playerName.toLowerCase()) || mutedIps.contains(player.connectedFrom); + } + +} diff --git a/2006Redone Server/src/redone/Constants.java b/2006Redone Server/src/com/rebotted/GameConstants.java similarity index 92% rename from 2006Redone Server/src/redone/Constants.java rename to 2006Redone Server/src/com/rebotted/GameConstants.java index f02649d0..6db4d229 100644 --- a/2006Redone Server/src/redone/Constants.java +++ b/2006Redone Server/src/com/rebotted/GameConstants.java @@ -1,191 +1,190 @@ -package redone; - -public class Constants { - - public final static boolean SERVER_DEBUG = false; - - public final static String SERVER_NAME = "2006rebotted", SERVER_VERSION = "Server Stage v " + Constants.TEST_VERSION + "."; - public final static double TEST_VERSION = 2.00; - public static int BANK_SIZE = 352; - public final static int ITEM_LIMIT = 15000, MAXITEM_AMOUNT = Integer.MAX_VALUE, CLIENT_VERSION = 999999, - WORLD = 1, IPS_ALLOWED = 250, CONNECTION_DELAY = 100, - MESSAGE_DELAY = 6000, MAX_PLAYERS = 100, REQ_AMOUNT = 150; - public final static boolean SOUND = true, MEMBERS_AREAS = true, - GUILDS = true, MEMBERSHIP = true, WORLD_LIST_FIX = false, - PARTY_ROOM_DISABLED = true, combatSounds = true, - printobjectId = false, EXPERIMENTS = false; - public static int[] SIDEBARS = { 2423, 3917, 638, 3213, 1644, 5608, 1151, - 18128, 5065, 5715, 2449, 904, 147, 962 }; - public static boolean TUTORIAL_ISLAND = false, HOLIDAYS = true, - MEMBERS_ONLY = false, sendServerPackets = false, HALLOWEEN = false, - CLUES_ENABLED = false; - - public final static int HAT = 0, CAPE = 1, AMULET = 2, WEAPON = 3, - CHEST = 4, SHIELD = 5, LEGS = 7, HANDS = 9, FEET = 10, RING = 12, - ARROWS = 13; - - public final static int[] COMBAT_RELATED_ITEMS = { 35, 39, 40, 41, 42, 43, - 44, 50, 53, 54, 60, 64, 75, 76, 78, 88, 546, 548, 577, 581, 598, - 626, 628, 630, 632, 634, 667, 687, 746, 747, 767, 772, 775, 776, - 777, 778, 818, 837, 839, 841, 843, 845, 847, 849, 851, 853, 855, - 857, 859, 861, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, - 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, - 886, 887, 888, 889, 890, 891, 892, 893, 942, 975, 1007, 1019, 1021, - 1023, 1027, 1029, 1031, 1033, 1035, 1052, 1059, 1061, 1063, 1065, - 1067, 1069, 1071, 1073, 1075, 1077, 1079, 1081, 1083, 1085, 1087, - 1089, 1091, 1093, 1095, 1097, 1099, 1101, 1103, 1105, 1107, 1109, - 1111, 1113, 1115, 1117, 1119, 1121, 1123, 1125, 1127, 1129, 1131, - 1133, 1135, 1137, 1139, 1141, 1143, 1145, 1147, 1149, 1151, 1153, - 1155, 1157, 1159, 1161, 1163, 1165, 1167, 1169, 1171, 1173, 1175, - 1177, 1179, 1181, 1183, 1185, 1187, 1189, 1191, 1193, 1195, 1197, - 1199, 1201, 1203, 1205, 1207, 1209, 1211, 1213, 1215, 1217, 1219, - 1221, 1223, 1225, 1227, 1229, 1231, 1233, 1237, 1239, 1241, 1243, - 1245, 1247, 1249, 1251, 1253, 1255, 1257, 1259, 1261, 1263, 1265, - 1267, 1269, 1271, 1273, 1275, 1277, 1279, 1281, 1283, 1285, 1287, - 1289, 1291, 1293, 1295, 1297, 1299, 1301, 1303, 1305, 1307, 1309, - 1311, 1313, 1315, 1317, 1319, 1321, 1323, 1325, 1327, 1329, 1331, - 1333, 1335, 1337, 1339, 1341, 1343, 1345, 1347, 1349, 1351, 1353, - 1355, 1357, 1359, 1361, 1363, 1365, 1367, 1369, 1371, 1373, 1375, - 1377, 1379, 1381, 1383, 1385, 1387, 1389, 1391, 1393, 1395, 1397, - 1399, 1401, 1403, 1405, 1407, 1409, 1419, 1420, 1422, 1424, 1426, - 1428, 1430, 1432, 1434, 1540, 1718, 1724, 2402, 2412, 2413, 2414, - 2415, 2416, 2417, 2487, 2489, 2491, 2493, 2495, 2497, 2499, 2501, - 2503, 2513, 2532, 2533, 2534, 2535, 2536, 2537, 2538, 2539, 2540, - 2541, 2577, 2579, 2581, 2583, 2585, 2587, 2589, 2591, 2593, 2595, - 2597, 2599, 2601, 2603, 2605, 2607, 2609, 2611, 2613, 2615, 2617, - 2619, 2621, 2623, 2625, 2627, 2629, 2653, 2655, 2659, 2661, 2663, - 2667, 2669, 2671, 2673, 2861, 2864, 2865, 2866, 2890, 2896, 2906, - 2916, 2926, 2936, 2961, 2963, 3053, 3054, 3095, 3096, 3097, 3098, - 3099, 3100, 3101, 3105, 3107, 3122, 3140, 3170, 3171, 3172, 3173, - 3174, 3175, 3176, 3190, 3192, 3194, 3196, 3198, 3200, 3202, 3204, - 3327, 3329, 3331, 3333, 3335, 3337, 3339, 3341, 3343, 3385, 3387, - 3389, 3391, 3393, 3472, 3473, 3474, 3475, 3476, 3477, 3479, 3481, - 3483, 3485, 3486, 3488, 3748, 3749, 3751, 3753, 3755, 3757, 3758, - 3759, 3761, 3763, 3765, 3767, 3769, 3771, 3773, 3775, 3777, 3779, - 3781, 3783, 3785, 3787, 3789, 3791, 3797, 3840, 3841, 3842, 3843, - 3844, 4087, 4089, 4091, 4093, 4095, 4097, 4099, 4101, 4103, 4105, - 4107, 4109, 4111, 4113, 4115, 4117, 4119, 4121, 4123, 4125, 4127, - 4129, 4131, 4150, 4151, 4153, 4156, 4158, 4160, 4170, 4172, 4173, - 4174, 4175, 4212, 4214, 4215, 4216, 4217, 4218, 4219, 4220, 4221, - 4222, 4223, 4224, 4226, 4227, 4228, 4229, 4230, 4231, 4232, 4233, - 4234, 4298, 4300, 4302, 4304, 4308, 4310, 4502, 4503, 4504, 4505, - 4506, 4507, 4508, 4509, 4510, 4511, 4512, 4580, 4582, 4585, 4587, - 4600, 4675, 4708, 4710, 4712, 4714, 4716, 4718, 4720, 4722, 4724, - 4726, 4728, 4730, 4732, 4734, 4736, 4738, 4740, 4745, 4747, 4749, - 4751, 4753, 4755, 4757, 4759, 4778, 4783, 4788, 4793, 4803, 4827, - 4860, 4866, 4872, 4878, 4884, 4890, 4896, 4902, 4908, 4914, 4920, - 4926, 4932, 4938, 4944, 4950, 4956, 4962, 4968, 4974, 4980, 4986, - 4992, 4998, 5014, 5016, 5018, 5553, 5554, 5555, 5556, 5557, 5574, - 5575, 5576, 5616, 5617, 5618, 5619, 5620, 5621, 5622, 5623, 5624, - 5625, 5626, 5627, 5648, 5654, 5655, 5656, 5657, 5658, 5659, 5660, - 5661, 5662, 5663, 5664, 5665, 5666, 5667, 5668, 5670, 5672, 5674, - 5676, 5678, 5680, 5682, 5686, 5688, 5690, 5692, 5694, 5696, 5698, - 5700, 5704, 5706, 5708, 5710, 5712, 5714, 5716, 5718, 5720, 5722, - 5724, 5726, 5728, 5730, 5734, 5736, 6061, 6062, 6106, 6107, 6108, - 6109, 6110, 6111, 6128, 6129, 6130, 6131, 6133, 6135, 6137, 6139, - 6141, 6143, 6145, 6147, 6149, 6151, 6153, 6235, 6257, 6279, 6313, - 6315, 6317, 6322, 6324, 6326, 6328, 6330, 6416, 6522, 6523, 6524, - 6525, 6526, 6527, 6528, 6562, 6563, 6568, 6570, 6587, 6589, 6591, - 6593, 6595, 6597, 6599, 6601, 6603, 6605, 6607, 6609, 6611, 6613, - 6615, 6617, 6619, 6621, 6623, 6625, 6627, 6629, 6631, 6633, 6720, - 6724, 6726, 6739, 6745, 6746, 6760, 6762, 6764, 6809, 6889, 6893, - 6894, 6895, 6897, 6908, 6910, 6912, 6914, 6916, 6918, 6920, 6922, - 6924, 6959, 7158, 7159, 7332, 7334, 7336, 7338, 7340, 7342, 7344, - 7346, 7348, 7350, 7352, 7354, 7356, 7358, 7360, 7362, 7364, 7366, - 7368, 7374, 7390, 7392, 7394, 7396, 7398, 7399, 7400, 7410, 7433, - 7435, 7437, 7439, 7441, 7443, 7445, 7447, 7449, 7451, 7453, 7454, - 7455, 7456, 7457, 7458, 7459, 7460, 7461, 7462, 7539, 7552, 7553, - 7639, 7640, 7641, 7642, 7643, 7644, 7645, 7646, 7647, 7648, 7668, - 7686, 7687, 7806, 7807, 7808, 7809 }; - - public final static int[] ALCOHOL_RELATED_ITEMS = { 8940, 3803, 3712, 3711, - 2092, 2074, 3801 }; - - public final static int[] ITEM_SELLABLE = { 3842, 3844, 3840, 8844, 8845, - 8846, 8847, 8848, 8849, 8850, 10551, 6570, 7462, 7461, 7460, 7459, - 7458, 7457, 7456, 7455, 7454, 8839, 8840, 8842, 11663, 11664, 11666, - 10499, 9748, 9754, 9751, 9769, 9757, 9760, 9763, 9802, 9808, 9784, - 9799, 9805, 9781, 9796, 9793, 9775, 9772, 9778, 9787, 9811, 9766, - 9749, 9755, 9752, 9770, 9758, 9761, 9764, 9803, 9809, 9785, 9800, - 9806, 9782, 9797, 9794, 9776, 9773, 9779, 9788, 9812, 9767, 9747, - 9753, 9750, 9768, 9756, 9759, 9762, 9801, 9807, 9783, 9798, 9804, - 9780, 9795, 9792, 9774, 9771, 9777, 9786, 9810, 9765, 995, 2415, - 2416, 2417, 88, 1540, 2714, 432, 433, 1555, 1556, 1557, 1558, 1559, - 1560, 1561, 1562, 1563, 1564, 1565, 7585, 7584, 300, 775, 776, 777, - 6180, 6181, 6182, 6183, 6184, 6185, 6186, 6187, 6188, 2528, 4447, - 290, 666, 667 }; - public final static int[] ITEM_TRADEABLE = { 3842, 3844, 3840, 8844, 8845, - 8846, 8847, 8848, 8849, 8850, 10551, 6570, 7462, 7461, 7460, 7459, - 7458, 7457, 7456, 7455, 7454, 8839, 8840, 8842, 11663, 11664, - 11665, 10499, 9748, 9754, 9751, 9769, 9757, 9760, 9763, 9802, 9808, - 9784, 9799, 9805, 9781, 9796, 9793, 9775, 9772, 9778, 9787, 9811, - 9766, 9749, 9755, 9752, 9770, 9758, 9761, 9764, 9803, 9809, 9785, - 9800, 9806, 9782, 9797, 9794, 9776, 9773, 9779, 9788, 9812, 9767, - 9747, 9753, 9750, 9768, 9756, 9759, 9762, 9801, 9807, 9783, 9798, - 9804, 9780, 9795, 9792, 9774, 9771, 9777, 9786, 9810, 9765, 2528, - 4447, 772, 6180, 6181, 6182, 6183, 6184, 6185, 6186, 6187, 6188, - 775, 776, 777, 300, 88, 2415, 2416, 2417, 4214, 4215, 4216, 4217, - 4218, 4219, 4220, 4221, 4222, 4223, 4224, 1555, 1556, 1557, 1558, - 1559, 1560, 1561, 1562, 1563, 1564, 1565, 7585, 7584, 2714, 432, - 433, 290, 5075, 5074, 5073, 5071, 5070, 7413, 6529, 4067, 2996, 1464, 666, 667 }; - - public final static int[] ITEM_UNALCHABLE = { 995, 1555, 1556, 1557, 1558, - 1559, 1560, 1561, 1562, 1563, 1564, 1565, 7583, 1566, 7585, 2528, - 4214, 4212, 2714, 432, 433, 300, 775, 776, 777, 6180, 6181, 6182, - 6183, 6184, 6185, 6186, 6187, 6188, 2528, 4447, 290, 666, 667}; - - public final static int[] ITEM_BANKABLE = {2528, 4447}; - - public final static int[] DESTROYABLE_ITEMS = {775, 776, 777, 2528, 6570, 2714, 432, 433, 300, 666}; - - public final static int[] FUN_WEAPONS = { 2460, 2461, 2462, 2463, 2464, - 2465, 2466, 2467, 2468, 2469, 2470, 2471, 2471, 2473, 2474, 2475, - 2476, 2477 }; // fun weapons for dueling - - public static boolean ADMIN_CAN_TRADE = false; // can admins trade? - public final static boolean ADMIN_DROP_ITEMS = false; - public final static boolean ADMIN_CAN_SELL_ITEMS = false; - public final static int RESPAWN_X = 3222; // when dead respawn here - public final static int RESPAWN_Y = 3218; - public final static int DUELING_RESPAWN_X = 3362; - public final static int DUELING_RESPAWN_Y = 3263; - public final static int NO_TELEPORT_WILD_LEVEL = 20; - public final static int SKULL_TIMER = 1200; - public final static int TELEBLOCK_DELAY = 20000; - public final static boolean SINGLE_AND_MULTI_ZONES = true; - public final static boolean COMBAT_LEVEL_DIFFERENCE = true; - public final static boolean itemRequirements = true; - public final static int MELEE_EXP_RATE = 4; // damage * exp rate - public final static int RANGE_EXP_RATE = 4; - public final static int MAGIC_EXP_RATE = 4; - public final static int CASTLE_WARS_X = 2439; - public final static int CASTLE_WARS_Y = 3087; - public static double SERVER_EXP_BONUS = 1; - public final static int INCREASE_SPECIAL_AMOUNT = 17500; - public final static boolean PRAYER_POINTS_REQUIRED = true; - public final static boolean PRAYER_LEVEL_REQUIRED = true; - public final static int GOD_SPELL_CHARGE = 300000; - public final static boolean CORRECT_ARROWS = true; - public final static boolean CRYSTAL_BOW_DEGRADES = true; - public final static int SAVE_TIMER = 120; // save every 2 minute - public final static int NPC_RANDOM_WALK_DISTANCE = 5; - public final static int NPC_FOLLOW_DISTANCE = 10; - public final static String[] UNDEAD = { - "armoured zombie", "ankous", "banshee", "crawling hand", "dried zombie", "ghost", "ghostly warrior", "ghast", - "mummy", "mighty banshee", "reventant imp", "reventant goblin", "reventant icefiend", "reventant pyrefiend", - "reventant hobgoblin", "reventant vampyre", "reventant werewolf", "reventant cyclops", "reventant darkbeast", - "reventant demon", "reventant ork", "reventant hellhound", "reventant knight", "reventant dragon", - "shade", "skeleton", "skeleton brute", "skeleton thug", "skeleton warload", "summoned zombie", - "skorge", "tortured soul", "undead chicken", "undead cow", "undead one", "undead troll", "zombie", "zombie rat", "zogre" - }; - public final static int TIMEOUT = 60; - public final static int CYCLE_TIME = 600; - public final static int BUFFER_SIZE = 10000; - - public final static int ATTACK = 0, DEFENCE = 1, STRENGTH = 2, - HITPOINTS = 3, RANGED = 4, PRAYER = 5, MAGIC = 6, COOKING = 7, - WOODCUTTING = 8, FLETCHING = 9, FISHING = 10, FIREMAKING = 11, - CRAFTING = 12, SMITHING = 13, MINING = 14, HERBLORE = 15, - AGILITY = 16, THIEVING = 17, SLAYER = 18, FARMING = 19, - RUNECRAFTING = 20; -} +package com.rebotted; + +public class GameConstants { + + public final static boolean SERVER_DEBUG = false; + + public final static String SERVER_NAME = "2006rebotted", SERVER_VERSION = "Server Stage v " + GameConstants.TEST_VERSION + "."; + public final static double TEST_VERSION = 2.00; + public static int BANK_SIZE = 352; + public final static int ITEM_LIMIT = 15000, MAXITEM_AMOUNT = Integer.MAX_VALUE, CLIENT_VERSION = 999999, + WORLD = 1, IPS_ALLOWED = 250, CONNECTION_DELAY = 100, + MESSAGE_DELAY = 6000, MAX_PLAYERS = 100, REQ_AMOUNT = 150; + public final static boolean SOUND = true, + GUILDS = true, WORLD_LIST_FIX = false, + PARTY_ROOM_DISABLED = true, COMBAT_SOUNDS = true, + PRINT_OBJECT_ID = false, EXPERIMENTS = false; + public static int[] SIDEBARS = { 2423, 3917, 638, 3213, 1644, 5608, 1151, + 18128, 5065, 5715, 2449, 904, 147, 962 }; + public static boolean TUTORIAL_ISLAND = false, + MEMBERS_ONLY = false, sendServerPackets = false, + CLUES_ENABLED = false; + + public final static int HAT = 0, CAPE = 1, AMULET = 2, WEAPON = 3, + CHEST = 4, SHIELD = 5, LEGS = 7, HANDS = 9, FEET = 10, RING = 12, + ARROWS = 13; + + public final static int[] COMBAT_RELATED_ITEMS = { 35, 39, 40, 41, 42, 43, + 44, 50, 53, 54, 60, 64, 75, 76, 78, 88, 546, 548, 577, 581, 598, + 626, 628, 630, 632, 634, 667, 687, 746, 747, 767, 772, 775, 776, + 777, 778, 818, 837, 839, 841, 843, 845, 847, 849, 851, 853, 855, + 857, 859, 861, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, + 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, + 886, 887, 888, 889, 890, 891, 892, 893, 942, 975, 1007, 1019, 1021, + 1023, 1027, 1029, 1031, 1033, 1035, 1052, 1059, 1061, 1063, 1065, + 1067, 1069, 1071, 1073, 1075, 1077, 1079, 1081, 1083, 1085, 1087, + 1089, 1091, 1093, 1095, 1097, 1099, 1101, 1103, 1105, 1107, 1109, + 1111, 1113, 1115, 1117, 1119, 1121, 1123, 1125, 1127, 1129, 1131, + 1133, 1135, 1137, 1139, 1141, 1143, 1145, 1147, 1149, 1151, 1153, + 1155, 1157, 1159, 1161, 1163, 1165, 1167, 1169, 1171, 1173, 1175, + 1177, 1179, 1181, 1183, 1185, 1187, 1189, 1191, 1193, 1195, 1197, + 1199, 1201, 1203, 1205, 1207, 1209, 1211, 1213, 1215, 1217, 1219, + 1221, 1223, 1225, 1227, 1229, 1231, 1233, 1237, 1239, 1241, 1243, + 1245, 1247, 1249, 1251, 1253, 1255, 1257, 1259, 1261, 1263, 1265, + 1267, 1269, 1271, 1273, 1275, 1277, 1279, 1281, 1283, 1285, 1287, + 1289, 1291, 1293, 1295, 1297, 1299, 1301, 1303, 1305, 1307, 1309, + 1311, 1313, 1315, 1317, 1319, 1321, 1323, 1325, 1327, 1329, 1331, + 1333, 1335, 1337, 1339, 1341, 1343, 1345, 1347, 1349, 1351, 1353, + 1355, 1357, 1359, 1361, 1363, 1365, 1367, 1369, 1371, 1373, 1375, + 1377, 1379, 1381, 1383, 1385, 1387, 1389, 1391, 1393, 1395, 1397, + 1399, 1401, 1403, 1405, 1407, 1409, 1419, 1420, 1422, 1424, 1426, + 1428, 1430, 1432, 1434, 1540, 1718, 1724, 2402, 2412, 2413, 2414, + 2415, 2416, 2417, 2487, 2489, 2491, 2493, 2495, 2497, 2499, 2501, + 2503, 2513, 2532, 2533, 2534, 2535, 2536, 2537, 2538, 2539, 2540, + 2541, 2577, 2579, 2581, 2583, 2585, 2587, 2589, 2591, 2593, 2595, + 2597, 2599, 2601, 2603, 2605, 2607, 2609, 2611, 2613, 2615, 2617, + 2619, 2621, 2623, 2625, 2627, 2629, 2653, 2655, 2659, 2661, 2663, + 2667, 2669, 2671, 2673, 2861, 2864, 2865, 2866, 2890, 2896, 2906, + 2916, 2926, 2936, 2961, 2963, 3053, 3054, 3095, 3096, 3097, 3098, + 3099, 3100, 3101, 3105, 3107, 3122, 3140, 3170, 3171, 3172, 3173, + 3174, 3175, 3176, 3190, 3192, 3194, 3196, 3198, 3200, 3202, 3204, + 3327, 3329, 3331, 3333, 3335, 3337, 3339, 3341, 3343, 3385, 3387, + 3389, 3391, 3393, 3472, 3473, 3474, 3475, 3476, 3477, 3479, 3481, + 3483, 3485, 3486, 3488, 3748, 3749, 3751, 3753, 3755, 3757, 3758, + 3759, 3761, 3763, 3765, 3767, 3769, 3771, 3773, 3775, 3777, 3779, + 3781, 3783, 3785, 3787, 3789, 3791, 3797, 3840, 3841, 3842, 3843, + 3844, 4087, 4089, 4091, 4093, 4095, 4097, 4099, 4101, 4103, 4105, + 4107, 4109, 4111, 4113, 4115, 4117, 4119, 4121, 4123, 4125, 4127, + 4129, 4131, 4150, 4151, 4153, 4156, 4158, 4160, 4170, 4172, 4173, + 4174, 4175, 4212, 4214, 4215, 4216, 4217, 4218, 4219, 4220, 4221, + 4222, 4223, 4224, 4226, 4227, 4228, 4229, 4230, 4231, 4232, 4233, + 4234, 4298, 4300, 4302, 4304, 4308, 4310, 4502, 4503, 4504, 4505, + 4506, 4507, 4508, 4509, 4510, 4511, 4512, 4580, 4582, 4585, 4587, + 4600, 4675, 4708, 4710, 4712, 4714, 4716, 4718, 4720, 4722, 4724, + 4726, 4728, 4730, 4732, 4734, 4736, 4738, 4740, 4745, 4747, 4749, + 4751, 4753, 4755, 4757, 4759, 4778, 4783, 4788, 4793, 4803, 4827, + 4860, 4866, 4872, 4878, 4884, 4890, 4896, 4902, 4908, 4914, 4920, + 4926, 4932, 4938, 4944, 4950, 4956, 4962, 4968, 4974, 4980, 4986, + 4992, 4998, 5014, 5016, 5018, 5553, 5554, 5555, 5556, 5557, 5574, + 5575, 5576, 5616, 5617, 5618, 5619, 5620, 5621, 5622, 5623, 5624, + 5625, 5626, 5627, 5648, 5654, 5655, 5656, 5657, 5658, 5659, 5660, + 5661, 5662, 5663, 5664, 5665, 5666, 5667, 5668, 5670, 5672, 5674, + 5676, 5678, 5680, 5682, 5686, 5688, 5690, 5692, 5694, 5696, 5698, + 5700, 5704, 5706, 5708, 5710, 5712, 5714, 5716, 5718, 5720, 5722, + 5724, 5726, 5728, 5730, 5734, 5736, 6061, 6062, 6106, 6107, 6108, + 6109, 6110, 6111, 6128, 6129, 6130, 6131, 6133, 6135, 6137, 6139, + 6141, 6143, 6145, 6147, 6149, 6151, 6153, 6235, 6257, 6279, 6313, + 6315, 6317, 6322, 6324, 6326, 6328, 6330, 6416, 6522, 6523, 6524, + 6525, 6526, 6527, 6528, 6562, 6563, 6568, 6570, 6587, 6589, 6591, + 6593, 6595, 6597, 6599, 6601, 6603, 6605, 6607, 6609, 6611, 6613, + 6615, 6617, 6619, 6621, 6623, 6625, 6627, 6629, 6631, 6633, 6720, + 6724, 6726, 6739, 6745, 6746, 6760, 6762, 6764, 6809, 6889, 6893, + 6894, 6895, 6897, 6908, 6910, 6912, 6914, 6916, 6918, 6920, 6922, + 6924, 6959, 7158, 7159, 7332, 7334, 7336, 7338, 7340, 7342, 7344, + 7346, 7348, 7350, 7352, 7354, 7356, 7358, 7360, 7362, 7364, 7366, + 7368, 7374, 7390, 7392, 7394, 7396, 7398, 7399, 7400, 7410, 7433, + 7435, 7437, 7439, 7441, 7443, 7445, 7447, 7449, 7451, 7453, 7454, + 7455, 7456, 7457, 7458, 7459, 7460, 7461, 7462, 7539, 7552, 7553, + 7639, 7640, 7641, 7642, 7643, 7644, 7645, 7646, 7647, 7648, 7668, + 7686, 7687, 7806, 7807, 7808, 7809 }; + + public final static int[] ALCOHOL_RELATED_ITEMS = { 8940, 3803, 3712, 3711, + 2092, 2074, 3801 }; + + public final static int[] ITEM_SELLABLE = { 3842, 3844, 3840, 8844, 8845, + 8846, 8847, 8848, 8849, 8850, 10551, 6570, 7462, 7461, 7460, 7459, + 7458, 7457, 7456, 7455, 7454, 8839, 8840, 8842, 11663, 11664, 11666, + 10499, 9748, 9754, 9751, 9769, 9757, 9760, 9763, 9802, 9808, 9784, + 9799, 9805, 9781, 9796, 9793, 9775, 9772, 9778, 9787, 9811, 9766, + 9749, 9755, 9752, 9770, 9758, 9761, 9764, 9803, 9809, 9785, 9800, + 9806, 9782, 9797, 9794, 9776, 9773, 9779, 9788, 9812, 9767, 9747, + 9753, 9750, 9768, 9756, 9759, 9762, 9801, 9807, 9783, 9798, 9804, + 9780, 9795, 9792, 9774, 9771, 9777, 9786, 9810, 9765, 995, 2415, + 2416, 2417, 88, 1540, 2714, 432, 433, 1555, 1556, 1557, 1558, 1559, + 1560, 1561, 1562, 1563, 1564, 1565, 7585, 7584, 300, 775, 776, 777, + 6180, 6181, 6182, 6183, 6184, 6185, 6186, 6187, 6188, 2528, 4447, + 290, 666, 667 }; + public final static int[] ITEM_TRADEABLE = { 3842, 3844, 3840, 8844, 8845, + 8846, 8847, 8848, 8849, 8850, 10551, 6570, 7462, 7461, 7460, 7459, + 7458, 7457, 7456, 7455, 7454, 8839, 8840, 8842, 11663, 11664, + 11665, 10499, 9748, 9754, 9751, 9769, 9757, 9760, 9763, 9802, 9808, + 9784, 9799, 9805, 9781, 9796, 9793, 9775, 9772, 9778, 9787, 9811, + 9766, 9749, 9755, 9752, 9770, 9758, 9761, 9764, 9803, 9809, 9785, + 9800, 9806, 9782, 9797, 9794, 9776, 9773, 9779, 9788, 9812, 9767, + 9747, 9753, 9750, 9768, 9756, 9759, 9762, 9801, 9807, 9783, 9798, + 9804, 9780, 9795, 9792, 9774, 9771, 9777, 9786, 9810, 9765, 2528, + 4447, 772, 6180, 6181, 6182, 6183, 6184, 6185, 6186, 6187, 6188, + 775, 776, 777, 300, 88, 2415, 2416, 2417, 4214, 4215, 4216, 4217, + 4218, 4219, 4220, 4221, 4222, 4223, 4224, 1555, 1556, 1557, 1558, + 1559, 1560, 1561, 1562, 1563, 1564, 1565, 7585, 7584, 2714, 432, + 433, 290, 5075, 5074, 5073, 5071, 5070, 7413, 6529, 4067, 2996, 1464, 666, 667 }; + + public final static int[] ITEM_UNALCHABLE = { 995, 1555, 1556, 1557, 1558, + 1559, 1560, 1561, 1562, 1563, 1564, 1565, 7583, 1566, 7585, 2528, + 4214, 4212, 2714, 432, 433, 300, 775, 776, 777, 6180, 6181, 6182, + 6183, 6184, 6185, 6186, 6187, 6188, 2528, 4447, 290, 666, 667}; + + public final static int[] ITEM_BANKABLE = {2528, 4447}; + + public final static int[] DESTROYABLE_ITEMS = {775, 776, 777, 2528, 6570, 2714, 432, 433, 300, 666}; + + public final static int[] FUN_WEAPONS = { 2460, 2461, 2462, 2463, 2464, + 2465, 2466, 2467, 2468, 2469, 2470, 2471, 2471, 2473, 2474, 2475, + 2476, 2477 }; // fun weapons for dueling + + public static boolean ADMIN_CAN_TRADE = false; // can admins trade? + public final static boolean ADMIN_DROP_ITEMS = false; + public final static boolean ADMIN_CAN_SELL_ITEMS = false; + public final static int RESPAWN_X = 3222; // when dead respawn here + public final static int RESPAWN_Y = 3218; + public final static int DUELING_RESPAWN_X = 3362; + public final static int DUELING_RESPAWN_Y = 3263; + public final static int NO_TELEPORT_WILD_LEVEL = 20; + public final static int SKULL_TIMER = 1200; + public final static int TELEBLOCK_DELAY = 20000; + public final static boolean SINGLE_AND_MULTI_ZONES = true; + public final static boolean COMBAT_LEVEL_DIFFERENCE = true; + public final static boolean ITEM_REQUIREMENTS = true; + public final static int MELEE_EXP_RATE = 4; // damage * exp rate + public final static int RANGE_EXP_RATE = 4; + public final static int MAGIC_EXP_RATE = 4; + public final static int CASTLE_WARS_X = 2439; + public final static int CASTLE_WARS_Y = 3087; + public static double XP_RATE = 1; + + public final static int INCREASE_SPECIAL_AMOUNT = 17500; + public final static int GOD_SPELL_CHARGE = 300000; + public final static boolean CORRECT_ARROWS = true; + public final static boolean CRYSTAL_BOW_DEGRADES = true; + public final static int SAVE_TIMER = 120; // save every 2 minute + public final static int NPC_RANDOM_WALK_DISTANCE = 5; + public final static int NPC_FOLLOW_DISTANCE = 10; + public final static String[] UNDEAD = { + "armoured zombie", "ankous", "banshee", "crawling hand", "dried zombie", "ghost", "ghostly warrior", "ghast", + "mummy", "mighty banshee", "reventant imp", "reventant goblin", "reventant icefiend", "reventant pyrefiend", + "reventant hobgoblin", "reventant vampyre", "reventant werewolf", "reventant cyclops", "reventant darkbeast", + "reventant demon", "reventant ork", "reventant hellhound", "reventant knight", "reventant dragon", + "shade", "skeleton", "skeleton brute", "skeleton thug", "skeleton warload", "summoned zombie", + "skorge", "tortured soul", "undead chicken", "undead cow", "undead one", "undead troll", "zombie", "zombie rat", "zogre" + }; + public final static int TIMEOUT = 60; + public final static int CYCLE_TIME = 600; + public final static int BUFFER_SIZE = 10000; + + public final static int ATTACK = 0, DEFENCE = 1, STRENGTH = 2, + HITPOINTS = 3, RANGED = 4, PRAYER = 5, MAGIC = 6, COOKING = 7, + WOODCUTTING = 8, FLETCHING = 9, FISHING = 10, FIREMAKING = 11, + CRAFTING = 12, SMITHING = 13, MINING = 14, HERBLORE = 15, + AGILITY = 16, THIEVING = 17, SLAYER = 18, FARMING = 19, + RUNECRAFTING = 20; +} diff --git a/2006Redone Server/src/redone/Server.java b/2006Redone Server/src/com/rebotted/GameEngine.java similarity index 70% rename from 2006Redone Server/src/redone/Server.java rename to 2006Redone Server/src/com/rebotted/GameEngine.java index ed593328..6b41fd99 100644 --- a/2006Redone Server/src/redone/Server.java +++ b/2006Redone Server/src/com/rebotted/GameEngine.java @@ -1,213 +1,203 @@ -package redone; - -import java.io.File; -import java.io.IOException; -import java.net.InetSocketAddress; - -import org.apache.mina.common.IoAcceptor; -import org.apache.mina.transport.socket.nio.SocketAcceptor; -import org.apache.mina.transport.socket.nio.SocketAcceptorConfig; - -import redone.integrations.PlayersOnlineWebsite; -import redone.integrations.RegisteredAccsWebsite; -import redone.integrations.SettingsLoader; -import redone.integrations.discord.DiscordActivity; -import redone.integrations.discord.JavaCord; -import redone.event.CycleEventHandler; -import redone.event.TaskScheduler; -import redone.game.content.minigames.FightCaves; -import redone.game.content.minigames.FightPits; -import redone.game.content.minigames.PestControl; -import redone.game.content.minigames.castlewars.CastleWars; -import redone.game.content.minigames.trawler.Trawler; -import redone.game.globalworldobjects.Doors; -import redone.game.globalworldobjects.DoubleDoors; -import redone.game.items.ItemDefinitions; -import redone.game.npcs.NpcHandler; -import redone.game.players.Client; -import redone.game.players.Player; -import redone.game.players.PlayerHandler; -import redone.game.players.PlayerSave; -import redone.game.shops.ShopHandler; -import redone.net.ConnectionHandler; -import redone.net.ConnectionThrottleFilter; -import redone.util.HostBlacklist; -import redone.world.ClanChatHandler; -import redone.world.GlobalDropsHandler; -import redone.world.ItemHandler; -import redone.world.ObjectHandler; -import redone.world.ObjectManager; -import redone.world.clip.ObjectDef; -import redone.world.clip.Region; - -/** - * Server.java - * - * @author Sanity - * @author Graham - * @author Blake - * @author Ryan Lmctruck30 - * @author Integration Julian. - */ -public class Server { - - - public static String ersSecret; - public static int[] cannonsX = new int [50]; - public static int[] cannonsY = new int [50]; - public static String[] cannonsO = new String [50]; - public static boolean sleeping; - private static final int cycleRate; - public static boolean UpdateServer = false; - public static long lastMassSave = System.currentTimeMillis(); - private static IoAcceptor acceptor; - private static ConnectionHandler connectionHandler; - private static ConnectionThrottleFilter throttleFilter; - private static boolean shutdownServer = false; - public static int garbageCollectDelay = 40; - public static boolean shutdownClientHandler; - private static int serverlistenerPort; - public static ItemHandler itemHandler = new ItemHandler(); - public static PlayerHandler playerHandler = new PlayerHandler(); - public static NpcHandler npcHandler = new NpcHandler(); - private static ShopHandler shopHandler = new ShopHandler(); - public static ObjectHandler objectHandler = new ObjectHandler(); - public static ObjectManager objectManager = new ObjectManager(); - public static FightCaves fightCaves = new FightCaves(); - private static PestControl pestControl = new PestControl(); - public static Trawler trawler = new Trawler(); - private static final TaskScheduler scheduler = new TaskScheduler(); - public static ClanChatHandler clanChat = new ClanChatHandler(); - - public static TaskScheduler getTaskScheduler() { - return scheduler; - } - - /** - * Port and Cycle rate. - */ - static { - serverlistenerPort = 43594; - cycleRate = 600; - shutdownServer = false; - } - - public static void main(java.lang.String args[]) - throws NullPointerException, IOException { - if (Constants.SERVER_DEBUG) { - System.out.println("@@@@ DEBUG MODE IS ENABLED @@@@"); - } - - if (!new File("data").exists()) - { - System.out.println("************************************"); - System.out.println("************************************"); - System.out.println("************************************"); - System.out.println("WARNING: I could not find the /data folder. You are LIKELY running this in the wrong directory!"); - System.out.println("In IntelliJ, fix it by clicking \"Server\" > Edit Configurations at the top of your screen"); - System.out.println("Then changing the \"Working Directory\" to be in \"2006rebotted/2006Redone Server\", instead of just \"2006rebotted\""); - System.out.println("************************************"); - System.out.println("************************************"); - System.out.println("************************************"); - System.exit(1); - } - - /** - * Starting Up Server - */ - System.out.println("Launching " + Constants.SERVER_NAME + "..."); - - /** - * Start Integration Services - **/ - SettingsLoader.loadSettings(); - JavaCord.init(); - - /** - * Accepting Connections - */ - acceptor = new SocketAcceptor(); - connectionHandler = new ConnectionHandler(); - - SocketAcceptorConfig sac = new SocketAcceptorConfig(); - sac.getSessionConfig().setTcpNoDelay(false); - sac.setReuseAddress(true); - sac.setBacklog(100); - - throttleFilter = new ConnectionThrottleFilter(Constants.CONNECTION_DELAY); - sac.getFilterChain().addFirst("throttleFilter", throttleFilter); - acceptor.bind(new InetSocketAddress(serverlistenerPort), connectionHandler, sac); - - /** - * Initialise Handlers - */ - ObjectDef.loadConfig(); - Region.load(); - Doors.getSingleton().load(); - DoubleDoors.getSingleton().load(); - ItemDefinitions.read(); - GlobalDropsHandler.initialize(); - Connection.initialize(); - HostBlacklist.loadBlacklist(); - - /** - * Server Successfully Loaded - */ - System.out.println("Server listening on port " + serverlistenerPort); - - /** - * Main Server Tick - */ - try { - while (!Server.shutdownServer) { - Thread.sleep(600); - itemHandler.process(); - playerHandler.process(); - npcHandler.process(); - shopHandler.process(); - objectManager.process(); - CastleWars.process(); - FightPits.process(); - pestControl.process(); - CycleEventHandler.getSingleton().process(); - PlayersOnlineWebsite.addUpdatePlayersOnlineTask(); - RegisteredAccsWebsite.addUpdateRegisteredUsersTask(); - DiscordActivity.updateActivity(); - if (System.currentTimeMillis() - lastMassSave > 300000) { - for (Player p : PlayerHandler.players) { - if (p == null) { - continue; - } - PlayerSave.saveGame((Client) p); - System.out.println("Saved game for " + p.playerName - + "."); - lastMassSave = System.currentTimeMillis(); - } - } - } - } catch (Exception ex) { - ex.printStackTrace(); - System.out.println("A fatal exception has been thrown!"); - for (Player p : PlayerHandler.players) { - if (p == null) { - continue; - } - if (p.inTrade) { - ((Client)p).getTrading().declineTrade(); - } - if(p.duelStatus == 6) { - ((Client)p).getDueling().claimStakedItems(); - } - PlayerSave.saveGame((Client) p); - System.out.println("Saved game for " + p.playerName + "."); - } - } - acceptor = null; - connectionHandler = null; - sac = null; - System.exit(0); - } - - public static boolean playerExecuted = false; - -} +package com.rebotted; + +import java.io.File; +import java.io.IOException; +import java.net.InetSocketAddress; + +import org.apache.mina.common.IoAcceptor; +import org.apache.mina.transport.socket.nio.SocketAcceptor; +import org.apache.mina.transport.socket.nio.SocketAcceptorConfig; + +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.content.minigames.FightCaves; +import com.rebotted.game.content.minigames.FightPits; +import com.rebotted.game.content.minigames.PestControl; +import com.rebotted.game.content.minigames.castlewars.CastleWars; +import com.rebotted.game.content.minigames.trawler.Trawler; +import com.rebotted.game.globalworldobjects.Doors; +import com.rebotted.game.globalworldobjects.DoubleDoors; +import com.rebotted.game.items.ItemDefinitions; +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerHandler; +import com.rebotted.game.players.PlayerSave; +import com.rebotted.game.shops.ShopHandler; +import com.rebotted.integrations.PlayersOnlineWebsite; +import com.rebotted.integrations.RegisteredAccsWebsite; +import com.rebotted.integrations.SettingsLoader; +import com.rebotted.integrations.discord.DiscordActivity; +import com.rebotted.integrations.discord.JavaCord; +import com.rebotted.net.ConnectionHandler; +import com.rebotted.net.ConnectionThrottleFilter; +import com.rebotted.util.HostBlacklist; +import com.rebotted.world.GlobalDropsHandler; +import com.rebotted.world.ItemHandler; +import com.rebotted.world.ObjectHandler; +import com.rebotted.world.ObjectManager; +import com.rebotted.world.clip.ObjectDef; +import com.rebotted.world.clip.Region; + +/** + * Server.java + * + * @author Sanity + * @author Graham + * @author Blake + * @author Ryan Lmctruck30 + * @author Integration Julian. + */ +public class GameEngine { + + + public static String ersSecret; + public static int[] cannonsX = new int [50]; + public static int[] cannonsY = new int [50]; + public static String[] cannonsO = new String [50]; + public static boolean sleeping; + public static boolean UpdateServer = false; + public static long lastMassSave = System.currentTimeMillis(); + private static IoAcceptor acceptor; + private static ConnectionHandler connectionHandler; + private static ConnectionThrottleFilter throttleFilter; + private static boolean shutdownServer = false; + public static int garbageCollectDelay = 40; + public static boolean shutdownClientHandler; + private static int serverlistenerPort; + public static ItemHandler itemHandler = new ItemHandler(); + public static PlayerHandler playerHandler = new PlayerHandler(); + public static NpcHandler npcHandler = new NpcHandler(); + private static ShopHandler shopHandler = new ShopHandler(); + public static ObjectHandler objectHandler = new ObjectHandler(); + public static ObjectManager objectManager = new ObjectManager(); + public static FightCaves fightCaves = new FightCaves(); + private static PestControl pestControl = new PestControl(); + public static Trawler trawler = new Trawler(); + + /** + * Port and Cycle rate. + */ + static { + serverlistenerPort = 43594; + shutdownServer = false; + } + + public static void main(java.lang.String args[]) + throws NullPointerException, IOException { + if (GameConstants.SERVER_DEBUG) { + System.out.println("@@@@ DEBUG MODE IS ENABLED @@@@"); + } + + if (!new File("data").exists()) + { + System.out.println("************************************"); + System.out.println("************************************"); + System.out.println("************************************"); + System.out.println("WARNING: I could not find the /data folder. You are LIKELY running this in the wrong directory!"); + System.out.println("In IntelliJ, fix it by clicking \"Server\" > Edit Configurations at the top of your screen"); + System.out.println("Then changing the \"Working Directory\" to be in \"2006rebotted/2006Redone Server\", instead of just \"2006rebotted\""); + System.out.println("************************************"); + System.out.println("************************************"); + System.out.println("************************************"); + System.exit(1); + } + + /** + * Starting Up Server + */ + System.out.println("Launching " + GameConstants.SERVER_NAME + "..."); + + /** + * Start Integration Services + **/ + SettingsLoader.loadSettings(); + JavaCord.init(); + + /** + * Accepting Connections + */ + acceptor = new SocketAcceptor(); + connectionHandler = new ConnectionHandler(); + + SocketAcceptorConfig sac = new SocketAcceptorConfig(); + sac.getSessionConfig().setTcpNoDelay(false); + sac.setReuseAddress(true); + sac.setBacklog(100); + + throttleFilter = new ConnectionThrottleFilter(GameConstants.CONNECTION_DELAY); + sac.getFilterChain().addFirst("throttleFilter", throttleFilter); + acceptor.bind(new InetSocketAddress(serverlistenerPort), connectionHandler, sac); + + /** + * Initialise Handlers + */ + ObjectDef.loadConfig(); + Region.load(); + Doors.getSingleton().load(); + DoubleDoors.getSingleton().load(); + ItemDefinitions.read(); + GlobalDropsHandler.initialize(); + Connection.initialize(); + HostBlacklist.loadBlacklist(); + + /** + * Server Successfully Loaded + */ + System.out.println("Server listening on port " + serverlistenerPort); + + /** + * Main Server Tick + */ + try { + while (!GameEngine.shutdownServer) { + Thread.sleep(600); + itemHandler.process(); + playerHandler.process(); + npcHandler.process(); + shopHandler.process(); + objectManager.process(); + CastleWars.process(); + FightPits.process(); + pestControl.process(); + CycleEventHandler.getSingleton().process(); + PlayersOnlineWebsite.addUpdatePlayersOnlineTask(); + RegisteredAccsWebsite.addUpdateRegisteredUsersTask(); + DiscordActivity.updateActivity(); + if (System.currentTimeMillis() - lastMassSave > 300000) { + for (Player p : PlayerHandler.players) { + if (p == null) { + continue; + } + PlayerSave.saveGame((Client) p); + System.out.println("Saved game for " + p.playerName + + "."); + lastMassSave = System.currentTimeMillis(); + } + } + } + } catch (Exception ex) { + ex.printStackTrace(); + System.out.println("A fatal exception has been thrown!"); + for (Player p : PlayerHandler.players) { + if (p == null) { + continue; + } + if (p.inTrade) { + ((Client)p).getTrading().declineTrade(); + } + if(p.duelStatus == 6) { + ((Client)p).getDueling().claimStakedItems(); + } + PlayerSave.saveGame((Client) p); + System.out.println("Saved game for " + p.playerName + "."); + } + } + acceptor = null; + connectionHandler = null; + sac = null; + System.exit(0); + } + + public static boolean playerExecuted = false; + +} diff --git a/2006Redone Server/src/redone/event/CycleEvent.java b/2006Redone Server/src/com/rebotted/event/CycleEvent.java similarity index 89% rename from 2006Redone Server/src/redone/event/CycleEvent.java rename to 2006Redone Server/src/com/rebotted/event/CycleEvent.java index 14d56555..a1720a8f 100644 --- a/2006Redone Server/src/redone/event/CycleEvent.java +++ b/2006Redone Server/src/com/rebotted/event/CycleEvent.java @@ -1,22 +1,22 @@ -package redone.event; - -/** - * What the event must implement - * - * @author Stuart - */ -public abstract class CycleEvent { - - /** - * Code which should be ran when the event is executed - * - * @param container - */ - public abstract void execute(CycleEventContainer container); - - /** - * Code which should be ran when the event stops - */ - public abstract void stop(); - -} +package com.rebotted.event; + +/** + * What the event must implement + * + * @author Stuart + */ +public abstract class CycleEvent { + + /** + * Code which should be ran when the event is executed + * + * @param container + */ + public abstract void execute(CycleEventContainer container); + + /** + * Code which should be ran when the event stops + */ + public abstract void stop(); + +} diff --git a/2006Redone Server/src/redone/event/CycleEventContainer.java b/2006Redone Server/src/com/rebotted/event/CycleEventContainer.java similarity index 92% rename from 2006Redone Server/src/redone/event/CycleEventContainer.java rename to 2006Redone Server/src/com/rebotted/event/CycleEventContainer.java index 12678c28..9b46e07c 100644 --- a/2006Redone Server/src/redone/event/CycleEventContainer.java +++ b/2006Redone Server/src/com/rebotted/event/CycleEventContainer.java @@ -1,137 +1,137 @@ -package redone.event; - -/** - * The wrapper for our event - * - * @author Stuart - * @author Null++ - */ - -public class CycleEventContainer { - - /** - * Event owner - */ - private final Object owner; - - /** - * Is the event running or not - */ - private boolean isRunning; - - /** - * The amount of cycles per event execution - */ - private int tick; - - /** - * The actual event - */ - private final CycleEvent event; - - /** - * The current amount of cycles passed - */ - private int cyclesPassed; - - /** - * The event ID - */ - private final int eventID; - - /** - * Sets the event containers details - * - * @param owner - * , the owner of the event - * @param event - * , the actual event to run - * @param tick - * , the cycles between execution of the event - */ - public CycleEventContainer(int id, Object owner, CycleEvent event, int tick) { - eventID = id; - this.owner = owner; - this.event = event; - isRunning = true; - cyclesPassed = 0; - this.tick = tick; - } - - /** - * Execute the contents of the event - */ - public void execute() { - event.execute(this); - } - - /** - * Stop the event from running - */ - public void stop() { - isRunning = false; - event.stop(); - } - - /** - * Does the event need to be ran? - * - * @return true yes false no - */ - public boolean needsExecution() { - if (!isRunning()) { - return false; - } - if (++cyclesPassed >= tick) { - cyclesPassed = 0; - return true; - } - return false; - } - - /** - * Returns the owner of the event - * - * @return - */ - public Object getOwner() { - return owner; - } - - /** - * Is the event running? - * - * @return true yes false no - */ - public boolean isRunning() { - return isRunning; - } - - /** - * Returns the event id - * - * @return id - */ - public int getID() { - return eventID; - } - - /** - * Returns the current cycle/tick. - * - * @return - */ - public int getTick() { - return tick; - } - - /** - * Set the amount of cycles between the execution - * - * @param tick - */ - public void setTick(int tick) { - this.tick = tick; - } - -} +package com.rebotted.event; + +/** + * The wrapper for our event + * + * @author Stuart + * @author Null++ + */ + +public class CycleEventContainer { + + /** + * Event owner + */ + private final Object owner; + + /** + * Is the event running or not + */ + private boolean isRunning; + + /** + * The amount of cycles per event execution + */ + private int tick; + + /** + * The actual event + */ + private final CycleEvent event; + + /** + * The current amount of cycles passed + */ + private int cyclesPassed; + + /** + * The event ID + */ + private final int eventID; + + /** + * Sets the event containers details + * + * @param owner + * , the owner of the event + * @param event + * , the actual event to run + * @param tick + * , the cycles between execution of the event + */ + public CycleEventContainer(int id, Object owner, CycleEvent event, int tick) { + eventID = id; + this.owner = owner; + this.event = event; + isRunning = true; + cyclesPassed = 0; + this.tick = tick; + } + + /** + * Execute the contents of the event + */ + public void execute() { + event.execute(this); + } + + /** + * Stop the event from running + */ + public void stop() { + isRunning = false; + event.stop(); + } + + /** + * Does the event need to be ran? + * + * @return true yes false no + */ + public boolean needsExecution() { + if (!isRunning()) { + return false; + } + if (++cyclesPassed >= tick) { + cyclesPassed = 0; + return true; + } + return false; + } + + /** + * Returns the owner of the event + * + * @return + */ + public Object getOwner() { + return owner; + } + + /** + * Is the event running? + * + * @return true yes false no + */ + public boolean isRunning() { + return isRunning; + } + + /** + * Returns the event id + * + * @return id + */ + public int getID() { + return eventID; + } + + /** + * Returns the current cycle/tick. + * + * @return + */ + public int getTick() { + return tick; + } + + /** + * Set the amount of cycles between the execution + * + * @param tick + */ + public void setTick(int tick) { + this.tick = tick; + } + +} diff --git a/2006Redone Server/src/redone/event/CycleEventHandler.java b/2006Redone Server/src/com/rebotted/event/CycleEventHandler.java similarity index 94% rename from 2006Redone Server/src/redone/event/CycleEventHandler.java rename to 2006Redone Server/src/com/rebotted/event/CycleEventHandler.java index 22a0eb1b..e692cc5c 100644 --- a/2006Redone Server/src/redone/event/CycleEventHandler.java +++ b/2006Redone Server/src/com/rebotted/event/CycleEventHandler.java @@ -1,142 +1,142 @@ -package redone.event; - -import java.util.ArrayList; -import java.util.List; - -/** - * Handles all of our cycle based events - * - * @author Stuart - * @author Null++ - */ -public class CycleEventHandler { - - /** - * The instance of this class - */ - private static CycleEventHandler instance; - - /** - * Returns the instance of this class - * - * @return - */ - public static CycleEventHandler getSingleton() { - if (instance == null) { - instance = new CycleEventHandler(); - } - return instance; - } - - /** - * Holds all of our events currently being ran - */ - private final List events; - - /** - * Creates a new instance of this class - */ - public CycleEventHandler() { - events = new ArrayList(); - } - - /** - * Add an event to the list - * - * @param id - * @param owner - * @param event - * @param cycles - */ - public CycleEventContainer addEvent(int id, Object owner, CycleEvent event, int cycles) { - CycleEventContainer container = new CycleEventContainer(id, owner, event, cycles); - events.add(container); - return container; - } - - /** - * Add an event to the list - * - * @param owner - * @param event - * @param cycles - */ - public CycleEventContainer addEvent(Object owner, CycleEvent event, int cycles) { - CycleEventContainer container = new CycleEventContainer(-1, owner, event, cycles); - events.add(container); - return container; - } - - /** - * Execute and remove events - */ - public void process() { - List eventsCopy = new ArrayList( - events); - List remove = new ArrayList(); - for (CycleEventContainer c : eventsCopy) { - if (c != null) { - if (c.needsExecution() && c.isRunning()) { - c.execute(); - if (!c.isRunning()) { - remove.add(c); - - } - } - } - } - for (CycleEventContainer c : remove) { - events.remove(c); - } - } - - /** - * Returns the amount of events currently running - * - * @return amount - */ - public int getEventsCount() { - return events.size(); - } - - /** - * Stops all events for a specific owner and id - * - * @param owner - */ - public void stopEvents(Object owner) { - for (CycleEventContainer c : events) { - if (c.getOwner() == owner) { - c.stop(); - } - } - } - - /** - * Stops all events for a specific owner and id - * - * @param owner - * @param id - */ - public void stopEvents(Object owner, int id) { - for (CycleEventContainer c : events) { - if (c.getOwner() == owner && id == c.getID()) { - c.stop(); - } - } - } - - /** - * Stops all events for a specific owner and id - * - * @param id - */ - public void stopEvents(int id) { - for (CycleEventContainer c : events) { - if (id == c.getID()) { - c.stop(); - } - } - } - -} +package com.rebotted.event; + +import java.util.ArrayList; +import java.util.List; + +/** + * Handles all of our cycle based events + * + * @author Stuart + * @author Null++ + */ +public class CycleEventHandler { + + /** + * The instance of this class + */ + private static CycleEventHandler instance; + + /** + * Returns the instance of this class + * + * @return + */ + public static CycleEventHandler getSingleton() { + if (instance == null) { + instance = new CycleEventHandler(); + } + return instance; + } + + /** + * Holds all of our events currently being ran + */ + private final List events; + + /** + * Creates a new instance of this class + */ + public CycleEventHandler() { + events = new ArrayList(); + } + + /** + * Add an event to the list + * + * @param id + * @param owner + * @param event + * @param cycles + */ + public CycleEventContainer addEvent(int id, Object owner, CycleEvent event, int cycles) { + CycleEventContainer container = new CycleEventContainer(id, owner, event, cycles); + events.add(container); + return container; + } + + /** + * Add an event to the list + * + * @param owner + * @param event + * @param cycles + */ + public CycleEventContainer addEvent(Object owner, CycleEvent event, int cycles) { + CycleEventContainer container = new CycleEventContainer(-1, owner, event, cycles); + events.add(container); + return container; + } + + /** + * Execute and remove events + */ + public void process() { + List eventsCopy = new ArrayList( + events); + List remove = new ArrayList(); + for (CycleEventContainer c : eventsCopy) { + if (c != null) { + if (c.needsExecution() && c.isRunning()) { + c.execute(); + if (!c.isRunning()) { + remove.add(c); + + } + } + } + } + for (CycleEventContainer c : remove) { + events.remove(c); + } + } + + /** + * Returns the amount of events currently running + * + * @return amount + */ + public int getEventsCount() { + return events.size(); + } + + /** + * Stops all events for a specific owner and id + * + * @param owner + */ + public void stopEvents(Object owner) { + for (CycleEventContainer c : events) { + if (c.getOwner() == owner) { + c.stop(); + } + } + } + + /** + * Stops all events for a specific owner and id + * + * @param owner + * @param id + */ + public void stopEvents(Object owner, int id) { + for (CycleEventContainer c : events) { + if (c.getOwner() == owner && id == c.getID()) { + c.stop(); + } + } + } + + /** + * Stops all events for a specific owner and id + * + * @param id + */ + public void stopEvents(int id) { + for (CycleEventContainer c : events) { + if (id == c.getID()) { + c.stop(); + } + } + } + +} diff --git a/2006Redone Server/src/redone/game/bots/Bot.java b/2006Redone Server/src/com/rebotted/game/bots/Bot.java similarity index 88% rename from 2006Redone Server/src/redone/game/bots/Bot.java rename to 2006Redone Server/src/com/rebotted/game/bots/Bot.java index 1df1608e..d91068c8 100644 --- a/2006Redone Server/src/redone/game/bots/Bot.java +++ b/2006Redone Server/src/com/rebotted/game/bots/Bot.java @@ -1,14 +1,14 @@ -package redone.game.bots; +package com.rebotted.game.bots; -import redone.Server; -import redone.game.items.ItemAssistant; -import redone.game.players.Client; -import redone.util.Misc; +import static com.rebotted.game.players.PlayerSave.loadPlayerInfo; import java.text.DecimalFormat; import java.util.*; -import static redone.game.players.PlayerSave.loadPlayerInfo; +import com.rebotted.GameEngine; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Client; +import com.rebotted.util.Misc; public class Bot { @@ -31,7 +31,7 @@ public class Bot { botClient.isActive = true; botClient.disconnected = false; botClient.npcCanAttack = false; - Server.playerHandler.newPlayerClient(botClient); + GameEngine.playerHandler.newPlayerClient(botClient); botClient.getPlayerAssistant().movePlayer(x, y, z); @@ -62,7 +62,7 @@ public class Bot { if (items.size() <= 0) return; int item_id = Misc.randomArrayListItem(items); String item_name = ItemAssistant.getItemName(item_id).toLowerCase(); - int value = BotHandler.getItemPrice(botClient.myShopId, item_id); + int value = BotHandler.getItemPrice(botClient.shopId, item_id); if (value <= 0) return; String _message = "Selling " + item_name + " " + formatSellPrice(value) + " ea - " + botClient.playerName; diff --git a/2006Redone Server/src/redone/game/bots/BotConstants.java b/2006Redone Server/src/com/rebotted/game/bots/BotConstants.java similarity index 69% rename from 2006Redone Server/src/redone/game/bots/BotConstants.java rename to 2006Redone Server/src/com/rebotted/game/bots/BotConstants.java index 1ac4b665..b27ccd3a 100644 --- a/2006Redone Server/src/redone/game/bots/BotConstants.java +++ b/2006Redone Server/src/com/rebotted/game/bots/BotConstants.java @@ -1,4 +1,4 @@ -package redone.game.bots; +package com.rebotted.game.bots; public class BotConstants { public static final int MAX_BOTS = 100; diff --git a/2006Redone Server/src/redone/game/bots/BotHandler.java b/2006Redone Server/src/com/rebotted/game/bots/BotHandler.java similarity index 84% rename from 2006Redone Server/src/redone/game/bots/BotHandler.java rename to 2006Redone Server/src/com/rebotted/game/bots/BotHandler.java index df4fe252..033b1a9c 100644 --- a/2006Redone Server/src/redone/game/bots/BotHandler.java +++ b/2006Redone Server/src/com/rebotted/game/bots/BotHandler.java @@ -1,26 +1,26 @@ -package redone.game.bots; - -import io.netty.util.Timeout; -import redone.Constants; -import redone.game.players.Client; -import redone.game.players.PlayerHandler; -import redone.game.shops.ShopHandler; -import redone.util.Misc; +package com.rebotted.game.bots; import java.security.SecureRandom; import java.util.ArrayList; import java.util.List; import java.util.Random; -public class BotHandler -{ +import com.rebotted.GameConstants; +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerHandler; +import com.rebotted.game.shops.ShopHandler; +import com.rebotted.util.Misc; + +public class BotHandler { + static final List botList = new ArrayList<>(BotConstants.MAX_BOTS); static final Random random = new SecureRandom(); static final int currency = 995; public static Bot connectBot(String username, int x, int y, int z) { Bot bot; - if (PlayerHandler.playerCount >= Constants.MAX_PLAYERS) { + if (PlayerHandler.playerCount >= GameConstants.MAX_PLAYERS) { System.out.println("Bot could not be connected, server is full."); return null; } @@ -30,10 +30,10 @@ public class BotHandler return bot; } - public static void playerShop(Client player){ + public static void playerShop(Player player){ // Must be in the correct zones if (!player.inPlayerShopArea() && !player.inBankArea()) { - player.getActionSender().sendMessage("You need to be in a bank zone or trade area for this."); + player.getPacketSender().sendMessage("You need to be in a bank zone or trade area for this."); return; } @@ -83,11 +83,11 @@ public class BotHandler } } - private static String getShopName(Client player){ + private static String getShopName(Player player){ return "♥" + player.playerName; } - private static Client getPlayerShop(Client player){ + private static Client getPlayerShop(Player player){ String shopName = getShopName(player); for(Bot bot : botList) { if(bot != null && bot.getBotClient() != null) { @@ -104,7 +104,7 @@ public class BotHandler for(Bot bot : botList) { if(bot != null && bot.getBotClient() != null) { Client botClient = bot.getBotClient(); - if(botClient.myShopId == shop_id) { + if(botClient.shopId == shop_id) { return botClient; } } @@ -112,7 +112,7 @@ public class BotHandler return null; } - public static void closeShop(Client player) { + public static void closeShop(Player player) { Client shop = getPlayerShop(player); if (shop == null) return; shop.getPlayerAssistant().movePlayer(0,0,0); @@ -141,15 +141,15 @@ public class BotHandler shop.getItemAssistant().addItem(currency, amount); } - public static void takeCoins(Client player){ + public static void takeCoins(Player player){ if (!player.getItemAssistant().playerHasItem(currency) && player.getItemAssistant().freeSlots() <= 0) { - player.getActionSender().sendMessage("You don't have enough space in your inventory."); + player.getPacketSender().sendMessage("You don't have enough space in your inventory."); return; } Client shop = getPlayerShop(player); if (shop == null) return; if (!shop.getItemAssistant().playerHasItem(currency)) { - player.getActionSender().sendMessage("There are no coins to collect."); + player.getPacketSender().sendMessage("There are no coins to collect."); return; } int totalCoins = shop.getItemAssistant().getItemAmount(currency); @@ -173,7 +173,7 @@ public class BotHandler item_id++; Client shop = getPlayerShop(shop_id); if (shop == null) return 0; - for (int slot = 0; slot < ShopHandler.MaxShopItems; slot++) { + for (int slot = 0; slot < ShopHandler.MAX_SHOP_ITEMS; slot++) { if (shop.bankItems[slot] == item_id) { return Math.max(1, shop.bankItemsV[slot]); } @@ -185,7 +185,7 @@ public class BotHandler item_id++; Client shop = getPlayerShop(shop_id); if (shop == null) return; - for (int slot = 0; slot < ShopHandler.MaxShopItems; slot++) { + for (int slot = 0; slot < ShopHandler.MAX_SHOP_ITEMS; slot++) { if (shop.bankItems[slot] == item_id) { shop.bankItemsV[slot] = amount; } diff --git a/2006Redone Server/src/redone/game/content/BankPin.java b/2006Redone Server/src/com/rebotted/game/content/BankPin.java similarity index 71% rename from 2006Redone Server/src/redone/game/content/BankPin.java rename to 2006Redone Server/src/com/rebotted/game/content/BankPin.java index 5b5f7d4e..f3e01399 100644 --- a/2006Redone Server/src/redone/game/content/BankPin.java +++ b/2006Redone Server/src/com/rebotted/game/content/BankPin.java @@ -1,351 +1,348 @@ -package redone.game.content; - -import java.util.Calendar; -import java.util.GregorianCalendar; - -import redone.game.players.Client; -import redone.util.Misc; - -/** - * Handles the BankPin on Bank's - * - * @author Michael - * @author Ian / Core - * @author Linus - * @author Genesis - */ - -public class BankPin { - - public int recovery_Delay = 3; - - private final Client client; - - public BankPin(Client client) { - this.client = client; - } - - public int allowTimer = 2000000; - - public int dateExpired() { - return client.pinDeleteDateRequested = dateRequested() + recovery_Delay; - } - - public int dateRequested() { - Calendar cal = new GregorianCalendar(); - int day = cal.get(Calendar.DAY_OF_MONTH); - int month = cal.get(Calendar.MONTH); - int year = cal.get(Calendar.YEAR); - return client.pinDeleteDateRequested = year * 10000 + month * 100 + day; - } - - public void closeBankPin() { - firstPin = secondPin = thirdPin = fourthPin = client.playerBankPin = 0; - falseButtons(); - client.getPlayerAssistant().removeAllWindows(); - } - - public void pinSettingFrames() { - int pinSendFrames[] = { 15075, 15080, 15110, 15171, 15076, 15176, - 15104, 15082, 15079 }; - for (int j = 0; j < 9; j++) { - client.getPlayerAssistant().sendFrame126("", pinSendFrames[j]); - } - client.getPlayerAssistant().sendFrame126("Welcome to our bank", 15038); - client.getPlayerAssistant().sendFrame126("recovery system.", 15039); - client.getPlayerAssistant().sendFrame126("Remember, it's important", - 15040); - client.getPlayerAssistant() - .sendFrame126("to change your recovery", 15041); - client.getPlayerAssistant().sendFrame126("pin and password", 15042); - client.getPlayerAssistant().sendFrame126("every 1-3 months", 15043); - if (!client.hasBankpin) { - client.getPlayerAssistant().sendFrame126("Set a Bank Pin", 15078); - client.getPlayerAssistant().sendFrame126("No PIN Set", 15105); - } else { - client.getPlayerAssistant().sendFrame126("Delete your PIN", 15078); - if (client.requestPinDelete) { - client.getPlayerAssistant().sendFrame126("Pending delete", 15105); - } else { - client.getPlayerAssistant().sendFrame126("Has Bank PIN", 15105); - } - } - client.getPlayerAssistant().sendFrame126(recovery_Delay + " days", 15107); - } - - public void bankPinSettings() { - pinSettingFrames(); - client.getPlayerAssistant().showInterface(14924); - } - - private int resetBankNumbers() { - return firstPin = secondPin = thirdPin = fourthPin = client.playerBankPin = client.firstPin = client.secondPin = client.thirdPin = client.fourthPin = -1; - } - - public boolean resetBankPin() { - resetBankNumbers(); - falseButtons(); - client.getPlayerAssistant().closeAllWindows(); - return client.hasBankpin = false; - } - - public void bankPinEnter(int button) { - if (allowTimer > 0 && allowTimer <= 300000) { - int time = allowTimer / 6000; - if (time >= 2) { - client.getActionSender() - .sendMessage( - "Please wait " - + time - + " minutes before attempting your bank pin again."); - } else if (time == 1) { - client.getActionSender() - .sendMessage( - "Please wait " - + time - + " minute before attempting your bank pin again."); - } else if (time <= 0) { - client.getActionSender() - .sendMessage( - "Please wait less " - + "than a minute before attempting your bank pin again."); - } - return; - } - sendPins(); - if (!client.firstPinEnter) { - handleButtonOne(button); - } else if (!client.secondPinEnter) { - handleButtonTwo(button); - } else if (!client.thirdPinEnter) { - handleButtonThree(button); - } else if (!client.fourthPinEnter) { - handleButtonFour(button); - } - } - - public void openPin() { - if (client.enterdBankpin) { - client.getPlayerAssistant().openUpBank(); - return; - } - randomizeNumbers(); - client.getPlayerAssistant().sendFrame126("First click the FIRST digit", - 15313); - client.getPlayerAssistant().sendFrame126("", 14923); - int pinSendFrames[] = { 14913, 14914, 14915, 14916 }; - for (int j = 0; j < 4; j++) { - client.getPlayerAssistant().sendFrame126("?", pinSendFrames[j]); - } - client.getPlayerAssistant().showInterface(7424); - sendPins(); - } - - private void sendPins() { - if (client.enterdBankpin) { - client.getPlayerAssistant().openUpBank(); - return; - } - for (int i = 0; i < getBankPins().length; i++) { - client.getPlayerAssistant().sendFrame126("" + getBankPins()[i], - stringIds[i]); - } - } - - private void handleButtonOne(int button) { - client.getPlayerAssistant().sendFrame126("Now click the SECOND digit", - 15313); - client.getPlayerAssistant().sendFrame126("*", 14913); - for (int i = 0; i < getActionButtons().length; i++) { - if (getActionButtons()[i] == button) { - firstPin = getBankPins()[i]; - } - } - client.firstPinEnter = true; - randomizeNumbers(); - } - - private void handleButtonTwo(int button) { - client.getPlayerAssistant().sendFrame126("Now click the THIRD digit", - 15313); - client.getPlayerAssistant().sendFrame126("*", 14914); - for (int i = 0; i < getActionButtons().length; i++) { - if (getActionButtons()[i] == button) { - secondPin = getBankPins()[i]; - } - } - client.secondPinEnter = true; - randomizeNumbers(); - } - - private void handleButtonThree(int button) { - client.getPlayerAssistant().sendFrame126("Now click the LAST digit", - 15313); - client.getPlayerAssistant().sendFrame126("*", 14915); - for (int i = 0; i < getActionButtons().length; i++) { - if (getActionButtons()[i] == button) { - thirdPin = getBankPins()[i]; - } - } - client.thirdPinEnter = true; - randomizeNumbers(); - } - - private boolean falseButtons() { - return client.fourthPinEnter = client.thirdPinEnter = client.secondPinEnter = client.firstPinEnter = false; - } - - private void handleButtonFour(int button) { - if (client.enterdBankpin) { - client.getPlayerAssistant().openUpBank(); - return; - } - client.getPlayerAssistant().sendFrame126("*", 14916); - for (int i = 0; i < getActionButtons().length; i++) { - if (getActionButtons()[i] == button) { - fourthPin = getBankPins()[i]; - } - } - client.fourthPinEnter = true; - if (!client.hasBankpin) { - client.firstPin = client.bankPin1 = firstPin; - client.secondPin = client.bankPin2 = secondPin; - client.thirdPin = client.bankPin3 = thirdPin; - client.fourthPin = client.bankPin4 = fourthPin; - client.hasBankpin = client.enterdBankpin = true; - client.getActionSender().sendMessage( - "You have just created a bank pin."); - client.getActionSender().sendMessage( - "Your new Bank PIN is: " + firstPin + " - " + secondPin - + " - " + thirdPin + " - " + fourthPin); - client.saveCharacter = true; - } - - int one = firstPin, two = secondPin, three = thirdPin, four = fourthPin; - if (client.bankPin1 == one && client.bankPin2 == two - && client.bankPin3 == three && client.bankPin4 == four) { - falseButtons(); - client.getPlayerAssistant().removeAllWindows(); - client.enterdBankpin = true; - client.playerBankPin = 15000; - client.getPlayerAssistant().openUpBank(); - - } else { - client.attemptsRemaining--; - if (client.attemptsRemaining <= 0) { - allowTimer = 30000; - } - if (client.attemptsRemaining == -1) { - client.attemptsRemaining = 3; - allowTimer = 2000000; - } - if (client.attemptsRemaining > 1) { - client.getActionSender().sendMessage( - "Invalid pin. You have " + client.attemptsRemaining - + " attempts remaining."); - } else if (client.attemptsRemaining == 1) { - client.getActionSender().sendMessage( - "Invalid pin. You have " + client.attemptsRemaining - + " attempt remaining."); - } else if (client.attemptsRemaining <= 0) { - client.getActionSender() - .sendMessage( - "Invalid pin. You must wait 5 minutes before attempting again."); - } - client.getPlayerAssistant().removeAllWindows(); - falseButtons(); - } - } - - private void randomizeNumbers() { - int i = Misc.random(4); - if (i == client.lastPinSettings) { - i = client.lastPinSettings == 0 ? client.lastPinSettings - : client.lastPinSettings; - } - switch (i) { - case 0: - bankPins[0] = 1; - bankPins[1] = 7; - bankPins[2] = 0; - bankPins[3] = 8; - bankPins[4] = 4; - bankPins[5] = 6; - bankPins[6] = 5; - bankPins[7] = 9; - bankPins[8] = 3; - bankPins[9] = 2; - break; - - case 1: - bankPins[0] = 5; - bankPins[1] = 4; - bankPins[2] = 3; - bankPins[3] = 7; - bankPins[4] = 8; - bankPins[5] = 6; - bankPins[6] = 9; - bankPins[7] = 2; - bankPins[8] = 1; - bankPins[9] = 0; - break; - - case 2: - bankPins[0] = 4; - bankPins[1] = 7; - bankPins[2] = 6; - bankPins[3] = 5; - bankPins[4] = 2; - bankPins[5] = 3; - bankPins[6] = 1; - bankPins[7] = 8; - bankPins[8] = 9; - bankPins[9] = 0; - break; - - case 3: - bankPins[0] = 9; - bankPins[1] = 4; - bankPins[2] = 2; - bankPins[3] = 7; - bankPins[4] = 8; - bankPins[5] = 6; - bankPins[6] = 0; - bankPins[7] = 3; - bankPins[8] = 1; - bankPins[9] = 5; - break; - } - client.lastPinSettings = i; - sendPins(); - } - - private final int bankPins[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; - private final int stringIds[] = { 14883, 14884, 14885, 14886, 14887, 14888, - 14889, 14890, 14891, 14892 }; - private final int actionButtons[] = { 58025, 58026, 58027, 58028, 58029, - 58030, 58031, 58032, 58033, 58034 }; - - private int[] getBankPins() { - return bankPins; - } - - private int[] getActionButtons() { - return actionButtons; - } - - private int firstPin; - private int secondPin; - private int thirdPin; - private int fourthPin; - - @Override - public String toString() { - return "BankPin{" + "recovery_Delay=" + recovery_Delay + ", client=" - + client + ", allowTimer=" + allowTimer + ", bankPins=" - + bankPins + ", stringIds=" + stringIds + ", actionButtons=" - + actionButtons + ", firstPin=" + firstPin + ", secondPin=" - + secondPin + ", thirdPin=" + thirdPin + ", fourthPin=" - + fourthPin + '}'; - } -} +package com.rebotted.game.content; + +import java.util.Calendar; +import java.util.GregorianCalendar; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +/** + * Handles the BankPin on Bank's + * + * @author Michael + * @author Ian / Core + * @author Linus + * @author Genesis + */ + +public class BankPin { + + public int recovery_Delay = 3; + + private final Player client; + + public BankPin(Player player) { + this.client = player; + } + + public int allowTimer = 2000000; + + public int dateExpired() { + return client.pinDeleteDateRequested = dateRequested() + recovery_Delay; + } + + public int dateRequested() { + Calendar cal = new GregorianCalendar(); + int day = cal.get(Calendar.DAY_OF_MONTH); + int month = cal.get(Calendar.MONTH); + int year = cal.get(Calendar.YEAR); + return client.pinDeleteDateRequested = year * 10000 + month * 100 + day; + } + + public void closeBankPin() { + firstPin = secondPin = thirdPin = fourthPin = client.playerBankPin = 0; + falseButtons(); + client.getPacketSender().closeAllWindows(); + } + + public void pinSettingFrames() { + int pinSendFrames[] = { 15075, 15080, 15110, 15171, 15076, 15176, + 15104, 15082, 15079 }; + for (int j = 0; j < 9; j++) { + client.getPacketSender().sendFrame126("", pinSendFrames[j]); + } + client.getPacketSender().sendFrame126("Welcome to our bank", 15038); + client.getPacketSender().sendFrame126("recovery system.", 15039); + client.getPacketSender().sendFrame126("Remember, it's important", 15040); + client.getPacketSender().sendFrame126("to change your recovery", 15041); + client.getPacketSender().sendFrame126("pin and password", 15042); + client.getPacketSender().sendFrame126("every 1-3 months", 15043); + if (!client.hasBankpin) { + client.getPacketSender().sendFrame126("Set a Bank Pin", 15078); + client.getPacketSender().sendFrame126("No PIN Set", 15105); + } else { + client.getPacketSender().sendFrame126("Delete your PIN", 15078); + if (client.requestPinDelete) { + client.getPacketSender().sendFrame126("Pending delete", 15105); + } else { + client.getPacketSender().sendFrame126("Has Bank PIN", 15105); + } + } + client.getPacketSender().sendFrame126(recovery_Delay + " days", 15107); + } + + public void bankPinSettings() { + pinSettingFrames(); + client.getPacketSender().showInterface(14924); + } + + private int resetBankNumbers() { + return firstPin = secondPin = thirdPin = fourthPin = client.playerBankPin = client.firstPin = client.secondPin = client.thirdPin = client.fourthPin = -1; + } + + public boolean resetBankPin() { + resetBankNumbers(); + falseButtons(); + client.getPacketSender().closeAllWindows(); + return client.hasBankpin = false; + } + + public void bankPinEnter(int button) { + if (allowTimer > 0 && allowTimer <= 300000) { + int time = allowTimer / 6000; + if (time >= 2) { + client.getPacketSender() + .sendMessage( + "Please wait " + + time + + " minutes before attempting your bank pin again."); + } else if (time == 1) { + client.getPacketSender() + .sendMessage( + "Please wait " + + time + + " minute before attempting your bank pin again."); + } else if (time <= 0) { + client.getPacketSender() + .sendMessage( + "Please wait less " + + "than a minute before attempting your bank pin again."); + } + return; + } + sendPins(); + if (!client.firstPinEnter) { + handleButtonOne(button); + } else if (!client.secondPinEnter) { + handleButtonTwo(button); + } else if (!client.thirdPinEnter) { + handleButtonThree(button); + } else if (!client.fourthPinEnter) { + handleButtonFour(button); + } + } + + public void openPin() { + if (client.enterdBankpin) { + client.getPacketSender().openUpBank(); + return; + } + randomizeNumbers(); + client.getPacketSender().sendFrame126("First click the FIRST digit", + 15313); + client.getPacketSender().sendFrame126("", 14923); + int pinSendFrames[] = { 14913, 14914, 14915, 14916 }; + for (int j = 0; j < 4; j++) { + client.getPacketSender().sendFrame126("?", pinSendFrames[j]); + } + client.getPacketSender().showInterface(7424); + sendPins(); + } + + private void sendPins() { + if (client.enterdBankpin) { + client.getPacketSender().openUpBank(); + return; + } + for (int i = 0; i < getBankPins().length; i++) { + client.getPacketSender().sendFrame126("" + getBankPins()[i], + stringIds[i]); + } + } + + private void handleButtonOne(int button) { + client.getPacketSender().sendFrame126("Now click the SECOND digit", + 15313); + client.getPacketSender().sendFrame126("*", 14913); + for (int i = 0; i < getActionButtons().length; i++) { + if (getActionButtons()[i] == button) { + firstPin = getBankPins()[i]; + } + } + client.firstPinEnter = true; + randomizeNumbers(); + } + + private void handleButtonTwo(int button) { + client.getPacketSender().sendFrame126("Now click the THIRD digit", + 15313); + client.getPacketSender().sendFrame126("*", 14914); + for (int i = 0; i < getActionButtons().length; i++) { + if (getActionButtons()[i] == button) { + secondPin = getBankPins()[i]; + } + } + client.secondPinEnter = true; + randomizeNumbers(); + } + + private void handleButtonThree(int button) { + client.getPacketSender().sendFrame126("Now click the LAST digit", + 15313); + client.getPacketSender().sendFrame126("*", 14915); + for (int i = 0; i < getActionButtons().length; i++) { + if (getActionButtons()[i] == button) { + thirdPin = getBankPins()[i]; + } + } + client.thirdPinEnter = true; + randomizeNumbers(); + } + + private boolean falseButtons() { + return client.fourthPinEnter = client.thirdPinEnter = client.secondPinEnter = client.firstPinEnter = false; + } + + private void handleButtonFour(int button) { + if (client.enterdBankpin) { + client.getPacketSender().openUpBank(); + return; + } + client.getPacketSender().sendFrame126("*", 14916); + for (int i = 0; i < getActionButtons().length; i++) { + if (getActionButtons()[i] == button) { + fourthPin = getBankPins()[i]; + } + } + client.fourthPinEnter = true; + if (!client.hasBankpin) { + client.firstPin = client.bankPin1 = firstPin; + client.secondPin = client.bankPin2 = secondPin; + client.thirdPin = client.bankPin3 = thirdPin; + client.fourthPin = client.bankPin4 = fourthPin; + client.hasBankpin = client.enterdBankpin = true; + client.getPacketSender().sendMessage( + "You have just created a bank pin."); + client.getPacketSender().sendMessage( + "Your new Bank PIN is: " + firstPin + " - " + secondPin + + " - " + thirdPin + " - " + fourthPin); + client.saveCharacter = true; + } + + int one = firstPin, two = secondPin, three = thirdPin, four = fourthPin; + if (client.bankPin1 == one && client.bankPin2 == two + && client.bankPin3 == three && client.bankPin4 == four) { + falseButtons(); + client.getPacketSender().closeAllWindows(); + client.enterdBankpin = true; + client.playerBankPin = 15000; + client.getPacketSender().openUpBank(); + + } else { + client.attemptsRemaining--; + if (client.attemptsRemaining <= 0) { + allowTimer = 30000; + } + if (client.attemptsRemaining == -1) { + client.attemptsRemaining = 3; + allowTimer = 2000000; + } + if (client.attemptsRemaining > 1) { + client.getPacketSender().sendMessage( + "Invalid pin. You have " + client.attemptsRemaining + + " attempts remaining."); + } else if (client.attemptsRemaining == 1) { + client.getPacketSender().sendMessage( + "Invalid pin. You have " + client.attemptsRemaining + + " attempt remaining."); + } else if (client.attemptsRemaining <= 0) { + client.getPacketSender() + .sendMessage( + "Invalid pin. You must wait 5 minutes before attempting again."); + } + client.getPacketSender().closeAllWindows(); + falseButtons(); + } + } + + private void randomizeNumbers() { + int i = Misc.random(4); + if (i == client.lastPinSettings) { + i = client.lastPinSettings == 0 ? client.lastPinSettings + : client.lastPinSettings; + } + switch (i) { + case 0: + bankPins[0] = 1; + bankPins[1] = 7; + bankPins[2] = 0; + bankPins[3] = 8; + bankPins[4] = 4; + bankPins[5] = 6; + bankPins[6] = 5; + bankPins[7] = 9; + bankPins[8] = 3; + bankPins[9] = 2; + break; + + case 1: + bankPins[0] = 5; + bankPins[1] = 4; + bankPins[2] = 3; + bankPins[3] = 7; + bankPins[4] = 8; + bankPins[5] = 6; + bankPins[6] = 9; + bankPins[7] = 2; + bankPins[8] = 1; + bankPins[9] = 0; + break; + + case 2: + bankPins[0] = 4; + bankPins[1] = 7; + bankPins[2] = 6; + bankPins[3] = 5; + bankPins[4] = 2; + bankPins[5] = 3; + bankPins[6] = 1; + bankPins[7] = 8; + bankPins[8] = 9; + bankPins[9] = 0; + break; + + case 3: + bankPins[0] = 9; + bankPins[1] = 4; + bankPins[2] = 2; + bankPins[3] = 7; + bankPins[4] = 8; + bankPins[5] = 6; + bankPins[6] = 0; + bankPins[7] = 3; + bankPins[8] = 1; + bankPins[9] = 5; + break; + } + client.lastPinSettings = i; + sendPins(); + } + + private final int bankPins[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; + private final int stringIds[] = { 14883, 14884, 14885, 14886, 14887, 14888, + 14889, 14890, 14891, 14892 }; + private final int actionButtons[] = { 58025, 58026, 58027, 58028, 58029, + 58030, 58031, 58032, 58033, 58034 }; + + private int[] getBankPins() { + return bankPins; + } + + private int[] getActionButtons() { + return actionButtons; + } + + private int firstPin; + private int secondPin; + private int thirdPin; + private int fourthPin; + + @Override + public String toString() { + return "BankPin{" + "recovery_Delay=" + recovery_Delay + ", client=" + + client + ", allowTimer=" + allowTimer + ", bankPins=" + + bankPins + ", stringIds=" + stringIds + ", actionButtons=" + + actionButtons + ", firstPin=" + firstPin + ", secondPin=" + + secondPin + ", thirdPin=" + thirdPin + ", fourthPin=" + + fourthPin + '}'; + } +} diff --git a/2006Redone Server/src/redone/game/content/EmoteHandler.java b/2006Redone Server/src/com/rebotted/game/content/EmoteHandler.java similarity index 89% rename from 2006Redone Server/src/redone/game/content/EmoteHandler.java rename to 2006Redone Server/src/com/rebotted/game/content/EmoteHandler.java index 4af83243..3da4c975 100644 --- a/2006Redone Server/src/redone/game/content/EmoteHandler.java +++ b/2006Redone Server/src/com/rebotted/game/content/EmoteHandler.java @@ -1,71 +1,70 @@ -package redone.game.content; - -import java.util.HashMap; - -import redone.game.players.Client; - -public class EmoteHandler { - - private final Client player; - - public EmoteHandler(Client c) { - this.player = c; - } - - public Emotes EMOTES = null; - - public enum Emotes { - Yes(168, 855, -1), No(169, 856, -1), Bow(164, 858, -1), Angry(167, 864, - -1), Think(162, 857, -1), Wave(163, 863, -1), Shrug(52058, - 2113, -1), Cheer(171, 862, -1), Beckon(165, 859, -1), Laugh( - 170, 861, -1), Jump_For_Joy(52054, 2109, -1), Yawn(52056, 2111, - -1), Dance(166, 866, -1), Jig(52051, 2106, -1), Twirl(52052, - 2107, -1), Headbang(52053, 2108, -1), Cry(161, 860, -1), Blow_Kiss( - 43092, 0x558, 574), Panic(52050, 2105, -1), Rasberry(52055, - 2110, -1), Clap(172, 865, -1), Salute(52057, 2112, -1), Goblin_Bow( - 52071, 0x84F, -1), Goblin_Salute(52072, 0x850, -1), Glass_Box( - 2155, 0x46B, -1), Climb_Rope(25103, 0x46A, -1), Lean(25106, - 0x469, -1), Glass_Wall(2154, 0x468, -1), Idea(88060, 4276, 712), Stomp( - 88061, 4278, -1), Flap(88062, 4280, -1), Slap_Head(88063, 4275, - -1), Zombie_Walk(72032, 3544, -1), Zombie_Dance(72033, 3543, -1), Zombie_Hand( - 88065, 7272, 1244), Scared(59062, 2836, -1), Bunny_Hop(72254, - 3866, -1); - - private Emotes(int buttonId, int animId, int gfxId) { - buttonID = buttonId; - animID = animId; - gfxID = gfxId; - } - - public static HashMap emotes = new HashMap(); - - public static Emotes loadEmote(int buttonId) { - return emotes.get(buttonId); - } - - static { - for (Emotes e : Emotes.values()) { - emotes.put(e.buttonID, e); - } - } - - public int gfxID; - public int animID; - public int buttonID; - } - - public void startEmote(int buttonId) { - Emotes EMOTES = Emotes.loadEmote(buttonId); - if (EMOTES != null && this.EMOTES == null) { - this.EMOTES = EMOTES; - if (EMOTES.animID != 1) { - if (player.tutorialProgress == 10) { - player.getDialogueHandler().sendDialogues(3039, 0); - } - player.startAnimation(EMOTES.animID); - EMOTES = null; - this.EMOTES = null; - } - } - } -} +package com.rebotted.game.content; + +import java.util.HashMap; +import com.rebotted.game.players.Player; + +public class EmoteHandler { + + private final Player player; + + public EmoteHandler(Player player2) { + this.player = player2; + } + + public Emotes EMOTES = null; + + public enum Emotes { + Yes(168, 855, -1), No(169, 856, -1), Bow(164, 858, -1), Angry(167, 864, + -1), Think(162, 857, -1), Wave(163, 863, -1), Shrug(52058, + 2113, -1), Cheer(171, 862, -1), Beckon(165, 859, -1), Laugh( + 170, 861, -1), Jump_For_Joy(52054, 2109, -1), Yawn(52056, 2111, + -1), Dance(166, 866, -1), Jig(52051, 2106, -1), Twirl(52052, + 2107, -1), Headbang(52053, 2108, -1), Cry(161, 860, -1), Blow_Kiss( + 43092, 0x558, 574), Panic(52050, 2105, -1), Rasberry(52055, + 2110, -1), Clap(172, 865, -1), Salute(52057, 2112, -1), Goblin_Bow( + 52071, 0x84F, -1), Goblin_Salute(52072, 0x850, -1), Glass_Box( + 2155, 0x46B, -1), Climb_Rope(25103, 0x46A, -1), Lean(25106, + 0x469, -1), Glass_Wall(2154, 0x468, -1), Idea(88060, 4276, 712), Stomp( + 88061, 4278, -1), Flap(88062, 4280, -1), Slap_Head(88063, 4275, + -1), Zombie_Walk(72032, 3544, -1), Zombie_Dance(72033, 3543, -1), Zombie_Hand( + 88065, 7272, 1244), Scared(59062, 2836, -1), Bunny_Hop(72254, + 3866, -1); + + private Emotes(int buttonId, int animId, int gfxId) { + buttonID = buttonId; + animID = animId; + gfxID = gfxId; + } + + public static HashMap emotes = new HashMap(); + + public static Emotes loadEmote(int buttonId) { + return emotes.get(buttonId); + } + + static { + for (Emotes e : Emotes.values()) { + emotes.put(e.buttonID, e); + } + } + + public int gfxID; + public int animID; + public int buttonID; + } + + public void startEmote(int buttonId) { + Emotes EMOTES = Emotes.loadEmote(buttonId); + if (EMOTES != null && this.EMOTES == null) { + this.EMOTES = EMOTES; + if (EMOTES.animID != 1) { + if (player.tutorialProgress == 10) { + player.getDialogueHandler().sendDialogues(3039, 0); + } + player.startAnimation(EMOTES.animID); + EMOTES = null; + this.EMOTES = null; + } + } + } +} diff --git a/2006Redone Server/src/redone/game/content/combat/CombatAssistant.java b/2006Redone Server/src/com/rebotted/game/content/combat/CombatAssistant.java similarity index 86% rename from 2006Redone Server/src/redone/game/content/combat/CombatAssistant.java rename to 2006Redone Server/src/com/rebotted/game/content/combat/CombatAssistant.java index a79164be..ec30028c 100644 --- a/2006Redone Server/src/redone/game/content/combat/CombatAssistant.java +++ b/2006Redone Server/src/com/rebotted/game/content/combat/CombatAssistant.java @@ -1,2385 +1,2375 @@ -package redone.game.content.combat; - -import redone.Constants; -import redone.Server; -import redone.game.content.combat.magic.CastOnOther; -import redone.game.content.combat.magic.MagicData; -import redone.game.content.combat.magic.MagicMaxHit; -import redone.game.content.combat.magic.MagicRequirements; -import redone.game.content.combat.magic.MagicSpells; -import redone.game.content.combat.melee.MeleeData; -import redone.game.content.combat.melee.MeleeMaxHit; -import redone.game.content.combat.npcs.NpcEmotes; -import redone.game.content.combat.prayer.PrayerDrain; -import redone.game.content.combat.range.RangeData; -import redone.game.content.combat.range.RangeMaxHit; -import redone.game.content.minigames.FightCaves; -import redone.game.content.minigames.FightPits; -import redone.game.content.minigames.PestControl; -import redone.game.content.minigames.castlewars.CastleWars; -import redone.game.content.music.sound.CombatSounds; -import redone.game.content.music.sound.SoundList; -import redone.game.content.skills.slayer.SlayerRequirements; -import redone.game.items.ItemAssistant; -import redone.game.npcs.Npc; -import redone.game.npcs.NpcHandler; -import redone.game.players.Client; -import redone.game.players.Player; -import redone.game.players.PlayerAssistant; -import redone.game.players.PlayerHandler; -import redone.game.players.antimacro.AntiBotting; -import redone.util.Misc; -import redone.world.clip.PathFinder; - -/** - * Rewritten Combat - * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) - */ - -public class CombatAssistant { - - private final Client c; - - public CombatAssistant(Client Client) { - c = Client; - } - - public static boolean inCombat(Client c) { - if (c.underAttackBy > 0 || c.underAttackBy2 > 0) { - return true; - } - return false; - } - - public void delayedHit(int i) { // npc hit delay - if (NpcHandler.npcs[i] != null) { - if (NpcHandler.npcs[i].isDead) { - c.npcIndex = 0; - return; - } - if (NpcHandler.npcs[i].attackTimer <= 3 || NpcHandler.npcs[i].attackTimer == 0 && NpcHandler.npcs[i].hitDelayTimer > 0 && !c.castingMagic) { // block animation - NpcHandler.npcs[i].animNumber = NpcEmotes.getBlockEmote(i); // block emote - NpcHandler.npcs[i].animUpdateRequired = true; - NpcHandler.npcs[i].updateRequired = true; - } - if (Constants.combatSounds && NpcHandler.npcs[i].npcType < 3177 && NpcHandler.npcs[i].npcType > 3180) { - c.getActionSender().sendSound(CombatSounds.getNpcBlockSound(NpcHandler.npcs[c.oldNpcIndex].npcType), 100, 0); - } - NpcHandler.npcs[i].facePlayer(c.playerId); - if (NpcHandler.npcs[i].underAttackBy > 0 && Server.npcHandler.getsPulled(c, i)) { - NpcHandler.npcs[i].killerId = c.playerId; - } else if (NpcHandler.npcs[i].underAttackBy < 0 && !Server.npcHandler.getsPulled(c, i)) { - NpcHandler.npcs[i].killerId = c.playerId; - } - c.lastNpcAttacked = i; - if (c.projectileStage == 0) { // melee hit damage - applyNpcMeleeDamage(i, 1); - if (c.doubleHit) { - applyNpcMeleeDamage(i, 2); - } - } - if (!c.castingMagic && c.projectileStage > 0) { // range hit - // damage - int damage = Misc.random(rangeMaxHit()); - int damage2 = -1; - if (c.lastWeaponUsed == 11235 || c.bowSpecShot == 1) { - damage2 = Misc.random(rangeMaxHit()); - } - boolean ignoreDef = false; - if (Misc.random(5) == 1 && c.lastArrowUsed == 9243) { - ignoreDef = true; - NpcHandler.npcs[i].gfx0(758); - } - - if (Misc.random(NpcHandler.npcs[i].defence) > Misc - .random(10 + calculateRangeAttack()) && !ignoreDef) { - damage = 0; - } else if (NpcHandler.npcs[i].npcType == 2881 - || NpcHandler.npcs[i].npcType == 2883 && !ignoreDef) { - damage = 0; - } - - if (Misc.random(4) == 1 && c.lastArrowUsed == 9242 && damage > 0) { - NpcHandler.npcs[i].gfx0(754); - damage = NpcHandler.npcs[i].HP / 5; - c.handleHitMask(c.playerLevel[3] / 10); - c.dealDamage(c.playerLevel[3] / 10); - c.gfx0(754); - } - - if (c.lastWeaponUsed == 11235 || c.bowSpecShot == 1) { - if (Misc.random(NpcHandler.npcs[i].defence) > Misc.random(10 + calculateRangeAttack())) { - damage2 = 0; - } - } - if (c.dbowSpec) { - NpcHandler.npcs[i].gfx100(1100); - if (damage < 8) { - damage = 8; - } - if (damage2 < 8) { - damage2 = 8; - } - c.dbowSpec = false; - } - if (damage > 0 && Misc.random(5) == 1 - && c.lastArrowUsed == 9244) { - damage *= 1.45; - NpcHandler.npcs[i].gfx0(756); - } - - if (NpcHandler.npcs[i].HP - damage < 0) { - damage = NpcHandler.npcs[i].HP; - } - if (NpcHandler.npcs[i].HP - damage <= 0 && damage2 > 0) { - damage2 = 0; - } - c.globalDamageDealt += damage; - if (damage2 > 0) - { - c.globalDamageDealt += damage2; - } - if (c.fightMode == 3) {//range shared - c.getPlayerAssistant().addSkillXP(damage * Constants.RANGE_EXP_RATE / 3, 4); - c.getPlayerAssistant().addSkillXP(damage / 3, 1); - c.getPlayerAssistant().addSkillXP(damage / 3, 3); - c.getPlayerAssistant().refreshSkill(1); - c.getPlayerAssistant().refreshSkill(3); - c.getPlayerAssistant().refreshSkill(4); - } else { - c.getPlayerAssistant().addSkillXP(damage * Constants.RANGE_EXP_RATE, 4); - c.getPlayerAssistant().addSkillXP(damage * Constants.RANGE_EXP_RATE /3, 3); - c.getPlayerAssistant().refreshSkill(3); - c.getPlayerAssistant().refreshSkill(4); - } - if (damage > 0) { - if (NpcHandler.npcs[i].npcType >= 3777 && NpcHandler.npcs[i].npcType <= 3780 || PestControl.npcIsPCMonster(NpcHandler.npcs[i].npcType)) { - c.pcDamage += damage; - } - } - boolean dropArrows = true; - - for (int noArrowId : RangeData.NO_ARROW_DROP) { - if (c.lastWeaponUsed == noArrowId) { - dropArrows = false; - break; - } - } - if (dropArrows) { - c.getItemAssistant().dropArrowNpc(); - } - if (NpcHandler.npcs[i].npcType == FightCaves.TZTOK_JAD && NpcHandler.npcs[i].spawnedBy == c.getId() && ((NpcHandler.npcs[i].HP < (FightCaves.getHp(FightCaves.TZTOK_JAD)/2)) && - (NpcHandler.npcs[i].HP-damage+(damage2 > -1 ? damage2 : 0) < (FightCaves.getHp(FightCaves.TZTOK_JAD)/2)))) { - if (c.canHealersRespawn) { - FightCaves.spawnHealers(c, i, 4-c.spawnedHealers); - } - } - NpcHandler.npcs[i].underAttack = true; - NpcHandler.npcs[i].hitDiff = damage; - NpcHandler.npcs[i].HP -= damage; - if (damage2 > -1) { - NpcHandler.npcs[i].hitDiff2 = damage2; - NpcHandler.npcs[i].HP -= damage2; - c.totalDamageDealt += damage2; - } - if (c.killingNpcIndex != c.oldNpcIndex) { - c.totalDamageDealt = 0; - } - c.killingNpcIndex = c.oldNpcIndex; - c.totalDamageDealt += damage; - NpcHandler.npcs[i].hitUpdateRequired = true; - if (damage2 > -1) { - NpcHandler.npcs[i].hitUpdateRequired2 = true; - } - NpcHandler.npcs[i].updateRequired = true; - - } else if (c.projectileStage > 0) { // magic hit damage - int damage = Misc - .random(MagicData.MAGIC_SPELLS[c.oldSpellId][6]); - if (MagicSpells.godSpells(c)) { - if (System.currentTimeMillis() - c.godSpellDelay < Constants.GOD_SPELL_CHARGE) { - damage += Misc.random(10); - } - } - boolean magicFailed = false; - // c.npcIndex = 0; - int bonusAttack = getBonusAttack(i); - if (Misc.random(NpcHandler.npcs[i].defence) > 10 - + Misc.random(mageAtk()) + bonusAttack) { - damage = 0; - magicFailed = true; - } else if (NpcHandler.npcs[i].npcType == 2881 - || NpcHandler.npcs[i].npcType == 2882) { - damage = 0; - magicFailed = true; - } - - if (NpcHandler.npcs[i].npcType == FightCaves.TZTOK_JAD && NpcHandler.npcs[i].spawnedBy == c.getId() && ((NpcHandler.npcs[i].HP > (FightCaves.getHp(FightCaves.TZTOK_JAD)/2)) && - (NpcHandler.npcs[i].HP-damage < (FightCaves.getHp(FightCaves.TZTOK_JAD)/2)))) { - if (c.canHealersRespawn) - FightCaves.spawnHealers(c, i, 4-c.spawnedHealers); - } - - if (NpcHandler.npcs[i].HP - damage < 0) { - damage = NpcHandler.npcs[i].HP; - } - //magic - c.getPlayerAssistant().addSkillXP(MagicData.MAGIC_SPELLS[c.oldSpellId][7] + damage * Constants.MAGIC_EXP_RATE, 6); - c.totalDamageDealt += damage; - if (MagicData.MAGIC_SPELLS[c.oldSpellId][0] != 1161 && MagicData.MAGIC_SPELLS[c.oldSpellId][0] != 1153 && MagicData.MAGIC_SPELLS[c.oldSpellId][0] != 1157 && MagicData.MAGIC_SPELLS[c.oldSpellId][0] != 1542 && MagicData.MAGIC_SPELLS[c.oldSpellId][0] != 1543 && MagicData.MAGIC_SPELLS[c.oldSpellId][0] != 1562) { - c.getPlayerAssistant().addSkillXP(damage * Constants.MAGIC_EXP_RATE / 3, 3); - } - c.getPlayerAssistant().refreshSkill(3); - c.getPlayerAssistant().refreshSkill(6); - - if (damage > 0) { - if (NpcHandler.npcs[i].npcType >= 3777 && NpcHandler.npcs[i].npcType <= 3780 || PestControl.npcIsPCMonster(NpcHandler.npcs[i].npcType)) { - c.pcDamage += damage; - } - } - if (MagicSpells.getEndGfxHeight(c) == 100 && !magicFailed) { // end GFX - NpcHandler.npcs[i] - .gfx100(MagicData.MAGIC_SPELLS[c.oldSpellId][5]); - } else if (!magicFailed) { - NpcHandler.npcs[i] - .gfx0(MagicData.MAGIC_SPELLS[c.oldSpellId][5]); - } - - if (magicFailed) { - NpcHandler.npcs[i].gfx100(85); - } - if (!magicFailed) { - int freezeDelay = MagicSpells.getFreezeTime(c);// freeze - if (freezeDelay > 0 && NpcHandler.npcs[i].freezeTimer == 0) { - NpcHandler.npcs[i].freezeTimer = freezeDelay; - } - switch (MagicData.MAGIC_SPELLS[c.oldSpellId][0]) { - case 12901: - case 12919: // blood spells - case 12911: - case 12929: - int heal = Misc.random(damage / 2); - if (c.playerLevel[3] + heal >= c.getPlayerAssistant() - .getLevelForXP(c.playerXP[3])) { - c.playerLevel[3] = c.getPlayerAssistant() - .getLevelForXP(c.playerXP[3]); - } else { - c.playerLevel[3] += heal; - } - c.getPlayerAssistant().refreshSkill(3); - break; - } - - } - NpcHandler.npcs[i].underAttack = true; - if (MagicData.MAGIC_SPELLS[c.oldSpellId][6] != 0) { - NpcHandler.npcs[i].hitDiff = damage; - NpcHandler.npcs[i].HP -= damage; - NpcHandler.npcs[i].hitUpdateRequired = true; - c.totalDamageDealt += damage; - } - c.killingNpcIndex = c.oldNpcIndex; - NpcHandler.npcs[i].updateRequired = true; - c.usingMagic = false; - c.castingMagic = false; - c.oldSpellId = 0; - } - } - - if (c.bowSpecShot <= 0) { - c.oldNpcIndex = 0; - c.projectileStage = 0; - c.doubleHit = false; - c.lastWeaponUsed = 0; - c.bowSpecShot = 0; - } - if (c.bowSpecShot >= 2) { - c.bowSpecShot = 0; - // c.attackTimer = - // getAttackDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); - } - if (c.bowSpecShot == 1) { - fireProjectileNpc(); - c.hitDelay = 2; - c.bowSpecShot = 0; - } - } - - public void applyNpcMeleeDamage(int i, int damageMask) { - int damage = Misc.random(meleeMaxHit()); - boolean fullVeracsEffect = c.getPlayerAssistant().fullVeracs() - && Misc.random(3) == 1; - if (NpcHandler.npcs[i].HP - damage < 0) { - damage = NpcHandler.npcs[i].HP; - } - - if (!fullVeracsEffect) { - if (Misc.random(NpcHandler.npcs[i].defence) > 10 + Misc - .random(calcAtt())) { - damage = 0; - } else if (NpcHandler.npcs[i].npcType == 2882 - || NpcHandler.npcs[i].npcType == 2883) { - damage = 0; - } - } - c.globalDamageDealt += damage; - if (NpcHandler.npcs[i].HP - damage > 0) { - if (NpcHandler.npcs[i].npcType == FightCaves.TZTOK_JAD && NpcHandler.npcs[i].spawnedBy == c.getId() && ((NpcHandler.npcs[i].HP > (FightCaves.getHp(FightCaves.TZTOK_JAD)/2)) && - (NpcHandler.npcs[i].HP-damage < (FightCaves.getHp(FightCaves.TZTOK_JAD)/2)))) { - if (c.canHealersRespawn) - FightCaves.spawnHealers(c, i, 4-c.spawnedHealers); - } - } - boolean guthansEffect = false; - if (c.getPlayerAssistant().fullGuthans()) { - if (Misc.random(3) == 1) { - guthansEffect = true; - } - } - if (c.fightMode == 3 && NpcHandler.npcs[i].npcType != 2459 && NpcHandler.npcs[i].npcType != 2460 && NpcHandler.npcs[i].npcType != 2461 && NpcHandler.npcs[i].npcType != 2462) { - c.getPlayerAssistant().addSkillXP(damage * Constants.MELEE_EXP_RATE / 3, 0); - c.getPlayerAssistant().addSkillXP(damage * Constants.MELEE_EXP_RATE / 3, 1); - c.getPlayerAssistant().addSkillXP(damage * Constants.MELEE_EXP_RATE / 3, 2); - c.getPlayerAssistant().addSkillXP(damage * Constants.MELEE_EXP_RATE / 3, 3); - c.getPlayerAssistant().refreshSkill(0); - c.getPlayerAssistant().refreshSkill(1); - c.getPlayerAssistant().refreshSkill(2); - c.getPlayerAssistant().refreshSkill(3); - } else { - if (NpcHandler.npcs[i].npcType != 2459 && NpcHandler.npcs[i].npcType != 2460 && NpcHandler.npcs[i].npcType != 2461 && NpcHandler.npcs[i].npcType != 2462) { - c.getPlayerAssistant().addSkillXP(damage * Constants.MELEE_EXP_RATE, c.fightMode); - c.getPlayerAssistant().addSkillXP(damage * Constants.MELEE_EXP_RATE / 3, 3); - c.getPlayerAssistant().refreshSkill(c.fightMode); - c.getPlayerAssistant().refreshSkill(3); - } - } - if (damage > 0) { - if (NpcHandler.npcs[i].npcType >= 3777 && NpcHandler.npcs[i].npcType <= 3780 || PestControl.npcIsPCMonster(NpcHandler.npcs[i].npcType)) { - c.pcDamage += damage; - } - } - if (damage > 0 && guthansEffect) { - c.playerLevel[3] += damage; - if (c.playerLevel[3] > c.getLevelForXP(c.playerXP[3])) { - c.playerLevel[3] = c.getLevelForXP(c.playerXP[3]); - } - c.getPlayerAssistant().refreshSkill(3); - NpcHandler.npcs[i].gfx0(398); - } - NpcHandler.npcs[i].underAttack = true; - c.killingNpcIndex = c.npcIndex; - c.lastNpcAttacked = i; - switch (c.specEffect) { - case 4: - if (damage > 0) { - if (c.playerLevel[3] + damage > c.getLevelForXP(c.playerXP[3])) { - if (c.playerLevel[3] > c.getLevelForXP(c.playerXP[3])) { - ; - } else { - c.playerLevel[3] = c.getLevelForXP(c.playerXP[3]); - } - } else { - c.playerLevel[3] += damage; - } - c.getPlayerAssistant().refreshSkill(3); - } - break; - - } - switch (damageMask) { - case 1: - NpcHandler.npcs[i].hitDiff = damage; - NpcHandler.npcs[i].HP -= damage; - c.totalDamageDealt += damage; - NpcHandler.npcs[i].hitUpdateRequired = true; - NpcHandler.npcs[i].updateRequired = true; - break; - - case 2: - NpcHandler.npcs[i].hitDiff2 = damage; - NpcHandler.npcs[i].HP -= damage; - c.totalDamageDealt += damage; - NpcHandler.npcs[i].hitUpdateRequired2 = true; - NpcHandler.npcs[i].updateRequired = true; - c.doubleHit = false; - break; - - } - } - - public void fireProjectileNpc() { - if (c.oldNpcIndex > 0) { - if (NpcHandler.npcs[c.oldNpcIndex] != null) { - c.projectileStage = 2; - int pX = c.getX(); - int pY = c.getY(); - int nX = NpcHandler.npcs[c.oldNpcIndex].getX(); - int nY = NpcHandler.npcs[c.oldNpcIndex].getY(); - int offX = (pY - nY) * -1; - int offY = (pX - nX) * -1; - c.getPlayerAssistant().createPlayersProjectile(pX, pY, offX, - offY, 50, RangeData.getProjectileSpeed(c), - RangeData.getRangeProjectileGFX(c), 43, 31, c.oldNpcIndex + 1, - MagicSpells.getStartDelay(c)); - if (RangeData.usingDbow(c)) { - c.getPlayerAssistant().createPlayersProjectile2(pX, pY, - offX, offY, 50, RangeData.getProjectileSpeed(c), - RangeData.getRangeProjectileGFX(c), 60, 31, c.oldNpcIndex + 1, - MagicSpells.getStartDelay(c), 35); - } - } - } - } - - public void attackingNpcTick() { - int i = c.npcIndex; - if (i > 0 && NpcHandler.npcs[i] != null) { - if (NpcHandler.npcs[i].isDead) { - c.npcIndex = 0; - c.followId2 = 0; - c.faceNpc(0); - return; - } - - boolean projectile = c.usingBow || c.usingMagic || c.usingRangeWeapon; - if (projectile && !PathFinder.isProjectilePathClear(c.absX, c.absY, c.heightLevel, NpcHandler.npcs[i].absX, NpcHandler.npcs[i].absY)) { - return; - } - - if (!c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 2) && RangeData.usingHally(c) && !c.usingRangeWeapon && !c.usingBow && !c.usingMagic - || !c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 4) && c.usingRangeWeapon&& !c.usingBow && !c.usingMagic - || !c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 1)&& !c.usingRangeWeapon && !RangeData.usingHally(c) && !c.usingBow && !c.usingMagic - || !c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 8) && (c.usingBow || c.usingMagic)) { - return; - } else { - c.stopMovement(); - } - } - } - - public void attackingPlayerTick() { - int i = c.playerIndex; - if (i > 0 && PlayerHandler.players[i] != null) { - if (PlayerHandler.players[i].isDead) { - c.playerIndex = 0; - c.followId = 0; - c.faceNpc(0); - return; - } - - boolean projectile = c.usingBow || c.usingMagic || c.usingRangeWeapon; - if (projectile && !PathFinder.isProjectilePathClear(c.absX, c.absY, c.heightLevel, PlayerHandler.players[i].absX, PlayerHandler.players[i].absY)) { - return; - } - - if (!c.goodDistance(c.getX(), c.getY(), - PlayerHandler.players[i].getX(), - PlayerHandler.players[i].getY(), 4) - && c.usingRangeWeapon - && !c.usingBow - && !c.usingMagic - || !c.goodDistance(c.getX(), c.getY(), - PlayerHandler.players[i].getX(), - PlayerHandler.players[i].getY(), 2) - && !c.usingRangeWeapon - && RangeData.usingHally(c) - && !c.usingBow - && !c.usingMagic - || !c.goodDistance(c.getX(), c.getY(), - PlayerHandler.players[i].getX(), - PlayerHandler.players[i].getY(), - getRequiredDistance()) - && !c.usingRangeWeapon - && !RangeData.usingHally(c) - && !c.usingBow - && !c.usingMagic - || !c.goodDistance(c.getX(), c.getY(), - PlayerHandler.players[i].getX(), - PlayerHandler.players[i].getY(), 10) - && (c.usingBow || c.usingMagic)) { - return; - } else { - c.stopMovement(); - } - } - } - - public void attackNpc(int i) { - // int equippedWeapon = c.playerEquipment[c.playerWeapon]; - // final int npcId = NPCHandler.npcs[i].npcType; - if (NpcHandler.npcs[i] != null) { - Npc npc = NpcHandler.npcs[i]; - if (NpcHandler.npcs[i].isDead || NpcHandler.npcs[i].MaxHP <= 0) { - c.usingMagic = false; - c.faceUpdate(0); - c.npcIndex = 0; - return; - } - /*if (c.absY == 3224 && NpcHandler.npcs[i].absY == 3225) { - resetPlayerAttack(); - return; - } - if (c.absY == 3226 && NpcHandler.npcs[i].absY == 3227) { - resetPlayerAttack(); - return; - } - if (c.absY == 3228 && NpcHandler.npcs[i].absY == 3227) { - resetPlayerAttack(); - return; - } - if (c.absX == 3252 && c.absY > 3254 && c.absY < 3272 || c.absY == 3254 && c.absX > 3252 && c.absX < 3265) { - resetPlayerAttack(); - return; - }*/ - if (c.usingMagic && MagicData.MAGIC_SPELLS[c.spellId][0] == 1171) { - if (!NpcHandler.isUndead(i)) { - c.getActionSender().sendMessage("This spell only affects skeletons, zombies, ghosts and shades."); - resetPlayerAttack(); - c.stopMovement(); - c.npcIndex = 0; - return; - } - } - if (c.isBotting == true) { - c.getActionSender().sendMessage("You can't attack npcs, until you confirm you are not botting."); - c.getActionSender().sendMessage("If you need to you can type ::amibotting, to see if your botting."); - resetPlayerAttack(); - return; - } - if (c.respawnTimer > 0) { - c.npcIndex = 0; - return; - } - if (!SlayerRequirements.itemNeededSlayer(c, i)) { - return; - } - if (!c.getSlayer().canAttackNpc(i)) { - return; - } - if (NpcHandler.npcs[i].npcType == 9) { - if (c.absX == 3225 && c.absY > 3459 && c.absY < 3465 || c.absX > 3222 && c.absX < 3226 && c.absY > 3456 && c.absY < 3460 - || c.absX > 3213 && c.absX < 3223 && c.absY == 3457 || c.absX > 3202 && c.absX < 3212 && c.absY == 3457 - || c.absX > 3199 && c.absX < 3203 && c.absY > 3456 && c.absY < 3460 || c.absX == 3200 && c.absY > 3459 && c.absY < 3467) { - resetPlayerAttack(); - return; - } - } - if (c.absX == 3180 && c.absY > 3433 && c.absY < 3447) { - resetPlayerAttack(); - return; - } - if (c.absX > 2837 && c.absX < 2840 && c.absY == 9772) { - resetPlayerAttack(); - return; - } - if (NpcHandler.npcs[i].npcType == 757 && c.vampSlayer > 2) { - if (!c.getItemAssistant().playerHasItem(1549, 1) || !c.getItemAssistant().playerHasItem(2347, 1)) { - c.getActionSender().sendMessage("You need a stake and hammer to attack count draynor."); - resetPlayerAttack(); - return; - } - } - if (c.isWoodcutting == true) { - c.getActionSender().sendMessage("You can't attack an npc while woodcutting."); - resetPlayerAttack(); - return; - } - if (NpcHandler.npcs[i].npcType == 1676) { - c.getActionSender().sendMessage("You don't have the heart to kill the poor creature again."); - resetPlayerAttack(); - return; - } - if (NpcHandler.npcs[i].npcType == 411) { - c.getActionSender().sendMessage("You can't attack a swarm!"); - resetPlayerAttack(); - return; - } - if (NpcHandler.npcs[i].underAttackBy > 0 && NpcHandler.npcs[i].underAttackBy != c.playerId && !NpcHandler.npcs[i].inMulti()) { - c.npcIndex = 0; - c.getActionSender().sendMessage("This monster is already in combat."); - return; - } - if ((c.underAttackBy > 0 || c.underAttackBy2 > 0) && c.underAttackBy2 != i && !c.inMulti()) { - resetPlayerAttack(); - c.getActionSender().sendMessage("I am already under attack."); - return; - } - if (NpcHandler.npcs[i].spawnedBy != c.playerId && NpcHandler.npcs[i].spawnedBy > 0) { - resetPlayerAttack(); - c.getActionSender().sendMessage("This monster was not spawned for you."); - return; - } - - c.followId2 = i; - c.followId = 0; - if (c.attackTimer <= 0) { - c.usingBow = false; - c.usingRangeWeapon = false; - boolean usingArrows = false; - boolean usingCross = c.playerEquipment[c.playerWeapon] == 9185; - c.bonusAttack = 0; - c.rangeItemUsed = 0; - c.projectileStage = 0; - if (c.autocasting) { - c.spellId = c.autocastId; - c.usingMagic = true; - } - if (c.spellId > 0) { - c.usingMagic = true; - } - - c.specAccuracy = 1.0; - c.specDamage = 1.0; - if (!c.usingMagic) { - for (int bowId : RangeData.BOWS) { - if (c.playerEquipment[c.playerWeapon] == bowId) { - c.usingBow = true; - for (int arrowId : RangeData.ARROWS) { - if (c.playerEquipment[c.playerArrows] == arrowId) { - usingArrows = true; - } - } - } - } - - for (int otherRangeId : RangeData.OTHER_RANGE_WEAPONS) { - if (c.playerEquipment[c.playerWeapon] == otherRangeId) { - c.usingRangeWeapon = true; - } - } - } - if (armaNpc(i) && !usingCross && !c.usingBow && !c.usingMagic - && !RangeData.usingCrystalBow(c) && !c.usingRangeWeapon) { - resetPlayerAttack(); - return; - } - if (c.usingRangeWeapon || c.usingBow - && Constants.combatSounds - && NpcHandler.npcs[i].npcType < 3177 - && NpcHandler.npcs[i].npcType > 3180) { - c.getActionSender().sendSound(SoundList.SHOOT_ARROW, - 100, 0); - } - - boolean projectile = c.usingBow || c.usingMagic || c.usingRangeWeapon; - - if (projectile && !PathFinder.isProjectilePathClear(c.absX, c.absY, c.heightLevel, npc.absX, npc.absY)) { - return; - } - - if (!c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 2) && RangeData.usingHally(c) && !c.usingRangeWeapon && !c.usingBow && !c.usingMagic - || !c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 4) && c.usingRangeWeapon && !c.usingBow && !c.usingMagic - || !c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 1) && !c.usingRangeWeapon && !RangeData.usingHally(c) && !c.usingBow && !c.usingMagic - || !c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 8) && (c.usingBow || c.usingMagic)) { - return; - } else { - c.stopMovement(); - } - - if (!usingCross - && !usingArrows - && c.usingBow - && (c.playerEquipment[c.playerWeapon] < 4212 || c.playerEquipment[c.playerWeapon] > 4223)) { - c.getActionSender().sendMessage( - "There is no ammo left in your quiver."); - c.stopMovement(); - c.npcIndex = 0; - return; - } - if (RangeData.correctBowAndArrows(c) < c.playerEquipment[c.playerArrows] - && Constants.CORRECT_ARROWS && c.usingBow - && !RangeData.usingCrystalBow(c) - && c.playerEquipment[c.playerWeapon] != 9185) { - c.getItemAssistant(); - c.getItemAssistant(); - c.getActionSender().sendMessage( - "You can't use " - + ItemAssistant.getItemName( - c.playerEquipment[c.playerArrows]) - .toLowerCase() - + "s with a " - + ItemAssistant.getItemName( - c.playerEquipment[c.playerWeapon]) - .toLowerCase() + "."); - c.stopMovement(); - c.npcIndex = 0; - return; - } - - if (c.playerEquipment[c.playerWeapon] == 9185 && !properBolts()) { - c.getActionSender().sendMessage( - "You must use bolts with a crossbow."); - c.stopMovement(); - resetPlayerAttack(); - return; - } - - if (c.usingBow - || c.usingMagic - || c.usingRangeWeapon - || c.goodDistance(c.getX(), c.getY(), - NpcHandler.npcs[i].getX(), - NpcHandler.npcs[i].getY(), 2) && RangeData.usingHally(c)) { - c.stopMovement(); - } - - if (!checkMagicReqs(c.spellId)) { - c.stopMovement(); - c.npcIndex = 0; - return; - } - - c.faceUpdate(i); - c.attackTimer = getAttackDelay(); - NpcHandler.npcs[i].underAttackBy = c.playerId; - NpcHandler.npcs[i].lastDamageTaken = System.currentTimeMillis(); - if (c.usingSpecial && !c.usingMagic) { - if (c.getCombatAssistant().checkSpecAmount( - c.playerEquipment[c.playerWeapon])) { - c.lastWeaponUsed = c.playerEquipment[c.playerWeapon]; - c.lastArrowUsed = c.playerEquipment[c.playerArrows]; - c.getSpecials().activateSpecial( - c.playerEquipment[c.playerWeapon], i); - return; - } else { - c.getActionSender() - .sendMessage( - "You don't have the required special energy to use this attack."); - c.usingSpecial = false; - c.getItemAssistant().updateSpecialBar(); - if (Constants.combatSounds) { - c.getActionSender() - .sendSound( - CombatSounds - .specialSounds(c.playerEquipment[c.playerWeapon]), - 100, 0); - } - c.npcIndex = 0; - return; - } - } - c.specMaxHitIncrease = 0; - if (!c.usingMagic) { - if (Constants.combatSounds) { - c.getActionSender().sendSound( - CombatSounds.getWeaponSounds(c), 100, 0); - } - c.startAnimation(getWepAnim()); - } else { - if (Constants.combatSounds) { - c.getActionSender().sendSound( - CombatSounds.getMagicSound(c, c.spellId), 100, - 0); - } - c.startAnimation(MagicData.MAGIC_SPELLS[c.spellId][2]); - } - c.lastWeaponUsed = c.playerEquipment[c.playerWeapon]; - c.lastArrowUsed = c.playerEquipment[c.playerArrows]; - if (!c.usingBow && !c.usingMagic && !c.usingRangeWeapon) { // melee - // hit - // delay - c.hitDelay = getHitDelay(); - c.projectileStage = 0; - c.oldNpcIndex = i; - } - - if (c.usingBow && !c.usingRangeWeapon && !c.usingMagic - || usingCross) { // range hit delay - if (usingCross) { - c.usingBow = true; - } - if (c.fightMode == 2) { - c.attackTimer--; - } - c.lastArrowUsed = c.playerEquipment[c.playerArrows]; - c.lastWeaponUsed = c.playerEquipment[c.playerWeapon]; - c.gfx100(RangeData.getRangeStartGFX(c)); - c.hitDelay = getHitDelay(); - c.projectileStage = 1; - c.oldNpcIndex = i; - if (c.playerEquipment[c.playerWeapon] >= 4212 - && c.playerEquipment[c.playerWeapon] <= 4223) { - c.rangeItemUsed = c.playerEquipment[c.playerWeapon]; - c.crystalBowArrowCount++; - c.lastArrowUsed = 0; - } else { - c.rangeItemUsed = c.playerEquipment[c.playerArrows]; - c.getItemAssistant().deleteArrow(); - } - fireProjectileNpc(); - } - - if (c.usingRangeWeapon && !c.usingMagic && !c.usingBow) { // knives, - // darts, - // etc - // hit - // delay - c.lastWeaponUsed = c.playerEquipment[c.playerWeapon]; - c.rangeItemUsed = c.playerEquipment[c.playerWeapon]; - c.getItemAssistant().deleteEquipment(); - c.gfx100(RangeData.getRangeStartGFX(c)); - c.lastArrowUsed = 0; - c.hitDelay = getHitDelay(); - c.projectileStage = 1; - c.oldNpcIndex = i; - if (c.fightMode == 2) { - c.attackTimer--; - } - fireProjectileNpc(); - } - - if (c.usingMagic) { // magic hit delay - int pX = c.getX(); - int pY = c.getY(); - int nX = NpcHandler.npcs[i].getX(); - int nY = NpcHandler.npcs[i].getY(); - int offX = (pY - nY) * -1; - int offY = (pX - nX) * -1; - c.castingMagic = true; - c.projectileStage = 2; - if (MagicData.MAGIC_SPELLS[c.spellId][3] > 0) { - if (MagicSpells.getStartGfxHeight(c) == 100) { - c.gfx100(MagicData.MAGIC_SPELLS[c.spellId][3]); - } else { - c.gfx0(MagicData.MAGIC_SPELLS[c.spellId][3]); - } - } - if (MagicData.MAGIC_SPELLS[c.spellId][4] > 0) { - c.getPlayerAssistant().createPlayersProjectile(pX, pY, - offX, offY, 50, 78, - MagicData.MAGIC_SPELLS[c.spellId][4], - MagicSpells.getStartHeight(c), MagicSpells.getEndHeight(c), i + 1, 50); - } - c.hitDelay = getHitDelay(); - c.oldNpcIndex = i; - c.oldSpellId = c.spellId; - c.spellId = 0; - if (!c.autocasting) { - c.npcIndex = 0; - } - } - - if (c.usingBow && Constants.CRYSTAL_BOW_DEGRADES) { // crystal - // bow - // degrading - if (c.playerEquipment[c.playerWeapon] == 4212) { // new - // crystal - // bow - // becomes - // full - // bow - // on - // the - // first - // shot - c.getItemAssistant().wearItem(4214, 1, 3); - } - if (c.crystalBowArrowCount >= 250) { - switch (c.playerEquipment[c.playerWeapon]) { - - case 4223: // 1/10 bow - c.getItemAssistant().wearItem(-1, 1, 3); - c.getActionSender().sendMessage( - "Your crystal bow has fully degraded."); - if (!c.getItemAssistant().addItem(4207, 1)) { - Server.itemHandler.createGroundItem(c, 4207, - c.getX(), c.getY(), 1, c.getId()); - } - c.crystalBowArrowCount = 0; - break; - - default: - c.getItemAssistant().wearItem( - ++c.playerEquipment[c.playerWeapon], 1, 3); - c.getActionSender().sendMessage( - "Your crystal bow degrades."); - c.crystalBowArrowCount = 0; - break; - - } - } - } - } - } - } - - /** - * Attack Players, same as npc tbh xD - **/ - - public void attackPlayer(int i) { - Client o = (Client) PlayerHandler.players[i]; - /*if (c.connectedFrom.equals(o.connectedFrom)) { - c.getActionSender().sendMessage("You cannot attack your self."); - resetPlayerAttack(); - return; - }*/ - int equippedWeapon = c.playerEquipment[c.playerWeapon]; - - if (PlayerHandler.players[i] != null) { - - if (c.usingMagic && MagicData.MAGIC_SPELLS[c.spellId][0] == 1171) { - c.getActionSender().sendMessage("This spell only affects skeletons, zombies, ghosts and shades, not humans."); - resetPlayerAttack(); - c.stopMovement(); - return; - } - - if (CastleWars.isInCw(PlayerHandler.players[i]) - && CastleWars.isInCw(c)) { - if (CastleWars.getTeamNumber(c) == CastleWars.getTeamNumber((Client) PlayerHandler.players[i])) { - c.getActionSender().sendMessage("You cannot attack your own teammate."); - resetPlayerAttack(); - return; - } - } - - if (!CastleWars.isInCw(PlayerHandler.players[i]) - && CastleWars.isInCw(c)) { - c.getActionSender().sendMessage( - "You cannot attack people outside castle wars."); - resetPlayerAttack(); - return; - } - - if (PlayerHandler.players[i].isDead) { - resetPlayerAttack(); - return; - } - - if (c.respawnTimer > 0 || PlayerHandler.players[i].respawnTimer > 0) { - resetPlayerAttack(); - return; - } - - /* - * if( c.getPlayerAssistant().getWearingAmount() < 4 && c.duelStatus - * < 1 && ! c.inCw() && c.inPits == false ) { - * c.getPacketDispatcher().sendMessage( - * "You must be wearing at least 4 items to attack someone." ); - * resetPlayerAttack(); return; } - */ - boolean sameSpot = c.absX == PlayerHandler.players[i].getX() - && c.absY == PlayerHandler.players[i].getY(); - if (!c.goodDistance(PlayerHandler.players[i].getX(), PlayerHandler.players[i].getY(), c.getX(), c.getY(), 25) && !sameSpot) { - resetPlayerAttack(); - return; - } - - if (PlayerHandler.players[i].respawnTimer > 0) { - PlayerHandler.players[i].playerIndex = 0; - resetPlayerAttack(); - return; - } - - if (PlayerHandler.players[i].heightLevel != c.heightLevel) { - resetPlayerAttack(); - return; - } - if (c.attackTimer <= 0) { - c.usingBow = false; - c.specEffect = 0; - c.usingRangeWeapon = false; - c.rangeItemUsed = 0; - boolean usingArrows = false; - boolean usingCross = c.playerEquipment[c.playerWeapon] == 9185; - c.projectileStage = 0; - if (c.absX == PlayerHandler.players[i].absX - && c.absY == PlayerHandler.players[i].absY) { - if (c.freezeTimer > 0) { - resetPlayerAttack(); - return; - } - c.followId = i; - c.attackTimer = 0; - return; - } - if (!c.usingMagic) { - for (int bowId : RangeData.BOWS) { - if (c.playerEquipment[c.playerWeapon] == bowId) { - c.usingBow = true; - for (int arrowId : RangeData.ARROWS) { - if (c.playerEquipment[c.playerArrows] == arrowId) { - usingArrows = true; - } - } - } - } - - for (int otherRangeId : RangeData.OTHER_RANGE_WEAPONS) { - if (c.playerEquipment[c.playerWeapon] == otherRangeId) { - c.usingRangeWeapon = true; - } - } - } - if (c.autocasting) { - c.spellId = c.autocastId; - c.usingMagic = true; - } - if (c.spellId > 0) { - c.usingMagic = true; - } - - - if (c.duelRule[9]) { - boolean canUseWeapon = false; - for (int funWeapon : Constants.FUN_WEAPONS) { - if (c.playerEquipment[c.playerWeapon] == funWeapon) { - canUseWeapon = true; - } - } - if (!canUseWeapon) { - c.getActionSender().sendMessage( - "You can only use fun weapons in this duel!"); - resetPlayerAttack(); - return; - } - } - - if (c.duelRule[2] && (c.usingBow || c.usingRangeWeapon)) { - c.getActionSender().sendMessage( - "Range has been disabled in this duel!"); - return; - } - if (c.duelRule[3] && !c.usingBow && !c.usingRangeWeapon - && !c.usingMagic) { - c.getActionSender().sendMessage( - "Melee has been disabled in this duel!"); - return; - } - - if (c.duelRule[4] && c.usingMagic) { - c.getActionSender().sendMessage( - "Magic has been disabled in this duel!"); - resetPlayerAttack(); - return; - } - - boolean projectile = c.usingBow || c.usingMagic || c.usingRangeWeapon; - - if (projectile && !PathFinder.isProjectilePathClear(c.absX, c.absY, c.heightLevel, PlayerHandler.players[i].absX, PlayerHandler.players[i].absY)) { - return; - } - - if (!c.goodDistance(c.getX(), c.getY(), - PlayerHandler.players[i].getX(), - PlayerHandler.players[i].getY(), 4) - && c.usingRangeWeapon - && !c.usingBow - && !c.usingMagic - || !c.goodDistance(c.getX(), c.getY(), - PlayerHandler.players[i].getX(), - PlayerHandler.players[i].getY(), 2) - && !c.usingRangeWeapon - && RangeData.usingHally(c) - && !c.usingBow - && !c.usingMagic - || !c.goodDistance(c.getX(), c.getY(), - PlayerHandler.players[i].getX(), - PlayerHandler.players[i].getY(), - getRequiredDistance()) - && !c.usingRangeWeapon - && !RangeData.usingHally(c) - && !c.usingBow - && !c.usingMagic - || !c.goodDistance(c.getX(), c.getY(), - PlayerHandler.players[i].getX(), - PlayerHandler.players[i].getY(), 10) - && (c.usingBow || c.usingMagic)) { - // c.getPacketDispatcher().sendMessage("Setting attack timer to 1"); - //c.attackTimer = 1; - if (!c.usingBow && !c.usingMagic && !c.usingRangeWeapon - && c.freezeTimer > 0) { - resetPlayerAttack(); - } - return; - } - - if (!usingCross - && !usingArrows - && c.usingBow - && (c.playerEquipment[c.playerWeapon] < 4212 || c.playerEquipment[c.playerWeapon] > 4223) - && !c.usingMagic) { - c.getActionSender().sendMessage( - "There is no ammo left in your quiver."); - c.stopMovement(); - resetPlayerAttack(); - return; - } - if (RangeData.correctBowAndArrows(c) < c.playerEquipment[c.playerArrows] - && Constants.CORRECT_ARROWS && c.usingBow - && !RangeData.usingCrystalBow(c) - && c.playerEquipment[c.playerWeapon] != 9185 - && !c.usingMagic) { - c.getItemAssistant(); - c.getItemAssistant(); - c.getActionSender().sendMessage( - "You can't use " - + ItemAssistant.getItemName( - c.playerEquipment[c.playerArrows]) - .toLowerCase() - + "s with a " - + ItemAssistant.getItemName( - c.playerEquipment[c.playerWeapon]) - .toLowerCase() + "."); - c.stopMovement(); - resetPlayerAttack(); - return; - } - if (c.playerEquipment[c.playerWeapon] == 9185 && !properBolts() - && !c.usingMagic) { - c.getActionSender().sendMessage( - "You must use bolts with a crossbow."); - c.stopMovement(); - resetPlayerAttack(); - return; - } - - if (c.usingBow || c.usingMagic || c.usingRangeWeapon - || RangeData.usingHally(c)) { - c.stopMovement(); - } - - if (!checkMagicReqs(c.spellId)) { - c.stopMovement(); - resetPlayerAttack(); - return; - } - - c.faceUpdate(i + 32768); - - if (c.duelStatus != 5 - && !PlayerHandler.players[c.playerIndex].inCwGame() - && FightPits.getState(c) == null) { - if (!c.attackedPlayers.contains(c.playerIndex) - && !PlayerHandler.players[c.playerIndex].attackedPlayers - .contains(c.playerId)) { - c.attackedPlayers.add(c.playerIndex); - c.isSkulled = true; - c.skullTimer = Constants.SKULL_TIMER; - c.headIconPk = 0; - c.getPlayerAssistant().requestUpdates(); - } - } - c.specAccuracy = 1.0; - c.specDamage = 1.0; - c.delayedDamage = c.delayedDamage2 = 0; - if (c.usingSpecial && !c.usingMagic) { - if (c.duelRule[10] && c.duelStatus == 5) { - c.getActionSender() - .sendMessage( - "Special attacks have been disabled during this duel!"); - c.usingSpecial = false; - c.getItemAssistant().updateSpecialBar(); - if (Constants.combatSounds) { - c.getActionSender() - .sendSound( - CombatSounds - .specialSounds(c.playerEquipment[c.playerWeapon]), - 100, 0); - } - resetPlayerAttack(); - return; - } - if (checkSpecAmount(equippedWeapon)) { - c.lastArrowUsed = c.playerEquipment[c.playerArrows]; - c.getSpecials().activateSpecial( - c.playerEquipment[c.playerWeapon], i); - c.followId = c.playerIndex; - return; - } else { - c.getActionSender() - .sendMessage( - "You don't have the required special energy to use this attack."); - c.usingSpecial = false; - c.getItemAssistant().updateSpecialBar(); - if (Constants.combatSounds) { - c.getActionSender() - .sendSound( - CombatSounds - .specialSounds(c.playerEquipment[c.playerWeapon]), - 100, 0); - } - c.playerIndex = 0; - return; - } - } - - if (!c.usingMagic) { - if (Constants.combatSounds) { - c.getActionSender().sendSound( - CombatSounds.getWeaponSounds(c), 100, 0); - } - c.startAnimation(getWepAnim()); - c.mageFollow = false; - } else { - c.startAnimation(MagicData.MAGIC_SPELLS[c.spellId][2]); - if (Constants.combatSounds) { - c.getActionSender().sendSound( - CombatSounds.getMagicSound(c, c.spellId), 100, - 0); - } - } - - c.attackTimer = getAttackDelay(); - PlayerHandler.players[i].underAttackBy = c.playerId; - PlayerHandler.players[i].logoutDelay = System.currentTimeMillis(); - PlayerHandler.players[i].singleCombatDelay = System.currentTimeMillis(); - PlayerHandler.players[i].killerId = c.playerId; - c.lastArrowUsed = 0; - c.rangeItemUsed = 0; - if (!c.usingBow && !c.usingMagic && !c.usingRangeWeapon) { // melee - // hit - // delay; - c.followId = PlayerHandler.players[c.playerIndex].playerId; - //c.getPlayerAssistant().followPlayer(); - c.hitDelay = getHitDelay(); - c.delayedDamage = Misc.random(meleeMaxHit()); - c.projectileStage = 0; - c.oldPlayerIndex = i; - } - - if (c.usingBow && !c.usingRangeWeapon && !c.usingMagic - || usingCross) { // range hit delay - if (c.playerEquipment[c.playerWeapon] >= 4212 - && c.playerEquipment[c.playerWeapon] <= 4223) { - c.rangeItemUsed = c.playerEquipment[c.playerWeapon]; - c.crystalBowArrowCount++; - } else { - c.rangeItemUsed = c.playerEquipment[c.playerArrows]; - c.getItemAssistant().deleteArrow(); - } - if (c.fightMode == 2) { - c.attackTimer--; - } - if (usingCross) { - c.usingBow = true; - } - - c.usingBow = true; - c.followId = PlayerHandler.players[c.playerIndex].playerId; - //c.getPlayerAssistant().followPlayer(); - c.lastWeaponUsed = c.playerEquipment[c.playerWeapon]; - c.lastArrowUsed = c.playerEquipment[c.playerArrows]; - c.gfx100(RangeData.getRangeStartGFX(c)); - c.hitDelay = getHitDelay(); - c.projectileStage = 1; - c.oldPlayerIndex = i; - fireProjectilePlayer(); - } - - if (c.usingRangeWeapon) { // knives, darts, etc hit delay - c.rangeItemUsed = c.playerEquipment[c.playerWeapon]; - c.getItemAssistant().deleteEquipment(); - c.usingRangeWeapon = true; - c.followId = PlayerHandler.players[c.playerIndex].playerId; - //c.getPlayerAssistant().followPlayer(); - c.gfx100(RangeData.getRangeStartGFX(c)); - if (c.fightMode == 2) { - c.attackTimer--; - } - c.hitDelay = getHitDelay(); - c.projectileStage = 1; - c.oldPlayerIndex = i; - fireProjectilePlayer(); - } - - if (c.usingMagic) { // magic hit delay - int pX = c.getX(); - int pY = c.getY(); - int nX = PlayerHandler.players[i].getX(); - int nY = PlayerHandler.players[i].getY(); - int offX = (pY - nY) * -1; - int offY = (pX - nX) * -1; - c.castingMagic = true; - c.projectileStage = 2; - if (MagicData.MAGIC_SPELLS[c.spellId][3] > 0) { - if (MagicSpells.getStartGfxHeight(c) == 100) { - c.gfx100(MagicData.MAGIC_SPELLS[c.spellId][3]); - } else { - c.gfx0(MagicData.MAGIC_SPELLS[c.spellId][3]); - } - } - if (MagicData.MAGIC_SPELLS[c.spellId][4] > 0) { - c.getPlayerAssistant().createPlayersProjectile(pX, pY, - offX, offY, 50, 78, - MagicData.MAGIC_SPELLS[c.spellId][4], - MagicSpells.getStartHeight(c), MagicSpells.getEndHeight(c), -i - 1, - MagicSpells.getStartDelay(c)); - } - if (c.autocastId > 0) { - c.followId = c.playerIndex; - c.followDistance = 5; - } - c.hitDelay = getHitDelay(); - c.oldPlayerIndex = i; - c.oldSpellId = c.spellId; - c.spellId = 0; - if (MagicData.MAGIC_SPELLS[c.oldSpellId][0] == 12891 - && o.isMoving) { - // c.getPacketDispatcher().sendMessage("Barrage projectile.."); - c.getPlayerAssistant().createPlayersProjectile(pX, pY, - offX, offY, 50, 85, 368, 25, 25, -i - 1, - MagicSpells.getStartDelay(c)); - } - if (Misc.random(o.getCombatAssistant().mageDef()) > Misc - .random(mageAtk())) { - c.magicFailed = true; - } else { - c.magicFailed = false; - } - int freezeDelay = MagicSpells.getFreezeTime(c);// freeze time - if (freezeDelay > 0 - && PlayerHandler.players[i].freezeTimer <= -3 - && !c.magicFailed) { - PlayerHandler.players[i].freezeTimer = freezeDelay; - o.resetWalkingQueue(); - o.getActionSender().sendMessage( - "You have been frozen."); - o.frozenBy = c.playerId; - } - if (!checkReqs()) { - return; - } - if (!c.autocasting && c.spellId <= 0) { - c.playerIndex = 0; - } - } - - if (c.usingBow && Constants.CRYSTAL_BOW_DEGRADES) { // crystal - // bow - // degrading - if (c.playerEquipment[c.playerWeapon] == 4212) { // new - // crystal - // bow - // becomes - // full - // bow - // on - // the - // first - // shot - c.getItemAssistant().wearItem(4214, 1, 3); - } - if (c.crystalBowArrowCount >= 250) { - switch (c.playerEquipment[c.playerWeapon]) { - - case 4223: // 1/10 bow - c.getItemAssistant().wearItem(-1, 1, 3); - c.getActionSender().sendMessage( - "Your crystal bow has fully degraded."); - if (!c.getItemAssistant().addItem(4207, 1)) { - Server.itemHandler.createGroundItem(c, 4207, - c.getX(), c.getY(), 1, c.getId()); - } - c.crystalBowArrowCount = 0; - break; - - default: - c.getItemAssistant().wearItem( - ++c.playerEquipment[c.playerWeapon], 1, 3); - c.getActionSender().sendMessage( - "Your crystal bow degrades."); - c.crystalBowArrowCount = 0; - break; - } - } - } - } - } - } - - public void appendVengeance(int otherPlayer, int damage) { - if (damage <= 0) { - return; - } - Player o = PlayerHandler.players[otherPlayer]; - o.forcedText = "Taste Vengeance!"; - o.forcedChatUpdateRequired = true; - o.updateRequired = true; - o.vengOn = false; - if (o.playerLevel[3] - damage > 0) { - damage = (int) (damage * 0.75); - if (damage > c.playerLevel[3]) { - damage = c.playerLevel[3]; - } - c.setHitDiff2(damage); - c.setHitUpdateRequired2(true); - c.playerLevel[3] -= damage; - c.getPlayerAssistant().refreshSkill(3); - } - c.updateRequired = true; - } - - public void playerDelayedHit(int i) { - if (PlayerHandler.players[i] != null) { - if (PlayerHandler.players[i].isDead || c.isDead - || PlayerHandler.players[i].playerLevel[3] <= 0 - || c.playerLevel[3] <= 0) { - c.playerIndex = 0; - return; - } - if (PlayerHandler.players[i].respawnTimer > 0) { - c.faceUpdate(0); - c.playerIndex = 0; - return; - } - Client o = (Client) PlayerHandler.players[i]; - o.getPlayerAssistant().removeAllWindows(); - if (o.playerIndex <= 0 && o.npcIndex <= 0) { - if (o.autoRet == 1) { - o.playerIndex = c.playerId; - } - } - if (o.attackTimer <= 3 || o.attackTimer == 0 && o.playerIndex == 0 - && !c.castingMagic) { // block animation - o.startAnimation(o.getCombatAssistant().getBlockEmote()); - if (Constants.combatSounds) { - o.getActionSender().sendSound( - CombatSounds.getPlayerBlockSounds(o), 100, 0); - } - } - if (o.inTrade) { - o.getTrading().declineTrade(); - } - if (c.projectileStage == 0) { // melee hit damage - applyPlayerMeleeDamage(i, 1); - if (c.doubleHit) { - applyPlayerMeleeDamage(i, 2); - } - } - if (!c.castingMagic && c.projectileStage > 0) { // range hit - // damage - int damage = Misc.random(rangeMaxHit()); - int damage2 = -1; - if (c.lastWeaponUsed == 11235 || c.bowSpecShot == 1) { - damage2 = Misc.random(rangeMaxHit()); - } - boolean ignoreDef = false; - if (Misc.random(4) == 1 && c.lastArrowUsed == 9243) { - ignoreDef = true; - o.gfx0(758); - } - if (Misc.random(10 + o.getCombatAssistant() - .calculateRangeDefence()) > Misc - .random(10 + calculateRangeAttack()) - && !ignoreDef) { - damage = 0; - } - if (Misc.random(4) == 1 && c.lastArrowUsed == 9242 - && damage > 0) { - PlayerHandler.players[i].gfx0(754); - damage = NpcHandler.npcs[i].HP / 5; - c.handleHitMask(c.playerLevel[3] / 10); - c.dealDamage(c.playerLevel[3] / 10); - c.gfx0(754); - } - - if (c.lastWeaponUsed == 11235 || c.bowSpecShot == 1) { - if (Misc.random(10 + o.getCombatAssistant() - .calculateRangeDefence()) > Misc - .random(10 + calculateRangeAttack())) { - damage2 = 0; - } - } - - if (c.dbowSpec) { - o.gfx100(1100); - if (damage < 8) { - damage = 8; - } - if (damage2 < 8) { - damage2 = 8; - } - c.dbowSpec = false; - } - if (damage > 0 && Misc.random(5) == 1 - && c.lastArrowUsed == 9244) { - damage *= 1.45; - o.gfx0(756); - } - if (o.getPrayer().prayerActive[17] - && System.currentTimeMillis() - o.protRangeDelay > 1500) { // if - // prayer - // active - // reduce - // damage - // by - // half - damage = damage * 60 / 100; - if (c.lastWeaponUsed == 11235 || c.bowSpecShot == 1) { - damage2 = damage2 * 60 / 100; - } - } - if (PlayerHandler.players[i].playerLevel[3] - damage < 0) { - damage = PlayerHandler.players[i].playerLevel[3]; - } - if (PlayerHandler.players[i].playerLevel[3] - damage - damage2 < 0) { - damage2 = PlayerHandler.players[i].playerLevel[3] - damage; - } - if (damage < 0) { - damage = 0; - } - if (damage2 < 0 && damage2 != -1) { - damage2 = 0; - } - if (o.vengOn) { - appendVengeance(i, damage); - appendVengeance(i, damage2); - } - if (damage > 0) { - applyRecoil(c, damage, i); - } - if (damage2 > 0) { - applyRecoil(c, damage2, i); - } - if (c.fightMode == 3) { - c.getPlayerAssistant().addSkillXP(damage * Constants.RANGE_EXP_RATE / 3, 4); - c.getPlayerAssistant().addSkillXP(damage / 3, 1); - c.getPlayerAssistant().addSkillXP(damage / 3, 3); - c.getPlayerAssistant().refreshSkill(1); - c.getPlayerAssistant().refreshSkill(3); - c.getPlayerAssistant().refreshSkill(4); - } else { - c.getPlayerAssistant().addSkillXP(damage * Constants.RANGE_EXP_RATE, 4); - c.getPlayerAssistant().addSkillXP(damage / 3, 3); - c.getPlayerAssistant().refreshSkill(3); - c.getPlayerAssistant().refreshSkill(4); - } - boolean dropArrows = true; - - for (int noArrowId : RangeData.NO_ARROW_DROP) { - if (c.lastWeaponUsed == noArrowId) { - dropArrows = false; - break; - } - } - if (dropArrows) { - c.getItemAssistant().dropArrowPlayer(); - } - PlayerHandler.players[i].underAttackBy = c.playerId; - PlayerHandler.players[i].logoutDelay = System.currentTimeMillis(); - PlayerHandler.players[i].singleCombatDelay = System.currentTimeMillis(); - PlayerHandler.players[i].killerId = c.playerId; - // Server.playerHandler.players[i].setHitDiff(damage); - // Server.playerHandler.players[i].playerLevel[3] -= damage; - PlayerHandler.players[i].dealDamage(damage); - PlayerHandler.players[i].damageTaken[c.playerId] += damage; - c.killedBy = PlayerHandler.players[i].playerId; - PlayerHandler.players[i].handleHitMask(damage); - if (damage2 != -1) { - // Server.playerHandler.players[i].playerLevel[3] -= - // damage2; - PlayerHandler.players[i].dealDamage(damage2); - PlayerHandler.players[i].damageTaken[c.playerId] += damage2; - PlayerHandler.players[i].handleHitMask(damage2); - - } - o.getPlayerAssistant().refreshSkill(3); - - // Server.playerHandler.players[i].setHitUpdateRequired(true); - PlayerHandler.players[i].updateRequired = true; - applySmite(i, damage); - if (damage2 != -1) { - applySmite(i, damage2); - } - - } else if (c.projectileStage > 0) { // magic hit damage - int damage = Misc - .random(MagicData.MAGIC_SPELLS[c.oldSpellId][6]); - if (MagicSpells.godSpells(c)) { - if (System.currentTimeMillis() - c.godSpellDelay < Constants.GOD_SPELL_CHARGE) { - damage += 10; - } - } - // c.playerIndex = 0; - if (c.magicFailed) { - damage = 0; - } - - if (o.getPrayer().prayerActive[16] - && System.currentTimeMillis() - o.protMageDelay > 1500) { // if - // prayer - // active - // reduce - // damage - // by - // half - damage = damage * 60 / 100; - } - if (PlayerHandler.players[i].playerLevel[3] - damage < 0) { - damage = PlayerHandler.players[i].playerLevel[3]; - } - if (o.vengOn) { - appendVengeance(i, damage); - } - if (damage > 0) { - applyRecoil(c, damage, i); - } - c.getPlayerAssistant().addSkillXP(MagicData.MAGIC_SPELLS[c.oldSpellId][7] + damage * Constants.MAGIC_EXP_RATE, 6); - if (MagicData.MAGIC_SPELLS[c.oldSpellId][0] != 1161 && MagicData.MAGIC_SPELLS[c.oldSpellId][0] != 1153 && MagicData.MAGIC_SPELLS[c.oldSpellId][0] != 1157 && MagicData.MAGIC_SPELLS[c.oldSpellId][0] != 1542 && MagicData.MAGIC_SPELLS[c.oldSpellId][0] != 1543 && MagicData.MAGIC_SPELLS[c.oldSpellId][0] != 1562) { - c.getPlayerAssistant().addSkillXP(MagicData.MAGIC_SPELLS[c.oldSpellId][7] + damage / 3, 3); - } - c.getPlayerAssistant().refreshSkill(3); - c.getPlayerAssistant().refreshSkill(6); - - if (MagicSpells.getEndGfxHeight(c) == 100 && !c.magicFailed) { // end GFX - PlayerHandler.players[i] - .gfx100(MagicData.MAGIC_SPELLS[c.oldSpellId][5]); - } else if (!c.magicFailed) { - PlayerHandler.players[i] - .gfx0(MagicData.MAGIC_SPELLS[c.oldSpellId][5]); - } else if (c.magicFailed) { - PlayerHandler.players[i].gfx100(85); - c.getActionSender().sendSound(SoundList.MAGE_FAIL, 100, - 0); - } - - if (!c.magicFailed) { - if (System.currentTimeMillis() - - PlayerHandler.players[i].reduceStat > 35000) { - PlayerHandler.players[i].reduceStat = System - .currentTimeMillis(); - switch (MagicData.MAGIC_SPELLS[c.oldSpellId][0]) { - case 12987: - case 13011: - case 12999: - case 13023: - PlayerHandler.players[i].playerLevel[0] -= o - .getPlayerAssistant() - .getLevelForXP( - PlayerHandler.players[i].playerXP[0]) * 10 / 100; - break; - } - } - - switch (MagicData.MAGIC_SPELLS[c.oldSpellId][0]) { - case 12445: // teleblock - if (System.currentTimeMillis() - o.teleBlockDelay > o.teleBlockLength) { - o.teleBlockDelay = System.currentTimeMillis(); - o.getActionSender().sendMessage( - "You have been teleblocked."); - o.getActionSender().sendSound( - SoundList.TELEBLOCK_HIT, 100, 0); - if (o.getPrayer().prayerActive[16] - && System.currentTimeMillis() - - o.protMageDelay > 1500) { - o.teleBlockLength = 150000; - } else { - o.teleBlockLength = 300000; - } - } - break; - - case 12901: - case 12919: // blood spells - case 12911: - case 12929: - int heal = damage / 4; - if (c.playerLevel[3] + heal > c.getPlayerAssistant() - .getLevelForXP(c.playerXP[3])) { - c.playerLevel[3] = c.getPlayerAssistant() - .getLevelForXP(c.playerXP[3]); - } else { - c.playerLevel[3] += heal; - } - c.getPlayerAssistant().refreshSkill(3); - break; - - case 1153: - PlayerHandler.players[i].playerLevel[0] -= o - .getPlayerAssistant().getLevelForXP( - PlayerHandler.players[i].playerXP[0]) * 5 / 100; - o.getActionSender().sendMessage( - "Your attack level has been reduced!"); - PlayerHandler.players[i].reduceSpellDelay[c.reduceSpellId] = System - .currentTimeMillis(); - o.getPlayerAssistant().refreshSkill(0); - break; - - case 1157: - PlayerHandler.players[i].playerLevel[2] -= o - .getPlayerAssistant().getLevelForXP( - PlayerHandler.players[i].playerXP[2]) * 5 / 100; - o.getActionSender().sendMessage( - "Your strength level has been reduced!"); - PlayerHandler.players[i].reduceSpellDelay[c.reduceSpellId] = System - .currentTimeMillis(); - o.getPlayerAssistant().refreshSkill(2); - break; - - case 1161: - PlayerHandler.players[i].playerLevel[1] -= o - .getPlayerAssistant().getLevelForXP( - PlayerHandler.players[i].playerXP[1]) * 5 / 100; - o.getActionSender().sendMessage( - "Your defence level has been reduced!"); - PlayerHandler.players[i].reduceSpellDelay[c.reduceSpellId] = System - .currentTimeMillis(); - o.getPlayerAssistant().refreshSkill(1); - break; - - case 1542: - PlayerHandler.players[i].playerLevel[1] -= o - .getPlayerAssistant().getLevelForXP( - PlayerHandler.players[i].playerXP[1]) * 10 / 100; - o.getActionSender().sendMessage( - "Your defence level has been reduced!"); - PlayerHandler.players[i].reduceSpellDelay[c.reduceSpellId] = System - .currentTimeMillis(); - o.getPlayerAssistant().refreshSkill(1); - break; - - case 1543: - PlayerHandler.players[i].playerLevel[2] -= o - .getPlayerAssistant().getLevelForXP( - PlayerHandler.players[i].playerXP[2]) * 10 / 100; - o.getActionSender().sendMessage( - "Your strength level has been reduced!"); - PlayerHandler.players[i].reduceSpellDelay[c.reduceSpellId] = System - .currentTimeMillis(); - o.getPlayerAssistant().refreshSkill(2); - break; - - case 1562: - PlayerHandler.players[i].playerLevel[0] -= o - .getPlayerAssistant().getLevelForXP( - PlayerHandler.players[i].playerXP[0]) * 10 / 100; - o.getActionSender().sendMessage( - "Your attack level has been reduced!"); - PlayerHandler.players[i].reduceSpellDelay[c.reduceSpellId] = System - .currentTimeMillis(); - o.getPlayerAssistant().refreshSkill(0); - break; - } - } - - PlayerHandler.players[i].logoutDelay = System.currentTimeMillis(); - PlayerHandler.players[i].underAttackBy = c.playerId; - PlayerHandler.players[i].killerId = c.playerId; - PlayerHandler.players[i].singleCombatDelay = System - .currentTimeMillis(); - if (MagicData.MAGIC_SPELLS[c.oldSpellId][6] != 0) { - // Server.playerHandler.players[i].playerLevel[3] -= damage; - PlayerHandler.players[i].dealDamage(damage); - PlayerHandler.players[i].damageTaken[c.playerId] += damage; - c.totalPlayerDamageDealt += damage; - if (!c.magicFailed) { - // Server.playerHandler.players[i].setHitDiff(damage); - // Server.playerHandler.players[i].setHitUpdateRequired(true); - PlayerHandler.players[i].handleHitMask(damage); - } - } - applySmite(i, damage); - c.killedBy = PlayerHandler.players[i].playerId; - o.getPlayerAssistant().refreshSkill(3); - PlayerHandler.players[i].updateRequired = true; - c.usingMagic = false; - c.castingMagic = false; - if (o.inMulti() && MagicSpells.multis(c)) { - c.barrageCount = 0; - for (int j = 0; j < PlayerHandler.players.length; j++) { - if (PlayerHandler.players[j] != null) { - if (j == o.playerId) { - continue; - } - if (c.barrageCount >= 9) { - break; - } - if (o.goodDistance(o.getX(), o.getY(), - PlayerHandler.players[j].getX(), - PlayerHandler.players[j].getY(), 1)) { - MagicSpells.appendMultiBarrage(c, j, c.magicFailed); - } - } - } - } - c.getPlayerAssistant().refreshSkill(3); - c.getPlayerAssistant().refreshSkill(6); - c.oldSpellId = 0; - } - } - c.getPlayerAssistant().requestUpdates(); - if (c.bowSpecShot <= 0) { - c.oldPlayerIndex = 0; - c.projectileStage = 0; - c.lastWeaponUsed = 0; - c.doubleHit = false; - c.bowSpecShot = 0; - } - if (c.bowSpecShot != 0) { - c.bowSpecShot = 0; - } - } - - public void applyPlayerMeleeDamage(int i, int damageMask) { - Client o = (Client) PlayerHandler.players[i]; - if (o == null) { - return; - } - int damage = 0; - boolean veracsEffect = false; - boolean guthansEffect = false; - if (c.getPlayerAssistant().fullVeracs()) { - if (Misc.random(4) == 1) { - veracsEffect = true; - } - } - if (c.getPlayerAssistant().fullGuthans()) { - if (Misc.random(4) == 1) { - guthansEffect = true; - } - } - if (damageMask == 1) { - damage = c.delayedDamage; - c.delayedDamage = 0; - } else { - damage = c.delayedDamage2; - c.delayedDamage2 = 0; - } - if (Misc.random(o.getCombatAssistant().calcDef()) > Misc - .random(calcAtt()) && !veracsEffect) { - damage = 0; - c.bonusAttack = 0; - } else if (c.playerEquipment[c.playerWeapon] == 5698 - && o.poisonDamage <= 0 && Misc.random(3) == 1) { - o.getPlayerAssistant().appendPoison(13); - c.bonusAttack += damage / 3; - } else { - c.bonusAttack += damage / 3; - } - if (o.getPrayer().prayerActive[18] - && System.currentTimeMillis() - o.protMeleeDelay > 1500 - && !veracsEffect) { // if prayer active reduce damage by 40% - damage = damage * 60 / 100; - } - if (c.maxNextHit) { - damage = meleeMaxHit(); - } - if (damage > 0 && guthansEffect) { - c.playerLevel[3] += damage; - if (c.playerLevel[3] > c.getLevelForXP(c.playerXP[3])) { - c.playerLevel[3] = c.getLevelForXP(c.playerXP[3]); - } - c.getPlayerAssistant().refreshSkill(3); - o.gfx0(398); - } - if (c.ssSpec && damageMask == 2) { - damage = 5 + Misc.random(11); - c.ssSpec = false; - } - if (PlayerHandler.players[i].playerLevel[3] - damage < 0) { - damage = PlayerHandler.players[i].playerLevel[3]; - } - if (o.vengOn && damage > 0) { - appendVengeance(i, damage); - } - if (damage > 0) { - applyRecoil(c, damage, i); - } - switch (c.specEffect) { - case 1: // dragon scimmy special - if (damage > 0) { - if (o.getPrayer().prayerActive[16] - || o.getPrayer().prayerActive[17] - || o.getPrayer().prayerActive[18]) { - o.headIcon = -1; - o.getPlayerAssistant().sendConfig( - c.getPrayer().PRAYER_GLOW[16], 0); - o.getPlayerAssistant().sendConfig( - c.getPrayer().PRAYER_GLOW[17], 0); - o.getPlayerAssistant().sendConfig( - c.getPrayer().PRAYER_GLOW[18], 0); - } - o.getActionSender().sendMessage("You have been injured!"); - o.getPrayer().stopPrayerDelay = System.currentTimeMillis(); - o.getPrayer().prayerActive[16] = false; - o.getPrayer().prayerActive[17] = false; - o.getPrayer().prayerActive[18] = false; - o.getPlayerAssistant().requestUpdates(); - } - break; - case 2: - if (damage > 0) { - if (o.freezeTimer <= 0) { - o.freezeTimer = 30; - } - o.gfx0(369); - o.getActionSender().sendMessage("You have been frozen."); - o.frozenBy = c.playerId; - o.stopMovement(); - c.getActionSender().sendMessage("You freeze your enemy."); - } - break; - case 3: - if (damage > 0) { - o.playerLevel[1] -= damage; - o.getActionSender().sendMessage("You feel weak."); - if (o.playerLevel[1] < 1) { - o.playerLevel[1] = 1; - } - o.getPlayerAssistant().refreshSkill(1); - } - break; - case 4: - if (damage > 0) { - if (c.playerLevel[3] + damage > c.getLevelForXP(c.playerXP[3])) { - if (c.playerLevel[3] > c.getLevelForXP(c.playerXP[3])) { - ; - } else { - c.playerLevel[3] = c.getLevelForXP(c.playerXP[3]); - } - } else { - c.playerLevel[3] += damage; - } - c.getPlayerAssistant().refreshSkill(3); - } - break; - } - c.specEffect = 0; - if (c.fightMode == 3) {//melee shared - c.getPlayerAssistant().addSkillXP(damage * Constants.MELEE_EXP_RATE / 3, 0); - c.getPlayerAssistant().addSkillXP(damage * Constants.MELEE_EXP_RATE / 3, 1); - c.getPlayerAssistant().addSkillXP(damage * Constants.MELEE_EXP_RATE / 3, 2); - c.getPlayerAssistant().addSkillXP(damage / 3, 3); - c.getPlayerAssistant().refreshSkill(0); - c.getPlayerAssistant().refreshSkill(1); - c.getPlayerAssistant().refreshSkill(2); - c.getPlayerAssistant().refreshSkill(3); - } else { - c.getPlayerAssistant().addSkillXP(damage * Constants.MELEE_EXP_RATE, c.fightMode); - c.getPlayerAssistant().addSkillXP(damage * Constants.MELEE_EXP_RATE/3, 3); - c.getPlayerAssistant().refreshSkill(c.fightMode); - c.getPlayerAssistant().refreshSkill(3); - } - PlayerHandler.players[i].logoutDelay = System.currentTimeMillis(); - PlayerHandler.players[i].underAttackBy = c.playerId; - PlayerHandler.players[i].killerId = c.playerId; - PlayerHandler.players[i].singleCombatDelay = System.currentTimeMillis(); - if (c.killedBy != PlayerHandler.players[i].playerId) { - c.totalPlayerDamageDealt = 0; - } - c.killedBy = PlayerHandler.players[i].playerId; - applySmite(i, damage); - switch (damageMask) { - case 1: - PlayerHandler.players[i].dealDamage(damage); - PlayerHandler.players[i].damageTaken[c.playerId] += damage; - c.totalPlayerDamageDealt += damage; - PlayerHandler.players[i].updateRequired = true; - o.getPlayerAssistant().refreshSkill(3); - break; - - case 2: - PlayerHandler.players[i].dealDamage(damage); - PlayerHandler.players[i].damageTaken[c.playerId] += damage; - c.totalPlayerDamageDealt += damage; - PlayerHandler.players[i].updateRequired = true; - c.doubleHit = false; - o.getPlayerAssistant().refreshSkill(3); - break; - } - PlayerHandler.players[i].handleHitMask(damage); - } - - public void applySmite(int index, int damage) { - if (!c.getPrayer().prayerActive[23]) { - return; - } - if (damage <= 0) { - return; - } - if (PlayerHandler.players[index] != null) { - Client c2 = (Client) PlayerHandler.players[index]; - c2.playerLevel[5] -= damage / 4; - if (c2.playerLevel[5] <= 0) { - c2.playerLevel[5] = 0; - PrayerDrain.resetPrayers(c2); - } - c2.getPlayerAssistant().refreshSkill(5); - } - - } - - public void fireProjectilePlayer() { - if (c.oldPlayerIndex > 0) { - if (PlayerHandler.players[c.oldPlayerIndex] != null) { - c.projectileStage = 2; - int pX = c.getX(); - int pY = c.getY(); - int oX = PlayerHandler.players[c.oldPlayerIndex].getX(); - int oY = PlayerHandler.players[c.oldPlayerIndex].getY(); - int offX = (pY - oY) * -1; - int offY = (pX - oX) * -1; - if (!c.msbSpec) { - c.getPlayerAssistant().createPlayersProjectile(pX, pY, - offX, offY, 50, RangeData.getProjectileSpeed(c), - RangeData.getRangeProjectileGFX(c), 43, 31, - -c.oldPlayerIndex - 1, MagicSpells.getStartDelay(c)); - } else if (c.msbSpec) { - c.getPlayerAssistant().createPlayersProjectile2(pX, pY, - offX, offY, 50, RangeData.getProjectileSpeed(c), - RangeData.getRangeProjectileGFX(c), 43, 31, - -c.oldPlayerIndex - 1, MagicSpells.getStartDelay(c), 10); - c.msbSpec = false; - } - if (RangeData.usingDbow(c)) { - c.getPlayerAssistant().createPlayersProjectile2(pX, pY, - offX, offY, 50, RangeData.getProjectileSpeed(c), - RangeData.getRangeProjectileGFX(c), 60, 31, - -c.oldPlayerIndex - 1, MagicSpells.getStartDelay(c), 35); - } - } - } - } - - public void resetPlayerAttack() { - c.usingMagic = false; - c.npcIndex = 0; - c.faceUpdate(0); - c.playerIndex = 0; - c.getPlayerAssistant().resetFollow(); - // c.getPacketDispatcher().sendMessage("Reset attack."); - } - - public int getCombatDifference(int combat1, int combat2) { - if (combat1 > combat2) { - return combat1 - combat2; - } - if (combat2 > combat1) { - return combat2 - combat1; - } - return 0; - } - - /** - * Wildy and duel info - **/ - - public boolean checkReqs() { - if (PlayerHandler.players[c.playerIndex] == null) { - return false; - } - if (c.inCw()) { - return true; - } - if (c.playerIndex == c.playerId) { - return false; - } - if (c.inPits && PlayerHandler.players[c.playerIndex].inPits) { - return true; - } - if (PlayerHandler.players[c.playerIndex].inDuelArena() && c.duelStatus != 5 && !c.usingMagic) { - if (c.duelingArena() || c.duelStatus == 5) { - c.getActionSender().sendMessage("You can't challenge inside the arena!"); - return false; - } - c.getDueling().requestDuel(c.playerIndex); - return false; - } - if (c.duelStatus == 5 - && PlayerHandler.players[c.playerIndex].duelStatus == 5) { - if (PlayerHandler.players[c.playerIndex].duelingWith == c.getId()) { - return true; - } else { - c.getActionSender() - .sendMessage("This isn't your opponent!"); - return false; - } - } - if (CastOnOther.castOnOtherSpells(c.castingSpellId)) { - return true; - } - if (!PlayerHandler.players[c.playerIndex].inWild() - && !PlayerHandler.players[c.playerIndex].inCwGame() - && !CastOnOther.castOnOtherSpells(c.castingSpellId)) { - c.getActionSender().sendMessage( - "That player is not in the wilderness." + c.castingSpellId); - c.stopMovement(); - resetPlayerAttack(); - return false; - } - if (!c.inWild() && !PlayerHandler.players[c.playerIndex].inCwGame() - && !CastOnOther.castOnOtherSpells(c.castingSpellId)) { - c.getActionSender().sendMessage( - "You are not in the wilderness."); - c.stopMovement(); - resetPlayerAttack(); - return false; - } - if (Constants.COMBAT_LEVEL_DIFFERENCE && !c.inCw()) { - int combatDif1 = getCombatDifference(c.combatLevel, - PlayerHandler.players[c.playerIndex].combatLevel); - if (combatDif1 > c.wildLevel - || combatDif1 > PlayerHandler.players[c.playerIndex].wildLevel) { - c.getActionSender() - .sendMessage( - "Your combat level difference is too great to attack that player here."); - c.stopMovement(); - resetPlayerAttack(); - return false; - } - } - - if (Constants.SINGLE_AND_MULTI_ZONES) { - if (!PlayerHandler.players[c.playerIndex].inMulti()) { // single - // combat - // zones - if (PlayerHandler.players[c.playerIndex].underAttackBy != c.playerId - && PlayerHandler.players[c.playerIndex].underAttackBy != 0) { - c.getActionSender().sendMessage( - "That player is already in combat."); - c.stopMovement(); - resetPlayerAttack(); - return false; - } - if (PlayerHandler.players[c.playerIndex].playerId != c.underAttackBy - && c.underAttackBy != 0 || c.underAttackBy2 > 0) { - c.getActionSender().sendMessage( - "You are already in combat."); - c.stopMovement(); - resetPlayerAttack(); - return false; - } - } - } - return true; - } - - public int getRequiredDistance() { - if (c.followId > 0 && c.freezeTimer <= 0 && !c.isMoving) { - return 2; - } else if (c.followId > 0 && c.freezeTimer <= 0 && c.isMoving) { - return 3; - } else { - return 1; - } - } - - public void handleDfs() { - if (System.currentTimeMillis() - c.dfsDelay > 30000) { - if (c.playerIndex > 0 - && PlayerHandler.players[c.playerIndex] != null) { - int damage = Misc.random(15) + 5; - c.startAnimation(2836); - c.gfx0(600); - PlayerHandler.players[c.playerIndex].playerLevel[3] -= damage; - PlayerHandler.players[c.playerIndex].hitDiff2 = damage; - PlayerHandler.players[c.playerIndex].hitUpdateRequired2 = true; - PlayerHandler.players[c.playerIndex].updateRequired = true; - c.dfsDelay = System.currentTimeMillis(); - } else { - c.getActionSender().sendMessage( - "I should be in combat before using this."); - } - } else { - c.getActionSender().sendMessage( - "My shield hasn't finished recharging yet."); - } - } - - public void handleDfsNPC() { - if (System.currentTimeMillis() - c.dfsDelay > 30000) { - if (c.npcIndex > 0 && NpcHandler.npcs[c.npcIndex] != null) { - int damage = Misc.random(15) + 5; - c.startAnimation(2836); - c.gfx0(600); - NpcHandler.npcs[c.npcIndex].HP -= damage; - NpcHandler.npcs[c.npcIndex].hitDiff2 = damage; - NpcHandler.npcs[c.npcIndex].hitUpdateRequired2 = true; - NpcHandler.npcs[c.npcIndex].updateRequired = true; - c.dfsDelay = System.currentTimeMillis(); - } else { - c.getActionSender().sendMessage( - "I should be in combat before using this."); - } - } else { - c.getActionSender().sendMessage( - "My shield hasn't finished recharging yet."); - } - } - - /* - * public void applyRecoil(int damage, int i) { if (damage > 0 && - * PlayerHandler.players[i].playerEquipment[c.playerRing] == 2550) { int - * recDamage = damage / 10 + 1; if (!c.getHitUpdateRequired()) { - * c.setHitDiff(recDamage); c.setHitUpdateRequired(true); } else if - * (!c.getHitUpdateRequired2()) { c.setHitDiff2(recDamage); - * c.setHitUpdateRequired2(true); } c.dealDamage(recDamage); - * c.updateRequired = true; } } - */ - - public static void applyRecoilNPC(Client c, int damage, int i) { - if (c == null || c.npcIndex == 0) { - return; - } - if (damage > 0 && c.playerEquipment[c.playerRing] == 2550) { - int recDamage = damage / 10 + 1; - NpcHandler.npcs[c.npcIndex].HP -= recDamage; - NpcHandler.npcs[c.npcIndex].handleHitMask(recDamage); - removeRecoil(c); - c.recoilHits += damage; - } - } - - public static void applyRecoil(Client c, int damage, int i) { - if (damage > 0 - && PlayerHandler.players[i].playerEquipment[c.playerRing] == 2550) { - int recDamage = damage / 10 + 1; - if (!c.getHitUpdateRequired()) { - c.setHitDiff(recDamage); - c.setHitUpdateRequired(true); - } else if (!c.getHitUpdateRequired2()) { - c.setHitDiff2(recDamage); - c.setHitUpdateRequired2(true); - } - c.dealDamage(recDamage); - c.updateRequired = true; - removeRecoil(c); - c.recoilHits += damage; - } - } - - public static void removeRecoil(Client c) { - if (c.recoilHits >= 400) { - c.getItemAssistant().removeItem(2550, c.playerRing); - c.getItemAssistant().deleteItem(2550, - c.getItemAssistant().getItemSlot(2550), 1); - c.getActionSender().sendMessage("Your ring of recoil shaters!"); - c.recoilHits = 0; - } else { - c.recoilHits++; - } - } - - public int getBonusAttack(int i) { - switch (NpcHandler.npcs[i].npcType) { - case 2883: - return Misc.random(50) + 30; - case 2026: - case 2027: - case 2029: - case 2030: - return Misc.random(50) + 30; - } - return 0; - } - - public void handleGmaulPlayer() { - int equippedWeapon = c.playerEquipment[c.playerWeapon]; - if (c.playerIndex > 0) { - Client o = (Client) PlayerHandler.players[c.playerIndex]; - if (c.goodDistance(c.getX(), c.getY(), o.getX(), o.getY(), - getRequiredDistance())) { - if (checkReqs()) { - if (checkSpecAmount(equippedWeapon)) { - boolean hit = Misc.random(calcAtt()) > Misc.random(o - .getCombatAssistant().calcDef()); - int damage = 0; - if (hit) { - damage = Misc.random(meleeMaxHit()); - } - if (o.getPrayer().prayerActive[18] - && System.currentTimeMillis() - - o.protMeleeDelay > 1500) { - damage *= .6; - } - o.handleHitMask(damage); - c.startAnimation(1667); - c.gfx100(337); - o.dealDamage(damage); - } - } - } - } - } - - public boolean armaNpc(int i) { - switch (NpcHandler.npcs[i].npcType) { - case 2558: - case 2559: - case 2560: - case 2561: - return true; - } - return false; - } - - public void activateSpecial(int weapon, int i) { - c.getSpecials().activateSpecial(weapon, i); - } - - public boolean checkSpecAmount(int weapon) { - if (c.specAmount >= c.getSpecials().specAmount()) { - c.specAmount -= c.getSpecials().specAmount(); - c.getItemAssistant().addSpecialBar(weapon); - return true; - } - return false; - } - - public int meleeMaxHit() { - return MeleeMaxHit.calculateMeleeMaxHit(c); - } - - public int calcDef() { - return MeleeData.calculateMeleeDefence(c); - } - - public int calcAtt() { - return MeleeData.calculateMeleeAttack(c); - } - - public void getPlayerAnimIndex() { - MeleeData.getPlayerAnimIndex(c); - } - - public int getHitDelay() { - return MeleeData.getHitDelay(c); - } - - public int getAttackDelay() { - return MeleeData.getAttackDelay(c); - } - - public int getWepAnim() { - return MeleeData.getWeaponAnimation(c); - } - - public int getBlockEmote() { - return MeleeData.getBlockEmote(c); - } - - public int rangeMaxHit() { - return RangeMaxHit.rangeMaxHit(c); - } - - public boolean checkMagicReqs(int spell) { - return MagicRequirements.checkMagicReqs(c, spell); - } - - public int calculateRangeDefence() { - return RangeMaxHit.calculateRangeDefence(c); - } - - public int calculateRangeAttack() { - return RangeMaxHit.calculateRangeAttack(c); - } - - public boolean usingBolts() { - return RangeData.usingBolts(c); - } - - public boolean properBolts() { - return RangeData.properBolts(c); - } - - public int mageDef() { - return MagicMaxHit.mageDefenceBonus(c); - } - - public int mageAtk() { - return MagicMaxHit.mageAttackBonus(c); - } - -} +package com.rebotted.game.content.combat; + +import com.rebotted.GameConstants; +import com.rebotted.GameEngine; +import com.rebotted.game.content.combat.magic.CastOnOther; +import com.rebotted.game.content.combat.magic.MagicData; +import com.rebotted.game.content.combat.magic.MagicMaxHit; +import com.rebotted.game.content.combat.magic.MagicRequirements; +import com.rebotted.game.content.combat.magic.MagicSpells; +import com.rebotted.game.content.combat.melee.MeleeData; +import com.rebotted.game.content.combat.melee.MeleeMaxHit; +import com.rebotted.game.content.combat.npcs.NpcEmotes; +import com.rebotted.game.content.combat.prayer.PrayerDrain; +import com.rebotted.game.content.combat.range.RangeData; +import com.rebotted.game.content.combat.range.RangeMaxHit; +import com.rebotted.game.content.minigames.FightCaves; +import com.rebotted.game.content.minigames.FightPits; +import com.rebotted.game.content.minigames.PestControl; +import com.rebotted.game.content.minigames.castlewars.CastleWars; +import com.rebotted.game.content.music.sound.CombatSounds; +import com.rebotted.game.content.music.sound.SoundList; +import com.rebotted.game.content.skills.slayer.SlayerRequirements; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.npcs.Npc; +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerHandler; +import com.rebotted.util.Misc; +import com.rebotted.world.clip.PathFinder; + +/** + * Rewritten Combat (somewhat) + * @author Andrew (Mr Extremez) + + */ + +public class CombatAssistant { + + private final Player c; + + public CombatAssistant(Player player) { + c = player; + } + + public static boolean inCombat(Client c) { + if (c.underAttackBy > 0 || c.underAttackBy2 > 0) { + return true; + } + return false; + } + + public void delayedHit(int i) { // npc hit delay + if (NpcHandler.npcs[i] != null) { + if (NpcHandler.npcs[i].isDead) { + c.npcIndex = 0; + return; + } + if (NpcHandler.npcs[i].attackTimer <= 3 || NpcHandler.npcs[i].attackTimer == 0 && NpcHandler.npcs[i].hitDelayTimer > 0 && !c.castingMagic) { // block animation + NpcHandler.npcs[i].animNumber = NpcEmotes.getBlockEmote(i); // block emote + NpcHandler.npcs[i].animUpdateRequired = true; + NpcHandler.npcs[i].updateRequired = true; + } + if (GameConstants.COMBAT_SOUNDS && NpcHandler.npcs[i].npcType < 3177 && NpcHandler.npcs[i].npcType > 3180) { + c.getPacketSender().sendSound(CombatSounds.getNpcBlockSound(NpcHandler.npcs[c.oldNpcIndex].npcType), 100, 0); + } + NpcHandler.npcs[i].facePlayer(c.playerId); + if (NpcHandler.npcs[i].underAttackBy > 0 && GameEngine.npcHandler.getsPulled(c, i)) { + NpcHandler.npcs[i].killerId = c.playerId; + } else if (NpcHandler.npcs[i].underAttackBy < 0 && !GameEngine.npcHandler.getsPulled(c, i)) { + NpcHandler.npcs[i].killerId = c.playerId; + } + c.lastNpcAttacked = i; + if (c.projectileStage == 0) { // melee hit damage + applyNpcMeleeDamage(i, 1); + if (c.doubleHit) { + applyNpcMeleeDamage(i, 2); + } + } + if (!c.castingMagic && c.projectileStage > 0) { // range hit + // damage + int damage = Misc.random(rangeMaxHit()); + int damage2 = -1; + if (c.lastWeaponUsed == 11235 || c.bowSpecShot == 1) { + damage2 = Misc.random(rangeMaxHit()); + } + boolean ignoreDef = false; + if (Misc.random(5) == 1 && c.lastArrowUsed == 9243) { + ignoreDef = true; + NpcHandler.npcs[i].gfx0(758); + } + + if (Misc.random(NpcHandler.npcs[i].defence) > Misc + .random(10 + calculateRangeAttack()) && !ignoreDef) { + damage = 0; + } else if (NpcHandler.npcs[i].npcType == 2881 + || NpcHandler.npcs[i].npcType == 2883 && !ignoreDef) { + damage = 0; + } + + if (Misc.random(4) == 1 && c.lastArrowUsed == 9242 && damage > 0) { + NpcHandler.npcs[i].gfx0(754); + damage = NpcHandler.npcs[i].HP / 5; + c.handleHitMask(c.playerLevel[3] / 10); + c.dealDamage(c.playerLevel[3] / 10); + c.gfx0(754); + } + + if (c.lastWeaponUsed == 11235 || c.bowSpecShot == 1) { + if (Misc.random(NpcHandler.npcs[i].defence) > Misc.random(10 + calculateRangeAttack())) { + damage2 = 0; + } + } + if (c.dbowSpec) { + NpcHandler.npcs[i].gfx100(1100); + if (damage < 8) { + damage = 8; + } + if (damage2 < 8) { + damage2 = 8; + } + c.dbowSpec = false; + } + if (damage > 0 && Misc.random(5) == 1 + && c.lastArrowUsed == 9244) { + damage *= 1.45; + NpcHandler.npcs[i].gfx0(756); + } + + if (NpcHandler.npcs[i].HP - damage < 0) { + damage = NpcHandler.npcs[i].HP; + } + if (NpcHandler.npcs[i].HP - damage <= 0 && damage2 > 0) { + damage2 = 0; + } + c.globalDamageDealt += damage; + if (damage2 > 0) + { + c.globalDamageDealt += damage2; + } + if (c.fightMode == 3) {//range shared + c.getPlayerAssistant().addSkillXP(damage * GameConstants.RANGE_EXP_RATE / 3, 4); + c.getPlayerAssistant().addSkillXP(damage / 3, 1); + c.getPlayerAssistant().addSkillXP(damage / 3, 3); + c.getPlayerAssistant().refreshSkill(1); + c.getPlayerAssistant().refreshSkill(3); + c.getPlayerAssistant().refreshSkill(4); + } else { + c.getPlayerAssistant().addSkillXP(damage * GameConstants.RANGE_EXP_RATE, 4); + c.getPlayerAssistant().addSkillXP(damage * GameConstants.RANGE_EXP_RATE /3, 3); + c.getPlayerAssistant().refreshSkill(3); + c.getPlayerAssistant().refreshSkill(4); + } + if (damage > 0) { + if (NpcHandler.npcs[i].npcType >= 3777 && NpcHandler.npcs[i].npcType <= 3780 || PestControl.npcIsPCMonster(NpcHandler.npcs[i].npcType)) { + c.pcDamage += damage; + } + } + boolean dropArrows = true; + + for (int noArrowId : RangeData.NO_ARROW_DROP) { + if (c.lastWeaponUsed == noArrowId) { + dropArrows = false; + break; + } + } + if (dropArrows) { + c.getItemAssistant().dropArrowNpc(); + } + if (NpcHandler.npcs[i].npcType == FightCaves.TZTOK_JAD && NpcHandler.npcs[i].spawnedBy == c.getId() && ((NpcHandler.npcs[i].HP < (FightCaves.getHp(FightCaves.TZTOK_JAD)/2)) && + (NpcHandler.npcs[i].HP-damage+(damage2 > -1 ? damage2 : 0) < (FightCaves.getHp(FightCaves.TZTOK_JAD)/2)))) { + if (c.canHealersRespawn) { + FightCaves.spawnHealers(c, i, 4-c.spawnedHealers); + } + } + NpcHandler.npcs[i].underAttack = true; + NpcHandler.npcs[i].hitDiff = damage; + NpcHandler.npcs[i].HP -= damage; + if (damage2 > -1) { + NpcHandler.npcs[i].hitDiff2 = damage2; + NpcHandler.npcs[i].HP -= damage2; + c.totalDamageDealt += damage2; + } + if (c.killingNpcIndex != c.oldNpcIndex) { + c.totalDamageDealt = 0; + } + c.killingNpcIndex = c.oldNpcIndex; + c.totalDamageDealt += damage; + NpcHandler.npcs[i].hitUpdateRequired = true; + if (damage2 > -1) { + NpcHandler.npcs[i].hitUpdateRequired2 = true; + } + NpcHandler.npcs[i].updateRequired = true; + + } else if (c.projectileStage > 0) { // magic hit damage + int damage = Misc + .random(MagicData.MAGIC_SPELLS[c.oldSpellId][6]); + if (MagicSpells.godSpells(c)) { + if (System.currentTimeMillis() - c.godSpellDelay < GameConstants.GOD_SPELL_CHARGE) { + damage += Misc.random(10); + } + } + boolean magicFailed = false; + // c.npcIndex = 0; + int bonusAttack = getBonusAttack(i); + if (Misc.random(NpcHandler.npcs[i].defence) > 10 + + Misc.random(mageAtk()) + bonusAttack) { + damage = 0; + magicFailed = true; + } else if (NpcHandler.npcs[i].npcType == 2881 + || NpcHandler.npcs[i].npcType == 2882) { + damage = 0; + magicFailed = true; + } + + if (NpcHandler.npcs[i].npcType == FightCaves.TZTOK_JAD && NpcHandler.npcs[i].spawnedBy == c.getId() && ((NpcHandler.npcs[i].HP > (FightCaves.getHp(FightCaves.TZTOK_JAD)/2)) && + (NpcHandler.npcs[i].HP-damage < (FightCaves.getHp(FightCaves.TZTOK_JAD)/2)))) { + if (c.canHealersRespawn) + FightCaves.spawnHealers(c, i, 4-c.spawnedHealers); + } + + if (NpcHandler.npcs[i].HP - damage < 0) { + damage = NpcHandler.npcs[i].HP; + } + //magic + c.getPlayerAssistant().addSkillXP(MagicData.MAGIC_SPELLS[c.oldSpellId][7] + damage * GameConstants.MAGIC_EXP_RATE, 6); + c.totalDamageDealt += damage; + if (MagicData.MAGIC_SPELLS[c.oldSpellId][0] != 1161 && MagicData.MAGIC_SPELLS[c.oldSpellId][0] != 1153 && MagicData.MAGIC_SPELLS[c.oldSpellId][0] != 1157 && MagicData.MAGIC_SPELLS[c.oldSpellId][0] != 1542 && MagicData.MAGIC_SPELLS[c.oldSpellId][0] != 1543 && MagicData.MAGIC_SPELLS[c.oldSpellId][0] != 1562) { + c.getPlayerAssistant().addSkillXP(damage * GameConstants.MAGIC_EXP_RATE / 3, 3); + } + c.getPlayerAssistant().refreshSkill(3); + c.getPlayerAssistant().refreshSkill(6); + + if (damage > 0) { + if (NpcHandler.npcs[i].npcType >= 3777 && NpcHandler.npcs[i].npcType <= 3780 || PestControl.npcIsPCMonster(NpcHandler.npcs[i].npcType)) { + c.pcDamage += damage; + } + } + if (MagicSpells.getEndGfxHeight(c) == 100 && !magicFailed) { // end GFX + NpcHandler.npcs[i] + .gfx100(MagicData.MAGIC_SPELLS[c.oldSpellId][5]); + } else if (!magicFailed) { + NpcHandler.npcs[i] + .gfx0(MagicData.MAGIC_SPELLS[c.oldSpellId][5]); + } + + if (magicFailed) { + NpcHandler.npcs[i].gfx100(85); + } + if (!magicFailed) { + int freezeDelay = MagicSpells.getFreezeTime(c);// freeze + if (freezeDelay > 0 && NpcHandler.npcs[i].freezeTimer == 0) { + NpcHandler.npcs[i].freezeTimer = freezeDelay; + } + switch (MagicData.MAGIC_SPELLS[c.oldSpellId][0]) { + case 12901: + case 12919: // blood spells + case 12911: + case 12929: + int heal = Misc.random(damage / 2); + if (c.playerLevel[3] + heal >= c.getPlayerAssistant() + .getLevelForXP(c.playerXP[3])) { + c.playerLevel[3] = c.getPlayerAssistant() + .getLevelForXP(c.playerXP[3]); + } else { + c.playerLevel[3] += heal; + } + c.getPlayerAssistant().refreshSkill(3); + break; + } + + } + NpcHandler.npcs[i].underAttack = true; + if (MagicData.MAGIC_SPELLS[c.oldSpellId][6] != 0) { + NpcHandler.npcs[i].hitDiff = damage; + NpcHandler.npcs[i].HP -= damage; + NpcHandler.npcs[i].hitUpdateRequired = true; + c.totalDamageDealt += damage; + } + c.killingNpcIndex = c.oldNpcIndex; + NpcHandler.npcs[i].updateRequired = true; + c.usingMagic = false; + c.castingMagic = false; + c.oldSpellId = 0; + } + } + + if (c.bowSpecShot <= 0) { + c.oldNpcIndex = 0; + c.projectileStage = 0; + c.doubleHit = false; + c.lastWeaponUsed = 0; + c.bowSpecShot = 0; + } + if (c.bowSpecShot >= 2) { + c.bowSpecShot = 0; + // c.attackTimer = + // getAttackDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()); + } + if (c.bowSpecShot == 1) { + fireProjectileNpc(); + c.hitDelay = 2; + c.bowSpecShot = 0; + } + } + + public void applyNpcMeleeDamage(int i, int damageMask) { + int damage = Misc.random(meleeMaxHit()); + boolean fullVeracsEffect = c.getPlayerAssistant().fullVeracs() + && Misc.random(3) == 1; + if (NpcHandler.npcs[i].HP - damage < 0) { + damage = NpcHandler.npcs[i].HP; + } + + if (!fullVeracsEffect) { + if (Misc.random(NpcHandler.npcs[i].defence) > 10 + Misc + .random(calcAtt())) { + damage = 0; + } else if (NpcHandler.npcs[i].npcType == 2882 + || NpcHandler.npcs[i].npcType == 2883) { + damage = 0; + } + } + c.globalDamageDealt += damage; + if (NpcHandler.npcs[i].HP - damage > 0) { + if (NpcHandler.npcs[i].npcType == FightCaves.TZTOK_JAD && NpcHandler.npcs[i].spawnedBy == c.getId() && ((NpcHandler.npcs[i].HP > (FightCaves.getHp(FightCaves.TZTOK_JAD)/2)) && + (NpcHandler.npcs[i].HP-damage < (FightCaves.getHp(FightCaves.TZTOK_JAD)/2)))) { + if (c.canHealersRespawn) + FightCaves.spawnHealers(c, i, 4-c.spawnedHealers); + } + } + boolean guthansEffect = false; + if (c.getPlayerAssistant().fullGuthans()) { + if (Misc.random(3) == 1) { + guthansEffect = true; + } + } + if (c.fightMode == 3 && NpcHandler.npcs[i].npcType != 2459 && NpcHandler.npcs[i].npcType != 2460 && NpcHandler.npcs[i].npcType != 2461 && NpcHandler.npcs[i].npcType != 2462) { + c.getPlayerAssistant().addSkillXP(damage * GameConstants.MELEE_EXP_RATE / 3, 0); + c.getPlayerAssistant().addSkillXP(damage * GameConstants.MELEE_EXP_RATE / 3, 1); + c.getPlayerAssistant().addSkillXP(damage * GameConstants.MELEE_EXP_RATE / 3, 2); + c.getPlayerAssistant().addSkillXP(damage * GameConstants.MELEE_EXP_RATE / 3, 3); + c.getPlayerAssistant().refreshSkill(0); + c.getPlayerAssistant().refreshSkill(1); + c.getPlayerAssistant().refreshSkill(2); + c.getPlayerAssistant().refreshSkill(3); + } else { + if (NpcHandler.npcs[i].npcType != 2459 && NpcHandler.npcs[i].npcType != 2460 && NpcHandler.npcs[i].npcType != 2461 && NpcHandler.npcs[i].npcType != 2462) { + c.getPlayerAssistant().addSkillXP(damage * GameConstants.MELEE_EXP_RATE, c.fightMode); + c.getPlayerAssistant().addSkillXP(damage * GameConstants.MELEE_EXP_RATE / 3, 3); + c.getPlayerAssistant().refreshSkill(c.fightMode); + c.getPlayerAssistant().refreshSkill(3); + } + } + if (damage > 0) { + if (NpcHandler.npcs[i].npcType >= 3777 && NpcHandler.npcs[i].npcType <= 3780 || PestControl.npcIsPCMonster(NpcHandler.npcs[i].npcType)) { + c.pcDamage += damage; + } + } + if (damage > 0 && guthansEffect) { + c.playerLevel[3] += damage; + if (c.playerLevel[3] > c.getLevelForXP(c.playerXP[3])) { + c.playerLevel[3] = c.getLevelForXP(c.playerXP[3]); + } + c.getPlayerAssistant().refreshSkill(3); + NpcHandler.npcs[i].gfx0(398); + } + NpcHandler.npcs[i].underAttack = true; + c.killingNpcIndex = c.npcIndex; + c.lastNpcAttacked = i; + switch (c.specEffect) { + case 4: + if (damage > 0) { + if (c.playerLevel[3] + damage > c.getLevelForXP(c.playerXP[3])) { + if (c.playerLevel[3] > c.getLevelForXP(c.playerXP[3])) { + ; + } else { + c.playerLevel[3] = c.getLevelForXP(c.playerXP[3]); + } + } else { + c.playerLevel[3] += damage; + } + c.getPlayerAssistant().refreshSkill(3); + } + break; + + } + switch (damageMask) { + case 1: + NpcHandler.npcs[i].hitDiff = damage; + NpcHandler.npcs[i].HP -= damage; + c.totalDamageDealt += damage; + NpcHandler.npcs[i].hitUpdateRequired = true; + NpcHandler.npcs[i].updateRequired = true; + break; + + case 2: + NpcHandler.npcs[i].hitDiff2 = damage; + NpcHandler.npcs[i].HP -= damage; + c.totalDamageDealt += damage; + NpcHandler.npcs[i].hitUpdateRequired2 = true; + NpcHandler.npcs[i].updateRequired = true; + c.doubleHit = false; + break; + + } + } + + public void fireProjectileNpc() { + if (c.oldNpcIndex > 0) { + if (NpcHandler.npcs[c.oldNpcIndex] != null) { + c.projectileStage = 2; + int pX = c.getX(); + int pY = c.getY(); + int nX = NpcHandler.npcs[c.oldNpcIndex].getX(); + int nY = NpcHandler.npcs[c.oldNpcIndex].getY(); + int offX = (pY - nY) * -1; + int offY = (pX - nX) * -1; + c.getPlayerAssistant().createPlayersProjectile(pX, pY, offX, + offY, 50, RangeData.getProjectileSpeed(c), + RangeData.getRangeProjectileGFX(c), 43, 31, c.oldNpcIndex + 1, + MagicSpells.getStartDelay(c)); + if (RangeData.usingDbow(c)) { + c.getPlayerAssistant().createPlayersProjectile2(pX, pY, + offX, offY, 50, RangeData.getProjectileSpeed(c), + RangeData.getRangeProjectileGFX(c), 60, 31, c.oldNpcIndex + 1, + MagicSpells.getStartDelay(c), 35); + } + } + } + } + + public void attackingNpcTick() { + int i = c.npcIndex; + if (i > 0 && NpcHandler.npcs[i] != null) { + if (NpcHandler.npcs[i].isDead) { + c.npcIndex = 0; + c.followId2 = 0; + c.faceNpc(0); + return; + } + + boolean projectile = c.usingBow || c.usingMagic || c.usingRangeWeapon; + if (projectile && !PathFinder.isProjectilePathClear(c.absX, c.absY, c.heightLevel, NpcHandler.npcs[i].absX, NpcHandler.npcs[i].absY)) { + return; + } + + if (!c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 2) && RangeData.usingHally(c) && !c.usingRangeWeapon && !c.usingBow && !c.usingMagic + || !c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 4) && c.usingRangeWeapon&& !c.usingBow && !c.usingMagic + || !c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 1)&& !c.usingRangeWeapon && !RangeData.usingHally(c) && !c.usingBow && !c.usingMagic + || !c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 8) && (c.usingBow || c.usingMagic)) { + return; + } else { + c.stopMovement(); + } + } + } + + public void attackingPlayerTick() { + int i = c.playerIndex; + if (i > 0 && PlayerHandler.players[i] != null) { + if (PlayerHandler.players[i].isDead) { + c.playerIndex = 0; + c.followId = 0; + c.faceNpc(0); + return; + } + + boolean projectile = c.usingBow || c.usingMagic || c.usingRangeWeapon; + if (projectile && !PathFinder.isProjectilePathClear(c.absX, c.absY, c.heightLevel, PlayerHandler.players[i].absX, PlayerHandler.players[i].absY)) { + return; + } + + if (!c.goodDistance(c.getX(), c.getY(), + PlayerHandler.players[i].getX(), + PlayerHandler.players[i].getY(), 4) + && c.usingRangeWeapon + && !c.usingBow + && !c.usingMagic + || !c.goodDistance(c.getX(), c.getY(), + PlayerHandler.players[i].getX(), + PlayerHandler.players[i].getY(), 2) + && !c.usingRangeWeapon + && RangeData.usingHally(c) + && !c.usingBow + && !c.usingMagic + || !c.goodDistance(c.getX(), c.getY(), + PlayerHandler.players[i].getX(), + PlayerHandler.players[i].getY(), + getRequiredDistance()) + && !c.usingRangeWeapon + && !RangeData.usingHally(c) + && !c.usingBow + && !c.usingMagic + || !c.goodDistance(c.getX(), c.getY(), + PlayerHandler.players[i].getX(), + PlayerHandler.players[i].getY(), 10) + && (c.usingBow || c.usingMagic)) { + return; + } else { + c.stopMovement(); + } + } + } + + public void attackNpc(int i) { + // int equippedWeapon = c.playerEquipment[c.playerWeapon]; + // final int npcId = NPCHandler.npcs[i].npcType; + if (NpcHandler.npcs[i] != null) { + Npc npc = NpcHandler.npcs[i]; + if (NpcHandler.npcs[i].isDead || NpcHandler.npcs[i].MaxHP <= 0) { + c.usingMagic = false; + c.faceUpdate(0); + c.npcIndex = 0; + return; + } + /*if (c.absY == 3224 && NpcHandler.npcs[i].absY == 3225) { + resetPlayerAttack(); + return; + } + if (c.absY == 3226 && NpcHandler.npcs[i].absY == 3227) { + resetPlayerAttack(); + return; + } + if (c.absY == 3228 && NpcHandler.npcs[i].absY == 3227) { + resetPlayerAttack(); + return; + } + if (c.absX == 3252 && c.absY > 3254 && c.absY < 3272 || c.absY == 3254 && c.absX > 3252 && c.absX < 3265) { + resetPlayerAttack(); + return; + }*/ + if (c.usingMagic && MagicData.MAGIC_SPELLS[c.spellId][0] == 1171) { + if (!NpcHandler.isUndead(i)) { + c.getPacketSender().sendMessage("This spell only affects skeletons, zombies, ghosts and shades."); + resetPlayerAttack(); + c.stopMovement(); + c.npcIndex = 0; + return; + } + } + if (c.respawnTimer > 0) { + c.npcIndex = 0; + return; + } + if (!SlayerRequirements.itemNeededSlayer(c, i) || !c.getSlayer().canAttackNpc(i)) { + return; + } + if (NpcHandler.npcs[i].npcType == 9) { + if (c.absX == 3225 && c.absY > 3459 && c.absY < 3465 || c.absX > 3222 && c.absX < 3226 && c.absY > 3456 && c.absY < 3460 + || c.absX > 3213 && c.absX < 3223 && c.absY == 3457 || c.absX > 3202 && c.absX < 3212 && c.absY == 3457 + || c.absX > 3199 && c.absX < 3203 && c.absY > 3456 && c.absY < 3460 || c.absX == 3200 && c.absY > 3459 && c.absY < 3467) { + resetPlayerAttack(); + return; + } + } + if (c.absX == 3180 && c.absY > 3433 && c.absY < 3447) { + resetPlayerAttack(); + return; + } + if (c.absX > 2837 && c.absX < 2840 && c.absY == 9772) { + resetPlayerAttack(); + return; + } + if (NpcHandler.npcs[i].npcType == 757 && c.vampSlayer > 2) { + if (!c.getItemAssistant().playerHasItem(1549, 1) || !c.getItemAssistant().playerHasItem(2347, 1)) { + c.getPacketSender().sendMessage("You need a stake and hammer to attack count draynor."); + resetPlayerAttack(); + return; + } + } + if (c.isWoodcutting == true) { + c.getPacketSender().sendMessage("You can't attack an npc while woodcutting."); + resetPlayerAttack(); + return; + } + if (NpcHandler.npcs[i].npcType == 1676) { + c.getPacketSender().sendMessage("You don't have the heart to kill the poor creature again."); + resetPlayerAttack(); + return; + } + if (NpcHandler.npcs[i].npcType == 411) { + c.getPacketSender().sendMessage("You can't attack a swarm!"); + resetPlayerAttack(); + return; + } + if (NpcHandler.npcs[i].underAttackBy > 0 && NpcHandler.npcs[i].underAttackBy != c.playerId && !NpcHandler.npcs[i].inMulti()) { + c.npcIndex = 0; + c.getPacketSender().sendMessage("This monster is already in combat."); + return; + } + if ((c.underAttackBy > 0 || c.underAttackBy2 > 0) && c.underAttackBy2 != i && !c.inMulti()) { + resetPlayerAttack(); + c.getPacketSender().sendMessage("I am already under attack."); + return; + } + if (NpcHandler.npcs[i].spawnedBy != c.playerId && NpcHandler.npcs[i].spawnedBy > 0) { + resetPlayerAttack(); + c.getPacketSender().sendMessage("This monster was not spawned for you."); + return; + } + + c.followId2 = i; + c.followId = 0; + if (c.attackTimer <= 0) { + c.usingBow = false; + c.usingRangeWeapon = false; + boolean usingArrows = false; + boolean usingCross = c.playerEquipment[c.playerWeapon] == 9185; + c.bonusAttack = 0; + c.rangeItemUsed = 0; + c.projectileStage = 0; + if (c.autocasting) { + c.spellId = c.autocastId; + c.usingMagic = true; + } + if (c.spellId > 0) { + c.usingMagic = true; + } + + c.specAccuracy = 1.0; + c.specDamage = 1.0; + if (!c.usingMagic) { + for (int bowId : RangeData.BOWS) { + if (c.playerEquipment[c.playerWeapon] == bowId) { + c.usingBow = true; + for (int arrowId : RangeData.ARROWS) { + if (c.playerEquipment[c.playerArrows] == arrowId) { + usingArrows = true; + } + } + } + } + + for (int otherRangeId : RangeData.OTHER_RANGE_WEAPONS) { + if (c.playerEquipment[c.playerWeapon] == otherRangeId) { + c.usingRangeWeapon = true; + } + } + } + if (armaNpc(i) && !usingCross && !c.usingBow && !c.usingMagic + && !RangeData.usingCrystalBow(c) && !c.usingRangeWeapon) { + resetPlayerAttack(); + return; + } + if (c.usingRangeWeapon || c.usingBow + && GameConstants.COMBAT_SOUNDS + && NpcHandler.npcs[i].npcType < 3177 + && NpcHandler.npcs[i].npcType > 3180) { + c.getPacketSender().sendSound(SoundList.SHOOT_ARROW, + 100, 0); + } + + boolean projectile = c.usingBow || c.usingMagic || c.usingRangeWeapon; + + if (projectile && !PathFinder.isProjectilePathClear(c.absX, c.absY, c.heightLevel, npc.absX, npc.absY)) { + return; + } + + if (!c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 2) && RangeData.usingHally(c) && !c.usingRangeWeapon && !c.usingBow && !c.usingMagic + || !c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 4) && c.usingRangeWeapon && !c.usingBow && !c.usingMagic + || !c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 1) && !c.usingRangeWeapon && !RangeData.usingHally(c) && !c.usingBow && !c.usingMagic + || !c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 8) && (c.usingBow || c.usingMagic)) { + return; + } else { + c.stopMovement(); + } + + if (!usingCross + && !usingArrows + && c.usingBow + && (c.playerEquipment[c.playerWeapon] < 4212 || c.playerEquipment[c.playerWeapon] > 4223)) { + c.getPacketSender().sendMessage( + "There is no ammo left in your quiver."); + c.stopMovement(); + c.npcIndex = 0; + return; + } + if (RangeData.correctBowAndArrows(c) < c.playerEquipment[c.playerArrows] + && GameConstants.CORRECT_ARROWS && c.usingBow + && !RangeData.usingCrystalBow(c) + && c.playerEquipment[c.playerWeapon] != 9185) { + c.getItemAssistant(); + c.getItemAssistant(); + c.getPacketSender().sendMessage( + "You can't use " + + ItemAssistant.getItemName( + c.playerEquipment[c.playerArrows]) + .toLowerCase() + + "s with a " + + ItemAssistant.getItemName( + c.playerEquipment[c.playerWeapon]) + .toLowerCase() + "."); + c.stopMovement(); + c.npcIndex = 0; + return; + } + + if (c.playerEquipment[c.playerWeapon] == 9185 && !properBolts()) { + c.getPacketSender().sendMessage( + "You must use bolts with a crossbow."); + c.stopMovement(); + resetPlayerAttack(); + return; + } + + if (c.usingBow + || c.usingMagic + || c.usingRangeWeapon + || c.goodDistance(c.getX(), c.getY(), + NpcHandler.npcs[i].getX(), + NpcHandler.npcs[i].getY(), 2) && RangeData.usingHally(c)) { + c.stopMovement(); + } + + if (!checkMagicReqs(c.spellId)) { + c.stopMovement(); + c.npcIndex = 0; + return; + } + + c.faceUpdate(i); + c.attackTimer = getAttackDelay(); + NpcHandler.npcs[i].underAttackBy = c.playerId; + NpcHandler.npcs[i].lastDamageTaken = System.currentTimeMillis(); + if (c.usingSpecial && !c.usingMagic) { + if (c.getCombatAssistant().checkSpecAmount( + c.playerEquipment[c.playerWeapon])) { + c.lastWeaponUsed = c.playerEquipment[c.playerWeapon]; + c.lastArrowUsed = c.playerEquipment[c.playerArrows]; + c.getSpecials().activateSpecial( + c.playerEquipment[c.playerWeapon], i); + return; + } else { + c.getPacketSender() + .sendMessage( + "You don't have the required special energy to use this attack."); + c.usingSpecial = false; + c.getItemAssistant().updateSpecialBar(); + if (GameConstants.COMBAT_SOUNDS) { + c.getPacketSender() + .sendSound( + CombatSounds + .specialSounds(c.playerEquipment[c.playerWeapon]), + 100, 0); + } + c.npcIndex = 0; + return; + } + } + c.specMaxHitIncrease = 0; + if (!c.usingMagic) { + if (GameConstants.COMBAT_SOUNDS) { + c.getPacketSender().sendSound( + CombatSounds.getWeaponSounds(c), 100, 0); + } + c.startAnimation(getWepAnim()); + } else { + if (GameConstants.COMBAT_SOUNDS) { + c.getPacketSender().sendSound( + CombatSounds.getMagicSound(c, c.spellId), 100, + 0); + } + c.startAnimation(MagicData.MAGIC_SPELLS[c.spellId][2]); + } + c.lastWeaponUsed = c.playerEquipment[c.playerWeapon]; + c.lastArrowUsed = c.playerEquipment[c.playerArrows]; + if (!c.usingBow && !c.usingMagic && !c.usingRangeWeapon) { // melee + // hit + // delay + c.hitDelay = getHitDelay(); + c.projectileStage = 0; + c.oldNpcIndex = i; + } + + if (c.usingBow && !c.usingRangeWeapon && !c.usingMagic + || usingCross) { // range hit delay + if (usingCross) { + c.usingBow = true; + } + if (c.fightMode == 2) { + c.attackTimer--; + } + c.lastArrowUsed = c.playerEquipment[c.playerArrows]; + c.lastWeaponUsed = c.playerEquipment[c.playerWeapon]; + c.gfx100(RangeData.getRangeStartGFX(c)); + c.hitDelay = getHitDelay(); + c.projectileStage = 1; + c.oldNpcIndex = i; + if (c.playerEquipment[c.playerWeapon] >= 4212 + && c.playerEquipment[c.playerWeapon] <= 4223) { + c.rangeItemUsed = c.playerEquipment[c.playerWeapon]; + c.crystalBowArrowCount++; + c.lastArrowUsed = 0; + } else { + c.rangeItemUsed = c.playerEquipment[c.playerArrows]; + c.getItemAssistant().deleteArrow(); + } + fireProjectileNpc(); + } + + if (c.usingRangeWeapon && !c.usingMagic && !c.usingBow) { // knives, + // darts, + // etc + // hit + // delay + c.lastWeaponUsed = c.playerEquipment[c.playerWeapon]; + c.rangeItemUsed = c.playerEquipment[c.playerWeapon]; + c.getItemAssistant().deleteEquipment(); + c.gfx100(RangeData.getRangeStartGFX(c)); + c.lastArrowUsed = 0; + c.hitDelay = getHitDelay(); + c.projectileStage = 1; + c.oldNpcIndex = i; + if (c.fightMode == 2) { + c.attackTimer--; + } + fireProjectileNpc(); + } + + if (c.usingMagic) { // magic hit delay + int pX = c.getX(); + int pY = c.getY(); + int nX = NpcHandler.npcs[i].getX(); + int nY = NpcHandler.npcs[i].getY(); + int offX = (pY - nY) * -1; + int offY = (pX - nX) * -1; + c.castingMagic = true; + c.projectileStage = 2; + if (MagicData.MAGIC_SPELLS[c.spellId][3] > 0) { + if (MagicSpells.getStartGfxHeight(c) == 100) { + c.gfx100(MagicData.MAGIC_SPELLS[c.spellId][3]); + } else { + c.gfx0(MagicData.MAGIC_SPELLS[c.spellId][3]); + } + } + if (MagicData.MAGIC_SPELLS[c.spellId][4] > 0) { + c.getPlayerAssistant().createPlayersProjectile(pX, pY, + offX, offY, 50, 78, + MagicData.MAGIC_SPELLS[c.spellId][4], + MagicSpells.getStartHeight(c), MagicSpells.getEndHeight(c), i + 1, 50); + } + c.hitDelay = getHitDelay(); + c.oldNpcIndex = i; + c.oldSpellId = c.spellId; + c.spellId = 0; + if (!c.autocasting) { + c.npcIndex = 0; + } + } + + if (c.usingBow && GameConstants.CRYSTAL_BOW_DEGRADES) { // crystal + // bow + // degrading + if (c.playerEquipment[c.playerWeapon] == 4212) { // new + // crystal + // bow + // becomes + // full + // bow + // on + // the + // first + // shot + c.getItemAssistant().wearItem(4214, 1, 3); + } + if (c.crystalBowArrowCount >= 250) { + switch (c.playerEquipment[c.playerWeapon]) { + + case 4223: // 1/10 bow + c.getItemAssistant().wearItem(-1, 1, 3); + c.getPacketSender().sendMessage( + "Your crystal bow has fully degraded."); + if (!c.getItemAssistant().addItem(4207, 1)) { + GameEngine.itemHandler.createGroundItem(c, 4207, + c.getX(), c.getY(), 1, c.getId()); + } + c.crystalBowArrowCount = 0; + break; + + default: + c.getItemAssistant().wearItem( + ++c.playerEquipment[c.playerWeapon], 1, 3); + c.getPacketSender().sendMessage( + "Your crystal bow degrades."); + c.crystalBowArrowCount = 0; + break; + + } + } + } + } + } + } + + /** + * Attack Players, same as npc tbh xD + **/ + + public void attackPlayer(int i) { + Client o = (Client) PlayerHandler.players[i]; + /*if (c.connectedFrom.equals(o.connectedFrom)) { + c.getActionSender().sendMessage("You cannot attack your self."); + resetPlayerAttack(); + return; + }*/ + int equippedWeapon = c.playerEquipment[c.playerWeapon]; + + if (PlayerHandler.players[i] != null) { + + if (c.usingMagic && MagicData.MAGIC_SPELLS[c.spellId][0] == 1171) { + c.getPacketSender().sendMessage("This spell only affects skeletons, zombies, ghosts and shades, not humans."); + resetPlayerAttack(); + c.stopMovement(); + return; + } + + if (CastleWars.isInCw(PlayerHandler.players[i]) + && CastleWars.isInCw(c)) { + if (CastleWars.getTeamNumber(c) == CastleWars.getTeamNumber((Client) PlayerHandler.players[i])) { + c.getPacketSender().sendMessage("You cannot attack your own teammate."); + resetPlayerAttack(); + return; + } + } + + if (!CastleWars.isInCw(PlayerHandler.players[i]) + && CastleWars.isInCw(c)) { + c.getPacketSender().sendMessage( + "You cannot attack people outside castle wars."); + resetPlayerAttack(); + return; + } + + if (PlayerHandler.players[i].isDead) { + resetPlayerAttack(); + return; + } + + if (c.respawnTimer > 0 || PlayerHandler.players[i].respawnTimer > 0) { + resetPlayerAttack(); + return; + } + + /* + * if( c.getPlayerAssistant().getWearingAmount() < 4 && c.duelStatus + * < 1 && ! c.inCw() && c.inPits == false ) { + * c.getPacketDispatcher().sendMessage( + * "You must be wearing at least 4 items to attack someone." ); + * resetPlayerAttack(); return; } + */ + boolean sameSpot = c.absX == PlayerHandler.players[i].getX() + && c.absY == PlayerHandler.players[i].getY(); + if (!c.goodDistance(PlayerHandler.players[i].getX(), PlayerHandler.players[i].getY(), c.getX(), c.getY(), 25) && !sameSpot) { + resetPlayerAttack(); + return; + } + + if (PlayerHandler.players[i].respawnTimer > 0) { + PlayerHandler.players[i].playerIndex = 0; + resetPlayerAttack(); + return; + } + + if (PlayerHandler.players[i].heightLevel != c.heightLevel) { + resetPlayerAttack(); + return; + } + if (c.attackTimer <= 0) { + c.usingBow = false; + c.specEffect = 0; + c.usingRangeWeapon = false; + c.rangeItemUsed = 0; + boolean usingArrows = false; + boolean usingCross = c.playerEquipment[c.playerWeapon] == 9185; + c.projectileStage = 0; + if (c.absX == PlayerHandler.players[i].absX + && c.absY == PlayerHandler.players[i].absY) { + if (c.freezeTimer > 0) { + resetPlayerAttack(); + return; + } + c.followId = i; + c.attackTimer = 0; + return; + } + if (!c.usingMagic) { + for (int bowId : RangeData.BOWS) { + if (c.playerEquipment[c.playerWeapon] == bowId) { + c.usingBow = true; + for (int arrowId : RangeData.ARROWS) { + if (c.playerEquipment[c.playerArrows] == arrowId) { + usingArrows = true; + } + } + } + } + + for (int otherRangeId : RangeData.OTHER_RANGE_WEAPONS) { + if (c.playerEquipment[c.playerWeapon] == otherRangeId) { + c.usingRangeWeapon = true; + } + } + } + if (c.autocasting) { + c.spellId = c.autocastId; + c.usingMagic = true; + } + if (c.spellId > 0) { + c.usingMagic = true; + } + + + if (c.duelRule[9]) { + boolean canUseWeapon = false; + for (int funWeapon : GameConstants.FUN_WEAPONS) { + if (c.playerEquipment[c.playerWeapon] == funWeapon) { + canUseWeapon = true; + } + } + if (!canUseWeapon) { + c.getPacketSender().sendMessage( + "You can only use fun weapons in this duel!"); + resetPlayerAttack(); + return; + } + } + + if (c.duelRule[2] && (c.usingBow || c.usingRangeWeapon)) { + c.getPacketSender().sendMessage( + "Range has been disabled in this duel!"); + return; + } + if (c.duelRule[3] && !c.usingBow && !c.usingRangeWeapon + && !c.usingMagic) { + c.getPacketSender().sendMessage( + "Melee has been disabled in this duel!"); + return; + } + + if (c.duelRule[4] && c.usingMagic) { + c.getPacketSender().sendMessage( + "Magic has been disabled in this duel!"); + resetPlayerAttack(); + return; + } + + boolean projectile = c.usingBow || c.usingMagic || c.usingRangeWeapon; + + if (projectile && !PathFinder.isProjectilePathClear(c.absX, c.absY, c.heightLevel, PlayerHandler.players[i].absX, PlayerHandler.players[i].absY)) { + return; + } + + if (!c.goodDistance(c.getX(), c.getY(), + PlayerHandler.players[i].getX(), + PlayerHandler.players[i].getY(), 4) + && c.usingRangeWeapon + && !c.usingBow + && !c.usingMagic + || !c.goodDistance(c.getX(), c.getY(), + PlayerHandler.players[i].getX(), + PlayerHandler.players[i].getY(), 2) + && !c.usingRangeWeapon + && RangeData.usingHally(c) + && !c.usingBow + && !c.usingMagic + || !c.goodDistance(c.getX(), c.getY(), + PlayerHandler.players[i].getX(), + PlayerHandler.players[i].getY(), + getRequiredDistance()) + && !c.usingRangeWeapon + && !RangeData.usingHally(c) + && !c.usingBow + && !c.usingMagic + || !c.goodDistance(c.getX(), c.getY(), + PlayerHandler.players[i].getX(), + PlayerHandler.players[i].getY(), 10) + && (c.usingBow || c.usingMagic)) { + // c.getPacketDispatcher().sendMessage("Setting attack timer to 1"); + //c.attackTimer = 1; + if (!c.usingBow && !c.usingMagic && !c.usingRangeWeapon + && c.freezeTimer > 0) { + resetPlayerAttack(); + } + return; + } + + if (!usingCross + && !usingArrows + && c.usingBow + && (c.playerEquipment[c.playerWeapon] < 4212 || c.playerEquipment[c.playerWeapon] > 4223) + && !c.usingMagic) { + c.getPacketSender().sendMessage( + "There is no ammo left in your quiver."); + c.stopMovement(); + resetPlayerAttack(); + return; + } + if (RangeData.correctBowAndArrows(c) < c.playerEquipment[c.playerArrows] + && GameConstants.CORRECT_ARROWS && c.usingBow + && !RangeData.usingCrystalBow(c) + && c.playerEquipment[c.playerWeapon] != 9185 + && !c.usingMagic) { + c.getItemAssistant(); + c.getItemAssistant(); + c.getPacketSender().sendMessage( + "You can't use " + + ItemAssistant.getItemName( + c.playerEquipment[c.playerArrows]) + .toLowerCase() + + "s with a " + + ItemAssistant.getItemName( + c.playerEquipment[c.playerWeapon]) + .toLowerCase() + "."); + c.stopMovement(); + resetPlayerAttack(); + return; + } + if (c.playerEquipment[c.playerWeapon] == 9185 && !properBolts() + && !c.usingMagic) { + c.getPacketSender().sendMessage( + "You must use bolts with a crossbow."); + c.stopMovement(); + resetPlayerAttack(); + return; + } + + if (c.usingBow || c.usingMagic || c.usingRangeWeapon + || RangeData.usingHally(c)) { + c.stopMovement(); + } + + if (!checkMagicReqs(c.spellId)) { + c.stopMovement(); + resetPlayerAttack(); + return; + } + + c.faceUpdate(i + 32768); + + if (c.duelStatus != 5 + && !PlayerHandler.players[c.playerIndex].inCwGame() + && FightPits.getState(c) == null) { + if (!c.attackedPlayers.contains(c.playerIndex) + && !PlayerHandler.players[c.playerIndex].attackedPlayers + .contains(c.playerId)) { + c.attackedPlayers.add(c.playerIndex); + c.isSkulled = true; + c.skullTimer = GameConstants.SKULL_TIMER; + c.headIconPk = 0; + c.getPlayerAssistant().requestUpdates(); + } + } + c.specAccuracy = 1.0; + c.specDamage = 1.0; + c.delayedDamage = c.delayedDamage2 = 0; + if (c.usingSpecial && !c.usingMagic) { + if (c.duelRule[10] && c.duelStatus == 5) { + c.getPacketSender() + .sendMessage( + "Special attacks have been disabled during this duel!"); + c.usingSpecial = false; + c.getItemAssistant().updateSpecialBar(); + if (GameConstants.COMBAT_SOUNDS) { + c.getPacketSender() + .sendSound( + CombatSounds + .specialSounds(c.playerEquipment[c.playerWeapon]), + 100, 0); + } + resetPlayerAttack(); + return; + } + if (checkSpecAmount(equippedWeapon)) { + c.lastArrowUsed = c.playerEquipment[c.playerArrows]; + c.getSpecials().activateSpecial( + c.playerEquipment[c.playerWeapon], i); + c.followId = c.playerIndex; + return; + } else { + c.getPacketSender() + .sendMessage( + "You don't have the required special energy to use this attack."); + c.usingSpecial = false; + c.getItemAssistant().updateSpecialBar(); + if (GameConstants.COMBAT_SOUNDS) { + c.getPacketSender() + .sendSound( + CombatSounds + .specialSounds(c.playerEquipment[c.playerWeapon]), + 100, 0); + } + c.playerIndex = 0; + return; + } + } + + if (!c.usingMagic) { + if (GameConstants.COMBAT_SOUNDS) { + c.getPacketSender().sendSound( + CombatSounds.getWeaponSounds(c), 100, 0); + } + c.startAnimation(getWepAnim()); + c.mageFollow = false; + } else { + c.startAnimation(MagicData.MAGIC_SPELLS[c.spellId][2]); + if (GameConstants.COMBAT_SOUNDS) { + c.getPacketSender().sendSound( + CombatSounds.getMagicSound(c, c.spellId), 100, + 0); + } + } + + c.attackTimer = getAttackDelay(); + PlayerHandler.players[i].underAttackBy = c.playerId; + PlayerHandler.players[i].logoutDelay = System.currentTimeMillis(); + PlayerHandler.players[i].singleCombatDelay = System.currentTimeMillis(); + PlayerHandler.players[i].killerId = c.playerId; + c.lastArrowUsed = 0; + c.rangeItemUsed = 0; + if (!c.usingBow && !c.usingMagic && !c.usingRangeWeapon) { // melee + // hit + // delay; + c.followId = PlayerHandler.players[c.playerIndex].playerId; + //c.getPlayerAssistant().followPlayer(); + c.hitDelay = getHitDelay(); + c.delayedDamage = Misc.random(meleeMaxHit()); + c.projectileStage = 0; + c.oldPlayerIndex = i; + } + + if (c.usingBow && !c.usingRangeWeapon && !c.usingMagic + || usingCross) { // range hit delay + if (c.playerEquipment[c.playerWeapon] >= 4212 + && c.playerEquipment[c.playerWeapon] <= 4223) { + c.rangeItemUsed = c.playerEquipment[c.playerWeapon]; + c.crystalBowArrowCount++; + } else { + c.rangeItemUsed = c.playerEquipment[c.playerArrows]; + c.getItemAssistant().deleteArrow(); + } + if (c.fightMode == 2) { + c.attackTimer--; + } + if (usingCross) { + c.usingBow = true; + } + + c.usingBow = true; + c.followId = PlayerHandler.players[c.playerIndex].playerId; + //c.getPlayerAssistant().followPlayer(); + c.lastWeaponUsed = c.playerEquipment[c.playerWeapon]; + c.lastArrowUsed = c.playerEquipment[c.playerArrows]; + c.gfx100(RangeData.getRangeStartGFX(c)); + c.hitDelay = getHitDelay(); + c.projectileStage = 1; + c.oldPlayerIndex = i; + fireProjectilePlayer(); + } + + if (c.usingRangeWeapon) { // knives, darts, etc hit delay + c.rangeItemUsed = c.playerEquipment[c.playerWeapon]; + c.getItemAssistant().deleteEquipment(); + c.usingRangeWeapon = true; + c.followId = PlayerHandler.players[c.playerIndex].playerId; + //c.getPlayerAssistant().followPlayer(); + c.gfx100(RangeData.getRangeStartGFX(c)); + if (c.fightMode == 2) { + c.attackTimer--; + } + c.hitDelay = getHitDelay(); + c.projectileStage = 1; + c.oldPlayerIndex = i; + fireProjectilePlayer(); + } + + if (c.usingMagic) { // magic hit delay + int pX = c.getX(); + int pY = c.getY(); + int nX = PlayerHandler.players[i].getX(); + int nY = PlayerHandler.players[i].getY(); + int offX = (pY - nY) * -1; + int offY = (pX - nX) * -1; + c.castingMagic = true; + c.projectileStage = 2; + if (MagicData.MAGIC_SPELLS[c.spellId][3] > 0) { + if (MagicSpells.getStartGfxHeight(c) == 100) { + c.gfx100(MagicData.MAGIC_SPELLS[c.spellId][3]); + } else { + c.gfx0(MagicData.MAGIC_SPELLS[c.spellId][3]); + } + } + if (MagicData.MAGIC_SPELLS[c.spellId][4] > 0) { + c.getPlayerAssistant().createPlayersProjectile(pX, pY, + offX, offY, 50, 78, + MagicData.MAGIC_SPELLS[c.spellId][4], + MagicSpells.getStartHeight(c), MagicSpells.getEndHeight(c), -i - 1, + MagicSpells.getStartDelay(c)); + } + if (c.autocastId > 0) { + c.followId = c.playerIndex; + c.followDistance = 5; + } + c.hitDelay = getHitDelay(); + c.oldPlayerIndex = i; + c.oldSpellId = c.spellId; + c.spellId = 0; + if (MagicData.MAGIC_SPELLS[c.oldSpellId][0] == 12891 + && o.isMoving) { + // c.getPacketDispatcher().sendMessage("Barrage projectile.."); + c.getPlayerAssistant().createPlayersProjectile(pX, pY, + offX, offY, 50, 85, 368, 25, 25, -i - 1, + MagicSpells.getStartDelay(c)); + } + if (Misc.random(o.getCombatAssistant().mageDef()) > Misc + .random(mageAtk())) { + c.magicFailed = true; + } else { + c.magicFailed = false; + } + int freezeDelay = MagicSpells.getFreezeTime(c);// freeze time + if (freezeDelay > 0 + && PlayerHandler.players[i].freezeTimer <= -3 + && !c.magicFailed) { + PlayerHandler.players[i].freezeTimer = freezeDelay; + o.resetWalkingQueue(); + o.getPacketSender().sendMessage( + "You have been frozen."); + o.frozenBy = c.playerId; + } + if (!checkReqs()) { + return; + } + if (!c.autocasting && c.spellId <= 0) { + c.playerIndex = 0; + } + } + + if (c.usingBow && GameConstants.CRYSTAL_BOW_DEGRADES) { // crystal + // bow + // degrading + if (c.playerEquipment[c.playerWeapon] == 4212) { // new + // crystal + // bow + // becomes + // full + // bow + // on + // the + // first + // shot + c.getItemAssistant().wearItem(4214, 1, 3); + } + if (c.crystalBowArrowCount >= 250) { + switch (c.playerEquipment[c.playerWeapon]) { + + case 4223: // 1/10 bow + c.getItemAssistant().wearItem(-1, 1, 3); + c.getPacketSender().sendMessage( + "Your crystal bow has fully degraded."); + if (!c.getItemAssistant().addItem(4207, 1)) { + GameEngine.itemHandler.createGroundItem(c, 4207, + c.getX(), c.getY(), 1, c.getId()); + } + c.crystalBowArrowCount = 0; + break; + + default: + c.getItemAssistant().wearItem( + ++c.playerEquipment[c.playerWeapon], 1, 3); + c.getPacketSender().sendMessage( + "Your crystal bow degrades."); + c.crystalBowArrowCount = 0; + break; + } + } + } + } + } + } + + public void appendVengeance(int otherPlayer, int damage) { + if (damage <= 0) { + return; + } + Player o = PlayerHandler.players[otherPlayer]; + o.forcedText = "Taste Vengeance!"; + o.forcedChatUpdateRequired = true; + o.updateRequired = true; + o.vengOn = false; + if (o.playerLevel[3] - damage > 0) { + damage = (int) (damage * 0.75); + if (damage > c.playerLevel[3]) { + damage = c.playerLevel[3]; + } + c.setHitDiff2(damage); + c.setHitUpdateRequired2(true); + c.playerLevel[3] -= damage; + c.getPlayerAssistant().refreshSkill(3); + } + c.updateRequired = true; + } + + public void playerDelayedHit(int i) { + if (PlayerHandler.players[i] != null) { + if (PlayerHandler.players[i].isDead || c.isDead + || PlayerHandler.players[i].playerLevel[3] <= 0 + || c.playerLevel[3] <= 0) { + c.playerIndex = 0; + return; + } + if (PlayerHandler.players[i].respawnTimer > 0) { + c.faceUpdate(0); + c.playerIndex = 0; + return; + } + Client o = (Client) PlayerHandler.players[i]; + o.getPacketSender().closeAllWindows(); + if (o.playerIndex <= 0 && o.npcIndex <= 0) { + if (o.autoRet == 1) { + o.playerIndex = c.playerId; + } + } + if (o.attackTimer <= 3 || o.attackTimer == 0 && o.playerIndex == 0 + && !c.castingMagic) { // block animation + o.startAnimation(o.getCombatAssistant().getBlockEmote()); + if (GameConstants.COMBAT_SOUNDS) { + o.getPacketSender().sendSound( + CombatSounds.getPlayerBlockSounds(o), 100, 0); + } + } + if (o.inTrade) { + o.getTrading().declineTrade(); + } + if (c.projectileStage == 0) { // melee hit damage + applyPlayerMeleeDamage(i, 1); + if (c.doubleHit) { + applyPlayerMeleeDamage(i, 2); + } + } + if (!c.castingMagic && c.projectileStage > 0) { // range hit + // damage + int damage = Misc.random(rangeMaxHit()); + int damage2 = -1; + if (c.lastWeaponUsed == 11235 || c.bowSpecShot == 1) { + damage2 = Misc.random(rangeMaxHit()); + } + boolean ignoreDef = false; + if (Misc.random(4) == 1 && c.lastArrowUsed == 9243) { + ignoreDef = true; + o.gfx0(758); + } + if (Misc.random(10 + o.getCombatAssistant() + .calculateRangeDefence()) > Misc + .random(10 + calculateRangeAttack()) + && !ignoreDef) { + damage = 0; + } + if (Misc.random(4) == 1 && c.lastArrowUsed == 9242 + && damage > 0) { + PlayerHandler.players[i].gfx0(754); + damage = NpcHandler.npcs[i].HP / 5; + c.handleHitMask(c.playerLevel[3] / 10); + c.dealDamage(c.playerLevel[3] / 10); + c.gfx0(754); + } + + if (c.lastWeaponUsed == 11235 || c.bowSpecShot == 1) { + if (Misc.random(10 + o.getCombatAssistant() + .calculateRangeDefence()) > Misc + .random(10 + calculateRangeAttack())) { + damage2 = 0; + } + } + + if (c.dbowSpec) { + o.gfx100(1100); + if (damage < 8) { + damage = 8; + } + if (damage2 < 8) { + damage2 = 8; + } + c.dbowSpec = false; + } + if (damage > 0 && Misc.random(5) == 1 + && c.lastArrowUsed == 9244) { + damage *= 1.45; + o.gfx0(756); + } + if (o.getPrayer().prayerActive[17] + && System.currentTimeMillis() - o.protRangeDelay > 1500) { // if + // prayer + // active + // reduce + // damage + // by + // half + damage = damage * 60 / 100; + if (c.lastWeaponUsed == 11235 || c.bowSpecShot == 1) { + damage2 = damage2 * 60 / 100; + } + } + if (PlayerHandler.players[i].playerLevel[3] - damage < 0) { + damage = PlayerHandler.players[i].playerLevel[3]; + } + if (PlayerHandler.players[i].playerLevel[3] - damage - damage2 < 0) { + damage2 = PlayerHandler.players[i].playerLevel[3] - damage; + } + if (damage < 0) { + damage = 0; + } + if (damage2 < 0 && damage2 != -1) { + damage2 = 0; + } + if (o.vengOn) { + appendVengeance(i, damage); + appendVengeance(i, damage2); + } + if (damage > 0) { + applyRecoil(c, damage, i); + } + if (damage2 > 0) { + applyRecoil(c, damage2, i); + } + if (c.fightMode == 3) { + c.getPlayerAssistant().addSkillXP(damage * GameConstants.RANGE_EXP_RATE / 3, 4); + c.getPlayerAssistant().addSkillXP(damage / 3, 1); + c.getPlayerAssistant().addSkillXP(damage / 3, 3); + c.getPlayerAssistant().refreshSkill(1); + c.getPlayerAssistant().refreshSkill(3); + c.getPlayerAssistant().refreshSkill(4); + } else { + c.getPlayerAssistant().addSkillXP(damage * GameConstants.RANGE_EXP_RATE, 4); + c.getPlayerAssistant().addSkillXP(damage / 3, 3); + c.getPlayerAssistant().refreshSkill(3); + c.getPlayerAssistant().refreshSkill(4); + } + boolean dropArrows = true; + + for (int noArrowId : RangeData.NO_ARROW_DROP) { + if (c.lastWeaponUsed == noArrowId) { + dropArrows = false; + break; + } + } + if (dropArrows) { + c.getItemAssistant().dropArrowPlayer(); + } + PlayerHandler.players[i].underAttackBy = c.playerId; + PlayerHandler.players[i].logoutDelay = System.currentTimeMillis(); + PlayerHandler.players[i].singleCombatDelay = System.currentTimeMillis(); + PlayerHandler.players[i].killerId = c.playerId; + // Server.playerHandler.players[i].setHitDiff(damage); + // Server.playerHandler.players[i].playerLevel[3] -= damage; + PlayerHandler.players[i].dealDamage(damage); + PlayerHandler.players[i].damageTaken[c.playerId] += damage; + c.killedBy = PlayerHandler.players[i].playerId; + PlayerHandler.players[i].handleHitMask(damage); + if (damage2 != -1) { + // Server.playerHandler.players[i].playerLevel[3] -= + // damage2; + PlayerHandler.players[i].dealDamage(damage2); + PlayerHandler.players[i].damageTaken[c.playerId] += damage2; + PlayerHandler.players[i].handleHitMask(damage2); + + } + o.getPlayerAssistant().refreshSkill(3); + + // Server.playerHandler.players[i].setHitUpdateRequired(true); + PlayerHandler.players[i].updateRequired = true; + applySmite(i, damage); + if (damage2 != -1) { + applySmite(i, damage2); + } + + } else if (c.projectileStage > 0) { // magic hit damage + int damage = Misc + .random(MagicData.MAGIC_SPELLS[c.oldSpellId][6]); + if (MagicSpells.godSpells(c)) { + if (System.currentTimeMillis() - c.godSpellDelay < GameConstants.GOD_SPELL_CHARGE) { + damage += 10; + } + } + // c.playerIndex = 0; + if (c.magicFailed) { + damage = 0; + } + + if (o.getPrayer().prayerActive[16] + && System.currentTimeMillis() - o.protMageDelay > 1500) { // if + // prayer + // active + // reduce + // damage + // by + // half + damage = damage * 60 / 100; + } + if (PlayerHandler.players[i].playerLevel[3] - damage < 0) { + damage = PlayerHandler.players[i].playerLevel[3]; + } + if (o.vengOn) { + appendVengeance(i, damage); + } + if (damage > 0) { + applyRecoil(c, damage, i); + } + c.getPlayerAssistant().addSkillXP(MagicData.MAGIC_SPELLS[c.oldSpellId][7] + damage * GameConstants.MAGIC_EXP_RATE, 6); + if (MagicData.MAGIC_SPELLS[c.oldSpellId][0] != 1161 && MagicData.MAGIC_SPELLS[c.oldSpellId][0] != 1153 && MagicData.MAGIC_SPELLS[c.oldSpellId][0] != 1157 && MagicData.MAGIC_SPELLS[c.oldSpellId][0] != 1542 && MagicData.MAGIC_SPELLS[c.oldSpellId][0] != 1543 && MagicData.MAGIC_SPELLS[c.oldSpellId][0] != 1562) { + c.getPlayerAssistant().addSkillXP(MagicData.MAGIC_SPELLS[c.oldSpellId][7] + damage / 3, 3); + } + c.getPlayerAssistant().refreshSkill(3); + c.getPlayerAssistant().refreshSkill(6); + + if (MagicSpells.getEndGfxHeight(c) == 100 && !c.magicFailed) { // end GFX + PlayerHandler.players[i] + .gfx100(MagicData.MAGIC_SPELLS[c.oldSpellId][5]); + } else if (!c.magicFailed) { + PlayerHandler.players[i] + .gfx0(MagicData.MAGIC_SPELLS[c.oldSpellId][5]); + } else if (c.magicFailed) { + PlayerHandler.players[i].gfx100(85); + c.getPacketSender().sendSound(SoundList.MAGE_FAIL, 100, + 0); + } + + if (!c.magicFailed) { + if (System.currentTimeMillis() + - PlayerHandler.players[i].reduceStat > 35000) { + PlayerHandler.players[i].reduceStat = System + .currentTimeMillis(); + switch (MagicData.MAGIC_SPELLS[c.oldSpellId][0]) { + case 12987: + case 13011: + case 12999: + case 13023: + PlayerHandler.players[i].playerLevel[0] -= o + .getPlayerAssistant() + .getLevelForXP( + PlayerHandler.players[i].playerXP[0]) * 10 / 100; + break; + } + } + + switch (MagicData.MAGIC_SPELLS[c.oldSpellId][0]) { + case 12445: // teleblock + if (System.currentTimeMillis() - o.teleBlockDelay > o.teleBlockLength) { + o.teleBlockDelay = System.currentTimeMillis(); + o.getPacketSender().sendMessage( + "You have been teleblocked."); + o.getPacketSender().sendSound( + SoundList.TELEBLOCK_HIT, 100, 0); + if (o.getPrayer().prayerActive[16] + && System.currentTimeMillis() + - o.protMageDelay > 1500) { + o.teleBlockLength = 150000; + } else { + o.teleBlockLength = 300000; + } + } + break; + + case 12901: + case 12919: // blood spells + case 12911: + case 12929: + int heal = damage / 4; + if (c.playerLevel[3] + heal > c.getPlayerAssistant() + .getLevelForXP(c.playerXP[3])) { + c.playerLevel[3] = c.getPlayerAssistant() + .getLevelForXP(c.playerXP[3]); + } else { + c.playerLevel[3] += heal; + } + c.getPlayerAssistant().refreshSkill(3); + break; + + case 1153: + PlayerHandler.players[i].playerLevel[0] -= o + .getPlayerAssistant().getLevelForXP( + PlayerHandler.players[i].playerXP[0]) * 5 / 100; + o.getPacketSender().sendMessage( + "Your attack level has been reduced!"); + PlayerHandler.players[i].reduceSpellDelay[c.reduceSpellId] = System + .currentTimeMillis(); + o.getPlayerAssistant().refreshSkill(0); + break; + + case 1157: + PlayerHandler.players[i].playerLevel[2] -= o + .getPlayerAssistant().getLevelForXP( + PlayerHandler.players[i].playerXP[2]) * 5 / 100; + o.getPacketSender().sendMessage( + "Your strength level has been reduced!"); + PlayerHandler.players[i].reduceSpellDelay[c.reduceSpellId] = System + .currentTimeMillis(); + o.getPlayerAssistant().refreshSkill(2); + break; + + case 1161: + PlayerHandler.players[i].playerLevel[1] -= o + .getPlayerAssistant().getLevelForXP( + PlayerHandler.players[i].playerXP[1]) * 5 / 100; + o.getPacketSender().sendMessage( + "Your defence level has been reduced!"); + PlayerHandler.players[i].reduceSpellDelay[c.reduceSpellId] = System + .currentTimeMillis(); + o.getPlayerAssistant().refreshSkill(1); + break; + + case 1542: + PlayerHandler.players[i].playerLevel[1] -= o + .getPlayerAssistant().getLevelForXP( + PlayerHandler.players[i].playerXP[1]) * 10 / 100; + o.getPacketSender().sendMessage( + "Your defence level has been reduced!"); + PlayerHandler.players[i].reduceSpellDelay[c.reduceSpellId] = System + .currentTimeMillis(); + o.getPlayerAssistant().refreshSkill(1); + break; + + case 1543: + PlayerHandler.players[i].playerLevel[2] -= o + .getPlayerAssistant().getLevelForXP( + PlayerHandler.players[i].playerXP[2]) * 10 / 100; + o.getPacketSender().sendMessage( + "Your strength level has been reduced!"); + PlayerHandler.players[i].reduceSpellDelay[c.reduceSpellId] = System + .currentTimeMillis(); + o.getPlayerAssistant().refreshSkill(2); + break; + + case 1562: + PlayerHandler.players[i].playerLevel[0] -= o + .getPlayerAssistant().getLevelForXP( + PlayerHandler.players[i].playerXP[0]) * 10 / 100; + o.getPacketSender().sendMessage( + "Your attack level has been reduced!"); + PlayerHandler.players[i].reduceSpellDelay[c.reduceSpellId] = System + .currentTimeMillis(); + o.getPlayerAssistant().refreshSkill(0); + break; + } + } + + PlayerHandler.players[i].logoutDelay = System.currentTimeMillis(); + PlayerHandler.players[i].underAttackBy = c.playerId; + PlayerHandler.players[i].killerId = c.playerId; + PlayerHandler.players[i].singleCombatDelay = System + .currentTimeMillis(); + if (MagicData.MAGIC_SPELLS[c.oldSpellId][6] != 0) { + // Server.playerHandler.players[i].playerLevel[3] -= damage; + PlayerHandler.players[i].dealDamage(damage); + PlayerHandler.players[i].damageTaken[c.playerId] += damage; + c.totalPlayerDamageDealt += damage; + if (!c.magicFailed) { + // Server.playerHandler.players[i].setHitDiff(damage); + // Server.playerHandler.players[i].setHitUpdateRequired(true); + PlayerHandler.players[i].handleHitMask(damage); + } + } + applySmite(i, damage); + c.killedBy = PlayerHandler.players[i].playerId; + o.getPlayerAssistant().refreshSkill(3); + PlayerHandler.players[i].updateRequired = true; + c.usingMagic = false; + c.castingMagic = false; + if (o.inMulti() && MagicSpells.multis(c)) { + c.barrageCount = 0; + for (int j = 0; j < PlayerHandler.players.length; j++) { + if (PlayerHandler.players[j] != null) { + if (j == o.playerId) { + continue; + } + if (c.barrageCount >= 9) { + break; + } + if (o.goodDistance(o.getX(), o.getY(), + PlayerHandler.players[j].getX(), + PlayerHandler.players[j].getY(), 1)) { + MagicSpells.appendMultiBarrage(c, j, c.magicFailed); + } + } + } + } + c.getPlayerAssistant().refreshSkill(3); + c.getPlayerAssistant().refreshSkill(6); + c.oldSpellId = 0; + } + } + c.getPlayerAssistant().requestUpdates(); + if (c.bowSpecShot <= 0) { + c.oldPlayerIndex = 0; + c.projectileStage = 0; + c.lastWeaponUsed = 0; + c.doubleHit = false; + c.bowSpecShot = 0; + } + if (c.bowSpecShot != 0) { + c.bowSpecShot = 0; + } + } + + public void applyPlayerMeleeDamage(int i, int damageMask) { + Client o = (Client) PlayerHandler.players[i]; + if (o == null) { + return; + } + int damage = 0; + boolean veracsEffect = false; + boolean guthansEffect = false; + if (c.getPlayerAssistant().fullVeracs()) { + if (Misc.random(4) == 1) { + veracsEffect = true; + } + } + if (c.getPlayerAssistant().fullGuthans()) { + if (Misc.random(4) == 1) { + guthansEffect = true; + } + } + if (damageMask == 1) { + damage = c.delayedDamage; + c.delayedDamage = 0; + } else { + damage = c.delayedDamage2; + c.delayedDamage2 = 0; + } + if (Misc.random(o.getCombatAssistant().calcDef()) > Misc + .random(calcAtt()) && !veracsEffect) { + damage = 0; + c.bonusAttack = 0; + } else if (c.playerEquipment[c.playerWeapon] == 5698 + && o.poisonDamage <= 0 && Misc.random(3) == 1) { + o.getPlayerAssistant().appendPoison(13); + c.bonusAttack += damage / 3; + } else { + c.bonusAttack += damage / 3; + } + if (o.getPrayer().prayerActive[18] + && System.currentTimeMillis() - o.protMeleeDelay > 1500 + && !veracsEffect) { // if prayer active reduce damage by 40% + damage = damage * 60 / 100; + } + if (c.maxNextHit) { + damage = meleeMaxHit(); + } + if (damage > 0 && guthansEffect) { + c.playerLevel[3] += damage; + if (c.playerLevel[3] > c.getLevelForXP(c.playerXP[3])) { + c.playerLevel[3] = c.getLevelForXP(c.playerXP[3]); + } + c.getPlayerAssistant().refreshSkill(3); + o.gfx0(398); + } + if (c.ssSpec && damageMask == 2) { + damage = 5 + Misc.random(11); + c.ssSpec = false; + } + if (PlayerHandler.players[i].playerLevel[3] - damage < 0) { + damage = PlayerHandler.players[i].playerLevel[3]; + } + if (o.vengOn && damage > 0) { + appendVengeance(i, damage); + } + if (damage > 0) { + applyRecoil(c, damage, i); + } + switch (c.specEffect) { + case 1: // dragon scimmy special + if (damage > 0) { + if (o.getPrayer().prayerActive[16] + || o.getPrayer().prayerActive[17] + || o.getPrayer().prayerActive[18]) { + o.headIcon = -1; + o.getPacketSender().sendConfig( + c.getPrayer().PRAYER_GLOW[16], 0); + o.getPacketSender().sendConfig( + c.getPrayer().PRAYER_GLOW[17], 0); + o.getPacketSender().sendConfig( + c.getPrayer().PRAYER_GLOW[18], 0); + } + o.getPacketSender().sendMessage("You have been injured!"); + o.getPrayer().stopPrayerDelay = System.currentTimeMillis(); + o.getPrayer().prayerActive[16] = false; + o.getPrayer().prayerActive[17] = false; + o.getPrayer().prayerActive[18] = false; + o.getPlayerAssistant().requestUpdates(); + } + break; + case 2: + if (damage > 0) { + if (o.freezeTimer <= 0) { + o.freezeTimer = 30; + } + o.gfx0(369); + o.getPacketSender().sendMessage("You have been frozen."); + o.frozenBy = c.playerId; + o.stopMovement(); + c.getPacketSender().sendMessage("You freeze your enemy."); + } + break; + case 3: + if (damage > 0) { + o.playerLevel[1] -= damage; + o.getPacketSender().sendMessage("You feel weak."); + if (o.playerLevel[1] < 1) { + o.playerLevel[1] = 1; + } + o.getPlayerAssistant().refreshSkill(1); + } + break; + case 4: + if (damage > 0) { + if (c.playerLevel[3] + damage > c.getLevelForXP(c.playerXP[3])) { + if (c.playerLevel[3] > c.getLevelForXP(c.playerXP[3])) { + ; + } else { + c.playerLevel[3] = c.getLevelForXP(c.playerXP[3]); + } + } else { + c.playerLevel[3] += damage; + } + c.getPlayerAssistant().refreshSkill(3); + } + break; + } + c.specEffect = 0; + if (c.fightMode == 3) {//melee shared + c.getPlayerAssistant().addSkillXP(damage * GameConstants.MELEE_EXP_RATE / 3, 0); + c.getPlayerAssistant().addSkillXP(damage * GameConstants.MELEE_EXP_RATE / 3, 1); + c.getPlayerAssistant().addSkillXP(damage * GameConstants.MELEE_EXP_RATE / 3, 2); + c.getPlayerAssistant().addSkillXP(damage / 3, 3); + c.getPlayerAssistant().refreshSkill(0); + c.getPlayerAssistant().refreshSkill(1); + c.getPlayerAssistant().refreshSkill(2); + c.getPlayerAssistant().refreshSkill(3); + } else { + c.getPlayerAssistant().addSkillXP(damage * GameConstants.MELEE_EXP_RATE, c.fightMode); + c.getPlayerAssistant().addSkillXP(damage * GameConstants.MELEE_EXP_RATE/3, 3); + c.getPlayerAssistant().refreshSkill(c.fightMode); + c.getPlayerAssistant().refreshSkill(3); + } + PlayerHandler.players[i].logoutDelay = System.currentTimeMillis(); + PlayerHandler.players[i].underAttackBy = c.playerId; + PlayerHandler.players[i].killerId = c.playerId; + PlayerHandler.players[i].singleCombatDelay = System.currentTimeMillis(); + if (c.killedBy != PlayerHandler.players[i].playerId) { + c.totalPlayerDamageDealt = 0; + } + c.killedBy = PlayerHandler.players[i].playerId; + applySmite(i, damage); + switch (damageMask) { + case 1: + PlayerHandler.players[i].dealDamage(damage); + PlayerHandler.players[i].damageTaken[c.playerId] += damage; + c.totalPlayerDamageDealt += damage; + PlayerHandler.players[i].updateRequired = true; + o.getPlayerAssistant().refreshSkill(3); + break; + + case 2: + PlayerHandler.players[i].dealDamage(damage); + PlayerHandler.players[i].damageTaken[c.playerId] += damage; + c.totalPlayerDamageDealt += damage; + PlayerHandler.players[i].updateRequired = true; + c.doubleHit = false; + o.getPlayerAssistant().refreshSkill(3); + break; + } + PlayerHandler.players[i].handleHitMask(damage); + } + + public void applySmite(int index, int damage) { + if (!c.getPrayer().prayerActive[23]) { + return; + } + if (damage <= 0) { + return; + } + if (PlayerHandler.players[index] != null) { + Client c2 = (Client) PlayerHandler.players[index]; + c2.playerLevel[5] -= damage / 4; + if (c2.playerLevel[5] <= 0) { + c2.playerLevel[5] = 0; + PrayerDrain.resetPrayers(c2); + } + c2.getPlayerAssistant().refreshSkill(5); + } + + } + + public void fireProjectilePlayer() { + if (c.oldPlayerIndex > 0) { + if (PlayerHandler.players[c.oldPlayerIndex] != null) { + c.projectileStage = 2; + int pX = c.getX(); + int pY = c.getY(); + int oX = PlayerHandler.players[c.oldPlayerIndex].getX(); + int oY = PlayerHandler.players[c.oldPlayerIndex].getY(); + int offX = (pY - oY) * -1; + int offY = (pX - oX) * -1; + if (!c.msbSpec) { + c.getPlayerAssistant().createPlayersProjectile(pX, pY, + offX, offY, 50, RangeData.getProjectileSpeed(c), + RangeData.getRangeProjectileGFX(c), 43, 31, + -c.oldPlayerIndex - 1, MagicSpells.getStartDelay(c)); + } else if (c.msbSpec) { + c.getPlayerAssistant().createPlayersProjectile2(pX, pY, + offX, offY, 50, RangeData.getProjectileSpeed(c), + RangeData.getRangeProjectileGFX(c), 43, 31, + -c.oldPlayerIndex - 1, MagicSpells.getStartDelay(c), 10); + c.msbSpec = false; + } + if (RangeData.usingDbow(c)) { + c.getPlayerAssistant().createPlayersProjectile2(pX, pY, + offX, offY, 50, RangeData.getProjectileSpeed(c), + RangeData.getRangeProjectileGFX(c), 60, 31, + -c.oldPlayerIndex - 1, MagicSpells.getStartDelay(c), 35); + } + } + } + } + + public void resetPlayerAttack() { + c.usingMagic = false; + c.npcIndex = 0; + c.faceUpdate(0); + c.playerIndex = 0; + c.getPlayerAssistant().resetFollow(); + // c.getPacketDispatcher().sendMessage("Reset attack."); + } + + public int getCombatDifference(int combat1, int combat2) { + if (combat1 > combat2) { + return combat1 - combat2; + } + if (combat2 > combat1) { + return combat2 - combat1; + } + return 0; + } + + /** + * Wildy and duel info + **/ + + public boolean checkReqs() { + if (PlayerHandler.players[c.playerIndex] == null) { + return false; + } + if (c.inCw()) { + return true; + } + if (c.playerIndex == c.playerId) { + return false; + } + if (c.inPits && PlayerHandler.players[c.playerIndex].inPits) { + return true; + } + if (PlayerHandler.players[c.playerIndex].inDuelArena() && c.duelStatus != 5 && !c.usingMagic) { + if (c.duelingArena() || c.duelStatus == 5) { + c.getPacketSender().sendMessage("You can't challenge inside the arena!"); + return false; + } + c.getDueling().requestDuel(c.playerIndex); + return false; + } + if (c.duelStatus == 5 + && PlayerHandler.players[c.playerIndex].duelStatus == 5) { + if (PlayerHandler.players[c.playerIndex].duelingWith == c.getId()) { + return true; + } else { + c.getPacketSender() + .sendMessage("This isn't your opponent!"); + return false; + } + } + if (CastOnOther.castOnOtherSpells(c.castingSpellId)) { + return true; + } + if (!PlayerHandler.players[c.playerIndex].inWild() + && !PlayerHandler.players[c.playerIndex].inCwGame() + && !CastOnOther.castOnOtherSpells(c.castingSpellId)) { + c.getPacketSender().sendMessage( + "That player is not in the wilderness." + c.castingSpellId); + c.stopMovement(); + resetPlayerAttack(); + return false; + } + if (!c.inWild() && !PlayerHandler.players[c.playerIndex].inCwGame() + && !CastOnOther.castOnOtherSpells(c.castingSpellId)) { + c.getPacketSender().sendMessage( + "You are not in the wilderness."); + c.stopMovement(); + resetPlayerAttack(); + return false; + } + if (GameConstants.COMBAT_LEVEL_DIFFERENCE && !c.inCw()) { + int combatDif1 = getCombatDifference(c.combatLevel, + PlayerHandler.players[c.playerIndex].combatLevel); + if (combatDif1 > c.wildLevel + || combatDif1 > PlayerHandler.players[c.playerIndex].wildLevel) { + c.getPacketSender() + .sendMessage( + "Your combat level difference is too great to attack that player here."); + c.stopMovement(); + resetPlayerAttack(); + return false; + } + } + + if (GameConstants.SINGLE_AND_MULTI_ZONES) { + if (!PlayerHandler.players[c.playerIndex].inMulti()) { // single + // combat + // zones + if (PlayerHandler.players[c.playerIndex].underAttackBy != c.playerId + && PlayerHandler.players[c.playerIndex].underAttackBy != 0) { + c.getPacketSender().sendMessage( + "That player is already in combat."); + c.stopMovement(); + resetPlayerAttack(); + return false; + } + if (PlayerHandler.players[c.playerIndex].playerId != c.underAttackBy + && c.underAttackBy != 0 || c.underAttackBy2 > 0) { + c.getPacketSender().sendMessage( + "You are already in combat."); + c.stopMovement(); + resetPlayerAttack(); + return false; + } + } + } + return true; + } + + public int getRequiredDistance() { + if (c.followId > 0 && c.freezeTimer <= 0 && !c.isMoving) { + return 2; + } else if (c.followId > 0 && c.freezeTimer <= 0 && c.isMoving) { + return 3; + } else { + return 1; + } + } + + public void handleDfs() { + if (System.currentTimeMillis() - c.dfsDelay > 30000) { + if (c.playerIndex > 0 + && PlayerHandler.players[c.playerIndex] != null) { + int damage = Misc.random(15) + 5; + c.startAnimation(2836); + c.gfx0(600); + PlayerHandler.players[c.playerIndex].playerLevel[3] -= damage; + PlayerHandler.players[c.playerIndex].hitDiff2 = damage; + PlayerHandler.players[c.playerIndex].hitUpdateRequired2 = true; + PlayerHandler.players[c.playerIndex].updateRequired = true; + c.dfsDelay = System.currentTimeMillis(); + } else { + c.getPacketSender().sendMessage( + "I should be in combat before using this."); + } + } else { + c.getPacketSender().sendMessage( + "My shield hasn't finished recharging yet."); + } + } + + public void handleDfsNPC() { + if (System.currentTimeMillis() - c.dfsDelay > 30000) { + if (c.npcIndex > 0 && NpcHandler.npcs[c.npcIndex] != null) { + int damage = Misc.random(15) + 5; + c.startAnimation(2836); + c.gfx0(600); + NpcHandler.npcs[c.npcIndex].HP -= damage; + NpcHandler.npcs[c.npcIndex].hitDiff2 = damage; + NpcHandler.npcs[c.npcIndex].hitUpdateRequired2 = true; + NpcHandler.npcs[c.npcIndex].updateRequired = true; + c.dfsDelay = System.currentTimeMillis(); + } else { + c.getPacketSender().sendMessage( + "I should be in combat before using this."); + } + } else { + c.getPacketSender().sendMessage( + "My shield hasn't finished recharging yet."); + } + } + + /* + * public void applyRecoil(int damage, int i) { if (damage > 0 && + * PlayerHandler.players[i].playerEquipment[c.playerRing] == 2550) { int + * recDamage = damage / 10 + 1; if (!c.getHitUpdateRequired()) { + * c.setHitDiff(recDamage); c.setHitUpdateRequired(true); } else if + * (!c.getHitUpdateRequired2()) { c.setHitDiff2(recDamage); + * c.setHitUpdateRequired2(true); } c.dealDamage(recDamage); + * c.updateRequired = true; } } + */ + + public static void applyRecoilNPC(Client c, int damage, int i) { + if (c == null || c.npcIndex == 0) { + return; + } + if (damage > 0 && c.playerEquipment[c.playerRing] == 2550) { + int recDamage = damage / 10 + 1; + NpcHandler.npcs[c.npcIndex].HP -= recDamage; + NpcHandler.npcs[c.npcIndex].handleHitMask(recDamage); + removeRecoil(c); + c.recoilHits += damage; + } + } + + public static void applyRecoil(Player c2, int damage, int i) { + if (damage > 0 + && PlayerHandler.players[i].playerEquipment[c2.playerRing] == 2550) { + int recDamage = damage / 10 + 1; + if (!c2.getHitUpdateRequired()) { + c2.setHitDiff(recDamage); + c2.setHitUpdateRequired(true); + } else if (!c2.getHitUpdateRequired2()) { + c2.setHitDiff2(recDamage); + c2.setHitUpdateRequired2(true); + } + c2.dealDamage(recDamage); + c2.updateRequired = true; + removeRecoil(c2); + c2.recoilHits += damage; + } + } + + public static void removeRecoil(Player c2) { + if (c2.recoilHits >= 400) { + c2.getItemAssistant().removeItem(2550, c2.playerRing); + c2.getItemAssistant().deleteItem(2550, + c2.getItemAssistant().getItemSlot(2550), 1); + c2.getPacketSender().sendMessage("Your ring of recoil shaters!"); + c2.recoilHits = 0; + } else { + c2.recoilHits++; + } + } + + public int getBonusAttack(int i) { + switch (NpcHandler.npcs[i].npcType) { + case 2883: + return Misc.random(50) + 30; + case 2026: + case 2027: + case 2029: + case 2030: + return Misc.random(50) + 30; + } + return 0; + } + + public void handleGmaulPlayer() { + int equippedWeapon = c.playerEquipment[c.playerWeapon]; + if (c.playerIndex > 0) { + Client o = (Client) PlayerHandler.players[c.playerIndex]; + if (c.goodDistance(c.getX(), c.getY(), o.getX(), o.getY(), + getRequiredDistance())) { + if (checkReqs()) { + if (checkSpecAmount(equippedWeapon)) { + boolean hit = Misc.random(calcAtt()) > Misc.random(o + .getCombatAssistant().calcDef()); + int damage = 0; + if (hit) { + damage = Misc.random(meleeMaxHit()); + } + if (o.getPrayer().prayerActive[18] + && System.currentTimeMillis() + - o.protMeleeDelay > 1500) { + damage *= .6; + } + o.handleHitMask(damage); + c.startAnimation(1667); + c.gfx100(337); + o.dealDamage(damage); + } + } + } + } + } + + public boolean armaNpc(int i) { + switch (NpcHandler.npcs[i].npcType) { + case 2558: + case 2559: + case 2560: + case 2561: + return true; + } + return false; + } + + public void activateSpecial(int weapon, int i) { + c.getSpecials().activateSpecial(weapon, i); + } + + public boolean checkSpecAmount(int weapon) { + if (c.specAmount >= c.getSpecials().specAmount()) { + c.specAmount -= c.getSpecials().specAmount(); + c.getItemAssistant().addSpecialBar(weapon); + return true; + } + return false; + } + + public int meleeMaxHit() { + return MeleeMaxHit.calculateMeleeMaxHit(c); + } + + public int calcDef() { + return MeleeData.calculateMeleeDefence(c); + } + + public int calcAtt() { + return MeleeData.calculateMeleeAttack(c); + } + + public void getPlayerAnimIndex() { + MeleeData.getPlayerAnimIndex(c); + } + + public int getHitDelay() { + return MeleeData.getHitDelay(c); + } + + public int getAttackDelay() { + return MeleeData.getAttackDelay(c); + } + + public int getWepAnim() { + return MeleeData.getWeaponAnimation(c); + } + + public int getBlockEmote() { + return MeleeData.getBlockEmote(c); + } + + public int rangeMaxHit() { + return RangeMaxHit.rangeMaxHit(c); + } + + public boolean checkMagicReqs(int spell) { + return MagicRequirements.checkMagicReqs(c, spell); + } + + public int calculateRangeDefence() { + return RangeMaxHit.calculateRangeDefence(c); + } + + public int calculateRangeAttack() { + return RangeMaxHit.calculateRangeAttack(c); + } + + public boolean usingBolts() { + return RangeData.usingBolts(c); + } + + public boolean properBolts() { + return RangeData.properBolts(c); + } + + public int mageDef() { + return MagicMaxHit.mageDefenceBonus(c); + } + + public int mageAtk() { + return MagicMaxHit.mageAttackBonus(c); + } + +} diff --git a/2006Redone Server/src/redone/game/content/combat/Specials.java b/2006Redone Server/src/com/rebotted/game/content/combat/Specials.java similarity index 76% rename from 2006Redone Server/src/redone/game/content/combat/Specials.java rename to 2006Redone Server/src/com/rebotted/game/content/combat/Specials.java index 825c5f9c..f94caeb1 100644 --- a/2006Redone Server/src/redone/game/content/combat/Specials.java +++ b/2006Redone Server/src/com/rebotted/game/content/combat/Specials.java @@ -1,400 +1,401 @@ -package redone.game.content.combat; - -import java.util.HashMap; - -import redone.Constants; -import redone.game.content.combat.range.RangeData; -import redone.game.content.music.sound.CombatSounds; -import redone.game.npcs.NpcHandler; -import redone.game.players.Client; -import redone.game.players.PlayerHandler; -import redone.util.Misc; - -public class Specials { - - private final Client player; - - public Specials(Client c) { - this.player = c; - } - - private enum specialAttack { - - // ItemName(ItemId, SpecDamage, SpecAccuracy, SpecAmount, Anim, GFX0, - // GFX100, DoubleHit, SsSpec, SpecEffect) - - ABYSSAL_WHIP(4151, 1, 1.25, 5, 1658, 341, -1, false, false, 0), - DRAGON_DAGGER(1215, 1.15, 1.25, 2.5, 1062, -1, 252, true, false, 0), - DRAGON_DAGGER_P(1231, 1.15, 1.25, 2.5, 1062, -1, 252, true, false, 0), - DRAGON_DAGGER_PP(5698, 1.15, 1.25, 2.5, 1062, -1, 252, true, false, 0), - DRAGON_DAGGER_PPP(5680, 1.15, 1.25, 2.5, 1062, -1, 252, true, false, 0), - DRAGON_LONG(1305, 1.20, 1.10, 2.5, 1058, -1, 248, false, false, 0), - DRAGON_MACE(1434, 1.55, 1.25, 2.5, 1060, -1, 251, false, false, 0), - DRAGON_SCIMITAR(4587, 1, 1.25, 5.5, 1872, -1, 347, false, false, 1), - DRAGON_HALBERD(3204, 1.25, .85, 3, 1203, -1, 282, true, false, 0), - GRANITE_MAUL(4153, 1.10, .85, 5, 1667, -1, 337, false, false, 0), - MAGIC_SHORTBOW(861, 1.05, .95, 5.5, 1074, -1, -1, true, false, 0), - MAGIC_LONGBOW(859, 1.20, 1.05, 5.5, 426, -1, -1, false, false, 0); - - private int weapon, anim, gfx1, gfx2, specEffect; - private double specDamage, specAccuracy, specAmount; - private boolean doubleHit, ssSpec; - - private specialAttack(int weapon, double specDamage, - double specAccuracy, double specAmount, int anim, int gfx1, - int gfx2, boolean doubleHit, boolean ssSpec, int specEffect) { - this.weapon = weapon; - this.specDamage = specDamage; - this.specAccuracy = specAccuracy; - this.specAmount = specAmount; - this.anim = anim; - this.gfx1 = gfx1; - this.gfx2 = gfx2; - this.doubleHit = doubleHit; - this.ssSpec = ssSpec; - this.specEffect = specEffect; - } - - private int getWeapon() { - return weapon; - } - - private double getSpecDamage() { - return specDamage; - } - - private double getSpecAccuracy() { - return specAccuracy; - } - - private double getSpecAmount() { - return specAmount; - } - - private int getAnim() { - return anim; - } - - private int getGfx1() { - return gfx1; - } - - private int getGfx2() { - return gfx2; - } - - private boolean getDoubleHit() { - return doubleHit; - } - - private boolean getSsSpec() { - return ssSpec; - } - - @SuppressWarnings("unused") - private int getSpecEffect() { - return specEffect; - } - - public static HashMap specialAttack = new HashMap(); - - @SuppressWarnings("unused") - public static specialAttack getWeapon(int weapon) { - return specialAttack.get(weapon); - } - - static { - for (specialAttack SA : specialAttack.values()) { - specialAttack.put(SA.getWeapon(), SA); - } - } - } - - public void activateSpecial(int weapon, int i) { - int equippedWeapon = player.playerEquipment[player.playerWeapon]; - if (NpcHandler.npcs[i] == null && player.npcIndex > 0 - || PlayerHandler.players[player.playerIndex] == null - && player.playerIndex > 0) { - return; - } - player.doubleHit = false; - player.specEffect = 0; - player.projectileStage = 0; - player.specMaxHitIncrease = 2; - if (player.npcIndex > 0) { - player.oldNpcIndex = i; - } else if (player.playerIndex > 0) { - player.oldPlayerIndex = i; - PlayerHandler.players[i].underAttackBy = player.playerId; - PlayerHandler.players[i].logoutDelay = System.currentTimeMillis(); - PlayerHandler.players[i].singleCombatDelay = System - .currentTimeMillis(); - PlayerHandler.players[i].killerId = player.playerId; - } - player.specEffect = 0; - player.projectileStage = 0; - for (specialAttack SA : specialAttack.values()) { - if (NpcHandler.npcs[player.npcIndex] == null && player.npcIndex > 0) { - return; - } - if (PlayerHandler.players[player.playerIndex] == null - && player.playerIndex > 0) { - return; - } - if (equippedWeapon == SA.getWeapon()) { - if (SA.getWeapon() == 11235) { - player.usingBow = true; - player.dbowSpec = true; - player.rangeItemUsed = player.playerEquipment[player.playerArrows]; - player.getItemAssistant().deleteArrow(); - player.getItemAssistant().deleteArrow(); - player.lastWeaponUsed = weapon; - player.hitDelay = 3; - player.startAnimation(426); - player.projectileStage = 1; - player.gfx100(RangeData.getRangeStartGFX(player)); - player.hitDelay = player.getCombatAssistant().getHitDelay(); - if (player.fightMode == 2) { - player.attackTimer--; - } - if (player.playerIndex > 0) { - player.getCombatAssistant().fireProjectilePlayer(); - } else if (player.npcIndex > 0) { - player.getCombatAssistant().fireProjectileNpc(); - } - player.specAccuracy = SA.getSpecAccuracy(); - player.specDamage = SA.getSpecDamage(); - } else if (SA.getWeapon() == 15241) { - player.usingBow = true; - player.rangeItemUsed = player.playerEquipment[player.playerArrows]; - player.getItemAssistant().deleteArrow(); - player.lastWeaponUsed = weapon; - player.startAnimation(12175); - player.specAccuracy = SA.getSpecAccuracy(); - player.specDamage = SA.getSpecDamage(); - player.hitDelay = 5; - player.attackTimer -= 7; - player.hitDelay = player.getCombatAssistant().getHitDelay(); - if (player.fightMode == 2) { - if (player.playerIndex > 0) { - player.getCombatAssistant().fireProjectilePlayer(); - } else if (player.npcIndex > 0) { - player.getCombatAssistant().fireProjectileNpc(); - } - } - } else if (SA.getWeapon() == 13879 || SA.getWeapon() == 13883) { - player.usingRangeWeapon = true; - player.rangeItemUsed = player.playerEquipment[player.playerWeapon]; - player.getItemAssistant().deleteArrow(); - player.lastWeaponUsed = weapon; - player.startAnimation(SA.getAnim()); - player.gfx0(SA.getGfx1()); - player.specAccuracy = SA.getSpecAccuracy(); - player.specDamage = SA.getSpecDamage(); - player.projectileStage = 1; - player.hitDelay = player.getCombatAssistant().getHitDelay(); - if (player.fightMode == 2) { - player.attackTimer--; - } - if (player.playerIndex > 0) { - player.getCombatAssistant().fireProjectilePlayer(); - } else if (player.npcIndex > 0) { - player.getCombatAssistant().fireProjectileNpc(); - } - } else if (SA.getWeapon() == 859 || SA.getWeapon() == 861) { - player.usingBow = true; - player.bowSpecShot = 1; - player.rangeItemUsed = player.playerEquipment[player.playerArrows]; - player.getItemAssistant().deleteArrow(); - player.lastWeaponUsed = weapon; - player.startAnimation(SA.getAnim()); - player.projectileStage = 1; - player.hitDelay = player.getCombatAssistant().getHitDelay(); - if (player.fightMode == 2) { - player.attackTimer--; - } - if (player.playerIndex > 0) { - player.getCombatAssistant().fireProjectilePlayer(); - } else if (player.npcIndex > 0) { - player.getCombatAssistant().fireProjectileNpc(); - } - } else if (SA.getGfx1() == -1) { - player.gfx100(SA.getGfx2()); - player.startAnimation(SA.getAnim()); - player.specDamage = SA.getSpecDamage(); - player.specAccuracy = SA.getSpecAccuracy(); - player.hitDelay = player.getCombatAssistant().getHitDelay(); - player.doubleHit = SA.getDoubleHit(); - player.ssSpec = SA.getSsSpec(); - } else { - player.gfx0(SA.getGfx1()); - player.startAnimation(SA.getAnim()); - player.specDamage = SA.getSpecDamage(); - player.specAccuracy = SA.getSpecAccuracy(); - player.hitDelay = player.getCombatAssistant().getHitDelay(); - player.doubleHit = SA.getDoubleHit(); - player.ssSpec = SA.getSsSpec(); - } - } - player.delayedDamage = Misc.random(player.getCombatAssistant().meleeMaxHit()); - player.delayedDamage2 = Misc - .random(player.getCombatAssistant().meleeMaxHit()); - player.usingSpecial = false; - player.getItemAssistant().updateSpecialBar(); - if (Constants.combatSounds) { - player.getActionSender() - .sendSound( - CombatSounds - .specialSounds(player.playerEquipment[player.playerWeapon]), - 100, 0); - } - } - } - - public void handleGmaul() { - if (player.npcIndex > 0 && NpcHandler.npcs[player.npcIndex] != null) { - if (player.goodDistance(player.getX(), player.getY(), NpcHandler.npcs[player.npcIndex] - .getX(), NpcHandler.npcs[player.npcIndex].getY(), player - .getCombatAssistant().getRequiredDistance())) { - if (player.getCombatAssistant().checkSpecAmount(4153)) { - boolean hit = Misc.random(player.getCombatAssistant().calcAtt()) > Misc - .random(NpcHandler.npcs[player.npcIndex].defence); - int damage = 0; - if (hit) { - damage = Misc.random(player.getCombatAssistant() - .meleeMaxHit()); - NpcHandler.npcs[player.npcIndex].HP -= damage; - NpcHandler.npcs[player.npcIndex].hitDiff2 = damage; - NpcHandler.npcs[player.npcIndex].hitUpdateRequired2 = true; - NpcHandler.npcs[player.npcIndex].updateRequired = true; - player.startAnimation(1667); - player.gfx100(340); - } - } - } - } else if (player.playerIndex > 0) { - final Client o = (Client) PlayerHandler.players[player.playerIndex]; - if (player.goodDistance(player.getX(), player.getY(), o.getX(), o.getY(), player - .getCombatAssistant().getRequiredDistance())) { - if (player.getCombatAssistant().checkReqs()) { - if (player.getCombatAssistant().checkSpecAmount(4153)) { - boolean hit = Misc.random(player.getCombatAssistant() - .calcAtt()) > Misc.random(o - .getCombatAssistant().calcDef()); - int damage = 0; - if (hit) { - damage = Misc.random(player.getCombatAssistant() - .meleeMaxHit()); - } - if (o.getPrayer().prayerActive[18] - && System.currentTimeMillis() - - o.protMeleeDelay > 1500) { - damage *= .6; - } - if (o.playerLevel[3] - damage <= 0) { - damage = o.playerLevel[3]; - } - if (o.playerLevel[3] > 0) { - o.handleHitMask(damage); - player.startAnimation(1667); - o.gfx100(337); - o.dealDamage(damage); - } - } - } - } - } - } - - public double specAmount() { - for (specialAttack SA : specialAttack.values()) { - if (player.playerEquipment[player.playerWeapon] == SA.getWeapon()) { - return SA.getSpecAmount(); - } - } - return 0; - } - - public static void specialClicking(Client player, int actionButtonId) { - switch (actionButtonId) { - case 29188: - if (player.playerEquipment[player.playerWeapon] == 1434) { - player.specBarId = 7636; - player.usingSpecial = !player.usingSpecial; - player.getItemAssistant().updateSpecialBar(); - } - break; - - case 29163: - if (player.playerEquipment[player.playerWeapon] == 4587) { - player.specBarId = 7611; - player.usingSpecial = !player.usingSpecial; - player.getItemAssistant().updateSpecialBar(); - } - break; - - case 33033: - if (player.playerEquipment[player.playerWeapon] == 4153) { - player.specBarId = 8505; - player.usingSpecial = !player.usingSpecial; - player.getItemAssistant().updateSpecialBar(); - } - break; - - case 29038: - if (player.playerEquipment[player.playerWeapon] == 4153) { - player.specBarId = 7486; - player.getSpecials().handleGmaul(); - player.usingSpecial = !player.usingSpecial; - player.getItemAssistant().updateSpecialBar(); - } - break; - - case 29063: - if (player.playerEquipment[player.playerWeapon] == 1377) { - if (player.getCombatAssistant().checkSpecAmount(1377)) { - player.gfx0(246); - player.forcedChat("Raarrrrrgggggghhhhhhh!"); - player.startAnimation(1056); - player.playerLevel[2] = player.getLevelForXP(player.playerXP[2]) + player.getLevelForXP(player.playerXP[2]) * 15 / 100; - player.getPlayerAssistant().refreshSkill(2); - player.getItemAssistant().updateSpecialBar(); - } else { - player.getActionSender().sendMessage("You don't have the required special energy to use this attack."); - } - } - break; - - case 48023: - if (player.playerEquipment[player.playerWeapon] == 4151) { - player.specBarId = 12335; - player.usingSpecial = !player.usingSpecial; - player.getItemAssistant().updateSpecialBar(); - } - break; - - case 29138: - if (player.playerEquipment[player.playerWeapon] == 1215 || player.playerEquipment[player.playerWeapon] == 1231 || player.playerEquipment[player.playerWeapon] == 5680 || player.playerEquipment[player.playerWeapon] == 5698) { - player.specBarId = 7586; - player.usingSpecial = !player.usingSpecial; - player.getItemAssistant().updateSpecialBar(); - } - break; - - case 29113: - if (player.playerEquipment[player.playerWeapon] == 861 || player.playerEquipment[player.playerWeapon] == 859) { - player.specBarId = 7561; - player.usingSpecial = !player.usingSpecial; - player.getItemAssistant().updateSpecialBar(); - } - break; - - case 29238: - player.specBarId = 7686; - player.usingSpecial = !player.usingSpecial; - player.getItemAssistant().updateSpecialBar(); - break; - } - } - -} +package com.rebotted.game.content.combat; + +import java.util.HashMap; + +import com.rebotted.GameConstants; +import com.rebotted.game.content.combat.range.RangeData; +import com.rebotted.game.content.music.sound.CombatSounds; +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerHandler; +import com.rebotted.util.Misc; + +public class Specials { + + private final Player player; + + public Specials(Player player2) { + this.player = player2; + } + + private enum specialAttack { + + // ItemName(ItemId, SpecDamage, SpecAccuracy, SpecAmount, Anim, GFX0, + // GFX100, DoubleHit, SsSpec, SpecEffect) + + ABYSSAL_WHIP(4151, 1, 1.25, 5, 1658, 341, -1, false, false, 0), + DRAGON_DAGGER(1215, 1.15, 1.25, 2.5, 1062, -1, 252, true, false, 0), + DRAGON_DAGGER_P(1231, 1.15, 1.25, 2.5, 1062, -1, 252, true, false, 0), + DRAGON_DAGGER_PP(5698, 1.15, 1.25, 2.5, 1062, -1, 252, true, false, 0), + DRAGON_DAGGER_PPP(5680, 1.15, 1.25, 2.5, 1062, -1, 252, true, false, 0), + DRAGON_LONG(1305, 1.20, 1.10, 2.5, 1058, -1, 248, false, false, 0), + DRAGON_MACE(1434, 1.55, 1.25, 2.5, 1060, -1, 251, false, false, 0), + DRAGON_SCIMITAR(4587, 1, 1.25, 5.5, 1872, -1, 347, false, false, 1), + DRAGON_HALBERD(3204, 1.25, .85, 3, 1203, -1, 282, true, false, 0), + GRANITE_MAUL(4153, 1.10, .85, 5, 1667, -1, 337, false, false, 0), + MAGIC_SHORTBOW(861, 1.05, .95, 5.5, 1074, -1, -1, true, false, 0), + MAGIC_LONGBOW(859, 1.20, 1.05, 5.5, 426, -1, -1, false, false, 0); + + private int weapon, anim, gfx1, gfx2, specEffect; + private double specDamage, specAccuracy, specAmount; + private boolean doubleHit, ssSpec; + + private specialAttack(int weapon, double specDamage, + double specAccuracy, double specAmount, int anim, int gfx1, + int gfx2, boolean doubleHit, boolean ssSpec, int specEffect) { + this.weapon = weapon; + this.specDamage = specDamage; + this.specAccuracy = specAccuracy; + this.specAmount = specAmount; + this.anim = anim; + this.gfx1 = gfx1; + this.gfx2 = gfx2; + this.doubleHit = doubleHit; + this.ssSpec = ssSpec; + this.specEffect = specEffect; + } + + private int getWeapon() { + return weapon; + } + + private double getSpecDamage() { + return specDamage; + } + + private double getSpecAccuracy() { + return specAccuracy; + } + + private double getSpecAmount() { + return specAmount; + } + + private int getAnim() { + return anim; + } + + private int getGfx1() { + return gfx1; + } + + private int getGfx2() { + return gfx2; + } + + private boolean getDoubleHit() { + return doubleHit; + } + + private boolean getSsSpec() { + return ssSpec; + } + + @SuppressWarnings("unused") + private int getSpecEffect() { + return specEffect; + } + + public static HashMap specialAttack = new HashMap(); + + @SuppressWarnings("unused") + public static specialAttack getWeapon(int weapon) { + return specialAttack.get(weapon); + } + + static { + for (specialAttack SA : specialAttack.values()) { + specialAttack.put(SA.getWeapon(), SA); + } + } + } + + public void activateSpecial(int weapon, int i) { + int equippedWeapon = player.playerEquipment[player.playerWeapon]; + if (NpcHandler.npcs[i] == null && player.npcIndex > 0 + || PlayerHandler.players[player.playerIndex] == null + && player.playerIndex > 0) { + return; + } + player.doubleHit = false; + player.specEffect = 0; + player.projectileStage = 0; + player.specMaxHitIncrease = 2; + if (player.npcIndex > 0) { + player.oldNpcIndex = i; + } else if (player.playerIndex > 0) { + player.oldPlayerIndex = i; + PlayerHandler.players[i].underAttackBy = player.playerId; + PlayerHandler.players[i].logoutDelay = System.currentTimeMillis(); + PlayerHandler.players[i].singleCombatDelay = System + .currentTimeMillis(); + PlayerHandler.players[i].killerId = player.playerId; + } + player.specEffect = 0; + player.projectileStage = 0; + for (specialAttack SA : specialAttack.values()) { + if (NpcHandler.npcs[player.npcIndex] == null && player.npcIndex > 0) { + return; + } + if (PlayerHandler.players[player.playerIndex] == null + && player.playerIndex > 0) { + return; + } + if (equippedWeapon == SA.getWeapon()) { + if (SA.getWeapon() == 11235) { + player.usingBow = true; + player.dbowSpec = true; + player.rangeItemUsed = player.playerEquipment[player.playerArrows]; + player.getItemAssistant().deleteArrow(); + player.getItemAssistant().deleteArrow(); + player.lastWeaponUsed = weapon; + player.hitDelay = 3; + player.startAnimation(426); + player.projectileStage = 1; + player.gfx100(RangeData.getRangeStartGFX(player)); + player.hitDelay = player.getCombatAssistant().getHitDelay(); + if (player.fightMode == 2) { + player.attackTimer--; + } + if (player.playerIndex > 0) { + player.getCombatAssistant().fireProjectilePlayer(); + } else if (player.npcIndex > 0) { + player.getCombatAssistant().fireProjectileNpc(); + } + player.specAccuracy = SA.getSpecAccuracy(); + player.specDamage = SA.getSpecDamage(); + } else if (SA.getWeapon() == 15241) { + player.usingBow = true; + player.rangeItemUsed = player.playerEquipment[player.playerArrows]; + player.getItemAssistant().deleteArrow(); + player.lastWeaponUsed = weapon; + player.startAnimation(12175); + player.specAccuracy = SA.getSpecAccuracy(); + player.specDamage = SA.getSpecDamage(); + player.hitDelay = 5; + player.attackTimer -= 7; + player.hitDelay = player.getCombatAssistant().getHitDelay(); + if (player.fightMode == 2) { + if (player.playerIndex > 0) { + player.getCombatAssistant().fireProjectilePlayer(); + } else if (player.npcIndex > 0) { + player.getCombatAssistant().fireProjectileNpc(); + } + } + } else if (SA.getWeapon() == 13879 || SA.getWeapon() == 13883) { + player.usingRangeWeapon = true; + player.rangeItemUsed = player.playerEquipment[player.playerWeapon]; + player.getItemAssistant().deleteArrow(); + player.lastWeaponUsed = weapon; + player.startAnimation(SA.getAnim()); + player.gfx0(SA.getGfx1()); + player.specAccuracy = SA.getSpecAccuracy(); + player.specDamage = SA.getSpecDamage(); + player.projectileStage = 1; + player.hitDelay = player.getCombatAssistant().getHitDelay(); + if (player.fightMode == 2) { + player.attackTimer--; + } + if (player.playerIndex > 0) { + player.getCombatAssistant().fireProjectilePlayer(); + } else if (player.npcIndex > 0) { + player.getCombatAssistant().fireProjectileNpc(); + } + } else if (SA.getWeapon() == 859 || SA.getWeapon() == 861) { + player.usingBow = true; + player.bowSpecShot = 1; + player.rangeItemUsed = player.playerEquipment[player.playerArrows]; + player.getItemAssistant().deleteArrow(); + player.lastWeaponUsed = weapon; + player.startAnimation(SA.getAnim()); + player.projectileStage = 1; + player.hitDelay = player.getCombatAssistant().getHitDelay(); + if (player.fightMode == 2) { + player.attackTimer--; + } + if (player.playerIndex > 0) { + player.getCombatAssistant().fireProjectilePlayer(); + } else if (player.npcIndex > 0) { + player.getCombatAssistant().fireProjectileNpc(); + } + } else if (SA.getGfx1() == -1) { + player.gfx100(SA.getGfx2()); + player.startAnimation(SA.getAnim()); + player.specDamage = SA.getSpecDamage(); + player.specAccuracy = SA.getSpecAccuracy(); + player.hitDelay = player.getCombatAssistant().getHitDelay(); + player.doubleHit = SA.getDoubleHit(); + player.ssSpec = SA.getSsSpec(); + } else { + player.gfx0(SA.getGfx1()); + player.startAnimation(SA.getAnim()); + player.specDamage = SA.getSpecDamage(); + player.specAccuracy = SA.getSpecAccuracy(); + player.hitDelay = player.getCombatAssistant().getHitDelay(); + player.doubleHit = SA.getDoubleHit(); + player.ssSpec = SA.getSsSpec(); + } + } + player.delayedDamage = Misc.random(player.getCombatAssistant().meleeMaxHit()); + player.delayedDamage2 = Misc + .random(player.getCombatAssistant().meleeMaxHit()); + player.usingSpecial = false; + player.getItemAssistant().updateSpecialBar(); + if (GameConstants.COMBAT_SOUNDS) { + player.getPacketSender() + .sendSound( + CombatSounds + .specialSounds(player.playerEquipment[player.playerWeapon]), + 100, 0); + } + } + } + + public void handleGmaul() { + if (player.npcIndex > 0 && NpcHandler.npcs[player.npcIndex] != null) { + if (player.goodDistance(player.getX(), player.getY(), NpcHandler.npcs[player.npcIndex] + .getX(), NpcHandler.npcs[player.npcIndex].getY(), player + .getCombatAssistant().getRequiredDistance())) { + if (player.getCombatAssistant().checkSpecAmount(4153)) { + boolean hit = Misc.random(player.getCombatAssistant().calcAtt()) > Misc + .random(NpcHandler.npcs[player.npcIndex].defence); + int damage = 0; + if (hit) { + damage = Misc.random(player.getCombatAssistant() + .meleeMaxHit()); + NpcHandler.npcs[player.npcIndex].HP -= damage; + NpcHandler.npcs[player.npcIndex].hitDiff2 = damage; + NpcHandler.npcs[player.npcIndex].hitUpdateRequired2 = true; + NpcHandler.npcs[player.npcIndex].updateRequired = true; + player.startAnimation(1667); + player.gfx100(340); + } + } + } + } else if (player.playerIndex > 0) { + final Client o = (Client) PlayerHandler.players[player.playerIndex]; + if (player.goodDistance(player.getX(), player.getY(), o.getX(), o.getY(), player + .getCombatAssistant().getRequiredDistance())) { + if (player.getCombatAssistant().checkReqs()) { + if (player.getCombatAssistant().checkSpecAmount(4153)) { + boolean hit = Misc.random(player.getCombatAssistant() + .calcAtt()) > Misc.random(o + .getCombatAssistant().calcDef()); + int damage = 0; + if (hit) { + damage = Misc.random(player.getCombatAssistant() + .meleeMaxHit()); + } + if (o.getPrayer().prayerActive[18] + && System.currentTimeMillis() + - o.protMeleeDelay > 1500) { + damage *= .6; + } + if (o.playerLevel[3] - damage <= 0) { + damage = o.playerLevel[3]; + } + if (o.playerLevel[3] > 0) { + o.handleHitMask(damage); + player.startAnimation(1667); + o.gfx100(337); + o.dealDamage(damage); + } + } + } + } + } + } + + public double specAmount() { + for (specialAttack SA : specialAttack.values()) { + if (player.playerEquipment[player.playerWeapon] == SA.getWeapon()) { + return SA.getSpecAmount(); + } + } + return 0; + } + + public static void specialClicking(Player player2, int actionButtonId) { + switch (actionButtonId) { + case 29188: + if (player2.playerEquipment[player2.playerWeapon] == 1434) { + player2.specBarId = 7636; + player2.usingSpecial = !player2.usingSpecial; + player2.getItemAssistant().updateSpecialBar(); + } + break; + + case 29163: + if (player2.playerEquipment[player2.playerWeapon] == 4587) { + player2.specBarId = 7611; + player2.usingSpecial = !player2.usingSpecial; + player2.getItemAssistant().updateSpecialBar(); + } + break; + + case 33033: + if (player2.playerEquipment[player2.playerWeapon] == 4153) { + player2.specBarId = 8505; + player2.usingSpecial = !player2.usingSpecial; + player2.getItemAssistant().updateSpecialBar(); + } + break; + + case 29038: + if (player2.playerEquipment[player2.playerWeapon] == 4153) { + player2.specBarId = 7486; + player2.getSpecials().handleGmaul(); + player2.usingSpecial = !player2.usingSpecial; + player2.getItemAssistant().updateSpecialBar(); + } + break; + + case 29063: + if (player2.playerEquipment[player2.playerWeapon] == 1377) { + if (player2.getCombatAssistant().checkSpecAmount(1377)) { + player2.gfx0(246); + player2.forcedChat("Raarrrrrgggggghhhhhhh!"); + player2.startAnimation(1056); + player2.playerLevel[2] = player2.getLevelForXP(player2.playerXP[2]) + player2.getLevelForXP(player2.playerXP[2]) * 15 / 100; + player2.getPlayerAssistant().refreshSkill(2); + player2.getItemAssistant().updateSpecialBar(); + } else { + player2.getPacketSender().sendMessage("You don't have the required special energy to use this attack."); + } + } + break; + + case 48023: + if (player2.playerEquipment[player2.playerWeapon] == 4151) { + player2.specBarId = 12335; + player2.usingSpecial = !player2.usingSpecial; + player2.getItemAssistant().updateSpecialBar(); + } + break; + + case 29138: + if (player2.playerEquipment[player2.playerWeapon] == 1215 || player2.playerEquipment[player2.playerWeapon] == 1231 || player2.playerEquipment[player2.playerWeapon] == 5680 || player2.playerEquipment[player2.playerWeapon] == 5698) { + player2.specBarId = 7586; + player2.usingSpecial = !player2.usingSpecial; + player2.getItemAssistant().updateSpecialBar(); + } + break; + + case 29113: + if (player2.playerEquipment[player2.playerWeapon] == 861 || player2.playerEquipment[player2.playerWeapon] == 859) { + player2.specBarId = 7561; + player2.usingSpecial = !player2.usingSpecial; + player2.getItemAssistant().updateSpecialBar(); + } + break; + + case 29238: + player2.specBarId = 7686; + player2.usingSpecial = !player2.usingSpecial; + player2.getItemAssistant().updateSpecialBar(); + break; + } + } + +} diff --git a/2006Redone Server/src/redone/game/content/combat/magic/CastOnOther.java b/2006Redone Server/src/com/rebotted/game/content/combat/magic/CastOnOther.java similarity index 59% rename from 2006Redone Server/src/redone/game/content/combat/magic/CastOnOther.java rename to 2006Redone Server/src/com/rebotted/game/content/combat/magic/CastOnOther.java index a11107d7..bd98d677 100644 --- a/2006Redone Server/src/redone/game/content/combat/magic/CastOnOther.java +++ b/2006Redone Server/src/com/rebotted/game/content/combat/magic/CastOnOther.java @@ -1,83 +1,84 @@ -package redone.game.content.combat.magic; - -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.players.Client; -import redone.game.players.PlayerHandler; - -public class CastOnOther extends CastRequirements { - - public static boolean castOnOtherSpells(int castingSpellId) { - int[] spells = { 12435, 12455, 12425, 30298, 30290, 30282, }; - for (int spell : spells) { - if (castingSpellId == spell) { - return true; - } - } - return false; - } - - public static void teleOtherDistance(Client c, int type, int i) { - Client castOn = (Client) PlayerHandler.players[i]; - int[][] data = { { 74, SOUL, LAW, EARTH, 1, 1, 1 }, - { 82, SOUL, LAW, WATER, 1, 1, 1 }, - { 90, SOUL, LAW, -1, 2, 1, -1 }, }; - if (!hasRequiredLevel(c, data[type][0])) { - c.getActionSender().sendMessage( - "You need to have a magic level of " + data[type][0] - + " to cast this spell."); - return; - } - if (!hasRunes(c, new int[] { data[type][1], data[type][2], - data[type][3] }, new int[] { data[type][4], data[type][5], - data[type][6] })) { - return; - } - deleteRunes(c, - new int[] { data[type][1], data[type][2], data[type][3] }, - new int[] { data[type][4], data[type][5], data[type][6] }); - String[] location = { "Lumbridge", "Falador", "Camelot", }; - c.faceUpdate(i + 32768); - c.startAnimation(1818); - c.gfx0(343); - if (castOn != null) { - if (castOn.distanceToPoint(c.absX, c.absY) <= 15) { - if (c.heightLevel == castOn.heightLevel) { - castOn.getPlayerAssistant().sendFrame126(location[type], 12560); - castOn.getPlayerAssistant().sendFrame126(c.playerName, 12558); - castOn.getPlayerAssistant().showInterface(12468); - castOn.teleotherType = type; - } - } - } - } - - public static void teleOtherLocation(final Client c, final int i, - boolean decline) { - c.getPlayerAssistant().removeAllWindows(); - final int[][] coords = { { 3222, 3218 }, // LUMBRIDGE - { 2967, 3378 }, // FALADOR - { 2757, 3477 }, // CAMELOT - }; - if (!decline) { - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - c.startAnimation(715); - c.teleportToX = coords[c.teleotherType][0]; - c.teleportToY = coords[c.teleotherType][1]; - c.teleotherType = -1; - container.stop(); - } - @Override - public void stop() { - // TODO Auto-generated method stub - - } - }, 3); - c.startAnimation(1816); - c.gfx100(342); - } - } -} +package com.rebotted.game.content.combat.magic; + +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerHandler; + +public class CastOnOther extends CastRequirements { + + public static boolean castOnOtherSpells(int castingSpellId) { + int[] spells = { 12435, 12455, 12425, 30298, 30290, 30282, }; + for (int spell : spells) { + if (castingSpellId == spell) { + return true; + } + } + return false; + } + + public static void teleOtherDistance(Player c, int type, int i) { + Player castOn = (Client) PlayerHandler.players[i]; + int[][] data = { { 74, SOUL, LAW, EARTH, 1, 1, 1 }, + { 82, SOUL, LAW, WATER, 1, 1, 1 }, + { 90, SOUL, LAW, -1, 2, 1, -1 }, }; + if (!hasRequiredLevel(c, data[type][0])) { + c.getPacketSender().sendMessage( + "You need to have a magic level of " + data[type][0] + + " to cast this spell."); + return; + } + if (!hasRunes(c, new int[] { data[type][1], data[type][2], + data[type][3] }, new int[] { data[type][4], data[type][5], + data[type][6] })) { + return; + } + deleteRunes(c, + new int[] { data[type][1], data[type][2], data[type][3] }, + new int[] { data[type][4], data[type][5], data[type][6] }); + String[] location = { "Lumbridge", "Falador", "Camelot", }; + c.faceUpdate(i + 32768); + c.startAnimation(1818); + c.gfx0(343); + if (castOn != null) { + if (castOn.distanceToPoint(c.absX, c.absY) <= 15) { + if (c.heightLevel == castOn.heightLevel) { + castOn.getPacketSender().sendFrame126(location[type], 12560); + castOn.getPacketSender().sendFrame126(c.playerName, 12558); + castOn.getPacketSender().showInterface(12468); + castOn.teleotherType = type; + } + } + } + } + + public static void teleOtherLocation(final Player player, final int i, + boolean decline) { + player.getPacketSender().closeAllWindows(); + final int[][] coords = { { 3222, 3218 }, // LUMBRIDGE + { 2967, 3378 }, // FALADOR + { 2757, 3477 }, // CAMELOT + }; + if (!decline) { + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + player.startAnimation(715); + player.teleportToX = coords[player.teleotherType][0]; + player.teleportToY = coords[player.teleotherType][1]; + player.teleotherType = -1; + container.stop(); + } + @Override + public void stop() { + // TODO Auto-generated method stub + + } + }, 3); + player.startAnimation(1816); + player.gfx100(342); + } + } +} diff --git a/2006Redone Server/src/redone/game/content/combat/magic/CastRequirements.java b/2006Redone Server/src/com/rebotted/game/content/combat/magic/CastRequirements.java similarity index 59% rename from 2006Redone Server/src/redone/game/content/combat/magic/CastRequirements.java rename to 2006Redone Server/src/com/rebotted/game/content/combat/magic/CastRequirements.java index 3d2117b6..6e4a21d4 100644 --- a/2006Redone Server/src/redone/game/content/combat/magic/CastRequirements.java +++ b/2006Redone Server/src/com/rebotted/game/content/combat/magic/CastRequirements.java @@ -1,61 +1,61 @@ -package redone.game.content.combat.magic; - -import redone.game.players.Client; - -public class CastRequirements { - - public static boolean hasRunes(Client c, int[] runes, int[] amount) { - for (int i = 0; i < runes.length; i++) { - if (c.getItemAssistant().playerHasItem(runes[i], amount[i]) || MagicRequirements.wearingStaff(c, runes[i])) { - return true; - } - } - c.getActionSender().sendMessage( - "You don't have enough required runes to cast this spell!"); - return false; - } - - public static boolean hasRunes(Client c, int[][] runes) { - for (int[] rune : runes) { - // if player doesn't have the required amount of runes or a staff for that rune - if (!c.getItemAssistant().playerHasItem(rune[0], rune[1]) && !MagicRequirements.wearingStaff(c, rune[0])) { - return false; - } - } - return true; - } - - public static void deleteRunes(Client c, int[][] runes) { - for (int[] rune : runes) { - if (!MagicRequirements.wearingStaff(c, rune[0])) { - c.getItemAssistant().deleteItem(rune[0], rune[1]); - } - } - } - - public static void deleteRunes(Client c, int[] runes, int[] amount) { - for (int i = 0; i < runes.length; i++) { - c.getItemAssistant().deleteItem(runes[i], - c.getItemAssistant().getItemSlot(runes[i]), amount[i]); - } - } - - public static boolean hasRequiredLevel(Client c, int i) { - return c.playerLevel[6] >= i; - } - - public static final int FIRE = 554, - WATER = 555, - AIR = 556, - EARTH = 557, - MIND = 558, - BODY = 559, - DEATH = 560, - NATURE = 561, - CHAOS = 562, - LAW = 563, - COSMIC = 564, - BLOOD = 565, - SOUL = 566, - ASTRAL = 9075; -} +package com.rebotted.game.content.combat.magic; + +import com.rebotted.game.players.Player; + +public class CastRequirements { + + public static boolean hasRunes(Player c, int[] runes, int[] amount) { + for (int i = 0; i < runes.length; i++) { + if (c.getItemAssistant().playerHasItem(runes[i], amount[i]) || MagicRequirements.wearingStaff(c, runes[i])) { + return true; + } + } + c.getPacketSender().sendMessage( + "You don't have enough required runes to cast this spell!"); + return false; + } + + public static boolean hasRunes(Player player, int[][] runes) { + for (int[] rune : runes) { + // if player doesn't have the required amount of runes or a staff for that rune + if (!player.getItemAssistant().playerHasItem(rune[0], rune[1]) && !MagicRequirements.wearingStaff(player, rune[0])) { + return false; + } + } + return true; + } + + public static void deleteRunes(Player player, int[][] runes) { + for (int[] rune : runes) { + if (!MagicRequirements.wearingStaff(player, rune[0])) { + player.getItemAssistant().deleteItem(rune[0], rune[1]); + } + } + } + + public static void deleteRunes(Player c, int[] runes, int[] amount) { + for (int i = 0; i < runes.length; i++) { + c.getItemAssistant().deleteItem(runes[i], + c.getItemAssistant().getItemSlot(runes[i]), amount[i]); + } + } + + public static boolean hasRequiredLevel(Player c, int i) { + return c.playerLevel[6] >= i; + } + + public static final int FIRE = 554, + WATER = 555, + AIR = 556, + EARTH = 557, + MIND = 558, + BODY = 559, + DEATH = 560, + NATURE = 561, + CHAOS = 562, + LAW = 563, + COSMIC = 564, + BLOOD = 565, + SOUL = 566, + ASTRAL = 9075; +} diff --git a/2006Redone Server/src/redone/game/content/combat/magic/Enchanting.java b/2006Redone Server/src/com/rebotted/game/content/combat/magic/Enchanting.java similarity index 91% rename from 2006Redone Server/src/redone/game/content/combat/magic/Enchanting.java rename to 2006Redone Server/src/com/rebotted/game/content/combat/magic/Enchanting.java index f45ae856..87156291 100644 --- a/2006Redone Server/src/redone/game/content/combat/magic/Enchanting.java +++ b/2006Redone Server/src/com/rebotted/game/content/combat/magic/Enchanting.java @@ -1,249 +1,248 @@ -package redone.game.content.combat.magic; - -import java.util.HashMap; -import java.util.Map; - -import redone.game.players.Client; - -public class Enchanting { - - private final Client c; - - public Enchanting(Client c) { - this.c = c; - } - - public enum Enchant { - - SAPPHIRERING(1637, 2550, 7, 18, 719, 114, 1), SAPPHIREAMULET(1694, - 1727, 7, 18, 719, 114, 1), SAPPHIRENECKLACE(1656, 3853, 7, 18, - 719, 114, 1), - - EMERALDRING(1639, 2552, 27, 37, 719, 114, 2), EMERALDAMULET(1696, 1729, - 27, 37, 719, 114, 2), EMERALDNECKLACE(1658, 5521, 27, 37, 719, - 114, 2), - - RUBYRING(1641, 2568, 47, 59, 720, 115, 3), RUBYAMULET(1698, 1725, 47, - 59, 720, 115, 3), - // RUBYNECKLACE(1660, 11194, 47, 59, 720, 115, 3), - - DIAMONDRING(1643, 2570, 57, 67, 720, 115, 4), DIAMONDAMULET(1700, 1731, - 57, 67, 720, 115, 4), - // DIAMONDNECKLACE(1662, 11090, 57, 67, 720, 115, 4), - - DRAGONSTONERING(1645, 2572, 68, 78, 721, 116, 5), - DRAGONSTONEAMULET(1702, 1704, 68, 78, 721, 116, 5), - // DRAGONSTONENECKLACE(1664, 11105, 68, 78, 721, 116, 5), - - ONYXRING(6575, 6583, 87, 97, 721, 452, 6), ONYXAMULET(6581, 6585, 87, - 97, 721, 452, 6); - - // ONYXNECKLACE(6577, 11128, 87, 97, 721, 452, 6) - - int unenchanted, enchanted, levelReq, xpGiven, anim, gfx, - reqEnchantmentLevel; - - private Enchant(int unenchanted, int enchanted, int levelReq, - int xpGiven, int anim, int gfx, int reqEnchantmentLevel) { - this.unenchanted = unenchanted; - this.enchanted = enchanted; - this.levelReq = levelReq; - this.xpGiven = xpGiven; - this.anim = anim; - this.gfx = gfx; - this.reqEnchantmentLevel = reqEnchantmentLevel; - } - - public int getUnenchanted() { - return unenchanted; - } - - public int getEnchanted() { - return enchanted; - } - - public int getLevelReq() { - return levelReq; - } - - public int getXp() { - return xpGiven; - } - - public int getAnim() { - return anim; - } - - public int getGFX() { - return gfx; - } - - public int getELevel() { - return reqEnchantmentLevel; - } - - private static final Map enc = new HashMap(); - - public static Enchant forId(int itemID) { - return enc.get(itemID); - } - - static { - for (Enchant en : Enchant.values()) { - enc.put(en.getUnenchanted(), en); - } - } - } - - private enum EnchantSpell { - - SAPPHIRE(1155, 555, 1, 564, 1, -1, 0), EMERALD(1165, 556, 3, 564, 1, - -1, 0), RUBY(1176, 554, 5, 564, 1, -1, 0), DIAMOND(1180, 557, - 10, 564, 1, -1, 0), DRAGONSTONE(1187, 555, 15, 557, 15, 564, 1), ONYX( - 6003, 557, 20, 554, 20, 564, 1); - - int spell, reqRune1, reqAmtRune1, reqRune2, reqAmtRune2, reqRune3, - reqAmtRune3; - - private EnchantSpell(int spell, int reqRune1, int reqAmtRune1, - int reqRune2, int reqAmtRune2, int reqRune3, int reqAmtRune3) { - this.spell = spell; - this.reqRune1 = reqRune1; - this.reqAmtRune1 = reqAmtRune1; - this.reqRune2 = reqRune2; - this.reqAmtRune2 = reqAmtRune2; - this.reqRune3 = reqRune3; - this.reqAmtRune3 = reqAmtRune3; - } - - public int getSpell() { - return spell; - } - - public int getReq1() { - return reqRune1; - } - - public int getReqAmt1() { - return reqAmtRune1; - } - - public int getReq2() { - return reqRune2; - } - - public int getReqAmt2() { - return reqAmtRune2; - } - - public int getReq3() { - return reqRune3; - } - - public int getReqAmt3() { - return reqAmtRune3; - } - - public static final Map ens = new HashMap(); - - public static EnchantSpell forId(int id) { - return ens.get(id); - } - - static { - for (EnchantSpell en : EnchantSpell.values()) { - ens.put(en.getSpell(), en); - } - } - - } - - private boolean hasRunes(int spellID) { - EnchantSpell ens = EnchantSpell.forId(spellID); - if (ens.getReq3() == 0) { - return c.getItemAssistant().playerHasItem(ens.getReq1(), - ens.getReqAmt1()) - && c.getItemAssistant().playerHasItem(ens.getReq2(), - ens.getReqAmt2()) - && c.getItemAssistant().playerHasItem(ens.getReq3(), - ens.getReqAmt3()); - } else { - return c.getItemAssistant().playerHasItem(ens.getReq1(), - ens.getReqAmt1()) - && c.getItemAssistant().playerHasItem(ens.getReq2(), - ens.getReqAmt2()); - } - } - - private int getEnchantmentLevel(int spellID) { - switch (spellID) { - case 1155: // Lvl-1 enchant sapphire - return 1; - case 1165: // Lvl-2 enchant emerald - return 2; - case 1176: // Lvl-3 enchant ruby - return 3; - case 1180: // Lvl-4 enchant diamond - return 4; - case 1187: // Lvl-5 enchant dragonstone - return 5; - case 6003: // Lvl-6 enchant onyx - return 6; - } - return 0; - } - - public void enchantItem(int itemID, int spellID) { - Enchant enc = Enchant.forId(itemID); - EnchantSpell ens = EnchantSpell.forId(spellID); - if (enc == null || ens == null) { - - return; - } - if (c.playerLevel[c.playerMagic] >= enc.getLevelReq()) { - if (c.getItemAssistant().playerHasItem(enc.getUnenchanted(), 1)) { - if (hasRunes(spellID)) { - if (getEnchantmentLevel(spellID) == enc.getELevel()) { - c.getItemAssistant().deleteItem(enc.getUnenchanted(), 1); - c.getItemAssistant().addItem(enc.getEnchanted(), 1); - c.getPlayerAssistant().addSkillXP(enc.getXp(), - c.playerMagic); - c.getItemAssistant() - .deleteItem( - ens.getReq1(), - c.getItemAssistant().getItemSlot( - ens.getReq1()), - ens.getReqAmt1()); - c.getItemAssistant() - .deleteItem( - ens.getReq2(), - c.getItemAssistant().getItemSlot( - ens.getReq2()), - ens.getReqAmt2()); - c.startAnimation(enc.getAnim()); - c.gfx100(enc.getGFX()); - if (ens.getReq3() != -1) { - c.getItemAssistant().deleteItem( - ens.getReq3(), - c.getItemAssistant().getItemSlot( - ens.getReq3()), ens.getReqAmt3()); - } - c.getPlayerAssistant().sendFrame106(6); - } else { - c.getActionSender().sendMessage( - "You can only enchant this jewelry using a level-" - + enc.getELevel() - + " enchantment spell!"); - } - } else { - c.getActionSender().sendMessage( - "You do not have enough runes to cast this spell."); - } - } - } else { - c.getActionSender().sendMessage( - "You need a magic level of at least " + enc.getLevelReq() - + " to cast this spell."); - } - } -} +package com.rebotted.game.content.combat.magic; + +import java.util.HashMap; +import java.util.Map; +import com.rebotted.game.players.Player; + +public class Enchanting { + + private final Player c; + + public Enchanting(Player player) { + this.c = player; + } + + public enum Enchant { + + SAPPHIRERING(1637, 2550, 7, 18, 719, 114, 1), SAPPHIREAMULET(1694, + 1727, 7, 18, 719, 114, 1), SAPPHIRENECKLACE(1656, 3853, 7, 18, + 719, 114, 1), + + EMERALDRING(1639, 2552, 27, 37, 719, 114, 2), EMERALDAMULET(1696, 1729, + 27, 37, 719, 114, 2), EMERALDNECKLACE(1658, 5521, 27, 37, 719, + 114, 2), + + RUBYRING(1641, 2568, 47, 59, 720, 115, 3), RUBYAMULET(1698, 1725, 47, + 59, 720, 115, 3), + // RUBYNECKLACE(1660, 11194, 47, 59, 720, 115, 3), + + DIAMONDRING(1643, 2570, 57, 67, 720, 115, 4), DIAMONDAMULET(1700, 1731, + 57, 67, 720, 115, 4), + // DIAMONDNECKLACE(1662, 11090, 57, 67, 720, 115, 4), + + DRAGONSTONERING(1645, 2572, 68, 78, 721, 116, 5), + DRAGONSTONEAMULET(1702, 1704, 68, 78, 721, 116, 5), + // DRAGONSTONENECKLACE(1664, 11105, 68, 78, 721, 116, 5), + + ONYXRING(6575, 6583, 87, 97, 721, 452, 6), ONYXAMULET(6581, 6585, 87, + 97, 721, 452, 6); + + // ONYXNECKLACE(6577, 11128, 87, 97, 721, 452, 6) + + int unenchanted, enchanted, levelReq, xpGiven, anim, gfx, + reqEnchantmentLevel; + + private Enchant(int unenchanted, int enchanted, int levelReq, + int xpGiven, int anim, int gfx, int reqEnchantmentLevel) { + this.unenchanted = unenchanted; + this.enchanted = enchanted; + this.levelReq = levelReq; + this.xpGiven = xpGiven; + this.anim = anim; + this.gfx = gfx; + this.reqEnchantmentLevel = reqEnchantmentLevel; + } + + public int getUnenchanted() { + return unenchanted; + } + + public int getEnchanted() { + return enchanted; + } + + public int getLevelReq() { + return levelReq; + } + + public int getXp() { + return xpGiven; + } + + public int getAnim() { + return anim; + } + + public int getGFX() { + return gfx; + } + + public int getELevel() { + return reqEnchantmentLevel; + } + + private static final Map enc = new HashMap(); + + public static Enchant forId(int itemID) { + return enc.get(itemID); + } + + static { + for (Enchant en : Enchant.values()) { + enc.put(en.getUnenchanted(), en); + } + } + } + + private enum EnchantSpell { + + SAPPHIRE(1155, 555, 1, 564, 1, -1, 0), EMERALD(1165, 556, 3, 564, 1, + -1, 0), RUBY(1176, 554, 5, 564, 1, -1, 0), DIAMOND(1180, 557, + 10, 564, 1, -1, 0), DRAGONSTONE(1187, 555, 15, 557, 15, 564, 1), ONYX( + 6003, 557, 20, 554, 20, 564, 1); + + int spell, reqRune1, reqAmtRune1, reqRune2, reqAmtRune2, reqRune3, + reqAmtRune3; + + private EnchantSpell(int spell, int reqRune1, int reqAmtRune1, + int reqRune2, int reqAmtRune2, int reqRune3, int reqAmtRune3) { + this.spell = spell; + this.reqRune1 = reqRune1; + this.reqAmtRune1 = reqAmtRune1; + this.reqRune2 = reqRune2; + this.reqAmtRune2 = reqAmtRune2; + this.reqRune3 = reqRune3; + this.reqAmtRune3 = reqAmtRune3; + } + + public int getSpell() { + return spell; + } + + public int getReq1() { + return reqRune1; + } + + public int getReqAmt1() { + return reqAmtRune1; + } + + public int getReq2() { + return reqRune2; + } + + public int getReqAmt2() { + return reqAmtRune2; + } + + public int getReq3() { + return reqRune3; + } + + public int getReqAmt3() { + return reqAmtRune3; + } + + public static final Map ens = new HashMap(); + + public static EnchantSpell forId(int id) { + return ens.get(id); + } + + static { + for (EnchantSpell en : EnchantSpell.values()) { + ens.put(en.getSpell(), en); + } + } + + } + + private boolean hasRunes(int spellID) { + EnchantSpell ens = EnchantSpell.forId(spellID); + if (ens.getReq3() == 0) { + return c.getItemAssistant().playerHasItem(ens.getReq1(), + ens.getReqAmt1()) + && c.getItemAssistant().playerHasItem(ens.getReq2(), + ens.getReqAmt2()) + && c.getItemAssistant().playerHasItem(ens.getReq3(), + ens.getReqAmt3()); + } else { + return c.getItemAssistant().playerHasItem(ens.getReq1(), + ens.getReqAmt1()) + && c.getItemAssistant().playerHasItem(ens.getReq2(), + ens.getReqAmt2()); + } + } + + private int getEnchantmentLevel(int spellID) { + switch (spellID) { + case 1155: // Lvl-1 enchant sapphire + return 1; + case 1165: // Lvl-2 enchant emerald + return 2; + case 1176: // Lvl-3 enchant ruby + return 3; + case 1180: // Lvl-4 enchant diamond + return 4; + case 1187: // Lvl-5 enchant dragonstone + return 5; + case 6003: // Lvl-6 enchant onyx + return 6; + } + return 0; + } + + public void enchantItem(int itemID, int spellID) { + Enchant enc = Enchant.forId(itemID); + EnchantSpell ens = EnchantSpell.forId(spellID); + if (enc == null || ens == null) { + + return; + } + if (c.playerLevel[c.playerMagic] >= enc.getLevelReq()) { + if (c.getItemAssistant().playerHasItem(enc.getUnenchanted(), 1)) { + if (hasRunes(spellID)) { + if (getEnchantmentLevel(spellID) == enc.getELevel()) { + c.getItemAssistant().deleteItem(enc.getUnenchanted(), 1); + c.getItemAssistant().addItem(enc.getEnchanted(), 1); + c.getPlayerAssistant().addSkillXP(enc.getXp(), + c.playerMagic); + c.getItemAssistant() + .deleteItem( + ens.getReq1(), + c.getItemAssistant().getItemSlot( + ens.getReq1()), + ens.getReqAmt1()); + c.getItemAssistant() + .deleteItem( + ens.getReq2(), + c.getItemAssistant().getItemSlot( + ens.getReq2()), + ens.getReqAmt2()); + c.startAnimation(enc.getAnim()); + c.gfx100(enc.getGFX()); + if (ens.getReq3() != -1) { + c.getItemAssistant().deleteItem( + ens.getReq3(), + c.getItemAssistant().getItemSlot( + ens.getReq3()), ens.getReqAmt3()); + } + c.getPacketSender().sendFrame106(6); + } else { + c.getPacketSender().sendMessage( + "You can only enchant this jewelry using a level-" + + enc.getELevel() + + " enchantment spell!"); + } + } else { + c.getPacketSender().sendMessage( + "You do not have enough runes to cast this spell."); + } + } + } else { + c.getPacketSender().sendMessage( + "You need a magic level of at least " + enc.getLevelReq() + + " to cast this spell."); + } + } +} diff --git a/2006Redone Server/src/redone/game/content/combat/magic/MagicData.java b/2006Redone Server/src/com/rebotted/game/content/combat/magic/MagicData.java similarity index 91% rename from 2006Redone Server/src/redone/game/content/combat/magic/MagicData.java rename to 2006Redone Server/src/com/rebotted/game/content/combat/magic/MagicData.java index e4ddb28b..f75d341b 100644 --- a/2006Redone Server/src/redone/game/content/combat/magic/MagicData.java +++ b/2006Redone Server/src/com/rebotted/game/content/combat/magic/MagicData.java @@ -1,388 +1,388 @@ -package redone.game.content.combat.magic; - -import redone.game.players.Client; -public class MagicData { - - public static final int[][] MAGIC_SPELLS = { - // example {magicId, level req, animation, startGFX, projectile Id, - // endGFX, maxhit, exp gained, rune 1, rune 1 amount, rune 2, rune 2 - // amount, rune 3, rune 3 amount, rune 4, rune 4 amount} - - // Modern Spells - { 1152, 1, 711, 90, 91, 92, 2, 5, 556, 1, 558, 1, 0, 0, 0, 0, 993 }, // wind - // strike - { 1154, 5, 711, 93, 94, 95, 4, 7, 555, 1, 556, 1, 558, 1, 0, 0, 211 }, // water - // strike - { 1156, 9, 711, 96, 97, 98, 6, 9, 557, 2, 556, 1, 558, 1, 0, 0, 0 },// earth - // strike - { 1158, 13, 711, 99, 100, 101, 8, 11, 554, 3, 556, 2, 558, 1, 0, 0, - 0 }, // fire - // strike - { 1160, 17, 711, 117, 118, 119, 9, 13, 556, 2, 562, 1, 0, 0, 0, 0, - 0 }, // wind - // bolt - { 1163, 23, 711, 120, 121, 122, 10, 16, 556, 2, 555, 2, 562, 1, 0, - 0, 0 }, // water - // bolt - { 1166, 29, 711, 123, 124, 125, 11, 20, 556, 2, 557, 3, 562, 1, 0, - 0, 0 }, // earth - // bolt - { 1169, 35, 711, 126, 127, 128, 12, 22, 556, 3, 554, 4, 562, 1, 0, - 0, 0 }, // fire - // bolt - { 1172, 41, 711, 132, 133, 134, 13, 25, 556, 3, 560, 1, 0, 0, 0, 0, - 0 }, // wind - // blast - { 1175, 47, 711, 135, 136, 137, 14, 28, 556, 3, 555, 3, 560, 1, 0, - 0, 0 }, // water - // blast - { 1177, 53, 711, 138, 139, 140, 15, 31, 556, 3, 557, 4, 560, 1, 0, - 0, 0 }, // earth - // blast - { 1181, 59, 711, 129, 130, 131, 16, 35, 556, 4, 554, 5, 560, 1, 0, - 0, 0 }, // fire - // blast - { 1183, 62, 727, 158, 159, 160, 17, 36, 556, 5, 565, 1, 0, 0, 0, 0, - 0 }, // wind - // wave - { 1185, 65, 727, 161, 162, 163, 18, 37, 556, 5, 555, 7, 565, 1, 0, - 0, 0 }, // water - // wave - { 1188, 70, 727, 164, 165, 166, 19, 40, 556, 5, 557, 7, 565, 1, 0, - 0, 0 }, // earth - // wave - { 1189, 75, 727, 155, 156, 157, 20, 42, 556, 5, 554, 7, 565, 1, 0, - 0, 0 }, // fire - // wave - - { 1153, 3, 716, 102, 103, 104, 0, 13, 555, 3, 557, 2, 559, 1, 0, 0, - 0 }, // confuse - { 1157, 11, 716, 105, 106, 107, 0, 20, 555, 3, 557, 2, 559, 1, 0, - 0, 0 }, // weaken - { 1161, 19, 716, 108, 109, 110, 0, 29, 555, 2, 557, 3, 559, 1, 0, - 0, 0 }, // curse - { 1542, 66, 729, 167, 168, 169, 0, 76, 557, 5, 555, 5, 566, 1, 0, - 0, 0 }, // vulnerability - { 1543, 73, 729, 170, 171, 172, 0, 83, 557, 8, 555, 8, 566, 1, 0, - 0, 0 }, // enfeeble - { 1562, 80, 729, 173, 174, 107, 0, 90, 557, 12, 555, 12, 556, 1, 0, - 0, 0 }, // stun - - { 1572, 20, 710, 177, 178, 181, 0, 30, 557, 3, 555, 3, 561, 2, 0, - 0, 0 }, // bind - { 1582, 50, 710, 177, 178, 180, 2, 60, 557, 4, 555, 4, 561, 3, 0, - 0, 0 }, // snare - { 1592, 79, 710, 177, 178, 179, 4, 90, 557, 5, 555, 5, 561, 4, 0, - 0, 0 }, // entangle - - { 1171, 39, 724, 145, 146, 147, 15, 25, 556, 2, 557, 2, 562, 1, 0, 0, 0 }, // crumble - { 1539, 50, 708, 87, 88, 89, 25, 42, 554, 5, 560, 1, 0, 0, 0, 0, 0 }, // iban - // blast - { 12037, 50, 1576, 327, 328, 329, 19, 30, 560, 1, 558, 4, 0, 0, 0, - 0, 0 }, // magic - // dart - - { 1190, 60, 811, 0, 0, 76, 20, 60, 554, 2, 565, 2, 556, 4, 0, 0, 0 }, // sara - // strike - { 1191, 60, 811, 0, 0, 77, 20, 60, 554, 1, 565, 2, 556, 4, 0, 0, 0 }, // cause - // of - // guthix - { 1192, 60, 811, 0, 0, 78, 20, 60, 554, 4, 565, 2, 556, 1, 0, 0, 0 }, // flames - // of - // zammy - - { 12445, 85, 1819, 0, 344, 345, 0, 65, 563, 1, 562, 1, 560, 1, 0, - 0, 0 }, // teleblock - - // Ancient Spells - { 12939, 50, 1978, 0, 384, 385, 13, 30, 560, 2, 562, 2, 554, 1, - 556, 1, 0 }, // smoke - // rush - { 12987, 52, 1978, 0, 378, 379, 14, 31, 560, 2, 562, 2, 566, 1, - 556, 1, 0 }, // shadow - // rush - { 12901, 56, 1978, 0, 0, 373, 15, 33, 560, 2, 562, 2, 565, 1, 0, 0, - 0 }, // blood - // rush - { 12861, 58, 1978, 0, 360, 361, 16, 34, 560, 2, 562, 2, 555, 2, 0, - 0, 0 }, // ice - // rush - { 12963, 62, 1979, 0, 0, 389, 19, 36, 560, 2, 562, 4, 556, 2, 554, - 2, 0 }, // smoke - // burst - { 13011, 64, 1979, 0, 0, 382, 20, 37, 560, 2, 562, 4, 556, 2, 566, - 2, 0 }, // shadow - // burst - { 12919, 68, 1979, 0, 0, 376, 21, 39, 560, 2, 562, 4, 565, 2, 0, 0, - 0 }, // blood - // burst - { 12881, 70, 1979, 0, 0, 363, 22, 40, 560, 2, 562, 4, 555, 4, 0, 0, - 0 }, // ice - // burst - { 12951, 74, 1978, 0, 386, 387, 23, 42, 560, 2, 554, 2, 565, 2, - 556, 2, 0 }, // smoke - // blitz - { 12999, 76, 1978, 0, 380, 381, 24, 43, 560, 2, 565, 2, 556, 2, - 566, 2, 0 }, // shadow - // blitz - { 12911, 80, 1978, 0, 374, 375, 25, 45, 560, 2, 565, 4, 0, 0, 0, 0, - 0 }, // blood - // blitz - { 12871, 82, 1978, 366, 0, 367, 26, 46, 560, 2, 565, 2, 555, 3, 0, - 0, 0 }, // ice - // blitz - { 12975, 86, 1979, 0, 0, 391, 27, 48, 560, 4, 565, 2, 556, 4, 554, - 4, 0 }, // smoke - // barrage - { 13023, 88, 1979, 0, 0, 383, 28, 49, 560, 4, 565, 2, 556, 4, 566, - 3, 0 }, // shadow - // barrage - { 12929, 92, 1979, 0, 0, 377, 29, 51, 560, 4, 565, 4, 566, 1, 0, 0, - 0 }, // blood - // barrage - { 12891, 94, 1979, 0, 0, 369, 30, 52, 560, 4, 565, 2, 555, 6, 0, 0, - 0 }, // ice - // barrage - - { -1, 80, 811, 301, 0, 0, 0, 0, 554, 3, 565, 3, 556, 3, 0, 0, 0 }, // charge - { -1, 21, 712, 112, 0, 0, 0, 10, 554, 3, 561, 1, 0, 0, 0, 0, 0 }, // low - // alch - { -1, 55, 713, 113, 0, 0, 0, 20, 554, 5, 561, 1, 0, 0, 0, 0, 0 }, // high - // alch - { -1, 33, 728, 142, 143, 144, 0, 35, 556, 1, 563, 1, 0, 0, 0, 0, 0 } // telegrab - - }; - - public static String getSpellName(int id) { - switch (id) { - case 0: - return "Air Strike"; - case 1: - return "Water Strike"; - case 2: - return "Earth Strike"; - case 3: - return "Fire Strike"; - case 4: - return "Air Bolt"; - case 5: - return "Water Bolt"; - case 6: - return "Earth Bolt"; - case 7: - return "Fire Bolt"; - case 8: - return "Air Blast"; - case 9: - return "Water Blast"; - case 10: - return "Earth Blast"; - case 11: - return "Fire Blast"; - case 12: - return "Air Wave"; - case 13: - return "Water Wave"; - case 14: - return "Earth Wave"; - case 15: - return "Fire Wave"; - case 32: - return "Shadow Rush"; - case 33: - return "Smoke Rush"; - case 34: - return "Blood Rush"; - case 35: - return "Ice Rush"; - case 36: - return "Shadow Burst"; - case 37: - return "Smoke Burst"; - case 38: - return "Blood Burst"; - case 39: - return "Ice Burst"; - case 40: - return "Shadow Blitz"; - case 41: - return "Smoke Blitz"; - case 42: - return "Blood Blitz"; - case 43: - return "Ice Blitz"; - case 44: - return "Shadow Barrage"; - case 45: - return "Smoke Barrage"; - case 46: - return "Blood Barrage"; - case 47: - return "Ice Barrage"; - default: - return "Select Spell"; - } - } - - public static boolean multis(Client c) { - switch (MAGIC_SPELLS[c.oldSpellId][0]) { - case 12891: - case 12881: - case 13011: - case 13023: - case 12919: // blood spells - case 12929: - case 12963: - case 12975: - return true; - } - return false; - - } - - public static int getFreezeTime(Client c) { - switch (MAGIC_SPELLS[c.oldSpellId][0]) { - case 1572: - case 12861: // ice rush - return 10; - - case 1582: - case 12881: // ice burst - return 17; - - case 1592: - case 12871: // ice blitz - return 25; - - case 12891: // ice barrage - return 33; - - default: - return 0; - } - } - - public static int getStartHeight(Client c) { - switch (MAGIC_SPELLS[c.spellId][0]) { - case 1562: // stun - return 25; - - case 12939:// smoke rush - return 35; - - case 12987: // shadow rush - return 38; - - case 12861: // ice rush - return 15; - - case 12951: // smoke blitz - return 38; - - case 12999: // shadow blitz - return 25; - - case 12911: // blood blitz - return 25; - - default: - return 43; - } - } - - public static int getEndHeight(Client c) { - switch (MAGIC_SPELLS[c.spellId][0]) { - case 1562: // stun - return 10; - - case 12939: // smoke rush - return 20; - - case 12987: // shadow rush - return 28; - - case 12861: // ice rush - return 10; - - case 12951: // smoke blitz - return 28; - - case 12999: // shadow blitz - return 15; - - case 12911: // blood blitz - return 10; - - default: - return 31; - } - } - - public static int getStartDelay(Client c) { - switch (MAGIC_SPELLS[c.spellId][0]) { - case 1539: - return 60; - - default: - return 53; - } - } - - public static boolean godSpells(Client c) { - switch (MAGIC_SPELLS[c.spellId][0]) { - case 1190: - return true; - - case 1191: - return true; - - case 1192: - return true; - - default: - return false; - } - } - - public static int getEndGfxHeight(Client c) { - switch (MAGIC_SPELLS[c.oldSpellId][0]) { - case 12987: - case 12901: - case 12861: - case 12445: - case 1192: - case 13011: - case 12919: - case 12881: - case 12999: - case 12911: - case 12871: - case 13023: - case 12929: - case 12891: - return 0; - - default: - return 100; - } - } - - public static int getStartGfxHeight(Client c) { - switch (MAGIC_SPELLS[c.spellId][0]) { - case 12871: - case 12891: - return 0; - - default: - return 100; - } - } - - public static boolean fullVoidMage(Client c) { - return c.playerEquipment[c.playerHat] == 11663 - && c.playerEquipment[c.playerLegs] == 8840 - && c.playerEquipment[c.playerChest] == 8839 - && c.playerEquipment[c.playerHands] == 8842; - } - -} +package com.rebotted.game.content.combat.magic; + +import com.rebotted.game.players.Player; +public class MagicData { + + public static final int[][] MAGIC_SPELLS = { + // example {magicId, level req, animation, startGFX, projectile Id, + // endGFX, maxhit, exp gained, rune 1, rune 1 amount, rune 2, rune 2 + // amount, rune 3, rune 3 amount, rune 4, rune 4 amount} + + // Modern Spells + { 1152, 1, 711, 90, 91, 92, 2, 5, 556, 1, 558, 1, 0, 0, 0, 0, 993 }, // wind + // strike + { 1154, 5, 711, 93, 94, 95, 4, 7, 555, 1, 556, 1, 558, 1, 0, 0, 211 }, // water + // strike + { 1156, 9, 711, 96, 97, 98, 6, 9, 557, 2, 556, 1, 558, 1, 0, 0, 0 },// earth + // strike + { 1158, 13, 711, 99, 100, 101, 8, 11, 554, 3, 556, 2, 558, 1, 0, 0, + 0 }, // fire + // strike + { 1160, 17, 711, 117, 118, 119, 9, 13, 556, 2, 562, 1, 0, 0, 0, 0, + 0 }, // wind + // bolt + { 1163, 23, 711, 120, 121, 122, 10, 16, 556, 2, 555, 2, 562, 1, 0, + 0, 0 }, // water + // bolt + { 1166, 29, 711, 123, 124, 125, 11, 20, 556, 2, 557, 3, 562, 1, 0, + 0, 0 }, // earth + // bolt + { 1169, 35, 711, 126, 127, 128, 12, 22, 556, 3, 554, 4, 562, 1, 0, + 0, 0 }, // fire + // bolt + { 1172, 41, 711, 132, 133, 134, 13, 25, 556, 3, 560, 1, 0, 0, 0, 0, + 0 }, // wind + // blast + { 1175, 47, 711, 135, 136, 137, 14, 28, 556, 3, 555, 3, 560, 1, 0, + 0, 0 }, // water + // blast + { 1177, 53, 711, 138, 139, 140, 15, 31, 556, 3, 557, 4, 560, 1, 0, + 0, 0 }, // earth + // blast + { 1181, 59, 711, 129, 130, 131, 16, 35, 556, 4, 554, 5, 560, 1, 0, + 0, 0 }, // fire + // blast + { 1183, 62, 727, 158, 159, 160, 17, 36, 556, 5, 565, 1, 0, 0, 0, 0, + 0 }, // wind + // wave + { 1185, 65, 727, 161, 162, 163, 18, 37, 556, 5, 555, 7, 565, 1, 0, + 0, 0 }, // water + // wave + { 1188, 70, 727, 164, 165, 166, 19, 40, 556, 5, 557, 7, 565, 1, 0, + 0, 0 }, // earth + // wave + { 1189, 75, 727, 155, 156, 157, 20, 42, 556, 5, 554, 7, 565, 1, 0, + 0, 0 }, // fire + // wave + + { 1153, 3, 716, 102, 103, 104, 0, 13, 555, 3, 557, 2, 559, 1, 0, 0, + 0 }, // confuse + { 1157, 11, 716, 105, 106, 107, 0, 20, 555, 3, 557, 2, 559, 1, 0, + 0, 0 }, // weaken + { 1161, 19, 716, 108, 109, 110, 0, 29, 555, 2, 557, 3, 559, 1, 0, + 0, 0 }, // curse + { 1542, 66, 729, 167, 168, 169, 0, 76, 557, 5, 555, 5, 566, 1, 0, + 0, 0 }, // vulnerability + { 1543, 73, 729, 170, 171, 172, 0, 83, 557, 8, 555, 8, 566, 1, 0, + 0, 0 }, // enfeeble + { 1562, 80, 729, 173, 174, 107, 0, 90, 557, 12, 555, 12, 556, 1, 0, + 0, 0 }, // stun + + { 1572, 20, 710, 177, 178, 181, 0, 30, 557, 3, 555, 3, 561, 2, 0, + 0, 0 }, // bind + { 1582, 50, 710, 177, 178, 180, 2, 60, 557, 4, 555, 4, 561, 3, 0, + 0, 0 }, // snare + { 1592, 79, 710, 177, 178, 179, 4, 90, 557, 5, 555, 5, 561, 4, 0, + 0, 0 }, // entangle + + { 1171, 39, 724, 145, 146, 147, 15, 25, 556, 2, 557, 2, 562, 1, 0, 0, 0 }, // crumble + { 1539, 50, 708, 87, 88, 89, 25, 42, 554, 5, 560, 1, 0, 0, 0, 0, 0 }, // iban + // blast + { 12037, 50, 1576, 327, 328, 329, 19, 30, 560, 1, 558, 4, 0, 0, 0, + 0, 0 }, // magic + // dart + + { 1190, 60, 811, 0, 0, 76, 20, 60, 554, 2, 565, 2, 556, 4, 0, 0, 0 }, // sara + // strike + { 1191, 60, 811, 0, 0, 77, 20, 60, 554, 1, 565, 2, 556, 4, 0, 0, 0 }, // cause + // of + // guthix + { 1192, 60, 811, 0, 0, 78, 20, 60, 554, 4, 565, 2, 556, 1, 0, 0, 0 }, // flames + // of + // zammy + + { 12445, 85, 1819, 0, 344, 345, 0, 65, 563, 1, 562, 1, 560, 1, 0, + 0, 0 }, // teleblock + + // Ancient Spells + { 12939, 50, 1978, 0, 384, 385, 13, 30, 560, 2, 562, 2, 554, 1, + 556, 1, 0 }, // smoke + // rush + { 12987, 52, 1978, 0, 378, 379, 14, 31, 560, 2, 562, 2, 566, 1, + 556, 1, 0 }, // shadow + // rush + { 12901, 56, 1978, 0, 0, 373, 15, 33, 560, 2, 562, 2, 565, 1, 0, 0, + 0 }, // blood + // rush + { 12861, 58, 1978, 0, 360, 361, 16, 34, 560, 2, 562, 2, 555, 2, 0, + 0, 0 }, // ice + // rush + { 12963, 62, 1979, 0, 0, 389, 19, 36, 560, 2, 562, 4, 556, 2, 554, + 2, 0 }, // smoke + // burst + { 13011, 64, 1979, 0, 0, 382, 20, 37, 560, 2, 562, 4, 556, 2, 566, + 2, 0 }, // shadow + // burst + { 12919, 68, 1979, 0, 0, 376, 21, 39, 560, 2, 562, 4, 565, 2, 0, 0, + 0 }, // blood + // burst + { 12881, 70, 1979, 0, 0, 363, 22, 40, 560, 2, 562, 4, 555, 4, 0, 0, + 0 }, // ice + // burst + { 12951, 74, 1978, 0, 386, 387, 23, 42, 560, 2, 554, 2, 565, 2, + 556, 2, 0 }, // smoke + // blitz + { 12999, 76, 1978, 0, 380, 381, 24, 43, 560, 2, 565, 2, 556, 2, + 566, 2, 0 }, // shadow + // blitz + { 12911, 80, 1978, 0, 374, 375, 25, 45, 560, 2, 565, 4, 0, 0, 0, 0, + 0 }, // blood + // blitz + { 12871, 82, 1978, 366, 0, 367, 26, 46, 560, 2, 565, 2, 555, 3, 0, + 0, 0 }, // ice + // blitz + { 12975, 86, 1979, 0, 0, 391, 27, 48, 560, 4, 565, 2, 556, 4, 554, + 4, 0 }, // smoke + // barrage + { 13023, 88, 1979, 0, 0, 383, 28, 49, 560, 4, 565, 2, 556, 4, 566, + 3, 0 }, // shadow + // barrage + { 12929, 92, 1979, 0, 0, 377, 29, 51, 560, 4, 565, 4, 566, 1, 0, 0, + 0 }, // blood + // barrage + { 12891, 94, 1979, 0, 0, 369, 30, 52, 560, 4, 565, 2, 555, 6, 0, 0, + 0 }, // ice + // barrage + + { -1, 80, 811, 301, 0, 0, 0, 0, 554, 3, 565, 3, 556, 3, 0, 0, 0 }, // charge + { -1, 21, 712, 112, 0, 0, 0, 10, 554, 3, 561, 1, 0, 0, 0, 0, 0 }, // low + // alch + { -1, 55, 713, 113, 0, 0, 0, 20, 554, 5, 561, 1, 0, 0, 0, 0, 0 }, // high + // alch + { -1, 33, 728, 142, 143, 144, 0, 35, 556, 1, 563, 1, 0, 0, 0, 0, 0 } // telegrab + + }; + + public static String getSpellName(int id) { + switch (id) { + case 0: + return "Air Strike"; + case 1: + return "Water Strike"; + case 2: + return "Earth Strike"; + case 3: + return "Fire Strike"; + case 4: + return "Air Bolt"; + case 5: + return "Water Bolt"; + case 6: + return "Earth Bolt"; + case 7: + return "Fire Bolt"; + case 8: + return "Air Blast"; + case 9: + return "Water Blast"; + case 10: + return "Earth Blast"; + case 11: + return "Fire Blast"; + case 12: + return "Air Wave"; + case 13: + return "Water Wave"; + case 14: + return "Earth Wave"; + case 15: + return "Fire Wave"; + case 32: + return "Shadow Rush"; + case 33: + return "Smoke Rush"; + case 34: + return "Blood Rush"; + case 35: + return "Ice Rush"; + case 36: + return "Shadow Burst"; + case 37: + return "Smoke Burst"; + case 38: + return "Blood Burst"; + case 39: + return "Ice Burst"; + case 40: + return "Shadow Blitz"; + case 41: + return "Smoke Blitz"; + case 42: + return "Blood Blitz"; + case 43: + return "Ice Blitz"; + case 44: + return "Shadow Barrage"; + case 45: + return "Smoke Barrage"; + case 46: + return "Blood Barrage"; + case 47: + return "Ice Barrage"; + default: + return "Select Spell"; + } + } + + public static boolean multis(Player c) { + switch (MAGIC_SPELLS[c.oldSpellId][0]) { + case 12891: + case 12881: + case 13011: + case 13023: + case 12919: // blood spells + case 12929: + case 12963: + case 12975: + return true; + } + return false; + + } + + public static int getFreezeTime(Player c) { + switch (MAGIC_SPELLS[c.oldSpellId][0]) { + case 1572: + case 12861: // ice rush + return 10; + + case 1582: + case 12881: // ice burst + return 17; + + case 1592: + case 12871: // ice blitz + return 25; + + case 12891: // ice barrage + return 33; + + default: + return 0; + } + } + + public static int getStartHeight(Player c) { + switch (MAGIC_SPELLS[c.spellId][0]) { + case 1562: // stun + return 25; + + case 12939:// smoke rush + return 35; + + case 12987: // shadow rush + return 38; + + case 12861: // ice rush + return 15; + + case 12951: // smoke blitz + return 38; + + case 12999: // shadow blitz + return 25; + + case 12911: // blood blitz + return 25; + + default: + return 43; + } + } + + public static int getEndHeight(Player c) { + switch (MAGIC_SPELLS[c.spellId][0]) { + case 1562: // stun + return 10; + + case 12939: // smoke rush + return 20; + + case 12987: // shadow rush + return 28; + + case 12861: // ice rush + return 10; + + case 12951: // smoke blitz + return 28; + + case 12999: // shadow blitz + return 15; + + case 12911: // blood blitz + return 10; + + default: + return 31; + } + } + + public static int getStartDelay(Player c) { + switch (MAGIC_SPELLS[c.spellId][0]) { + case 1539: + return 60; + + default: + return 53; + } + } + + public static boolean godSpells(Player c) { + switch (MAGIC_SPELLS[c.spellId][0]) { + case 1190: + return true; + + case 1191: + return true; + + case 1192: + return true; + + default: + return false; + } + } + + public static int getEndGfxHeight(Player c) { + switch (MAGIC_SPELLS[c.oldSpellId][0]) { + case 12987: + case 12901: + case 12861: + case 12445: + case 1192: + case 13011: + case 12919: + case 12881: + case 12999: + case 12911: + case 12871: + case 13023: + case 12929: + case 12891: + return 0; + + default: + return 100; + } + } + + public static int getStartGfxHeight(Player c) { + switch (MAGIC_SPELLS[c.spellId][0]) { + case 12871: + case 12891: + return 0; + + default: + return 100; + } + } + + public static boolean fullVoidMage(Player c) { + return c.playerEquipment[c.playerHat] == 11663 + && c.playerEquipment[c.playerLegs] == 8840 + && c.playerEquipment[c.playerChest] == 8839 + && c.playerEquipment[c.playerHands] == 8842; + } + +} diff --git a/2006Redone Server/src/redone/game/content/combat/magic/MagicMaxHit.java b/2006Redone Server/src/com/rebotted/game/content/combat/magic/MagicMaxHit.java similarity index 84% rename from 2006Redone Server/src/redone/game/content/combat/magic/MagicMaxHit.java rename to 2006Redone Server/src/com/rebotted/game/content/combat/magic/MagicMaxHit.java index 8ad501da..2c543ece 100644 --- a/2006Redone Server/src/redone/game/content/combat/magic/MagicMaxHit.java +++ b/2006Redone Server/src/com/rebotted/game/content/combat/magic/MagicMaxHit.java @@ -1,38 +1,38 @@ -package redone.game.content.combat.magic; - -import redone.game.players.Client; - -public class MagicMaxHit { - - public static int mageAttackBonus(Client c) { - int magicBonus = c.playerLevel[6]; - if (MagicData.fullVoidMage(c)) { - magicBonus += c.getLevelForXP(c.playerXP[6]) * 0.2; - } - if (c.getPrayer().prayerActive[4]) { - magicBonus *= 1.05; - } else if (c.getPrayer().prayerActive[12]) { - magicBonus *= 1.10; - } else if (c.getPrayer().prayerActive[20]) { - magicBonus *= 1.15; - } - return magicBonus + c.playerBonus[3] * 2; - } - - public static int mageDefenceBonus(Client c) { - int defenceBonus = c.playerLevel[1] / 2 + c.playerLevel[6] / 2; - if (c.getPrayer().prayerActive[0]) { - defenceBonus += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.05; - } else if (c.getPrayer().prayerActive[3]) { - defenceBonus += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.1; - } else if (c.getPrayer().prayerActive[9]) { - defenceBonus += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.15; - } else if (c.getPrayer().prayerActive[18]) { - defenceBonus += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.2; - } else if (c.getPrayer().prayerActive[19]) { - defenceBonus += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.25; - } - return defenceBonus + c.playerBonus[8] + c.playerBonus[8] / 3; - } - -} +package com.rebotted.game.content.combat.magic; + +import com.rebotted.game.players.Player; + +public class MagicMaxHit { + + public static int mageAttackBonus(Player c) { + int magicBonus = c.playerLevel[6]; + if (MagicData.fullVoidMage(c)) { + magicBonus += c.getLevelForXP(c.playerXP[6]) * 0.2; + } + if (c.getPrayer().prayerActive[4]) { + magicBonus *= 1.05; + } else if (c.getPrayer().prayerActive[12]) { + magicBonus *= 1.10; + } else if (c.getPrayer().prayerActive[20]) { + magicBonus *= 1.15; + } + return magicBonus + c.playerBonus[3] * 2; + } + + public static int mageDefenceBonus(Player c) { + int defenceBonus = c.playerLevel[1] / 2 + c.playerLevel[6] / 2; + if (c.getPrayer().prayerActive[0]) { + defenceBonus += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.05; + } else if (c.getPrayer().prayerActive[3]) { + defenceBonus += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.1; + } else if (c.getPrayer().prayerActive[9]) { + defenceBonus += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.15; + } else if (c.getPrayer().prayerActive[18]) { + defenceBonus += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.2; + } else if (c.getPrayer().prayerActive[19]) { + defenceBonus += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.25; + } + return defenceBonus + c.playerBonus[8] + c.playerBonus[8] / 3; + } + +} diff --git a/2006Redone Server/src/redone/game/content/combat/magic/MagicRequirements.java b/2006Redone Server/src/com/rebotted/game/content/combat/magic/MagicRequirements.java similarity index 87% rename from 2006Redone Server/src/redone/game/content/combat/magic/MagicRequirements.java rename to 2006Redone Server/src/com/rebotted/game/content/combat/magic/MagicRequirements.java index 38faf0db..0330aedd 100644 --- a/2006Redone Server/src/redone/game/content/combat/magic/MagicRequirements.java +++ b/2006Redone Server/src/com/rebotted/game/content/combat/magic/MagicRequirements.java @@ -1,175 +1,175 @@ -package redone.game.content.combat.magic; - -import redone.game.items.ItemAssistant; -import redone.game.players.Client; -import redone.game.players.PlayerHandler; - -public class MagicRequirements { - - public static boolean wearingStaff(Client c, int runeId) { - int wep = c.playerEquipment[c.playerWeapon]; - switch (runeId) { - case 554: - if (wep == 1387 || wep == 1393 || wep == 3053) { - return true; - } - break; - case 555: - if (wep == 1383 || wep == 1395) { - return true; - } - break; - case 556: - if (wep == 1381 || wep == 1397) { - return true; - } - break; - case 557: - if (wep == 1385 || wep == 1399 || wep == 3053) { - return true; - } - break; - } - return false; - } - - public static boolean checkMagicReqs(Client c, int spell) { - if (c.usingMagic && MagicTeleports.RUNES_REQUIRED) { // check for runes - if (!c.getItemAssistant().playerHasItem( - MagicData.MAGIC_SPELLS[spell][8], - MagicData.MAGIC_SPELLS[spell][9]) - && !wearingStaff(c, MagicData.MAGIC_SPELLS[spell][8]) - || !c.getItemAssistant().playerHasItem( - MagicData.MAGIC_SPELLS[spell][10], - MagicData.MAGIC_SPELLS[spell][11]) - && !wearingStaff(c, MagicData.MAGIC_SPELLS[spell][10]) - || !c.getItemAssistant().playerHasItem( - MagicData.MAGIC_SPELLS[spell][12], - MagicData.MAGIC_SPELLS[spell][13]) - && !wearingStaff(c, MagicData.MAGIC_SPELLS[spell][12]) - || !c.getItemAssistant().playerHasItem( - MagicData.MAGIC_SPELLS[spell][14], - MagicData.MAGIC_SPELLS[spell][15]) - && !wearingStaff(c, MagicData.MAGIC_SPELLS[spell][14])) { - c.getActionSender() - .sendMessage( - "You don't have the required runes to cast this spell."); - return false; - } - } - - if (c.usingMagic && c.playerIndex > 0) { - if (PlayerHandler.players[c.playerIndex] != null) { - for (int r = 0; r < c.REDUCE_SPELLS.length; r++) { // reducing - // spells, - // confuse - // etc - if (PlayerHandler.players[c.playerIndex].REDUCE_SPELLS[r] == MagicData.MAGIC_SPELLS[spell][0]) { - c.reduceSpellId = r; - if (System.currentTimeMillis() - - PlayerHandler.players[c.playerIndex].reduceSpellDelay[c.reduceSpellId] > PlayerHandler.players[c.playerIndex].REDUCE_SPELL_TIME[c.reduceSpellId]) { - PlayerHandler.players[c.playerIndex].canUseReducingSpell[c.reduceSpellId] = true; - } else { - PlayerHandler.players[c.playerIndex].canUseReducingSpell[c.reduceSpellId] = false; - } - break; - } - } - if (!PlayerHandler.players[c.playerIndex].canUseReducingSpell[c.reduceSpellId]) { - c.getActionSender().sendMessage( - "That player is currently immune to this spell."); - c.usingMagic = false; - c.stopMovement(); - c.getCombatAssistant().resetPlayerAttack(); - return false; - } - } - } - - int staffRequired = getStaffNeeded(c); - if (c.usingMagic && staffRequired > 0 && MagicTeleports.RUNES_REQUIRED) { // staff - // required - if (c.playerEquipment[c.playerWeapon] != staffRequired) { - c.getActionSender() - .sendMessage( - "You need a " - + ItemAssistant.getItemName( - staffRequired).toLowerCase() - + " to cast this spell."); - return false; - } - } - - if (c.usingMagic && MagicTeleports.MAGIC_LEVEL_REQUIRED) { // check magic level - if (c.playerLevel[6] < MagicData.MAGIC_SPELLS[spell][1]) { - c.getActionSender().sendMessage( - "You need to have a magic level of " - + MagicData.MAGIC_SPELLS[spell][1] - + " to cast this spell."); - return false; - } - } - if (c.usingMagic && MagicTeleports.RUNES_REQUIRED) { - if (MagicData.MAGIC_SPELLS[spell][8] > 0) { // deleting runes - if (!wearingStaff(c, MagicData.MAGIC_SPELLS[spell][8])) { - c.getItemAssistant().deleteItem( - MagicData.MAGIC_SPELLS[spell][8], - c.getItemAssistant().getItemSlot( - MagicData.MAGIC_SPELLS[spell][8]), - MagicData.MAGIC_SPELLS[spell][9]); - } - } - if (MagicData.MAGIC_SPELLS[spell][10] > 0) { - if (!wearingStaff(c, MagicData.MAGIC_SPELLS[spell][10])) { - c.getItemAssistant().deleteItem( - MagicData.MAGIC_SPELLS[spell][10], - c.getItemAssistant().getItemSlot( - MagicData.MAGIC_SPELLS[spell][10]), - MagicData.MAGIC_SPELLS[spell][11]); - } - } - if (MagicData.MAGIC_SPELLS[spell][12] > 0) { - if (!wearingStaff(c, MagicData.MAGIC_SPELLS[spell][12])) { - c.getItemAssistant().deleteItem( - MagicData.MAGIC_SPELLS[spell][12], - c.getItemAssistant().getItemSlot( - MagicData.MAGIC_SPELLS[spell][12]), - MagicData.MAGIC_SPELLS[spell][13]); - } - } - if (MagicData.MAGIC_SPELLS[spell][14] > 0) { - if (!wearingStaff(c, MagicData.MAGIC_SPELLS[spell][14])) { - c.getItemAssistant().deleteItem( - MagicData.MAGIC_SPELLS[spell][14], - c.getItemAssistant().getItemSlot( - MagicData.MAGIC_SPELLS[spell][14]), - MagicData.MAGIC_SPELLS[spell][15]); - } - } - } - return true; - } - - public static int getStaffNeeded(Client c) { - switch (MagicData.MAGIC_SPELLS[c.spellId][0]) { - case 1539: - return 1409; - - case 12037: - return 4170; - - case 1190: - return 2415; - - case 1191: - return 2416; - - case 1192: - return 2417; - - default: - return 0; - } - } - -} +package com.rebotted.game.content.combat.magic; + +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerHandler; + +public class MagicRequirements { + + public static boolean wearingStaff(Player player, int runeId) { + int wep = player.playerEquipment[player.playerWeapon]; + switch (runeId) { + case 554: + if (wep == 1387 || wep == 1393 || wep == 3053) { + return true; + } + break; + case 555: + if (wep == 1383 || wep == 1395) { + return true; + } + break; + case 556: + if (wep == 1381 || wep == 1397) { + return true; + } + break; + case 557: + if (wep == 1385 || wep == 1399 || wep == 3053) { + return true; + } + break; + } + return false; + } + + public static boolean checkMagicReqs(Player c, int spell) { + if (c.usingMagic && MagicTeleports.RUNES_REQUIRED) { // check for runes + if (!c.getItemAssistant().playerHasItem( + MagicData.MAGIC_SPELLS[spell][8], + MagicData.MAGIC_SPELLS[spell][9]) + && !wearingStaff(c, MagicData.MAGIC_SPELLS[spell][8]) + || !c.getItemAssistant().playerHasItem( + MagicData.MAGIC_SPELLS[spell][10], + MagicData.MAGIC_SPELLS[spell][11]) + && !wearingStaff(c, MagicData.MAGIC_SPELLS[spell][10]) + || !c.getItemAssistant().playerHasItem( + MagicData.MAGIC_SPELLS[spell][12], + MagicData.MAGIC_SPELLS[spell][13]) + && !wearingStaff(c, MagicData.MAGIC_SPELLS[spell][12]) + || !c.getItemAssistant().playerHasItem( + MagicData.MAGIC_SPELLS[spell][14], + MagicData.MAGIC_SPELLS[spell][15]) + && !wearingStaff(c, MagicData.MAGIC_SPELLS[spell][14])) { + c.getPacketSender() + .sendMessage( + "You don't have the required runes to cast this spell."); + return false; + } + } + + if (c.usingMagic && c.playerIndex > 0) { + if (PlayerHandler.players[c.playerIndex] != null) { + for (int r = 0; r < c.REDUCE_SPELLS.length; r++) { // reducing + // spells, + // confuse + // etc + if (PlayerHandler.players[c.playerIndex].REDUCE_SPELLS[r] == MagicData.MAGIC_SPELLS[spell][0]) { + c.reduceSpellId = r; + if (System.currentTimeMillis() + - PlayerHandler.players[c.playerIndex].reduceSpellDelay[c.reduceSpellId] > PlayerHandler.players[c.playerIndex].REDUCE_SPELL_TIME[c.reduceSpellId]) { + PlayerHandler.players[c.playerIndex].canUseReducingSpell[c.reduceSpellId] = true; + } else { + PlayerHandler.players[c.playerIndex].canUseReducingSpell[c.reduceSpellId] = false; + } + break; + } + } + if (!PlayerHandler.players[c.playerIndex].canUseReducingSpell[c.reduceSpellId]) { + c.getPacketSender().sendMessage( + "That player is currently immune to this spell."); + c.usingMagic = false; + c.stopMovement(); + c.getCombatAssistant().resetPlayerAttack(); + return false; + } + } + } + + int staffRequired = getStaffNeeded(c); + if (c.usingMagic && staffRequired > 0 && MagicTeleports.RUNES_REQUIRED) { // staff + // required + if (c.playerEquipment[c.playerWeapon] != staffRequired) { + c.getPacketSender() + .sendMessage( + "You need a " + + ItemAssistant.getItemName( + staffRequired).toLowerCase() + + " to cast this spell."); + return false; + } + } + + if (c.usingMagic && MagicTeleports.MAGIC_LEVEL_REQUIRED) { // check magic level + if (c.playerLevel[6] < MagicData.MAGIC_SPELLS[spell][1]) { + c.getPacketSender().sendMessage( + "You need to have a magic level of " + + MagicData.MAGIC_SPELLS[spell][1] + + " to cast this spell."); + return false; + } + } + if (c.usingMagic && MagicTeleports.RUNES_REQUIRED) { + if (MagicData.MAGIC_SPELLS[spell][8] > 0) { // deleting runes + if (!wearingStaff(c, MagicData.MAGIC_SPELLS[spell][8])) { + c.getItemAssistant().deleteItem( + MagicData.MAGIC_SPELLS[spell][8], + c.getItemAssistant().getItemSlot( + MagicData.MAGIC_SPELLS[spell][8]), + MagicData.MAGIC_SPELLS[spell][9]); + } + } + if (MagicData.MAGIC_SPELLS[spell][10] > 0) { + if (!wearingStaff(c, MagicData.MAGIC_SPELLS[spell][10])) { + c.getItemAssistant().deleteItem( + MagicData.MAGIC_SPELLS[spell][10], + c.getItemAssistant().getItemSlot( + MagicData.MAGIC_SPELLS[spell][10]), + MagicData.MAGIC_SPELLS[spell][11]); + } + } + if (MagicData.MAGIC_SPELLS[spell][12] > 0) { + if (!wearingStaff(c, MagicData.MAGIC_SPELLS[spell][12])) { + c.getItemAssistant().deleteItem( + MagicData.MAGIC_SPELLS[spell][12], + c.getItemAssistant().getItemSlot( + MagicData.MAGIC_SPELLS[spell][12]), + MagicData.MAGIC_SPELLS[spell][13]); + } + } + if (MagicData.MAGIC_SPELLS[spell][14] > 0) { + if (!wearingStaff(c, MagicData.MAGIC_SPELLS[spell][14])) { + c.getItemAssistant().deleteItem( + MagicData.MAGIC_SPELLS[spell][14], + c.getItemAssistant().getItemSlot( + MagicData.MAGIC_SPELLS[spell][14]), + MagicData.MAGIC_SPELLS[spell][15]); + } + } + } + return true; + } + + public static int getStaffNeeded(Player c) { + switch (MagicData.MAGIC_SPELLS[c.spellId][0]) { + case 1539: + return 1409; + + case 12037: + return 4170; + + case 1190: + return 2415; + + case 1191: + return 2416; + + case 1192: + return 2417; + + default: + return 0; + } + } + +} diff --git a/2006Redone Server/src/redone/game/content/combat/magic/MagicSpells.java b/2006Redone Server/src/com/rebotted/game/content/combat/magic/MagicSpells.java similarity index 79% rename from 2006Redone Server/src/redone/game/content/combat/magic/MagicSpells.java rename to 2006Redone Server/src/com/rebotted/game/content/combat/magic/MagicSpells.java index fa7d8d3e..4d7c19a3 100644 --- a/2006Redone Server/src/redone/game/content/combat/magic/MagicSpells.java +++ b/2006Redone Server/src/com/rebotted/game/content/combat/magic/MagicSpells.java @@ -1,139 +1,140 @@ -package redone.game.content.combat.magic; - -import redone.Constants; -import redone.game.content.music.sound.SoundList; -import redone.game.players.Client; -import redone.game.players.PlayerHandler; -import redone.util.Misc; - -public class MagicSpells extends MagicData { - - public static void appendMultiBarrage(Client c, int playerId, boolean splashed) { - if (PlayerHandler.players[playerId] != null) { - Client c2 = (Client) PlayerHandler.players[playerId]; - if (c2.isDead || c2.respawnTimer > 0) { - return; - } - if (checkMultiBarrageReqs(c, playerId)) { - c.barrageCount++; - if (Misc.random(mageAtk(c)) > Misc.random(mageDef(c)) - && !c.magicFailed) { - if (getEndGfxHeight(c) == 100) { // end GFX - c2.gfx100(MagicData.MAGIC_SPELLS[c.oldSpellId][5]); - } else { - c2.gfx0(MagicData.MAGIC_SPELLS[c.oldSpellId][5]); - } - int damage = Misc - .random(MagicData.MAGIC_SPELLS[c.oldSpellId][6]); - if (c2.getPrayer().prayerActive[12]) { - damage *= (int) .60; - } - if (c2.playerLevel[3] - damage < 0) { - damage = c2.playerLevel[3]; - } - c.getPlayerAssistant().addSkillXP(MagicData.MAGIC_SPELLS[c.oldSpellId][7] + damage * Constants.MAGIC_EXP_RATE, 6); - c.getPlayerAssistant().addSkillXP(MagicData.MAGIC_SPELLS[c.oldSpellId][7] + damage / 3, 3); - // Server.playerHandler.players[playerId].setHitDiff(damage); - // Server.playerHandler.players[playerId].setHitUpdateRequired(true); - PlayerHandler.players[playerId].handleHitMask(damage); - // Server.playerHandler.players[playerId].playerLevel[3] -= - // damage; - PlayerHandler.players[playerId].dealDamage(damage); - PlayerHandler.players[playerId].damageTaken[c.playerId] += damage; - c2.getPlayerAssistant().refreshSkill(3); - c.totalPlayerDamageDealt += damage; - multiSpellEffect(c, playerId, damage); - } else { - c2.gfx100(85); - c.getActionSender().sendSound(SoundList.MAGE_FAIL, 100, - 0); - } - } - } - } - - public static void multiSpellEffect(Client c, int playerId, int damage) { - switch (MagicData.MAGIC_SPELLS[c.oldSpellId][0]) { - case 13011: - case 13023: - if (System.currentTimeMillis() - - PlayerHandler.players[playerId].reduceStat > 35000) { - PlayerHandler.players[playerId].reduceStat = System - .currentTimeMillis(); - PlayerHandler.players[playerId].playerLevel[0] -= PlayerHandler.players[playerId] - .getLevelForXP(PlayerHandler.players[playerId].playerXP[0]) * 10 / 100; - } - break; - case 12919: // blood spells - case 12929: - int heal = damage / 4; - if (c.playerLevel[3] + heal >= c.getPlayerAssistant() - .getLevelForXP(c.playerXP[3])) { - c.playerLevel[3] = c.getPlayerAssistant().getLevelForXP( - c.playerXP[3]); - } else { - c.playerLevel[3] += heal; - } - c.getPlayerAssistant().refreshSkill(3); - break; - case 12891: - case 12881: - if (PlayerHandler.players[playerId].freezeTimer < -4) { - PlayerHandler.players[playerId].freezeTimer = getFreezeTime(c); - PlayerHandler.players[playerId].stopMovement(); - } - break; - } - } - - public static boolean checkMultiBarrageReqs(Client c, int i) { - if (PlayerHandler.players[i] == null) { - return false; - } - if (i == c.playerId) { - return false; - } - if (c.inPits && PlayerHandler.players[i].inPits) { - return true; - } - if (!PlayerHandler.players[i].inWild()) { - return false; - } - if (Constants.COMBAT_LEVEL_DIFFERENCE) { - int combatDif1 = c.getCombatAssistant().getCombatDifference(c.combatLevel, - PlayerHandler.players[i].combatLevel); - if (combatDif1 > c.wildLevel - || combatDif1 > PlayerHandler.players[i].wildLevel) { - c.getActionSender() - .sendMessage( - "Your combat level difference is too great to attack that player here."); - return false; - } - } - - if (Constants.SINGLE_AND_MULTI_ZONES) { - if (!PlayerHandler.players[i].inMulti()) { // single combat - // zones - if (PlayerHandler.players[i].underAttackBy != c.playerId - && PlayerHandler.players[i].underAttackBy != 0) { - return false; - } - if (PlayerHandler.players[i].playerId != c.underAttackBy - && c.underAttackBy != 0) { - c.getActionSender().sendMessage( - "You are already in combat."); - return false; - } - } - } - return true; - } - - public static int mageAtk(Client c) { - return MagicMaxHit.mageAttackBonus(c); - } - - public static int mageDef(Client c) { - return MagicMaxHit.mageDefenceBonus(c); - } +package com.rebotted.game.content.combat.magic; + +import com.rebotted.GameConstants; +import com.rebotted.game.content.music.sound.SoundList; +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerHandler; +import com.rebotted.util.Misc; + +public class MagicSpells extends MagicData { + + public static void appendMultiBarrage(Player c, int playerId, boolean splashed) { + if (PlayerHandler.players[playerId] != null) { + Player c2 = (Client) PlayerHandler.players[playerId]; + if (c2.isDead || c2.respawnTimer > 0) { + return; + } + if (checkMultiBarrageReqs(c, playerId)) { + c.barrageCount++; + if (Misc.random(mageAtk(c)) > Misc.random(mageDef(c)) + && !c.magicFailed) { + if (getEndGfxHeight(c) == 100) { // end GFX + c2.gfx100(MagicData.MAGIC_SPELLS[c.oldSpellId][5]); + } else { + c2.gfx0(MagicData.MAGIC_SPELLS[c.oldSpellId][5]); + } + int damage = Misc + .random(MagicData.MAGIC_SPELLS[c.oldSpellId][6]); + if (c2.getPrayer().prayerActive[12]) { + damage *= (int) .60; + } + if (c2.playerLevel[3] - damage < 0) { + damage = c2.playerLevel[3]; + } + c.getPlayerAssistant().addSkillXP(MagicData.MAGIC_SPELLS[c.oldSpellId][7] + damage * GameConstants.MAGIC_EXP_RATE, 6); + c.getPlayerAssistant().addSkillXP(MagicData.MAGIC_SPELLS[c.oldSpellId][7] + damage / 3, 3); + // Server.playerHandler.players[playerId].setHitDiff(damage); + // Server.playerHandler.players[playerId].setHitUpdateRequired(true); + PlayerHandler.players[playerId].handleHitMask(damage); + // Server.playerHandler.players[playerId].playerLevel[3] -= + // damage; + PlayerHandler.players[playerId].dealDamage(damage); + PlayerHandler.players[playerId].damageTaken[c.playerId] += damage; + c2.getPlayerAssistant().refreshSkill(3); + c.totalPlayerDamageDealt += damage; + multiSpellEffect(c, playerId, damage); + } else { + c2.gfx100(85); + c.getPacketSender().sendSound(SoundList.MAGE_FAIL, 100, + 0); + } + } + } + } + + public static void multiSpellEffect(Player c, int playerId, int damage) { + switch (MagicData.MAGIC_SPELLS[c.oldSpellId][0]) { + case 13011: + case 13023: + if (System.currentTimeMillis() + - PlayerHandler.players[playerId].reduceStat > 35000) { + PlayerHandler.players[playerId].reduceStat = System + .currentTimeMillis(); + PlayerHandler.players[playerId].playerLevel[0] -= PlayerHandler.players[playerId] + .getLevelForXP(PlayerHandler.players[playerId].playerXP[0]) * 10 / 100; + } + break; + case 12919: // blood spells + case 12929: + int heal = damage / 4; + if (c.playerLevel[3] + heal >= c.getPlayerAssistant() + .getLevelForXP(c.playerXP[3])) { + c.playerLevel[3] = c.getPlayerAssistant().getLevelForXP( + c.playerXP[3]); + } else { + c.playerLevel[3] += heal; + } + c.getPlayerAssistant().refreshSkill(3); + break; + case 12891: + case 12881: + if (PlayerHandler.players[playerId].freezeTimer < -4) { + PlayerHandler.players[playerId].freezeTimer = getFreezeTime(c); + PlayerHandler.players[playerId].stopMovement(); + } + break; + } + } + + public static boolean checkMultiBarrageReqs(Player c, int i) { + if (PlayerHandler.players[i] == null) { + return false; + } + if (i == c.playerId) { + return false; + } + if (c.inPits && PlayerHandler.players[i].inPits) { + return true; + } + if (!PlayerHandler.players[i].inWild()) { + return false; + } + if (GameConstants.COMBAT_LEVEL_DIFFERENCE) { + int combatDif1 = c.getCombatAssistant().getCombatDifference(c.combatLevel, + PlayerHandler.players[i].combatLevel); + if (combatDif1 > c.wildLevel + || combatDif1 > PlayerHandler.players[i].wildLevel) { + c.getPacketSender() + .sendMessage( + "Your combat level difference is too great to attack that player here."); + return false; + } + } + + if (GameConstants.SINGLE_AND_MULTI_ZONES) { + if (!PlayerHandler.players[i].inMulti()) { // single combat + // zones + if (PlayerHandler.players[i].underAttackBy != c.playerId + && PlayerHandler.players[i].underAttackBy != 0) { + return false; + } + if (PlayerHandler.players[i].playerId != c.underAttackBy + && c.underAttackBy != 0) { + c.getPacketSender().sendMessage( + "You are already in combat."); + return false; + } + } + } + return true; + } + + public static int mageAtk(Player c) { + return MagicMaxHit.mageAttackBonus(c); + } + + public static int mageDef(Player c) { + return MagicMaxHit.mageDefenceBonus(c); + } } \ No newline at end of file diff --git a/2006Redone Server/src/redone/game/content/combat/magic/MagicTeleports.java b/2006Redone Server/src/com/rebotted/game/content/combat/magic/MagicTeleports.java similarity index 73% rename from 2006Redone Server/src/redone/game/content/combat/magic/MagicTeleports.java rename to 2006Redone Server/src/com/rebotted/game/content/combat/magic/MagicTeleports.java index d1a81aa4..e9c2a3ba 100644 --- a/2006Redone Server/src/redone/game/content/combat/magic/MagicTeleports.java +++ b/2006Redone Server/src/com/rebotted/game/content/combat/magic/MagicTeleports.java @@ -1,425 +1,425 @@ -package redone.game.content.combat.magic; - -import redone.game.content.randomevents.RandomEventHandler; -import redone.game.players.Client; -import redone.util.Misc; - -public class MagicTeleports { - - public static final int AIR_RUNE = 556, FIRE_RUNE = 554, - WATER_RUNE = 555, EARTH_RUNE = 557, - LAW_RUNE = 563, BLOOD_RUNE = 565, - SOUL_RUNE = 566, BANANA = 1963; - - public static void handleLoginText(Client player) { - player.getPlayerAssistant().sendFrame126("Level 25: Varrock Teleport", 1300); - player.getPlayerAssistant().sendFrame126("Level 31: Lumbridge Teleport", 1325); - player.getPlayerAssistant().sendFrame126("Level 37: Falador Teleport", 1350); - player.getPlayerAssistant().sendFrame126("Level 45: Camelot Teleport", 1382); - player.getPlayerAssistant().sendFrame126("Level 51: Ardougne Teleport", 1415); - player.getPlayerAssistant().sendFrame126("Level 54: Paddewwa Teleport", 13037); - player.getPlayerAssistant().sendFrame126("Level 60: Senntisten Teleport", 13047); - player.getPlayerAssistant().sendFrame126("Level 66: Kharyrll Teleport", 13055); - player.getPlayerAssistant().sendFrame126("Level 72: Lassar Teleport", 13063); - player.getPlayerAssistant().sendFrame126("Level 78: Dareeyak Teleport", 13071); - } - - /** - * Modern Teleports - */ - public static final int VARROCK_X = 3213, VARROCK_Y = 3423; - public static final int LUMBRIDGE_X = 3222, LUMBRIDGE_Y = 3218; - public static final int FALADOR_X = 2964, FALADOR_Y = 3378; - public static final int CAMELOT_X = 2757, CAMELOT_Y = 3479; - public static final int ARDOUGNE_X = 2662, ARDOUGNE_Y = 3305; - public static final int WATCHTOWER_X = 2547, WATCHTOWER_Y = 3112; - public static final int TROLLHEIM_X = 2910, TROLLHEIM_Y = 3612; - public static final int APE_ATOLL_X = 2754, APE_ATOLL_Y = 2784; - - /** - * Ancient Teleports - */ - public static final int PADDEWWA_X = 3098, PADDEWWA_Y = 9884; - public static final int SENNTISTEN_X = 3321, SENNTISTEN_Y = 3335; - public static final int KHARYRLL_X = 3493, KHARYRLL_Y = 3472; - public static final int LASSAR_X = 3006, LASSAR_Y = 3471; - public static final int DAREEYAK_X = 3161, DAREEYAK_Y = 3671; - public static final int CARRALLANGAR_X = 3157, CARRALLANGAR_Y = 3669; - public static final int ANNAKARL_X = 3286, ANNAKARL_Y = 3884; - public static final int GHORROCK_X = 2977, GHORROCK_Y = 3873; - - public static final boolean MAGIC_LEVEL_REQUIRED = true, RUNES_REQUIRED = true; - - public static boolean teleportCheck(Client player) { - if (player.teleTimer > 0) { - return false; - } - return true; - } - - public static void paddewwaTeleport(Client player) { - if (!teleportCheck(player)) { - return; - } - RandomEventHandler.addRandom(player); - if (RUNES_REQUIRED) { - if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 1}, {AIR_RUNE, 1}})) { - player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); - return; - } - } - if (MAGIC_LEVEL_REQUIRED) { - if (player.playerLevel[player.playerMagic] < 54) { - player.getActionSender().sendMessage("You need a magic level of 54 to cast this spell."); - return; - } - } - CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 1}, {AIR_RUNE, 1}}); - player.getPlayerAssistant().startTeleport(PADDEWWA_X + Misc.random(2), PADDEWWA_Y - Misc.random(2), 0, "ancient"); - player.getPlayerAssistant().addSkillXP(64, player.playerMagic); - } - - public static void senntisenTeleport(Client player) { - if (!teleportCheck(player)) { - return; - } - RandomEventHandler.addRandom(player); - if (RUNES_REQUIRED) { - if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {SOUL_RUNE, 1}})) { - player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); - return; - } - } - if (MAGIC_LEVEL_REQUIRED) { - if (player.playerLevel[player.playerMagic] < 60) { - player.getActionSender().sendMessage("You need a magic level of 60 to cast this spell."); - return; - } - } - CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {SOUL_RUNE, 1}}); - player.getPlayerAssistant().startTeleport(SENNTISTEN_X + Misc.random(1), SENNTISTEN_Y - Misc.random(1), 0, "ancient"); - player.getPlayerAssistant().addSkillXP(70, player.playerMagic); - } - - public static void kharyllTeleport(Client player) { - if (!teleportCheck(player)) { - return; - } - RandomEventHandler.addRandom(player); - if (RUNES_REQUIRED) { - if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {BLOOD_RUNE, 1}})) { - player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); - return; - } - } - if (MAGIC_LEVEL_REQUIRED) { - if (player.playerLevel[player.playerMagic] < 66) { - player.getActionSender().sendMessage("You need a magic level of 66 to cast this spell."); - return; - } - } - CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {BLOOD_RUNE, 1}}); - player.getPlayerAssistant().startTeleport(KHARYRLL_X, KHARYRLL_Y, 0, "ancient"); - player.getPlayerAssistant().addSkillXP(76, player.playerMagic); - } - - public static void lassarTeleport(Client player) { - if (!teleportCheck(player)) { - return; - } - RandomEventHandler.addRandom(player); - if (RUNES_REQUIRED) { - if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 4}})) { - player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); - return; - } - } - if (MAGIC_LEVEL_REQUIRED) { - if (player.playerLevel[player.playerMagic] < 72) { - player.getActionSender().sendMessage("You need a magic level of 72 to cast this spell."); - return; - } - } - CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 4}}); - player.getPlayerAssistant().startTeleport(LASSAR_X + Misc.random(2), LASSAR_Y - Misc.random(2), 0, "ancient"); - player.getPlayerAssistant().addSkillXP(82, player.playerMagic); - } - - public static void dareeyakTeleport(Client player) { - if (!teleportCheck(player)) { - return; - } - RandomEventHandler.addRandom(player); - if (RUNES_REQUIRED) { - if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 3}, {AIR_RUNE, 2}})) { - player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); - return; - } - } - if (MAGIC_LEVEL_REQUIRED) { - if (player.playerLevel[player.playerMagic] < 78) { - player.getActionSender().sendMessage("You need a magic level of 78 to cast this spell."); - return; - } - } - CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 3}, {AIR_RUNE, 2}}); - player.getPlayerAssistant().startTeleport( - DAREEYAK_X + Misc.random(1), - DAREEYAK_Y - Misc.random(1), 0, "ancient"); - player.getPlayerAssistant().addSkillXP(88, player.playerMagic); - } - - public static void carrallangarTeleport(Client player) { - if (!teleportCheck(player)) { - return; - } - RandomEventHandler.addRandom(player); - if (RUNES_REQUIRED) { - if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {SOUL_RUNE, 2}})) { - player.getActionSender() - .sendMessage( - "You don't have the required runes to cast this spell."); - return; - } - } - if (MAGIC_LEVEL_REQUIRED) { - if (player.playerLevel[player.playerMagic] < 84) { - player.getActionSender().sendMessage("You need a magic level of 84 to cast this spell."); - return; - } - } - CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {SOUL_RUNE, 2}}); - player.getPlayerAssistant().startTeleport(CARRALLANGAR_X + Misc.random(2), CARRALLANGAR_Y - Misc.random(2), 0, "ancient"); - player.getPlayerAssistant().addSkillXP(94, player.playerMagic); - } - - public static void annakarlTeleport(Client player) { - if (!teleportCheck(player)) { - return; - } - RandomEventHandler.addRandom(player); - if (RUNES_REQUIRED) { - if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {BLOOD_RUNE, 2}})) { - player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); - return; - } - } - if (MAGIC_LEVEL_REQUIRED) { - if (player.playerLevel[player.playerMagic] < 90) { - player.getActionSender().sendMessage("You need a magic level of 90 to cast this spell."); - return; - } - } - CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {BLOOD_RUNE, 2}}); - player.getPlayerAssistant().startTeleport(ANNAKARL_X + Misc.random(1), ANNAKARL_Y - Misc.random(1), 0, "ancient"); - player.getPlayerAssistant().addSkillXP(100, player.playerMagic); - } - - public static void ghorrockTeleport(Client player) { - if (!teleportCheck(player)) { - return; - } - RandomEventHandler.addRandom(player); - if (RUNES_REQUIRED) { - if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 8}})) { - player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); - return; - } - } - if (MAGIC_LEVEL_REQUIRED) { - if (player.playerLevel[player.playerMagic] < 96) { - player.getActionSender().sendMessage("You need a magic level of 96 to cast this spell."); - return; - } - } - CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 8}}); - player.getPlayerAssistant().startTeleport(GHORROCK_X + Misc.random(3), - GHORROCK_Y - Misc.random(3), 0, "ancient"); - player.getPlayerAssistant().addSkillXP(106, player.playerMagic); - } - - public static void varrockTeleport(Client player) { - if (!teleportCheck(player)) { - return; - } - RandomEventHandler.addRandom(player); - if (RUNES_REQUIRED) { - if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 1}, {FIRE_RUNE, 1}, {AIR_RUNE, 3}})) { - player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); - return; - } - } - if (MAGIC_LEVEL_REQUIRED) { - if (player.playerLevel[player.playerMagic] < 25) { - player.getActionSender().sendMessage("You need a magic level of 25 to cast this spell."); - return; - } - } - CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 1}, {FIRE_RUNE, 1}, {AIR_RUNE, 3}}); - player.getPlayerAssistant().startTeleport(VARROCK_X + Misc.random(2), VARROCK_Y - Misc.random(2), 0, "modern"); - player.getPlayerAssistant().addSkillXP(35, player.playerMagic); - } - - public static void lumbridgeTeleport(Client player) { - if (!teleportCheck(player)) { - return; - } - RandomEventHandler.addRandom(player); - if (RUNES_REQUIRED) { - if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 1}, {EARTH_RUNE, 1}, {AIR_RUNE, 3}})) { - player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); - return; - } - } - if (MAGIC_LEVEL_REQUIRED) { - if (player.playerLevel[player.playerMagic] < 32) { - player.getActionSender().sendMessage("You need a magic level of 32 to cast this spell."); - return; - } - } - CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 1}, {EARTH_RUNE, 1}, {AIR_RUNE, 3}}); - player.getPlayerAssistant().startTeleport(LUMBRIDGE_X, LUMBRIDGE_Y, 0, "modern"); - player.getPlayerAssistant().addSkillXP(35, player.playerMagic); - } - - public static void faladorTeleport(Client player) { - /*if (!teleportCheck(player)) { - return; - }*/ - RandomEventHandler.addRandom(player); - if (RUNES_REQUIRED) { - if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 1}, {WATER_RUNE, 1}, {AIR_RUNE, 3}})) { - player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); - return; - } - } - if (MAGIC_LEVEL_REQUIRED) { - if (player.playerLevel[player.playerMagic] < 37) { - player.getActionSender().sendMessage("You need a magic level of 37 to cast this spell."); - return; - } - } - CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 1}, {WATER_RUNE, 1}, {AIR_RUNE, 3}}); - player.getPlayerAssistant().startTeleport(FALADOR_X + Misc.random(4), FALADOR_Y - Misc.random(4), 0, "modern"); - player.getPlayerAssistant().addSkillXP(48, player.playerMagic); - } - - public static void camelotTeleport(Client player) { - if (!teleportCheck(player)) { - return; - } - RandomEventHandler.addRandom(player); - if (RUNES_REQUIRED) { - if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 1}, {AIR_RUNE, 5}})) { - player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); - return; - } - } - if (MAGIC_LEVEL_REQUIRED) { - if (player.playerLevel[player.playerMagic] < 45) { - player.getActionSender().sendMessage("You need a magic level of 45 to cast this spell."); - return; - } - } - CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 1}, {AIR_RUNE, 5}}); - // 2757, 3479 - player.getPlayerAssistant().startTeleport(CAMELOT_X + Misc.random(1), CAMELOT_Y - Misc.random(1), 0, "modern"); - player.getPlayerAssistant().addSkillXP(55.5, player.playerMagic); - } - - public static void ardougneTeleport(Client player) { - if (!teleportCheck(player)) { - return; - } - RandomEventHandler.addRandom(player); - if (RUNES_REQUIRED) { - if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 2}})) { - player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); - return; - } - } - if (MAGIC_LEVEL_REQUIRED) { - if (player.playerLevel[player.playerMagic] < 51) { - player.getActionSender().sendMessage("You need a magic level of 51 to cast this spell."); - return; - } - } - CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 2}}); - player.getPlayerAssistant().startTeleport(ARDOUGNE_X + Misc.random(4), - ARDOUGNE_Y - Misc.random(4), 0, "modern"); - player.getPlayerAssistant().addSkillXP(61, player.playerMagic); - } - - public static void watchTowerTeleport(Client player) { - if (!teleportCheck(player)) { - return; - } - RandomEventHandler.addRandom(player); - if (RUNES_REQUIRED) { - if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {EARTH_RUNE, 2}})) { - player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); - return; - } - } - if (MAGIC_LEVEL_REQUIRED) { - if (player.playerLevel[player.playerMagic] < 58) { - player.getActionSender().sendMessage( - "You need a magic level of 58 to cast this spell."); - return; - } - } - CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {EARTH_RUNE, 2}}); - player.getPlayerAssistant().startTeleport(WATCHTOWER_X, WATCHTOWER_Y, 1, "modern"); - player.getPlayerAssistant().addSkillXP(68, player.playerMagic); - } - - public static void trollhiemTeleport(Client player) { - if (!teleportCheck(player)) { - return; - } - RandomEventHandler.addRandom(player); - if (RUNES_REQUIRED) { - if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 2}})) { - player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); - return; - } - } - if (MAGIC_LEVEL_REQUIRED) { - if (player.playerLevel[player.playerMagic] < 61) { - player.getActionSender().sendMessage("You need a magic level of 61 to cast this spell."); - return; - } - } - CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 2}}); - player.getPlayerAssistant().startTeleport(2892 + Misc.random(2), - 3679 - Misc.random(2), 0, "modern"); - player.getPlayerAssistant().addSkillXP(68, player.playerMagic); - } - - public static void apeAtollTeleport(Client player) { - if (!teleportCheck(player)) { - return; - } - RandomEventHandler.addRandom(player); - if (RUNES_REQUIRED) { - if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 2}, {WATER_RUNE, 2}}) || !player.getItemAssistant().playerHasItem(BANANA, 1)) { - player.getActionSender().sendMessage("You don't have the required items to cast this spell."); - return; - } - } - if (player.questPoints < 19) { - player.getActionSender().sendMessage("You need " + 19 + " quest points to teleport here."); - return; - } - if (MAGIC_LEVEL_REQUIRED) { - if (player.playerLevel[player.playerMagic] < 64) { - player.getActionSender().sendMessage("You need a magic level of 64 to cast this spell."); - return; - } - } - CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 2}, {WATER_RUNE, 2}}); - player.getItemAssistant().deleteItem(BANANA, 1); - player.getPlayerAssistant().startTeleport(2798 + Misc.random(1), 2798 - Misc.random(1), 1, "modern"); - player.getPlayerAssistant().addSkillXP(76, player.playerMagic); - } +package com.rebotted.game.content.combat.magic; + +import com.rebotted.game.content.randomevents.RandomEventHandler; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +public class MagicTeleports { + + public static final int AIR_RUNE = 556, FIRE_RUNE = 554, + WATER_RUNE = 555, EARTH_RUNE = 557, + LAW_RUNE = 563, BLOOD_RUNE = 565, + SOUL_RUNE = 566, BANANA = 1963; + + public static void handleLoginText(Player player) { + player.getPacketSender().sendFrame126("Level 25: Varrock Teleport", 1300); + player.getPacketSender().sendFrame126("Level 31: Lumbridge Teleport", 1325); + player.getPacketSender().sendFrame126("Level 37: Falador Teleport", 1350); + player.getPacketSender().sendFrame126("Level 45: Camelot Teleport", 1382); + player.getPacketSender().sendFrame126("Level 51: Ardougne Teleport", 1415); + player.getPacketSender().sendFrame126("Level 54: Paddewwa Teleport", 13037); + player.getPacketSender().sendFrame126("Level 60: Senntisten Teleport", 13047); + player.getPacketSender().sendFrame126("Level 66: Kharyrll Teleport", 13055); + player.getPacketSender().sendFrame126("Level 72: Lassar Teleport", 13063); + player.getPacketSender().sendFrame126("Level 78: Dareeyak Teleport", 13071); + } + + /** + * Modern Teleports + */ + public static final int VARROCK_X = 3213, VARROCK_Y = 3423; + public static final int LUMBRIDGE_X = 3222, LUMBRIDGE_Y = 3218; + public static final int FALADOR_X = 2964, FALADOR_Y = 3378; + public static final int CAMELOT_X = 2757, CAMELOT_Y = 3479; + public static final int ARDOUGNE_X = 2662, ARDOUGNE_Y = 3305; + public static final int WATCHTOWER_X = 2547, WATCHTOWER_Y = 3112; + public static final int TROLLHEIM_X = 2910, TROLLHEIM_Y = 3612; + public static final int APE_ATOLL_X = 2754, APE_ATOLL_Y = 2784; + + /** + * Ancient Teleports + */ + public static final int PADDEWWA_X = 3098, PADDEWWA_Y = 9884; + public static final int SENNTISTEN_X = 3321, SENNTISTEN_Y = 3335; + public static final int KHARYRLL_X = 3493, KHARYRLL_Y = 3472; + public static final int LASSAR_X = 3006, LASSAR_Y = 3471; + public static final int DAREEYAK_X = 3161, DAREEYAK_Y = 3671; + public static final int CARRALLANGAR_X = 3157, CARRALLANGAR_Y = 3669; + public static final int ANNAKARL_X = 3286, ANNAKARL_Y = 3884; + public static final int GHORROCK_X = 2977, GHORROCK_Y = 3873; + + public static final boolean MAGIC_LEVEL_REQUIRED = true, RUNES_REQUIRED = true; + + public static boolean teleportCheck(Player player) { + if (player.teleTimer > 0) { + return false; + } + return true; + } + + public static void paddewwaTeleport(Player player) { + if (!teleportCheck(player)) { + return; + } + RandomEventHandler.addRandom(player); + if (RUNES_REQUIRED) { + if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 1}, {AIR_RUNE, 1}})) { + player.getPacketSender().sendMessage("You don't have the required runes to cast this spell."); + return; + } + } + if (MAGIC_LEVEL_REQUIRED) { + if (player.playerLevel[player.playerMagic] < 54) { + player.getPacketSender().sendMessage("You need a magic level of 54 to cast this spell."); + return; + } + } + CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 1}, {AIR_RUNE, 1}}); + player.getPlayerAssistant().startTeleport(PADDEWWA_X + Misc.random(2), PADDEWWA_Y - Misc.random(2), 0, "ancient"); + player.getPlayerAssistant().addSkillXP(64, player.playerMagic); + } + + public static void senntisenTeleport(Player player) { + if (!teleportCheck(player)) { + return; + } + RandomEventHandler.addRandom(player); + if (RUNES_REQUIRED) { + if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {SOUL_RUNE, 1}})) { + player.getPacketSender().sendMessage("You don't have the required runes to cast this spell."); + return; + } + } + if (MAGIC_LEVEL_REQUIRED) { + if (player.playerLevel[player.playerMagic] < 60) { + player.getPacketSender().sendMessage("You need a magic level of 60 to cast this spell."); + return; + } + } + CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {SOUL_RUNE, 1}}); + player.getPlayerAssistant().startTeleport(SENNTISTEN_X + Misc.random(1), SENNTISTEN_Y - Misc.random(1), 0, "ancient"); + player.getPlayerAssistant().addSkillXP(70, player.playerMagic); + } + + public static void kharyllTeleport(Player player) { + if (!teleportCheck(player)) { + return; + } + RandomEventHandler.addRandom(player); + if (RUNES_REQUIRED) { + if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {BLOOD_RUNE, 1}})) { + player.getPacketSender().sendMessage("You don't have the required runes to cast this spell."); + return; + } + } + if (MAGIC_LEVEL_REQUIRED) { + if (player.playerLevel[player.playerMagic] < 66) { + player.getPacketSender().sendMessage("You need a magic level of 66 to cast this spell."); + return; + } + } + CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {BLOOD_RUNE, 1}}); + player.getPlayerAssistant().startTeleport(KHARYRLL_X, KHARYRLL_Y, 0, "ancient"); + player.getPlayerAssistant().addSkillXP(76, player.playerMagic); + } + + public static void lassarTeleport(Player player) { + if (!teleportCheck(player)) { + return; + } + RandomEventHandler.addRandom(player); + if (RUNES_REQUIRED) { + if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 4}})) { + player.getPacketSender().sendMessage("You don't have the required runes to cast this spell."); + return; + } + } + if (MAGIC_LEVEL_REQUIRED) { + if (player.playerLevel[player.playerMagic] < 72) { + player.getPacketSender().sendMessage("You need a magic level of 72 to cast this spell."); + return; + } + } + CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 4}}); + player.getPlayerAssistant().startTeleport(LASSAR_X + Misc.random(2), LASSAR_Y - Misc.random(2), 0, "ancient"); + player.getPlayerAssistant().addSkillXP(82, player.playerMagic); + } + + public static void dareeyakTeleport(Player player) { + if (!teleportCheck(player)) { + return; + } + RandomEventHandler.addRandom(player); + if (RUNES_REQUIRED) { + if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 3}, {AIR_RUNE, 2}})) { + player.getPacketSender().sendMessage("You don't have the required runes to cast this spell."); + return; + } + } + if (MAGIC_LEVEL_REQUIRED) { + if (player.playerLevel[player.playerMagic] < 78) { + player.getPacketSender().sendMessage("You need a magic level of 78 to cast this spell."); + return; + } + } + CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 3}, {AIR_RUNE, 2}}); + player.getPlayerAssistant().startTeleport( + DAREEYAK_X + Misc.random(1), + DAREEYAK_Y - Misc.random(1), 0, "ancient"); + player.getPlayerAssistant().addSkillXP(88, player.playerMagic); + } + + public static void carrallangarTeleport(Player player) { + if (!teleportCheck(player)) { + return; + } + RandomEventHandler.addRandom(player); + if (RUNES_REQUIRED) { + if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {SOUL_RUNE, 2}})) { + player.getPacketSender() + .sendMessage( + "You don't have the required runes to cast this spell."); + return; + } + } + if (MAGIC_LEVEL_REQUIRED) { + if (player.playerLevel[player.playerMagic] < 84) { + player.getPacketSender().sendMessage("You need a magic level of 84 to cast this spell."); + return; + } + } + CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {SOUL_RUNE, 2}}); + player.getPlayerAssistant().startTeleport(CARRALLANGAR_X + Misc.random(2), CARRALLANGAR_Y - Misc.random(2), 0, "ancient"); + player.getPlayerAssistant().addSkillXP(94, player.playerMagic); + } + + public static void annakarlTeleport(Player player) { + if (!teleportCheck(player)) { + return; + } + RandomEventHandler.addRandom(player); + if (RUNES_REQUIRED) { + if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {BLOOD_RUNE, 2}})) { + player.getPacketSender().sendMessage("You don't have the required runes to cast this spell."); + return; + } + } + if (MAGIC_LEVEL_REQUIRED) { + if (player.playerLevel[player.playerMagic] < 90) { + player.getPacketSender().sendMessage("You need a magic level of 90 to cast this spell."); + return; + } + } + CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {BLOOD_RUNE, 2}}); + player.getPlayerAssistant().startTeleport(ANNAKARL_X + Misc.random(1), ANNAKARL_Y - Misc.random(1), 0, "ancient"); + player.getPlayerAssistant().addSkillXP(100, player.playerMagic); + } + + public static void ghorrockTeleport(Player player) { + if (!teleportCheck(player)) { + return; + } + RandomEventHandler.addRandom(player); + if (RUNES_REQUIRED) { + if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 8}})) { + player.getPacketSender().sendMessage("You don't have the required runes to cast this spell."); + return; + } + } + if (MAGIC_LEVEL_REQUIRED) { + if (player.playerLevel[player.playerMagic] < 96) { + player.getPacketSender().sendMessage("You need a magic level of 96 to cast this spell."); + return; + } + } + CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 8}}); + player.getPlayerAssistant().startTeleport(GHORROCK_X + Misc.random(3), + GHORROCK_Y - Misc.random(3), 0, "ancient"); + player.getPlayerAssistant().addSkillXP(106, player.playerMagic); + } + + public static void varrockTeleport(Player player) { + if (!teleportCheck(player)) { + return; + } + RandomEventHandler.addRandom(player); + if (RUNES_REQUIRED) { + if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 1}, {FIRE_RUNE, 1}, {AIR_RUNE, 3}})) { + player.getPacketSender().sendMessage("You don't have the required runes to cast this spell."); + return; + } + } + if (MAGIC_LEVEL_REQUIRED) { + if (player.playerLevel[player.playerMagic] < 25) { + player.getPacketSender().sendMessage("You need a magic level of 25 to cast this spell."); + return; + } + } + CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 1}, {FIRE_RUNE, 1}, {AIR_RUNE, 3}}); + player.getPlayerAssistant().startTeleport(VARROCK_X + Misc.random(2), VARROCK_Y - Misc.random(2), 0, "modern"); + player.getPlayerAssistant().addSkillXP(35, player.playerMagic); + } + + public static void lumbridgeTeleport(Player player) { + if (!teleportCheck(player)) { + return; + } + RandomEventHandler.addRandom(player); + if (RUNES_REQUIRED) { + if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 1}, {EARTH_RUNE, 1}, {AIR_RUNE, 3}})) { + player.getPacketSender().sendMessage("You don't have the required runes to cast this spell."); + return; + } + } + if (MAGIC_LEVEL_REQUIRED) { + if (player.playerLevel[player.playerMagic] < 32) { + player.getPacketSender().sendMessage("You need a magic level of 32 to cast this spell."); + return; + } + } + CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 1}, {EARTH_RUNE, 1}, {AIR_RUNE, 3}}); + player.getPlayerAssistant().startTeleport(LUMBRIDGE_X, LUMBRIDGE_Y, 0, "modern"); + player.getPlayerAssistant().addSkillXP(35, player.playerMagic); + } + + public static void faladorTeleport(Player player) { + /*if (!teleportCheck(player)) { + return; + }*/ + RandomEventHandler.addRandom(player); + if (RUNES_REQUIRED) { + if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 1}, {WATER_RUNE, 1}, {AIR_RUNE, 3}})) { + player.getPacketSender().sendMessage("You don't have the required runes to cast this spell."); + return; + } + } + if (MAGIC_LEVEL_REQUIRED) { + if (player.playerLevel[player.playerMagic] < 37) { + player.getPacketSender().sendMessage("You need a magic level of 37 to cast this spell."); + return; + } + } + CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 1}, {WATER_RUNE, 1}, {AIR_RUNE, 3}}); + player.getPlayerAssistant().startTeleport(FALADOR_X + Misc.random(4), FALADOR_Y - Misc.random(4), 0, "modern"); + player.getPlayerAssistant().addSkillXP(48, player.playerMagic); + } + + public static void camelotTeleport(Player player) { + if (!teleportCheck(player)) { + return; + } + RandomEventHandler.addRandom(player); + if (RUNES_REQUIRED) { + if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 1}, {AIR_RUNE, 5}})) { + player.getPacketSender().sendMessage("You don't have the required runes to cast this spell."); + return; + } + } + if (MAGIC_LEVEL_REQUIRED) { + if (player.playerLevel[player.playerMagic] < 45) { + player.getPacketSender().sendMessage("You need a magic level of 45 to cast this spell."); + return; + } + } + CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 1}, {AIR_RUNE, 5}}); + // 2757, 3479 + player.getPlayerAssistant().startTeleport(CAMELOT_X + Misc.random(1), CAMELOT_Y - Misc.random(1), 0, "modern"); + player.getPlayerAssistant().addSkillXP(55.5, player.playerMagic); + } + + public static void ardougneTeleport(Player player) { + if (!teleportCheck(player)) { + return; + } + RandomEventHandler.addRandom(player); + if (RUNES_REQUIRED) { + if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 2}})) { + player.getPacketSender().sendMessage("You don't have the required runes to cast this spell."); + return; + } + } + if (MAGIC_LEVEL_REQUIRED) { + if (player.playerLevel[player.playerMagic] < 51) { + player.getPacketSender().sendMessage("You need a magic level of 51 to cast this spell."); + return; + } + } + CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 2}}); + player.getPlayerAssistant().startTeleport(ARDOUGNE_X + Misc.random(4), + ARDOUGNE_Y - Misc.random(4), 0, "modern"); + player.getPlayerAssistant().addSkillXP(61, player.playerMagic); + } + + public static void watchTowerTeleport(Player player) { + if (!teleportCheck(player)) { + return; + } + RandomEventHandler.addRandom(player); + if (RUNES_REQUIRED) { + if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {EARTH_RUNE, 2}})) { + player.getPacketSender().sendMessage("You don't have the required runes to cast this spell."); + return; + } + } + if (MAGIC_LEVEL_REQUIRED) { + if (player.playerLevel[player.playerMagic] < 58) { + player.getPacketSender().sendMessage( + "You need a magic level of 58 to cast this spell."); + return; + } + } + CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {EARTH_RUNE, 2}}); + player.getPlayerAssistant().startTeleport(WATCHTOWER_X, WATCHTOWER_Y, 1, "modern"); + player.getPlayerAssistant().addSkillXP(68, player.playerMagic); + } + + public static void trollhiemTeleport(Player player) { + if (!teleportCheck(player)) { + return; + } + RandomEventHandler.addRandom(player); + if (RUNES_REQUIRED) { + if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 2}})) { + player.getPacketSender().sendMessage("You don't have the required runes to cast this spell."); + return; + } + } + if (MAGIC_LEVEL_REQUIRED) { + if (player.playerLevel[player.playerMagic] < 61) { + player.getPacketSender().sendMessage("You need a magic level of 61 to cast this spell."); + return; + } + } + CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 2}}); + player.getPlayerAssistant().startTeleport(2892 + Misc.random(2), + 3679 - Misc.random(2), 0, "modern"); + player.getPlayerAssistant().addSkillXP(68, player.playerMagic); + } + + public static void apeAtollTeleport(Player player) { + if (!teleportCheck(player)) { + return; + } + RandomEventHandler.addRandom(player); + if (RUNES_REQUIRED) { + if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 2}, {WATER_RUNE, 2}}) || !player.getItemAssistant().playerHasItem(BANANA, 1)) { + player.getPacketSender().sendMessage("You don't have the required items to cast this spell."); + return; + } + } + if (player.questPoints < 19) { + player.getPacketSender().sendMessage("You need " + 19 + " quest points to teleport here."); + return; + } + if (MAGIC_LEVEL_REQUIRED) { + if (player.playerLevel[player.playerMagic] < 64) { + player.getPacketSender().sendMessage("You need a magic level of 64 to cast this spell."); + return; + } + } + CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 2}, {WATER_RUNE, 2}}); + player.getItemAssistant().deleteItem(BANANA, 1); + player.getPlayerAssistant().startTeleport(2798 + Misc.random(1), 2798 - Misc.random(1), 1, "modern"); + player.getPlayerAssistant().addSkillXP(76, player.playerMagic); + } } \ No newline at end of file diff --git a/2006Redone Server/src/redone/game/content/combat/magic/NonCombatSpells.java b/2006Redone Server/src/com/rebotted/game/content/combat/magic/NonCombatSpells.java similarity index 70% rename from 2006Redone Server/src/redone/game/content/combat/magic/NonCombatSpells.java rename to 2006Redone Server/src/com/rebotted/game/content/combat/magic/NonCombatSpells.java index 548b7b57..cdb9905a 100644 --- a/2006Redone Server/src/redone/game/content/combat/magic/NonCombatSpells.java +++ b/2006Redone Server/src/com/rebotted/game/content/combat/magic/NonCombatSpells.java @@ -1,23 +1,23 @@ -package redone.game.content.combat.magic; - -import redone.game.players.Client; - -public class NonCombatSpells { - - public static void teleportObelisk(Client c, int x, int y, int height) { - if (System.currentTimeMillis() - c.teleBlockDelay < c.teleBlockLength) { - c.getActionSender().sendMessage( - "You are teleblocked and can't teleport."); - return; - } - if (!c.isDead && !c.isTeleporting) { - c.stopMovement(); - c.getPlayerAssistant().removeAllWindows(); - c.npcIndex = 0; - c.playerIndex = 0; - c.faceNpc(0); - c.getPlayerAssistant().spellTeleport(x, y, height); - } - } - -} +package com.rebotted.game.content.combat.magic; + +import com.rebotted.game.players.Client; + +public class NonCombatSpells { + + public static void teleportObelisk(Client c, int x, int y, int height) { + if (System.currentTimeMillis() - c.teleBlockDelay < c.teleBlockLength) { + c.getPacketSender().sendMessage( + "You are teleblocked and can't teleport."); + return; + } + if (!c.isDead && !c.isTeleporting) { + c.stopMovement(); + c.getPacketSender().closeAllWindows(); + c.npcIndex = 0; + c.playerIndex = 0; + c.faceNpc(0); + c.getPlayerAssistant().spellTeleport(x, y, height); + } + } + +} diff --git a/2006Redone Server/src/redone/game/content/combat/melee/MeleeData.java b/2006Redone Server/src/com/rebotted/game/content/combat/melee/MeleeData.java similarity index 88% rename from 2006Redone Server/src/redone/game/content/combat/melee/MeleeData.java rename to 2006Redone Server/src/com/rebotted/game/content/combat/melee/MeleeData.java index bc296f9f..441b0d9d 100644 --- a/2006Redone Server/src/redone/game/content/combat/melee/MeleeData.java +++ b/2006Redone Server/src/com/rebotted/game/content/combat/melee/MeleeData.java @@ -1,463 +1,463 @@ -package redone.game.content.combat.melee; - -import redone.Constants; -import redone.game.content.combat.magic.MagicData; -import redone.game.items.ItemAssistant; -import redone.game.players.Client; - -public class MeleeData { - - public static boolean fullVoidMelee(Client c) { - return c.playerEquipment[c.playerHat] == 11665 - && c.playerEquipment[c.playerLegs] == 8840 - && c.playerEquipment[c.playerChest] == 8839 - && c.playerEquipment[c.playerHands] == 8842; - } - - public static int calculateMeleeAttack(Client c) { - int attackLevel = c.playerLevel[0]; - // 2, 5, 11, 18, 19 - if (c.getPrayer().prayerActive[2]) { - attackLevel += c.getLevelForXP(c.playerXP[c.playerAttack]) * 0.05; - } else if (c.getPrayer().prayerActive[7]) { - attackLevel += c.getLevelForXP(c.playerXP[c.playerAttack]) * 0.1; - } else if (c.getPrayer().prayerActive[15]) { - attackLevel += c.getLevelForXP(c.playerXP[c.playerAttack]) * 0.15; - } else if (c.getPrayer().prayerActive[24]) { - attackLevel += c.getLevelForXP(c.playerXP[c.playerAttack]) * 0.15; - } else if (c.getPrayer().prayerActive[25]) { - attackLevel += c.getLevelForXP(c.playerXP[c.playerAttack]) * 0.2; - } - if (fullVoidMelee(c)) { - attackLevel += c.getLevelForXP(c.playerXP[c.playerAttack]) * 0.1; - } - attackLevel *= c.specAccuracy; - // c.sendMessage("Attack: " + (attackLevel + - // (c.playerBonus[bestMeleeAtk()] * 2))); - int i = c.playerBonus[bestMeleeAtk(c)]; - i += c.bonusAttack; - if (c.playerEquipment[c.playerAmulet] == 11128 - && c.playerEquipment[c.playerWeapon] == 6528) { - i *= 1.30; - } - return (int) (attackLevel + attackLevel * 0.15 + (i + i * 0.05)); - } - - public static int bestMeleeAtk(Client c) { - if (c.playerBonus[0] > c.playerBonus[1] - && c.playerBonus[0] > c.playerBonus[2]) { - return 0; - } - if (c.playerBonus[1] > c.playerBonus[0] - && c.playerBonus[1] > c.playerBonus[2]) { - return 1; - } - return c.playerBonus[2] <= c.playerBonus[1] - || c.playerBonus[2] <= c.playerBonus[0] ? 0 : 2; - } - - public static int calculateMeleeDefence(Client c) { - int defenceLevel = c.playerLevel[1]; - int i = c.playerBonus[bestMeleeDef(c)]; - if (c.getPrayer().prayerActive[0]) { - defenceLevel += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.05; - } else if (c.getPrayer().prayerActive[5]) { - defenceLevel += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.1; - } else if (c.getPrayer().prayerActive[13]) { - defenceLevel += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.15; - } else if (c.getPrayer().prayerActive[24]) { - defenceLevel += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.2; - } else if (c.getPrayer().prayerActive[25]) { - defenceLevel += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.25; - } - return (int) (defenceLevel + defenceLevel * 0.15 + (i + i * 0.05)); - } - - public static int bestMeleeDef(Client c) { - if (c.playerBonus[5] > c.playerBonus[6] - && c.playerBonus[5] > c.playerBonus[7]) { - return 5; - } - if (c.playerBonus[6] > c.playerBonus[5] - && c.playerBonus[6] > c.playerBonus[7]) { - return 6; - } - return c.playerBonus[7] <= c.playerBonus[5] - || c.playerBonus[7] <= c.playerBonus[6] ? 5 : 7; - } - - /** - * Weapon and magic attack speed! - **/ - - public static int getAttackDelay(Client c) { - String s = ItemAssistant.getItemName(c.playerEquipment[Constants.WEAPON]).toLowerCase(); - if (c.usingMagic) { - switch (MagicData.MAGIC_SPELLS[c.spellId][0]) { - case 12871: // ice blitz - case 13023: // shadow barrage - case 12891: // ice barrage - return 5; - - default: - return 5; - } - } - if (c.playerEquipment[c.playerWeapon] == -1) { - return 4;// unarmed - } - - switch (c.playerEquipment[c.playerWeapon]) { - case 11235: - return 9; - case 11730: - return 4; - case 6528: - return 7; - } - - if (s.endsWith("greataxe")) { - return 7; - } else if (s.equals("torags hammers")) { - return 5; - } else if (s.equals("guthans warspear")) { - return 5; - } else if (s.equals("veracs flail")) { - return 5; - } else if (s.equals("ahrims staff")) { - return 6; - } else if (s.contains("staff")) { - if (s.contains("zamarok") || s.contains("guthix") - || s.contains("saradomian") || s.contains("slayer") - || s.contains("ancient")) { - return 4; - } else { - return 5; - } - } else if (s.contains("bow")) { - if (s.contains("composite") || s.equals("seercull")) { - return 5; - } else if (s.contains("aril")) { - return 4; - } else if (s.contains("Ogre")) { - return 8; - } else if (s.contains("short") || s.contains("hunt") - || s.contains("sword")) { - return 4; - } else if (s.contains("long") || s.contains("crystal")) { - return 6; - } else if (s.contains("'bow")) { - return 7; - } - - return 5; - } else if (s.contains("dagger")) { - return 4; - } else if (s.contains("godsword") || s.contains("2h")) { - return 6; - } else if (s.contains("longsword")) { - return 5; - } else if (s.contains("sword")) { - return 4; - } else if (s.contains("scimitar")) { - return 4; - } else if (s.contains("mace")) { - return 5; - } else if (s.contains("battleaxe")) { - return 6; - } else if (s.contains("pickaxe")) { - return 5; - } else if (s.contains("thrownaxe")) { - return 5; - } else if (s.contains("axe")) { - return 5; - } else if (s.contains("warhammer")) { - return 6; - } else if (s.contains("2h")) { - return 7; - } else if (s.contains("spear")) { - return 5; - } else if (s.contains("claw")) { - return 4; - } else if (s.contains("halberd")) { - return 7; - } else if (s.equals("granite maul")) { - return 7; - } else if (s.equals("toktz-xil-ak")) { - return 4; - } else if (s.equals("tzhaar-ket-em")) { - return 5; - } else if (s.equals("tzhaar-ket-om")) { - return 7; - } else if (s.equals("toktz-xil-ek")) { - return 4; - } else if (s.equals("toktz-xil-ul")) { - return 4; - } else if (s.equals("toktz-mej-tal")) { - return 6; - } else if (s.contains("whip")) { - return 4; - } else if (s.contains("dart")) { - return 3; - } else if (s.contains("knife")) { - return 3; - } else if (s.contains("javelin")) { - return 6; - } - return 5; - } - - /** - * Weapon stand, walk, run, etc emotes - **/ - - public static void getPlayerAnimIndex(Client c) { - String weaponName = ItemAssistant.getItemName( - c.playerEquipment[Constants.WEAPON]).toLowerCase(); - c.playerStandIndex = 0x328; - c.playerTurnIndex = 0x337; - c.playerWalkIndex = 0x333; - c.playerTurn180Index = 0x334; - c.playerTurn90CWIndex = 0x335; - c.playerTurn90CCWIndex = 0x336; - c.playerRunIndex = 0x338; - - if (weaponName.contains("halberd") || weaponName.contains("guthan")) { - c.playerStandIndex = 809; - c.playerWalkIndex = 1146; - c.playerRunIndex = 1210; - return; - } - if (weaponName.contains("dharok")) { - c.playerStandIndex = 0x811; - c.playerWalkIndex = 0x67F; - c.playerRunIndex = 0x680; - return; - } - if (weaponName.contains("ahrim")) { - c.playerStandIndex = 809; - c.playerWalkIndex = 1146; - c.playerRunIndex = 1210; - return; - } - if (weaponName.contains("verac")) { - c.playerStandIndex = 1832; - c.playerWalkIndex = 1830; - c.playerRunIndex = 1831; - return; - } - if (weaponName.contains("wand") || weaponName.contains("staff")) { - c.playerStandIndex = 809; - c.playerRunIndex = 1210; - c.playerWalkIndex = 1146; - return; - } - if (weaponName.contains("karil")) { - c.playerStandIndex = 2074; - c.playerWalkIndex = 2076; - c.playerRunIndex = 2077; - return; - } - if (weaponName.contains("2h sword")) { - c.playerStandIndex = 2561; - c.playerWalkIndex = 2562; - c.playerRunIndex = 2563; - return; - } - if (weaponName.contains("bow")) { - c.playerStandIndex = 808; - c.playerWalkIndex = 819; - c.playerRunIndex = 824; - return; - } - - switch (c.playerEquipment[c.playerWeapon]) { - case 4151: - c.playerStandIndex = 1832; - c.playerWalkIndex = 1660; - c.playerRunIndex = 1661; - break; - case 6528: - c.playerStandIndex = 0x811; - c.playerWalkIndex = 2064; - c.playerRunIndex = 1664; - break; - case 4153: - c.playerStandIndex = 1662; - c.playerWalkIndex = 1663; - c.playerRunIndex = 1664; - break; - case 11694: - case 11696: - case 11730: - case 11698: - case 11700: - c.playerStandIndex = 4300; - c.playerWalkIndex = 4306; - c.playerRunIndex = 4305; - break; - case 1305: - c.playerStandIndex = 809; - break; - } - } - - /** - * Weapon emotes - **/ - - public static int getWeaponAnimation(Client c) { - String weaponName = ItemAssistant.getItemName( - c.playerEquipment[Constants.WEAPON]).toLowerCase(); - if (c.playerEquipment[c.playerWeapon] <= 0) { - switch (c.fightMode) { - case 0: - return 422; - case 2: - return 423; - case 1: - return 451; - } - } - if (weaponName.contains("knife") || weaponName.contains("dart") - || weaponName.contains("javelin") - || weaponName.contains("thrownaxe")) { - return 806; - } - if (weaponName.contains("halberd")) { - return 440; - } - if (weaponName.contains("dragon dagger")) { - return 402; - } - if (weaponName.endsWith("dagger")) { - return 412; - } - if (weaponName.contains("2h sword") || weaponName.contains("godsword") - || weaponName.contains("aradomin sword")) { - switch (c.fightMode) { - case 4: - return 406; - case 0: - case 2: - case 1: - return 407; - } - } - if (weaponName.contains("sword")) { - switch (c.fightMode) { - case 0: - case 1: - return 412; - case 2: - return 451; - } - } - if (weaponName.contains("karil")) { - return 2075; - } - if (weaponName.contains("bow") && !weaponName.contains("'bow")) { - return 426; - } - if (weaponName.contains("'bow")) { - return 4230; - } - - switch (c.playerEquipment[c.playerWeapon]) { // if you don't want to - // use - // strings - case 6522: - return 2614; - case 4153: // granite maul - return 1665; - case 4726: // guthan - return 2080; - case 4747: // torag - return 0x814; - case 4718: // dharok - return 2067; - case 4710: // ahrim - return 406; - case 4755: // verac - return 2062; - case 4734: // karil - return 2075; - case 4151: - return 1658; - case 6528: - return 2661; - default: - return 451; - } - } - - /** - * Block emotes - */ - public static int getBlockEmote(Client c) { - if (c.playerEquipment[c.playerShield] >= 8844 - && c.playerEquipment[c.playerShield] <= 8850) { - return 4177; - } - switch (c.playerEquipment[c.playerWeapon]) { - case 4755: - return 2063; - - case 4153: - return 1666; - - case 4151: - return 1659; - - case 11694: - case 11698: - case 11700: - case 11696: - case 11730: - return -1; - default: - return 404; - } - } - - /** - * How long it takes to hit your enemy - **/ - public static int getHitDelay(Client c) { - String weaponName = ItemAssistant.getItemName( - c.playerEquipment[Constants.WEAPON]).toLowerCase(); - if (c.usingMagic) { - switch (MagicData.MAGIC_SPELLS[c.spellId][0]) { - case 12891: - return 4; - case 12871: - return 6; - default: - return 4; - } - } else { - - if (weaponName.contains("knife") || weaponName.contains("dart") - || weaponName.contains("javelin") - || weaponName.contains("thrownaxe")) { - return 3; - } - if (weaponName.contains("cross") || weaponName.contains("c'bow")) { - return 4; - } - if (weaponName.contains("bow") && !c.dbowSpec) { - return 4; - } else if (c.dbowSpec) { - return 4; - } - - switch (c.playerEquipment[c.playerWeapon]) { - case 6522: // Toktz-xil-ul - return 3; - - default: - return 2; - } - } - } -} +package com.rebotted.game.content.combat.melee; + +import com.rebotted.GameConstants; +import com.rebotted.game.content.combat.magic.MagicData; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Player; + +public class MeleeData { + + public static boolean fullVoidMelee(Player c) { + return c.playerEquipment[c.playerHat] == 11665 + && c.playerEquipment[c.playerLegs] == 8840 + && c.playerEquipment[c.playerChest] == 8839 + && c.playerEquipment[c.playerHands] == 8842; + } + + public static int calculateMeleeAttack(Player c) { + int attackLevel = c.playerLevel[0]; + // 2, 5, 11, 18, 19 + if (c.getPrayer().prayerActive[2]) { + attackLevel += c.getLevelForXP(c.playerXP[c.playerAttack]) * 0.05; + } else if (c.getPrayer().prayerActive[7]) { + attackLevel += c.getLevelForXP(c.playerXP[c.playerAttack]) * 0.1; + } else if (c.getPrayer().prayerActive[15]) { + attackLevel += c.getLevelForXP(c.playerXP[c.playerAttack]) * 0.15; + } else if (c.getPrayer().prayerActive[24]) { + attackLevel += c.getLevelForXP(c.playerXP[c.playerAttack]) * 0.15; + } else if (c.getPrayer().prayerActive[25]) { + attackLevel += c.getLevelForXP(c.playerXP[c.playerAttack]) * 0.2; + } + if (fullVoidMelee(c)) { + attackLevel += c.getLevelForXP(c.playerXP[c.playerAttack]) * 0.1; + } + attackLevel *= c.specAccuracy; + // c.sendMessage("Attack: " + (attackLevel + + // (c.playerBonus[bestMeleeAtk()] * 2))); + int i = c.playerBonus[bestMeleeAtk(c)]; + i += c.bonusAttack; + if (c.playerEquipment[c.playerAmulet] == 11128 + && c.playerEquipment[c.playerWeapon] == 6528) { + i *= 1.30; + } + return (int) (attackLevel + attackLevel * 0.15 + (i + i * 0.05)); + } + + public static int bestMeleeAtk(Player c) { + if (c.playerBonus[0] > c.playerBonus[1] + && c.playerBonus[0] > c.playerBonus[2]) { + return 0; + } + if (c.playerBonus[1] > c.playerBonus[0] + && c.playerBonus[1] > c.playerBonus[2]) { + return 1; + } + return c.playerBonus[2] <= c.playerBonus[1] + || c.playerBonus[2] <= c.playerBonus[0] ? 0 : 2; + } + + public static int calculateMeleeDefence(Player c) { + int defenceLevel = c.playerLevel[1]; + int i = c.playerBonus[bestMeleeDef(c)]; + if (c.getPrayer().prayerActive[0]) { + defenceLevel += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.05; + } else if (c.getPrayer().prayerActive[5]) { + defenceLevel += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.1; + } else if (c.getPrayer().prayerActive[13]) { + defenceLevel += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.15; + } else if (c.getPrayer().prayerActive[24]) { + defenceLevel += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.2; + } else if (c.getPrayer().prayerActive[25]) { + defenceLevel += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.25; + } + return (int) (defenceLevel + defenceLevel * 0.15 + (i + i * 0.05)); + } + + public static int bestMeleeDef(Player c) { + if (c.playerBonus[5] > c.playerBonus[6] + && c.playerBonus[5] > c.playerBonus[7]) { + return 5; + } + if (c.playerBonus[6] > c.playerBonus[5] + && c.playerBonus[6] > c.playerBonus[7]) { + return 6; + } + return c.playerBonus[7] <= c.playerBonus[5] + || c.playerBonus[7] <= c.playerBonus[6] ? 5 : 7; + } + + /** + * Weapon and magic attack speed! + **/ + + public static int getAttackDelay(Player c) { + String s = ItemAssistant.getItemName(c.playerEquipment[GameConstants.WEAPON]).toLowerCase(); + if (c.usingMagic) { + switch (MagicData.MAGIC_SPELLS[c.spellId][0]) { + case 12871: // ice blitz + case 13023: // shadow barrage + case 12891: // ice barrage + return 5; + + default: + return 5; + } + } + if (c.playerEquipment[c.playerWeapon] == -1) { + return 4;// unarmed + } + + switch (c.playerEquipment[c.playerWeapon]) { + case 11235: + return 9; + case 11730: + return 4; + case 6528: + return 7; + } + + if (s.endsWith("greataxe")) { + return 7; + } else if (s.equals("torags hammers")) { + return 5; + } else if (s.equals("guthans warspear")) { + return 5; + } else if (s.equals("veracs flail")) { + return 5; + } else if (s.equals("ahrims staff")) { + return 6; + } else if (s.contains("staff")) { + if (s.contains("zamarok") || s.contains("guthix") + || s.contains("saradomian") || s.contains("slayer") + || s.contains("ancient")) { + return 4; + } else { + return 5; + } + } else if (s.contains("bow")) { + if (s.contains("composite") || s.equals("seercull")) { + return 5; + } else if (s.contains("aril")) { + return 4; + } else if (s.contains("Ogre")) { + return 8; + } else if (s.contains("short") || s.contains("hunt") + || s.contains("sword")) { + return 4; + } else if (s.contains("long") || s.contains("crystal")) { + return 6; + } else if (s.contains("'bow")) { + return 7; + } + + return 5; + } else if (s.contains("dagger")) { + return 4; + } else if (s.contains("godsword") || s.contains("2h")) { + return 6; + } else if (s.contains("longsword")) { + return 5; + } else if (s.contains("sword")) { + return 4; + } else if (s.contains("scimitar")) { + return 4; + } else if (s.contains("mace")) { + return 5; + } else if (s.contains("battleaxe")) { + return 6; + } else if (s.contains("pickaxe")) { + return 5; + } else if (s.contains("thrownaxe")) { + return 5; + } else if (s.contains("axe")) { + return 5; + } else if (s.contains("warhammer")) { + return 6; + } else if (s.contains("2h")) { + return 7; + } else if (s.contains("spear")) { + return 5; + } else if (s.contains("claw")) { + return 4; + } else if (s.contains("halberd")) { + return 7; + } else if (s.equals("granite maul")) { + return 7; + } else if (s.equals("toktz-xil-ak")) { + return 4; + } else if (s.equals("tzhaar-ket-em")) { + return 5; + } else if (s.equals("tzhaar-ket-om")) { + return 7; + } else if (s.equals("toktz-xil-ek")) { + return 4; + } else if (s.equals("toktz-xil-ul")) { + return 4; + } else if (s.equals("toktz-mej-tal")) { + return 6; + } else if (s.contains("whip")) { + return 4; + } else if (s.contains("dart")) { + return 3; + } else if (s.contains("knife")) { + return 3; + } else if (s.contains("javelin")) { + return 6; + } + return 5; + } + + /** + * Weapon stand, walk, run, etc emotes + **/ + + public static void getPlayerAnimIndex(Player c) { + String weaponName = ItemAssistant.getItemName( + c.playerEquipment[GameConstants.WEAPON]).toLowerCase(); + c.playerStandIndex = 0x328; + c.playerTurnIndex = 0x337; + c.playerWalkIndex = 0x333; + c.playerTurn180Index = 0x334; + c.playerTurn90CWIndex = 0x335; + c.playerTurn90CCWIndex = 0x336; + c.playerRunIndex = 0x338; + + if (weaponName.contains("halberd") || weaponName.contains("guthan")) { + c.playerStandIndex = 809; + c.playerWalkIndex = 1146; + c.playerRunIndex = 1210; + return; + } + if (weaponName.contains("dharok")) { + c.playerStandIndex = 0x811; + c.playerWalkIndex = 0x67F; + c.playerRunIndex = 0x680; + return; + } + if (weaponName.contains("ahrim")) { + c.playerStandIndex = 809; + c.playerWalkIndex = 1146; + c.playerRunIndex = 1210; + return; + } + if (weaponName.contains("verac")) { + c.playerStandIndex = 1832; + c.playerWalkIndex = 1830; + c.playerRunIndex = 1831; + return; + } + if (weaponName.contains("wand") || weaponName.contains("staff")) { + c.playerStandIndex = 809; + c.playerRunIndex = 1210; + c.playerWalkIndex = 1146; + return; + } + if (weaponName.contains("karil")) { + c.playerStandIndex = 2074; + c.playerWalkIndex = 2076; + c.playerRunIndex = 2077; + return; + } + if (weaponName.contains("2h sword")) { + c.playerStandIndex = 2561; + c.playerWalkIndex = 2562; + c.playerRunIndex = 2563; + return; + } + if (weaponName.contains("bow")) { + c.playerStandIndex = 808; + c.playerWalkIndex = 819; + c.playerRunIndex = 824; + return; + } + + switch (c.playerEquipment[c.playerWeapon]) { + case 4151: + c.playerStandIndex = 1832; + c.playerWalkIndex = 1660; + c.playerRunIndex = 1661; + break; + case 6528: + c.playerStandIndex = 0x811; + c.playerWalkIndex = 2064; + c.playerRunIndex = 1664; + break; + case 4153: + c.playerStandIndex = 1662; + c.playerWalkIndex = 1663; + c.playerRunIndex = 1664; + break; + case 11694: + case 11696: + case 11730: + case 11698: + case 11700: + c.playerStandIndex = 4300; + c.playerWalkIndex = 4306; + c.playerRunIndex = 4305; + break; + case 1305: + c.playerStandIndex = 809; + break; + } + } + + /** + * Weapon emotes + **/ + + public static int getWeaponAnimation(Player c) { + String weaponName = ItemAssistant.getItemName( + c.playerEquipment[GameConstants.WEAPON]).toLowerCase(); + if (c.playerEquipment[c.playerWeapon] <= 0) { + switch (c.fightMode) { + case 0: + return 422; + case 2: + return 423; + case 1: + return 451; + } + } + if (weaponName.contains("knife") || weaponName.contains("dart") + || weaponName.contains("javelin") + || weaponName.contains("thrownaxe")) { + return 806; + } + if (weaponName.contains("halberd")) { + return 440; + } + if (weaponName.contains("dragon dagger")) { + return 402; + } + if (weaponName.endsWith("dagger")) { + return 412; + } + if (weaponName.contains("2h sword") || weaponName.contains("godsword") + || weaponName.contains("aradomin sword")) { + switch (c.fightMode) { + case 4: + return 406; + case 0: + case 2: + case 1: + return 407; + } + } + if (weaponName.contains("sword")) { + switch (c.fightMode) { + case 0: + case 1: + return 412; + case 2: + return 451; + } + } + if (weaponName.contains("karil")) { + return 2075; + } + if (weaponName.contains("bow") && !weaponName.contains("'bow")) { + return 426; + } + if (weaponName.contains("'bow")) { + return 4230; + } + + switch (c.playerEquipment[c.playerWeapon]) { // if you don't want to + // use + // strings + case 6522: + return 2614; + case 4153: // granite maul + return 1665; + case 4726: // guthan + return 2080; + case 4747: // torag + return 0x814; + case 4718: // dharok + return 2067; + case 4710: // ahrim + return 406; + case 4755: // verac + return 2062; + case 4734: // karil + return 2075; + case 4151: + return 1658; + case 6528: + return 2661; + default: + return 451; + } + } + + /** + * Block emotes + */ + public static int getBlockEmote(Player c) { + if (c.playerEquipment[c.playerShield] >= 8844 + && c.playerEquipment[c.playerShield] <= 8850) { + return 4177; + } + switch (c.playerEquipment[c.playerWeapon]) { + case 4755: + return 2063; + + case 4153: + return 1666; + + case 4151: + return 1659; + + case 11694: + case 11698: + case 11700: + case 11696: + case 11730: + return -1; + default: + return 404; + } + } + + /** + * How long it takes to hit your enemy + **/ + public static int getHitDelay(Player c) { + String weaponName = ItemAssistant.getItemName( + c.playerEquipment[GameConstants.WEAPON]).toLowerCase(); + if (c.usingMagic) { + switch (MagicData.MAGIC_SPELLS[c.spellId][0]) { + case 12891: + return 4; + case 12871: + return 6; + default: + return 4; + } + } else { + + if (weaponName.contains("knife") || weaponName.contains("dart") + || weaponName.contains("javelin") + || weaponName.contains("thrownaxe")) { + return 3; + } + if (weaponName.contains("cross") || weaponName.contains("c'bow")) { + return 4; + } + if (weaponName.contains("bow") && !c.dbowSpec) { + return 4; + } else if (c.dbowSpec) { + return 4; + } + + switch (c.playerEquipment[c.playerWeapon]) { + case 6522: // Toktz-xil-ul + return 3; + + default: + return 2; + } + } + } +} diff --git a/2006Redone Server/src/redone/game/content/combat/melee/MeleeMaxHit.java b/2006Redone Server/src/com/rebotted/game/content/combat/melee/MeleeMaxHit.java similarity index 89% rename from 2006Redone Server/src/redone/game/content/combat/melee/MeleeMaxHit.java rename to 2006Redone Server/src/com/rebotted/game/content/combat/melee/MeleeMaxHit.java index e70535a3..831eaa8f 100644 --- a/2006Redone Server/src/redone/game/content/combat/melee/MeleeMaxHit.java +++ b/2006Redone Server/src/com/rebotted/game/content/combat/melee/MeleeMaxHit.java @@ -1,52 +1,52 @@ -package redone.game.content.combat.melee; - -import redone.game.players.Client; - -public class MeleeMaxHit { - - public static int calculateMeleeMaxHit(Client c) { - double maxHit = 0; - int strBonus = c.playerBonus[10]; - int strength = c.playerLevel[2]; - int lvlForXP = c.getLevelForXP(c.playerXP[2]); - if (c.getPrayer().prayerActive[1]) { - strength += (int) (lvlForXP * .05); - } else if (c.getPrayer().prayerActive[6]) { - strength += (int) (lvlForXP * .10); - } else if (c.getPrayer().prayerActive[14]) { - strength += (int) (lvlForXP * .15); - } else if (c.getPrayer().prayerActive[24]) { - strength += (int) (lvlForXP * .18); - } else if (c.getPrayer().prayerActive[25]) { - strength += (int) (lvlForXP * .23); - } - if (c.playerEquipment[c.playerHat] == 2526 - && c.playerEquipment[c.playerChest] == 2520 - && c.playerEquipment[c.playerLegs] == 2522) { - maxHit += maxHit * 10 / 100; - } - maxHit += 1.05D + strBonus * strength * 0.00175D; - maxHit += strength * 0.11D; - if (c.playerEquipment[c.playerWeapon] == 4718 - && c.playerEquipment[c.playerHat] == 4716 - && c.playerEquipment[c.playerChest] == 4720 - && c.playerEquipment[c.playerLegs] == 4722) { - maxHit += (c.getPlayerAssistant().getLevelForXP(c.playerXP[3]) - c.playerLevel[3]) / 2; - } - if (c.specDamage > 1) { - maxHit = (int) (maxHit * c.specDamage); - } - if (maxHit < 0) { - maxHit = 1; - } - if (MeleeData.fullVoidMelee(c)) { - maxHit = (int) (maxHit * 1.10); - } - if (c.playerEquipment[c.playerAmulet] == 11128 - && c.playerEquipment[c.playerWeapon] == 6528) { - maxHit *= 1.20; - } - return (int) Math.floor(maxHit); - } - -} +package com.rebotted.game.content.combat.melee; + +import com.rebotted.game.players.Player; + +public class MeleeMaxHit { + + public static int calculateMeleeMaxHit(Player c) { + double maxHit = 0; + int strBonus = c.playerBonus[10]; + int strength = c.playerLevel[2]; + int lvlForXP = c.getLevelForXP(c.playerXP[2]); + if (c.getPrayer().prayerActive[1]) { + strength += (int) (lvlForXP * .05); + } else if (c.getPrayer().prayerActive[6]) { + strength += (int) (lvlForXP * .10); + } else if (c.getPrayer().prayerActive[14]) { + strength += (int) (lvlForXP * .15); + } else if (c.getPrayer().prayerActive[24]) { + strength += (int) (lvlForXP * .18); + } else if (c.getPrayer().prayerActive[25]) { + strength += (int) (lvlForXP * .23); + } + if (c.playerEquipment[c.playerHat] == 2526 + && c.playerEquipment[c.playerChest] == 2520 + && c.playerEquipment[c.playerLegs] == 2522) { + maxHit += maxHit * 10 / 100; + } + maxHit += 1.05D + strBonus * strength * 0.00175D; + maxHit += strength * 0.11D; + if (c.playerEquipment[c.playerWeapon] == 4718 + && c.playerEquipment[c.playerHat] == 4716 + && c.playerEquipment[c.playerChest] == 4720 + && c.playerEquipment[c.playerLegs] == 4722) { + maxHit += (c.getPlayerAssistant().getLevelForXP(c.playerXP[3]) - c.playerLevel[3]) / 2; + } + if (c.specDamage > 1) { + maxHit = (int) (maxHit * c.specDamage); + } + if (maxHit < 0) { + maxHit = 1; + } + if (MeleeData.fullVoidMelee(c)) { + maxHit = (int) (maxHit * 1.10); + } + if (c.playerEquipment[c.playerAmulet] == 11128 + && c.playerEquipment[c.playerWeapon] == 6528) { + maxHit *= 1.20; + } + return (int) Math.floor(maxHit); + } + +} diff --git a/2006Redone Server/src/redone/game/content/combat/melee/PlayerKilling.java b/2006Redone Server/src/com/rebotted/game/content/combat/melee/PlayerKilling.java similarity index 91% rename from 2006Redone Server/src/redone/game/content/combat/melee/PlayerKilling.java rename to 2006Redone Server/src/com/rebotted/game/content/combat/melee/PlayerKilling.java index f0704eda..0545eb93 100644 --- a/2006Redone Server/src/redone/game/content/combat/melee/PlayerKilling.java +++ b/2006Redone Server/src/com/rebotted/game/content/combat/melee/PlayerKilling.java @@ -1,71 +1,71 @@ -package redone.game.content.combat.melee; - -import redone.game.players.Client; - -/** - * Handles adding and removing hosts to the players array list. - */ -public class PlayerKilling { - - /** - * Adds the host of the killed player. - * - * @param client - * Player that saves the host. - * @param host - * Host address of the killed player. - * @return True if the host is added to the players array. - */ - - public static boolean addHostToList(Client client, String host) { - if (client != null) { - return client.lastKilledPlayers.add(host); - } - return false; - } - - /** - * Checks if the host is already on the players array. - * - * @param client - * Player that is adding the killed players host. - * @param host - * Host address of the killed player. - * @return True if the host is on the players array. - */ - - public static boolean hostOnList(Client client, String host) { - if (client != null) { - if (client.lastKilledPlayers.lastIndexOf(host) >= KILL_WAIT_MAX) { - removeHostFromList(client, host); - return false; - } - return client.lastKilledPlayers.contains(host); - } - return false; - } - - /** - * Removes the host from the players array. - * - * @param client - * Player that is removing the host. - * @param host - * Host that is being removed. - * @return True if host is successfully removed. - */ - - public static boolean removeHostFromList(Client client, String host) { - if (client != null) { - return client.lastKilledPlayers.remove(host); - } - return false; - } - - /* - * Amount of kills you have to wait before the host is deleted. - */ - - public static final int KILL_WAIT_MAX = 3; - -} +package com.rebotted.game.content.combat.melee; + +import com.rebotted.game.players.Client; + +/** + * Handles adding and removing hosts to the players array list. + */ +public class PlayerKilling { + + /** + * Adds the host of the killed player. + * + * @param client + * Player that saves the host. + * @param host + * Host address of the killed player. + * @return True if the host is added to the players array. + */ + + public static boolean addHostToList(Client client, String host) { + if (client != null) { + return client.lastKilledPlayers.add(host); + } + return false; + } + + /** + * Checks if the host is already on the players array. + * + * @param client + * Player that is adding the killed players host. + * @param host + * Host address of the killed player. + * @return True if the host is on the players array. + */ + + public static boolean hostOnList(Client client, String host) { + if (client != null) { + if (client.lastKilledPlayers.lastIndexOf(host) >= KILL_WAIT_MAX) { + removeHostFromList(client, host); + return false; + } + return client.lastKilledPlayers.contains(host); + } + return false; + } + + /** + * Removes the host from the players array. + * + * @param client + * Player that is removing the host. + * @param host + * Host that is being removed. + * @return True if host is successfully removed. + */ + + public static boolean removeHostFromList(Client client, String host) { + if (client != null) { + return client.lastKilledPlayers.remove(host); + } + return false; + } + + /* + * Amount of kills you have to wait before the host is deleted. + */ + + public static final int KILL_WAIT_MAX = 3; + +} diff --git a/2006Redone Server/src/redone/game/content/combat/npcs/NpcAggressive.java b/2006Redone Server/src/com/rebotted/game/content/combat/npcs/NpcAggressive.java similarity index 81% rename from 2006Redone Server/src/redone/game/content/combat/npcs/NpcAggressive.java rename to 2006Redone Server/src/com/rebotted/game/content/combat/npcs/NpcAggressive.java index b87d08f1..0749379a 100644 --- a/2006Redone Server/src/redone/game/content/combat/npcs/NpcAggressive.java +++ b/2006Redone Server/src/com/rebotted/game/content/combat/npcs/NpcAggressive.java @@ -1,31 +1,31 @@ -package redone.game.content.combat.npcs; - -import redone.game.content.minigames.FightCaves; -import redone.game.content.minigames.PestControl; -import redone.game.npcs.NpcHandler; - -public class NpcAggressive { - - /** - * Aggressive monsters - */ - private static final int[] AGGRESSIVE_MONSTERS = { - 1155, 374, 1157, 1158, 1159, 1160, 141, 1459, 1456, 96, 97, 142, - 2550, 2551, 2552, 2553, 2558, 2559, 2560, 2561, 2562, 2563, - 2564, 2565, 2892, 2894, 2881, 2882, 2883, 1593, 144, 112, 84, 3068, - 50, 1590, 1591, 1592, 53, 54, 55, 178, 49, 2455, 2456, 2454, - 82, 752, 1608, 1609, 1610, 1827, 2783, 1926, 1931, 2457, 412, 1604, 1612, - 110, 1611, 83, 941, 49, 117, 111, 125, 1154, 107, 1342, 1338, 447, 448, 449, 917, - 1265, 1267 - }; - - public static boolean isAggressive(int i) { - boolean aggressive = NpcHandler.npcs[i].inWild() || PestControl.npcIsPCMonster(NpcHandler.npcs[i].npcType) || FightCaves.isFightCaveNpc(i); - for (int element : AGGRESSIVE_MONSTERS) { - if (NpcHandler.npcs[i].npcType == element || aggressive) { - return true; - } - } - return false; - } -} +package com.rebotted.game.content.combat.npcs; + +import com.rebotted.game.content.minigames.FightCaves; +import com.rebotted.game.content.minigames.PestControl; +import com.rebotted.game.npcs.NpcHandler; + +public class NpcAggressive { + + /** + * Aggressive monsters + */ + private static final int[] AGGRESSIVE_MONSTERS = { + 1155, 374, 1157, 1158, 1159, 1160, 141, 1459, 1456, 96, 97, 142, + 2550, 2551, 2552, 2553, 2558, 2559, 2560, 2561, 2562, 2563, + 2564, 2565, 2892, 2894, 2881, 2882, 2883, 1593, 144, 112, 84, 3068, + 50, 1590, 1591, 1592, 53, 54, 55, 178, 49, 2455, 2456, 2454, + 82, 752, 1608, 1609, 1610, 1827, 2783, 1926, 1931, 2457, 412, 1604, 1612, + 110, 1611, 83, 941, 49, 117, 111, 125, 1154, 107, 1342, 1338, 447, 448, 449, 917, + 1265, 1267 + }; + + public static boolean isAggressive(int i) { + boolean aggressive = NpcHandler.npcs[i].inWild() || PestControl.npcIsPCMonster(NpcHandler.npcs[i].npcType) || FightCaves.isFightCaveNpc(i); + for (int element : AGGRESSIVE_MONSTERS) { + if (NpcHandler.npcs[i].npcType == element || aggressive) { + return true; + } + } + return false; + } +} diff --git a/2006Redone Server/src/redone/game/content/combat/npcs/NpcCombat.java b/2006Redone Server/src/com/rebotted/game/content/combat/npcs/NpcCombat.java similarity index 89% rename from 2006Redone Server/src/redone/game/content/combat/npcs/NpcCombat.java rename to 2006Redone Server/src/com/rebotted/game/content/combat/npcs/NpcCombat.java index c7abc84b..eb8ec6de 100644 --- a/2006Redone Server/src/redone/game/content/combat/npcs/NpcCombat.java +++ b/2006Redone Server/src/com/rebotted/game/content/combat/npcs/NpcCombat.java @@ -1,681 +1,678 @@ -package redone.game.content.combat.npcs; - -import redone.Constants; -import redone.game.content.combat.CombatAssistant; -import redone.game.content.combat.melee.MeleeData; -import redone.game.content.minigames.FightCaves; -import redone.game.content.music.sound.CombatSounds; -import redone.game.content.music.sound.SoundList; -import redone.game.npcs.NpcData; -import redone.game.npcs.NpcHandler; -import redone.game.players.Client; -import redone.game.players.Player; -import redone.game.players.PlayerHandler; -import redone.util.Misc; - -public class NpcCombat { - - public static void multiAttackDamage(int i) { - int max = NpcHandler.getMaxHit(i); - for (Player player : PlayerHandler.players) { - if (player != null) { - Client c = (Client) player; - if (c.isDead || c.heightLevel != NpcHandler.npcs[i].heightLevel) { - continue; - } - if (player.goodDistance(c.absX, c.absY, - NpcHandler.npcs[i].absX, NpcHandler.npcs[i].absY, 15)) { - if (NpcHandler.npcs[i].attackType == 2) { - if (!c.getPrayer().prayerActive[16]) { - if (Misc.random(500) + 200 > Misc.random(c - .getCombatAssistant().mageDef())) { - int dam = Misc.random(max); - c.dealDamage(dam); - c.handleHitMask(dam); - } else { - c.dealDamage(0); - c.handleHitMask(0); - } - } else { - c.dealDamage(0); - c.handleHitMask(0); - } - } else if (NpcHandler.npcs[i].attackType == 1) { - if (!c.getPrayer().prayerActive[17]) { - int dam = Misc.random(max); - if (Misc.random(500) + 200 > Misc.random(c - .getCombatAssistant() - .calculateRangeDefence())) { - c.dealDamage(dam); - c.handleHitMask(dam); - } else { - c.dealDamage(0); - c.handleHitMask(0); - } - } else { - c.dealDamage(0); - c.handleHitMask(0); - } - } - if (NpcHandler.npcs[i].endGfx > 0) { - c.gfx0(NpcHandler.npcs[i].endGfx); - } - } - c.getPlayerAssistant().refreshSkill(3); - } - } - } - - public static void multiAttackGfx(int i, int gfx) { - if (NpcHandler.npcs[i].projectileId < 0) { - return; - } - for (Player player : PlayerHandler.players) { - if (player != null) { - Client c = (Client) player; - if (c.heightLevel != NpcHandler.npcs[i].heightLevel) { - continue; - } - if (player.goodDistance(c.absX, c.absY, - NpcHandler.npcs[i].absX, NpcHandler.npcs[i].absY, 15)) { - int nX = NpcHandler.npcs[i].getX() + NpcHandler.offset(i); - int nY = NpcHandler.npcs[i].getY() + NpcHandler.offset(i); - int pX = c.getX(); - int pY = c.getY(); - int offX = (nY - pY) * -1; - int offY = (nX - pX) * -1; - c.getPlayerAssistant().createPlayersProjectile(nX, nY, - offX, offY, 50, NpcHandler.getProjectileSpeed(i), - NpcHandler.npcs[i].projectileId, 43, 31, - -c.getId() - 1, 65); - } - } - } - } - - public static void attackPlayer(Client c, int i) { - if (NpcHandler.npcs[i] != null) { - if (NpcHandler.npcs[i].isDead) { - return; - } - if (c.npcCanAttack == false) { - return; - } - if (c.isBotting == true) { - return; - } - if (NpcHandler.npcs[i].inLesserNpc()) { - return; - } - if (c.inDraynorBuilding()) { - if (NpcHandler.npcs[i].npcType == 172 || NpcHandler.npcs[i].npcType == 174) { - return; - } - } - if (NpcHandler.npcs[i].absY == 3228 && c.absY == 3227) { - return; - } - if (NpcHandler.npcs[i].absY == 3224 && c.absY == 3225) { - return; - } - if (NpcHandler.npcs[i].absY == 3226 && c.absY == 3227) { - return; - } - if (NpcHandler.npcs[i].absY == 3228 && c.absY == 3227) { - return; - } - if (NpcHandler.npcs[i].npcType > 2462 && NpcHandler.npcs[i].npcType < 2468) { - if (Misc.random(5) == 0) { - NpcHandler.npcs[i].forceChat("Flee from me, " + c.playerName + "!"); - } else if (Misc.random(5) == 1) { - NpcHandler.npcs[i].forceChat("Begone, " + c.playerName + "!"); - } else if (Misc.random(5) == 2) { - NpcHandler.npcs[i].forceChat("Bwuk"); - } else if (Misc.random(5) == 3) { - NpcHandler.npcs[i].forceChat("Bwuk bwuk bwuk"); - } else if (Misc.random(5) == 4) { - NpcHandler.npcs[i].forceChat("MUAHAHAHAHAAA!"); - } else if (Misc.random(5) == 5) { - NpcHandler.npcs[i].forceChat("Bwaaaaaaauk bwuk bwuk"); - } - } - if (NpcHandler.npcs[i].npcType == 1532 - || NpcHandler.npcs[i].npcType == 1534 - || NpcHandler.npcs[i].npcType == 6145 - || NpcHandler.npcs[i].npcType == 6144 - || NpcHandler.npcs[i].npcType == 6143 - || NpcHandler.npcs[i].npcType == 6142 - || NpcHandler.npcs[i].npcType == 752) { - return; - } - if (NpcHandler.npcs[i].npcType == 1401 && c.isInTut() - || c.tutorialProgress < 36) { - return; - } - if (NpcHandler.npcs[i].npcType == 9 && c.absX == 3180 - && c.absY > 3433 && c.absY < 3447) { - return; - } - if (NpcHandler.npcs[i].npcType == 374 && c.absY == 3372 && c.absX > 2522 && c.absX < 2532) { - return; - } - if (!NpcHandler.npcs[i].inMulti() && NpcHandler.npcs[i].underAttackBy > 0 && NpcHandler.npcs[i].underAttackBy != c.playerId) { - NpcHandler.npcs[i].killerId = 0; - return; - } - if (!NpcHandler.npcs[i].inMulti() - && (c.underAttackBy > 0 || c.underAttackBy2 > 0 - && c.underAttackBy2 != i)) { - NpcHandler.npcs[i].killerId = 0; - return; - } - if (NpcHandler.npcs[i].heightLevel != c.heightLevel) { - NpcHandler.npcs[i].killerId = 0; - return; - } - if (!NpcData.goodDistanceNpc(NpcHandler.npcs[i].npcId, c.getX(), c.getY(), NpcData.distanceRequired(NpcHandler.npcs[i].npcId)) || NpcData.inNpc(NpcHandler.npcs[i].npcId, c.getX(), c.getY())) { - return; - } - NpcHandler.npcs[i].facePlayer(c.playerId); - boolean special = false;//specialCase(c,i); - if (NpcData.checkClip(NpcHandler.npcs[i]) || special) { - if (c.respawnTimer <= 0) { - NpcHandler.npcs[i].facePlayer(c.playerId); - NpcHandler.npcs[i].attackTimer = NpcData.getNpcDelay(i); - NpcHandler.npcs[i].hitDelayTimer = NpcData.getHitDelay(i); - NpcHandler.npcs[i].attackType = 0; - if (Constants.combatSounds - && NpcHandler.npcs[i].npcType < 3177 - && NpcHandler.npcs[i].npcType > 3180) { - c.getActionSender() - .sendSound( - CombatSounds - .getNpcAttackSounds(NpcHandler.npcs[i].npcType), - 100, 0); - } - if (special) { - loadSpell2(i); - } else { - loadSpell(c, i); - } - if (NpcHandler.npcs[i].attackType == 3) { - NpcHandler.npcs[i].hitDelayTimer += 2; - } - if (NpcHandler.multiAttacks(i)) { - multiAttackGfx(i, NpcHandler.npcs[i].projectileId); - NpcData.startAnimation(NpcEmotes.getAttackEmote(i), i); - if (Constants.combatSounds - && NpcHandler.npcs[i].npcType < 3177 - && NpcHandler.npcs[i].npcType > 3180) { - c.getActionSender() - .sendSound( - CombatSounds - .getNpcAttackSounds(NpcHandler.npcs[i].npcType), - 100, 0); - } - NpcHandler.npcs[i].oldIndex = c.playerId; - return; - } - if (NpcHandler.npcs[i].projectileId > 0) { - int nX = NpcHandler.npcs[i].getX() - + NpcHandler.offset(i); - int nY = NpcHandler.npcs[i].getY() - + NpcHandler.offset(i); - int pX = c.getX(); - int pY = c.getY(); - int offX = (nY - pY) * -1; - int offY = (nX - pX) * -1; - c.getPlayerAssistant().createPlayersProjectile(nX, nY, - offX, offY, 50, - NpcHandler.getProjectileSpeed(i), - NpcHandler.npcs[i].projectileId, 43, 31, - -c.getId() - 1, 65); - } - int random = Misc.random(10); - if (NpcHandler.npcs[i].npcType == 222 && (NpcHandler.npcs[i].killerId > 0 && NpcHandler.npcs[i].underAttack) && !NpcHandler.npcs[i].isDead && (NpcHandler.npcs[i].HP < NpcHandler.npcs[i].MaxHP + 1)) { - if (random < 3) { - NpcHandler.npcs[i].HP += 2; - //NpcHandler.npcs[i].startAnimation(84); - NpcHandler.npcs[i].updateRequired = true; - } - } - c.underAttackBy2 = i; - c.singleCombatDelay2 = System.currentTimeMillis(); - NpcHandler.npcs[i].oldIndex = c.playerId; - NpcData.startAnimation(NpcEmotes.getAttackEmote(i), i); - if (Constants.combatSounds - && NpcHandler.npcs[i].npcType < 3177 - && NpcHandler.npcs[i].npcType > 3180) { - c.getActionSender() - .sendSound( - CombatSounds - .getNpcAttackSounds(NpcHandler.npcs[i].npcType), - 100, 0); - } - c.getPlayerAssistant().removeAllWindows(); - } - } - } - } - - public static void loadSpell2(int i) { - NpcHandler.npcs[i].attackType = 3; - int random = Misc.random(3); - if (random == 0) { - NpcHandler.npcs[i].projectileId = 393; // red - NpcHandler.npcs[i].endGfx = 430; - } else if (random == 1) { - NpcHandler.npcs[i].projectileId = 394; // green - NpcHandler.npcs[i].endGfx = 429; - } else if (random == 2) { - NpcHandler.npcs[i].projectileId = 395; // white - NpcHandler.npcs[i].endGfx = 431; - } else if (random == 3) { - NpcHandler.npcs[i].projectileId = 396; // blue - NpcHandler.npcs[i].endGfx = 428; - } - } - - public static void loadSpell(Client c, int i) { - if (NpcHandler.npcs[i].npcType > 2462 && NpcHandler.npcs[i].npcType < 2469 || NpcHandler.npcs[i].npcType > 3751 && NpcHandler.npcs[i].npcType < 3762) { - NpcHandler.npcs[i].attackType = 2; - } - if (NpcHandler.npcs[i].npcType > 3761 && NpcHandler.npcs[i].npcType < 3772) { - NpcHandler.npcs[i].attackType = 1; - } - switch (NpcHandler.npcs[i].npcType) { - case 2607: - NpcHandler.npcs[i].attackType = 1; - case 2591: - case 172: - case 174: - NpcHandler.npcs[i].attackType = 2; - break; - case 3068: - if(Misc.random(10) > 7) { - NpcHandler.npcs[i].projectileId = 393; //red - NpcHandler.npcs[i].endGfx = 430; - NpcHandler.npcs[i].attackType = 3; - NpcData.startAnimation(2989, i); - } else { - NpcData.startAnimation(2980, i); - NpcHandler.npcs[i].attackType = 0; - } - break; - case 2892: - NpcHandler.npcs[i].projectileId = 94; - NpcHandler.npcs[i].attackType = 2; - NpcHandler.npcs[i].endGfx = 95; - break; - case 2894: - NpcHandler.npcs[i].projectileId = 298; - NpcHandler.npcs[i].attackType = 1; - break; - /* - * Better Dragons - */ - case 5363: // Mithril-Dragon - case 53: // Red Dragon - case 54: // Black-Dragon - case 55: // Blue-Dragon - case 941: // Green-Dragon - case 4682: - case 5362: - case 1590: - case 1591: - case 1592: - int random1 = Misc.random(3); - switch (random1) { - case 1: - NpcHandler.npcs[i].projectileId = 393; // red - NpcHandler.npcs[i].endGfx = 430; - NpcHandler.npcs[i].attackType = 3; - break; - default: - NpcHandler.npcs[i].projectileId = -1; // melee - NpcHandler.npcs[i].endGfx = -1; - NpcHandler.npcs[i].attackType = 0; - break; - } - break; - case 134: - if (c.playerLevel[5] > 0) { - c.playerLevel[5]--; - c.getPlayerAssistant().refreshSkill(5); - c.getPlayerAssistant().appendPoison(5); - c.getCombatAssistant().resetPlayerAttack(); - } - break; - - case 3590: - case 50: - case 742: - int random = Misc.random(4); - switch (random) { - case 0: - NpcHandler.npcs[i].projectileId = 393; // red - NpcHandler.npcs[i].endGfx = 430; - NpcHandler.npcs[i].attackType = 3; - break; - case 1: - NpcHandler.npcs[i].projectileId = 394; // green - NpcHandler.npcs[i].endGfx = 429; - NpcHandler.npcs[i].attackType = 3; - break; - case 2: - NpcHandler.npcs[i].projectileId = 395; // white - NpcHandler.npcs[i].endGfx = 431; - NpcHandler.npcs[i].attackType = 3; - break; - case 3: - NpcHandler.npcs[i].projectileId = 396; // blue - NpcHandler.npcs[i].endGfx = 428; - NpcHandler.npcs[i].attackType = 3; - break; - case 4: - NpcHandler.npcs[i].projectileId = -1; // melee - NpcHandler.npcs[i].endGfx = -1; - NpcHandler.npcs[i].attackType = 0; - break; - } - break; - // arma npcs - case 2561: - NpcHandler.npcs[i].attackType = 0; - break; - case 2560: - NpcHandler.npcs[i].attackType = 1; - NpcHandler.npcs[i].projectileId = 1190; - break; - case 2559: - NpcHandler.npcs[i].attackType = 2; - NpcHandler.npcs[i].projectileId = 1203; - break; - case 2558: - random = Misc.random(1); - NpcHandler.npcs[i].attackType = 1 + random; - if (NpcHandler.npcs[i].attackType == 1) { - NpcHandler.npcs[i].projectileId = 1197; - } else { - NpcHandler.npcs[i].attackType = 2; - NpcHandler.npcs[i].projectileId = 1198; - } - break; - // sara npcs - case 2562: // sara - random = Misc.random(1); - if (random == 0) { - NpcHandler.npcs[i].attackType = 2; - NpcHandler.npcs[i].endGfx = 1224; - NpcHandler.npcs[i].projectileId = -1; - } else if (random == 1) { - NpcHandler.npcs[i].attackType = 0; - } - break; - case 2563: // star - NpcHandler.npcs[i].attackType = 0; - break; - case 2564: // growler - NpcHandler.npcs[i].attackType = 2; - NpcHandler.npcs[i].projectileId = 1203; - break; - case 2565: // bree - NpcHandler.npcs[i].attackType = 1; - NpcHandler.npcs[i].projectileId = 9; - break; - // bandos npcs - case 2550: - random = Misc.random(2); - if (random == 0 || random == 1) { - NpcHandler.npcs[i].attackType = 0; - } else { - NpcHandler.npcs[i].attackType = 1; - NpcHandler.npcs[i].endGfx = 1211; - NpcHandler.npcs[i].projectileId = 288; - } - break; - case 2551: - NpcHandler.npcs[i].attackType = 0; - break; - case 2552: - NpcHandler.npcs[i].attackType = 2; - NpcHandler.npcs[i].projectileId = 1203; - break; - case 2553: - NpcHandler.npcs[i].attackType = 1; - NpcHandler.npcs[i].projectileId = 1206; - break; - case 2025: - NpcHandler.npcs[i].attackType = 2; - int r = Misc.random(3); - if (r == 0) { - NpcHandler.npcs[i].gfx100(158); - NpcHandler.npcs[i].projectileId = 159; - NpcHandler.npcs[i].endGfx = 160; - } - if (r == 1) { - NpcHandler.npcs[i].gfx100(161); - NpcHandler.npcs[i].projectileId = 162; - NpcHandler.npcs[i].endGfx = 163; - } - if (r == 2) { - NpcHandler.npcs[i].gfx100(164); - NpcHandler.npcs[i].projectileId = 165; - NpcHandler.npcs[i].endGfx = 166; - } - if (r == 3) { - NpcHandler.npcs[i].gfx100(155); - NpcHandler.npcs[i].projectileId = 156; - } - break; - case 2881:// supreme - NpcHandler.npcs[i].attackType = 1; - NpcHandler.npcs[i].projectileId = 298; - break; - - case 2882:// prime - NpcHandler.npcs[i].attackType = 2; - NpcHandler.npcs[i].projectileId = 162; - NpcHandler.npcs[i].endGfx = 477; - break; - - case 2028: - NpcHandler.npcs[i].attackType = 1; - NpcHandler.npcs[i].projectileId = 27; - break; - - case 3200: - int r2 = Misc.random(1); - if (r2 == 0) { - NpcHandler.npcs[i].attackType = 1; - NpcHandler.npcs[i].gfx100(550); - NpcHandler.npcs[i].projectileId = 551; - NpcHandler.npcs[i].endGfx = 552; - } else { - NpcHandler.npcs[i].attackType = 2; - NpcHandler.npcs[i].gfx100(553); - NpcHandler.npcs[i].projectileId = 554; - NpcHandler.npcs[i].endGfx = 555; - } - break; - case 2745: - int r3 = 0; - if (NpcHandler - .goodDistance( - NpcHandler.npcs[i].absX, - NpcHandler.npcs[i].absY, - PlayerHandler.players[NpcHandler.npcs[i].spawnedBy].absX, - PlayerHandler.players[NpcHandler.npcs[i].spawnedBy].absY, - 1)) { - r3 = Misc.random(2); - } else { - r3 = Misc.random(1); - } - if (r3 == 0) { - NpcHandler.npcs[i].attackType = 2; - NpcHandler.npcs[i].endGfx = 157; - NpcHandler.npcs[i].projectileId = 448; - } else if (r3 == 1) { - NpcHandler.npcs[i].attackType = 1; - NpcHandler.npcs[i].endGfx = 451; - NpcHandler.npcs[i].projectileId = -1; - } else if (r3 == 2) { - NpcHandler.npcs[i].attackType = 0; - NpcHandler.npcs[i].projectileId = -1; - } - break; - case 2743: - NpcHandler.npcs[i].attackType = 2; - NpcHandler.npcs[i].projectileId = 445; - NpcHandler.npcs[i].endGfx = 446; - break; - - case 2631: - NpcHandler.npcs[i].attackType = 1; - NpcHandler.npcs[i].projectileId = 443; - break; - } - } - - public static void registerNpcHit(int i) { - if (NpcHandler.npcs[i] != null) { - if (PlayerHandler.players[NpcHandler.npcs[i].oldIndex] == null) { - return; - } - if (NpcHandler.npcs[i].isDead) { - return; - } - Client c = (Client) PlayerHandler.players[NpcHandler.npcs[i].oldIndex]; - if (NpcHandler.multiAttacks(i)) { - NpcCombat.multiAttackDamage(i); - return; - } - if (c.playerIndex <= 0 && c.npcIndex <= 0) { - if (c.autoRet == 1 && NpcHandler.npcs[i].npcType != 411) { - c.npcIndex = i; - } - } - if (c.attackTimer <= 3 || c.attackTimer == 0 && c.npcIndex == 0 && c.oldNpcIndex == 0) { - c.startAnimation(c.getCombatAssistant().getBlockEmote()); - } - if (c.respawnTimer <= 0) { - int damage = 0; - if (NpcHandler.npcs[i].attackType == 0) { - damage = Misc.random(NpcHandler.npcs[i].maxHit); - if (10 + Misc.random(c.getCombatAssistant().calcDef()) > Misc - .random(NpcHandler.npcs[i].attack)) { - damage = 0; - } - if (NpcData.cantKillYou(NpcHandler.npcs[i].npcType)) { - if (damage >= c.playerLevel[Constants.HITPOINTS]) { - damage = c.playerLevel[Constants.HITPOINTS] - 1; - } - } - if (c.getPrayer().prayerActive[18] - && !(NpcHandler.npcs[i].npcType == 2030)) { // protect - // from - // melee) - // { - // // - // protect - // from - // melee - damage = 0; - } else if (c.getPrayer().prayerActive[18] - && NpcHandler.npcs[i].npcType == 2030) { - if (NpcHandler.npcs[i].attackType == 0) { - damage = Misc.random(NpcHandler.npcs[i].maxHit); - } - if (10 + Misc - .random(MeleeData.calculateMeleeDefence(c)) > Misc - .random(NpcHandler.npcs[i].attack)) { - damage = 0; - } - } - if (c.playerLevel[3] - damage < 0) { - damage = c.playerLevel[3]; - } - } - - if (NpcHandler.npcs[i].attackType == 1) { // range - damage = Misc.random(NpcHandler.npcs[i].maxHit); - if (10 + Misc.random(c.getCombatAssistant() - .calculateRangeDefence()) > Misc - .random(NpcHandler.npcs[i].attack)) { - damage = 0; - } - if (NpcData.cantKillYou(NpcHandler.npcs[i].npcType)) { - if (damage >= c.playerLevel[Constants.HITPOINTS]) { - damage = c.playerLevel[Constants.HITPOINTS] - 1; - } - } - if (c.getPrayer().prayerActive[17]) { // protect from range - damage = 0; - } - if (c.playerLevel[3] - damage < 0) { - damage = c.playerLevel[3]; - } - } - - if (NpcHandler.npcs[i].attackType == 2) { // magic - damage = Misc.random(NpcHandler.npcs[i].maxHit); - boolean magicFailed = false; - if (10 + Misc.random(c.getCombatAssistant().mageDef()) > Misc - .random(NpcHandler.npcs[i].attack)) { - damage = 0; - magicFailed = true; - } - if (NpcData.cantKillYou(NpcHandler.npcs[i].npcType)) { - if (damage >= c.playerLevel[Constants.HITPOINTS]) { - damage = c.playerLevel[Constants.HITPOINTS] - 1; - } - } - if (c.getPrayer().prayerActive[16]) { // protect from magic - damage = 0; - magicFailed = true; - } - if (c.playerLevel[3] - damage < 0) { - damage = c.playerLevel[3]; - } - if (NpcHandler.npcs[i].endGfx > 0 && (!magicFailed || FightCaves.isFightCaveNpc(i))) { - c.gfx100(NpcHandler.npcs[i].endGfx); - } else { - c.gfx100(85); - c.getActionSender().sendSound(SoundList.MAGE_FAIL, - 100, 0); - } - } - - if (NpcHandler.npcs[i].attackType == 3) { // fire breath - int anti = c.getPlayerAssistant().antiFire(); - switch (anti) { - case 0:// has no shield - damage = Misc.random(45) + 10; - c.getActionSender().sendMessage("You are badly burnt by the dragon fire!"); - break; - case 1:// has a shield - if (c.getItemAssistant().playerHasEquipped(5, 1540)) { - damage = Misc.random(4) + 1; - c.getActionSender().sendMessage("Your shield protects you from the fire."); - } - break; - case 2:// melee - damage = Misc.random(5); - break; - } - } - if (damage > 0) { - CombatAssistant.applyRecoilNPC(c, damage, i); - } - NpcHandler.handleSpecialEffects(c, i, damage); - c.logoutDelay = System.currentTimeMillis(); // logout delay - c.handleHitMask(damage); - c.playerLevel[3] -= damage; - c.getPlayerAssistant().refreshSkill(3); - FightCaves.tzKihEffect(c, i, damage); - c.updateRequired = true; - } - } - } - -} +package com.rebotted.game.content.combat.npcs; + +import com.rebotted.GameConstants; +import com.rebotted.game.content.combat.CombatAssistant; +import com.rebotted.game.content.combat.melee.MeleeData; +import com.rebotted.game.content.minigames.FightCaves; +import com.rebotted.game.content.music.sound.CombatSounds; +import com.rebotted.game.content.music.sound.SoundList; +import com.rebotted.game.npcs.NpcData; +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerHandler; +import com.rebotted.util.Misc; + +public class NpcCombat { + + public static void multiAttackDamage(int i) { + int max = NpcHandler.getMaxHit(i); + for (Player player : PlayerHandler.players) { + if (player != null) { + Client c = (Client) player; + if (c.isDead || c.heightLevel != NpcHandler.npcs[i].heightLevel) { + continue; + } + if (player.goodDistance(c.absX, c.absY, + NpcHandler.npcs[i].absX, NpcHandler.npcs[i].absY, 15)) { + if (NpcHandler.npcs[i].attackType == 2) { + if (!c.getPrayer().prayerActive[16]) { + if (Misc.random(500) + 200 > Misc.random(c + .getCombatAssistant().mageDef())) { + int dam = Misc.random(max); + c.dealDamage(dam); + c.handleHitMask(dam); + } else { + c.dealDamage(0); + c.handleHitMask(0); + } + } else { + c.dealDamage(0); + c.handleHitMask(0); + } + } else if (NpcHandler.npcs[i].attackType == 1) { + if (!c.getPrayer().prayerActive[17]) { + int dam = Misc.random(max); + if (Misc.random(500) + 200 > Misc.random(c + .getCombatAssistant() + .calculateRangeDefence())) { + c.dealDamage(dam); + c.handleHitMask(dam); + } else { + c.dealDamage(0); + c.handleHitMask(0); + } + } else { + c.dealDamage(0); + c.handleHitMask(0); + } + } + if (NpcHandler.npcs[i].endGfx > 0) { + c.gfx0(NpcHandler.npcs[i].endGfx); + } + } + c.getPlayerAssistant().refreshSkill(3); + } + } + } + + public static void multiAttackGfx(int i, int gfx) { + if (NpcHandler.npcs[i].projectileId < 0) { + return; + } + for (Player player : PlayerHandler.players) { + if (player != null) { + Client c = (Client) player; + if (c.heightLevel != NpcHandler.npcs[i].heightLevel) { + continue; + } + if (player.goodDistance(c.absX, c.absY, + NpcHandler.npcs[i].absX, NpcHandler.npcs[i].absY, 15)) { + int nX = NpcHandler.npcs[i].getX() + NpcHandler.offset(i); + int nY = NpcHandler.npcs[i].getY() + NpcHandler.offset(i); + int pX = c.getX(); + int pY = c.getY(); + int offX = (nY - pY) * -1; + int offY = (nX - pX) * -1; + c.getPlayerAssistant().createPlayersProjectile(nX, nY, + offX, offY, 50, NpcHandler.getProjectileSpeed(i), + NpcHandler.npcs[i].projectileId, 43, 31, + -c.getId() - 1, 65); + } + } + } + } + + public static void attackPlayer(Player c, int i) { + if (NpcHandler.npcs[i] != null) { + if (NpcHandler.npcs[i].isDead) { + return; + } + if (c.npcCanAttack == false) { + return; + } + if (NpcHandler.npcs[i].inLesserNpc()) { + return; + } + if (c.inDraynorBuilding()) { + if (NpcHandler.npcs[i].npcType == 172 || NpcHandler.npcs[i].npcType == 174) { + return; + } + } + if (NpcHandler.npcs[i].absY == 3228 && c.absY == 3227) { + return; + } + if (NpcHandler.npcs[i].absY == 3224 && c.absY == 3225) { + return; + } + if (NpcHandler.npcs[i].absY == 3226 && c.absY == 3227) { + return; + } + if (NpcHandler.npcs[i].absY == 3228 && c.absY == 3227) { + return; + } + if (NpcHandler.npcs[i].npcType > 2462 && NpcHandler.npcs[i].npcType < 2468) { + if (Misc.random(5) == 0) { + NpcHandler.npcs[i].forceChat("Flee from me, " + c.playerName + "!"); + } else if (Misc.random(5) == 1) { + NpcHandler.npcs[i].forceChat("Begone, " + c.playerName + "!"); + } else if (Misc.random(5) == 2) { + NpcHandler.npcs[i].forceChat("Bwuk"); + } else if (Misc.random(5) == 3) { + NpcHandler.npcs[i].forceChat("Bwuk bwuk bwuk"); + } else if (Misc.random(5) == 4) { + NpcHandler.npcs[i].forceChat("MUAHAHAHAHAAA!"); + } else if (Misc.random(5) == 5) { + NpcHandler.npcs[i].forceChat("Bwaaaaaaauk bwuk bwuk"); + } + } + if (NpcHandler.npcs[i].npcType == 1532 + || NpcHandler.npcs[i].npcType == 1534 + || NpcHandler.npcs[i].npcType == 6145 + || NpcHandler.npcs[i].npcType == 6144 + || NpcHandler.npcs[i].npcType == 6143 + || NpcHandler.npcs[i].npcType == 6142 + || NpcHandler.npcs[i].npcType == 752) { + return; + } + if (NpcHandler.npcs[i].npcType == 1401 && c.isInTut() + || c.tutorialProgress < 36) { + return; + } + if (NpcHandler.npcs[i].npcType == 9 && c.absX == 3180 + && c.absY > 3433 && c.absY < 3447) { + return; + } + if (NpcHandler.npcs[i].npcType == 374 && c.absY == 3372 && c.absX > 2522 && c.absX < 2532) { + return; + } + if (!NpcHandler.npcs[i].inMulti() && NpcHandler.npcs[i].underAttackBy > 0 && NpcHandler.npcs[i].underAttackBy != c.playerId) { + NpcHandler.npcs[i].killerId = 0; + return; + } + if (!NpcHandler.npcs[i].inMulti() + && (c.underAttackBy > 0 || c.underAttackBy2 > 0 + && c.underAttackBy2 != i)) { + NpcHandler.npcs[i].killerId = 0; + return; + } + if (NpcHandler.npcs[i].heightLevel != c.heightLevel) { + NpcHandler.npcs[i].killerId = 0; + return; + } + if (!NpcData.goodDistanceNpc(NpcHandler.npcs[i].npcId, c.getX(), c.getY(), NpcData.distanceRequired(NpcHandler.npcs[i].npcId)) || NpcData.inNpc(NpcHandler.npcs[i].npcId, c.getX(), c.getY())) { + return; + } + NpcHandler.npcs[i].facePlayer(c.playerId); + boolean special = false;//specialCase(c,i); + if (NpcData.checkClip(NpcHandler.npcs[i]) || special) { + if (c.respawnTimer <= 0) { + NpcHandler.npcs[i].facePlayer(c.playerId); + NpcHandler.npcs[i].attackTimer = NpcData.getNpcDelay(i); + NpcHandler.npcs[i].hitDelayTimer = NpcData.getHitDelay(i); + NpcHandler.npcs[i].attackType = 0; + if (GameConstants.COMBAT_SOUNDS + && NpcHandler.npcs[i].npcType < 3177 + && NpcHandler.npcs[i].npcType > 3180) { + c.getPacketSender() + .sendSound( + CombatSounds + .getNpcAttackSounds(NpcHandler.npcs[i].npcType), + 100, 0); + } + if (special) { + loadSpell2(i); + } else { + loadSpell(c, i); + } + if (NpcHandler.npcs[i].attackType == 3) { + NpcHandler.npcs[i].hitDelayTimer += 2; + } + if (NpcHandler.multiAttacks(i)) { + multiAttackGfx(i, NpcHandler.npcs[i].projectileId); + NpcData.startAnimation(NpcEmotes.getAttackEmote(i), i); + if (GameConstants.COMBAT_SOUNDS + && NpcHandler.npcs[i].npcType < 3177 + && NpcHandler.npcs[i].npcType > 3180) { + c.getPacketSender() + .sendSound( + CombatSounds + .getNpcAttackSounds(NpcHandler.npcs[i].npcType), + 100, 0); + } + NpcHandler.npcs[i].oldIndex = c.playerId; + return; + } + if (NpcHandler.npcs[i].projectileId > 0) { + int nX = NpcHandler.npcs[i].getX() + + NpcHandler.offset(i); + int nY = NpcHandler.npcs[i].getY() + + NpcHandler.offset(i); + int pX = c.getX(); + int pY = c.getY(); + int offX = (nY - pY) * -1; + int offY = (nX - pX) * -1; + c.getPlayerAssistant().createPlayersProjectile(nX, nY, + offX, offY, 50, + NpcHandler.getProjectileSpeed(i), + NpcHandler.npcs[i].projectileId, 43, 31, + -c.getId() - 1, 65); + } + int random = Misc.random(10); + if (NpcHandler.npcs[i].npcType == 222 && (NpcHandler.npcs[i].killerId > 0 && NpcHandler.npcs[i].underAttack) && !NpcHandler.npcs[i].isDead && (NpcHandler.npcs[i].HP < NpcHandler.npcs[i].MaxHP + 1)) { + if (random < 3) { + NpcHandler.npcs[i].HP += 2; + //NpcHandler.npcs[i].startAnimation(84); + NpcHandler.npcs[i].updateRequired = true; + } + } + c.underAttackBy2 = i; + c.singleCombatDelay2 = System.currentTimeMillis(); + NpcHandler.npcs[i].oldIndex = c.playerId; + NpcData.startAnimation(NpcEmotes.getAttackEmote(i), i); + if (GameConstants.COMBAT_SOUNDS + && NpcHandler.npcs[i].npcType < 3177 + && NpcHandler.npcs[i].npcType > 3180) { + c.getPacketSender() + .sendSound( + CombatSounds + .getNpcAttackSounds(NpcHandler.npcs[i].npcType), + 100, 0); + } + c.getPacketSender().closeAllWindows(); + } + } + } + } + + public static void loadSpell2(int i) { + NpcHandler.npcs[i].attackType = 3; + int random = Misc.random(3); + if (random == 0) { + NpcHandler.npcs[i].projectileId = 393; // red + NpcHandler.npcs[i].endGfx = 430; + } else if (random == 1) { + NpcHandler.npcs[i].projectileId = 394; // green + NpcHandler.npcs[i].endGfx = 429; + } else if (random == 2) { + NpcHandler.npcs[i].projectileId = 395; // white + NpcHandler.npcs[i].endGfx = 431; + } else if (random == 3) { + NpcHandler.npcs[i].projectileId = 396; // blue + NpcHandler.npcs[i].endGfx = 428; + } + } + + public static void loadSpell(Player c, int i) { + if (NpcHandler.npcs[i].npcType > 2462 && NpcHandler.npcs[i].npcType < 2469 || NpcHandler.npcs[i].npcType > 3751 && NpcHandler.npcs[i].npcType < 3762) { + NpcHandler.npcs[i].attackType = 2; + } + if (NpcHandler.npcs[i].npcType > 3761 && NpcHandler.npcs[i].npcType < 3772) { + NpcHandler.npcs[i].attackType = 1; + } + switch (NpcHandler.npcs[i].npcType) { + case 2607: + NpcHandler.npcs[i].attackType = 1; + case 2591: + case 172: + case 174: + NpcHandler.npcs[i].attackType = 2; + break; + case 3068: + if(Misc.random(10) > 7) { + NpcHandler.npcs[i].projectileId = 393; //red + NpcHandler.npcs[i].endGfx = 430; + NpcHandler.npcs[i].attackType = 3; + NpcData.startAnimation(2989, i); + } else { + NpcData.startAnimation(2980, i); + NpcHandler.npcs[i].attackType = 0; + } + break; + case 2892: + NpcHandler.npcs[i].projectileId = 94; + NpcHandler.npcs[i].attackType = 2; + NpcHandler.npcs[i].endGfx = 95; + break; + case 2894: + NpcHandler.npcs[i].projectileId = 298; + NpcHandler.npcs[i].attackType = 1; + break; + /* + * Better Dragons + */ + case 5363: // Mithril-Dragon + case 53: // Red Dragon + case 54: // Black-Dragon + case 55: // Blue-Dragon + case 941: // Green-Dragon + case 4682: + case 5362: + case 1590: + case 1591: + case 1592: + int random1 = Misc.random(3); + switch (random1) { + case 1: + NpcHandler.npcs[i].projectileId = 393; // red + NpcHandler.npcs[i].endGfx = 430; + NpcHandler.npcs[i].attackType = 3; + break; + default: + NpcHandler.npcs[i].projectileId = -1; // melee + NpcHandler.npcs[i].endGfx = -1; + NpcHandler.npcs[i].attackType = 0; + break; + } + break; + case 134: + if (c.playerLevel[5] > 0) { + c.playerLevel[5]--; + c.getPlayerAssistant().refreshSkill(5); + c.getPlayerAssistant().appendPoison(5); + c.getCombatAssistant().resetPlayerAttack(); + } + break; + + case 3590: + case 50: + case 742: + int random = Misc.random(4); + switch (random) { + case 0: + NpcHandler.npcs[i].projectileId = 393; // red + NpcHandler.npcs[i].endGfx = 430; + NpcHandler.npcs[i].attackType = 3; + break; + case 1: + NpcHandler.npcs[i].projectileId = 394; // green + NpcHandler.npcs[i].endGfx = 429; + NpcHandler.npcs[i].attackType = 3; + break; + case 2: + NpcHandler.npcs[i].projectileId = 395; // white + NpcHandler.npcs[i].endGfx = 431; + NpcHandler.npcs[i].attackType = 3; + break; + case 3: + NpcHandler.npcs[i].projectileId = 396; // blue + NpcHandler.npcs[i].endGfx = 428; + NpcHandler.npcs[i].attackType = 3; + break; + case 4: + NpcHandler.npcs[i].projectileId = -1; // melee + NpcHandler.npcs[i].endGfx = -1; + NpcHandler.npcs[i].attackType = 0; + break; + } + break; + // arma npcs + case 2561: + NpcHandler.npcs[i].attackType = 0; + break; + case 2560: + NpcHandler.npcs[i].attackType = 1; + NpcHandler.npcs[i].projectileId = 1190; + break; + case 2559: + NpcHandler.npcs[i].attackType = 2; + NpcHandler.npcs[i].projectileId = 1203; + break; + case 2558: + random = Misc.random(1); + NpcHandler.npcs[i].attackType = 1 + random; + if (NpcHandler.npcs[i].attackType == 1) { + NpcHandler.npcs[i].projectileId = 1197; + } else { + NpcHandler.npcs[i].attackType = 2; + NpcHandler.npcs[i].projectileId = 1198; + } + break; + // sara npcs + case 2562: // sara + random = Misc.random(1); + if (random == 0) { + NpcHandler.npcs[i].attackType = 2; + NpcHandler.npcs[i].endGfx = 1224; + NpcHandler.npcs[i].projectileId = -1; + } else if (random == 1) { + NpcHandler.npcs[i].attackType = 0; + } + break; + case 2563: // star + NpcHandler.npcs[i].attackType = 0; + break; + case 2564: // growler + NpcHandler.npcs[i].attackType = 2; + NpcHandler.npcs[i].projectileId = 1203; + break; + case 2565: // bree + NpcHandler.npcs[i].attackType = 1; + NpcHandler.npcs[i].projectileId = 9; + break; + // bandos npcs + case 2550: + random = Misc.random(2); + if (random == 0 || random == 1) { + NpcHandler.npcs[i].attackType = 0; + } else { + NpcHandler.npcs[i].attackType = 1; + NpcHandler.npcs[i].endGfx = 1211; + NpcHandler.npcs[i].projectileId = 288; + } + break; + case 2551: + NpcHandler.npcs[i].attackType = 0; + break; + case 2552: + NpcHandler.npcs[i].attackType = 2; + NpcHandler.npcs[i].projectileId = 1203; + break; + case 2553: + NpcHandler.npcs[i].attackType = 1; + NpcHandler.npcs[i].projectileId = 1206; + break; + case 2025: + NpcHandler.npcs[i].attackType = 2; + int r = Misc.random(3); + if (r == 0) { + NpcHandler.npcs[i].gfx100(158); + NpcHandler.npcs[i].projectileId = 159; + NpcHandler.npcs[i].endGfx = 160; + } + if (r == 1) { + NpcHandler.npcs[i].gfx100(161); + NpcHandler.npcs[i].projectileId = 162; + NpcHandler.npcs[i].endGfx = 163; + } + if (r == 2) { + NpcHandler.npcs[i].gfx100(164); + NpcHandler.npcs[i].projectileId = 165; + NpcHandler.npcs[i].endGfx = 166; + } + if (r == 3) { + NpcHandler.npcs[i].gfx100(155); + NpcHandler.npcs[i].projectileId = 156; + } + break; + case 2881:// supreme + NpcHandler.npcs[i].attackType = 1; + NpcHandler.npcs[i].projectileId = 298; + break; + + case 2882:// prime + NpcHandler.npcs[i].attackType = 2; + NpcHandler.npcs[i].projectileId = 162; + NpcHandler.npcs[i].endGfx = 477; + break; + + case 2028: + NpcHandler.npcs[i].attackType = 1; + NpcHandler.npcs[i].projectileId = 27; + break; + + case 3200: + int r2 = Misc.random(1); + if (r2 == 0) { + NpcHandler.npcs[i].attackType = 1; + NpcHandler.npcs[i].gfx100(550); + NpcHandler.npcs[i].projectileId = 551; + NpcHandler.npcs[i].endGfx = 552; + } else { + NpcHandler.npcs[i].attackType = 2; + NpcHandler.npcs[i].gfx100(553); + NpcHandler.npcs[i].projectileId = 554; + NpcHandler.npcs[i].endGfx = 555; + } + break; + case 2745: + int r3 = 0; + if (NpcHandler + .goodDistance( + NpcHandler.npcs[i].absX, + NpcHandler.npcs[i].absY, + PlayerHandler.players[NpcHandler.npcs[i].spawnedBy].absX, + PlayerHandler.players[NpcHandler.npcs[i].spawnedBy].absY, + 1)) { + r3 = Misc.random(2); + } else { + r3 = Misc.random(1); + } + if (r3 == 0) { + NpcHandler.npcs[i].attackType = 2; + NpcHandler.npcs[i].endGfx = 157; + NpcHandler.npcs[i].projectileId = 448; + } else if (r3 == 1) { + NpcHandler.npcs[i].attackType = 1; + NpcHandler.npcs[i].endGfx = 451; + NpcHandler.npcs[i].projectileId = -1; + } else if (r3 == 2) { + NpcHandler.npcs[i].attackType = 0; + NpcHandler.npcs[i].projectileId = -1; + } + break; + case 2743: + NpcHandler.npcs[i].attackType = 2; + NpcHandler.npcs[i].projectileId = 445; + NpcHandler.npcs[i].endGfx = 446; + break; + + case 2631: + NpcHandler.npcs[i].attackType = 1; + NpcHandler.npcs[i].projectileId = 443; + break; + } + } + + public static void registerNpcHit(int i) { + if (NpcHandler.npcs[i] != null) { + if (PlayerHandler.players[NpcHandler.npcs[i].oldIndex] == null) { + return; + } + if (NpcHandler.npcs[i].isDead) { + return; + } + Client c = (Client) PlayerHandler.players[NpcHandler.npcs[i].oldIndex]; + if (NpcHandler.multiAttacks(i)) { + NpcCombat.multiAttackDamage(i); + return; + } + if (c.playerIndex <= 0 && c.npcIndex <= 0) { + if (c.autoRet == 1 && NpcHandler.npcs[i].npcType != 411) { + c.npcIndex = i; + } + } + if (c.attackTimer <= 3 || c.attackTimer == 0 && c.npcIndex == 0 && c.oldNpcIndex == 0) { + c.startAnimation(c.getCombatAssistant().getBlockEmote()); + } + if (c.respawnTimer <= 0) { + int damage = 0; + if (NpcHandler.npcs[i].attackType == 0) { + damage = Misc.random(NpcHandler.npcs[i].maxHit); + if (10 + Misc.random(c.getCombatAssistant().calcDef()) > Misc + .random(NpcHandler.npcs[i].attack)) { + damage = 0; + } + if (NpcData.cantKillYou(NpcHandler.npcs[i].npcType)) { + if (damage >= c.playerLevel[GameConstants.HITPOINTS]) { + damage = c.playerLevel[GameConstants.HITPOINTS] - 1; + } + } + if (c.getPrayer().prayerActive[18] + && !(NpcHandler.npcs[i].npcType == 2030)) { // protect + // from + // melee) + // { + // // + // protect + // from + // melee + damage = 0; + } else if (c.getPrayer().prayerActive[18] + && NpcHandler.npcs[i].npcType == 2030) { + if (NpcHandler.npcs[i].attackType == 0) { + damage = Misc.random(NpcHandler.npcs[i].maxHit); + } + if (10 + Misc + .random(MeleeData.calculateMeleeDefence(c)) > Misc + .random(NpcHandler.npcs[i].attack)) { + damage = 0; + } + } + if (c.playerLevel[3] - damage < 0) { + damage = c.playerLevel[3]; + } + } + + if (NpcHandler.npcs[i].attackType == 1) { // range + damage = Misc.random(NpcHandler.npcs[i].maxHit); + if (10 + Misc.random(c.getCombatAssistant() + .calculateRangeDefence()) > Misc + .random(NpcHandler.npcs[i].attack)) { + damage = 0; + } + if (NpcData.cantKillYou(NpcHandler.npcs[i].npcType)) { + if (damage >= c.playerLevel[GameConstants.HITPOINTS]) { + damage = c.playerLevel[GameConstants.HITPOINTS] - 1; + } + } + if (c.getPrayer().prayerActive[17]) { // protect from range + damage = 0; + } + if (c.playerLevel[3] - damage < 0) { + damage = c.playerLevel[3]; + } + } + + if (NpcHandler.npcs[i].attackType == 2) { // magic + damage = Misc.random(NpcHandler.npcs[i].maxHit); + boolean magicFailed = false; + if (10 + Misc.random(c.getCombatAssistant().mageDef()) > Misc + .random(NpcHandler.npcs[i].attack)) { + damage = 0; + magicFailed = true; + } + if (NpcData.cantKillYou(NpcHandler.npcs[i].npcType)) { + if (damage >= c.playerLevel[GameConstants.HITPOINTS]) { + damage = c.playerLevel[GameConstants.HITPOINTS] - 1; + } + } + if (c.getPrayer().prayerActive[16]) { // protect from magic + damage = 0; + magicFailed = true; + } + if (c.playerLevel[3] - damage < 0) { + damage = c.playerLevel[3]; + } + if (NpcHandler.npcs[i].endGfx > 0 && (!magicFailed || FightCaves.isFightCaveNpc(i))) { + c.gfx100(NpcHandler.npcs[i].endGfx); + } else { + c.gfx100(85); + c.getPacketSender().sendSound(SoundList.MAGE_FAIL, + 100, 0); + } + } + + if (NpcHandler.npcs[i].attackType == 3) { // fire breath + int anti = c.getPlayerAssistant().antiFire(); + switch (anti) { + case 0:// has no shield + damage = Misc.random(45) + 10; + c.getPacketSender().sendMessage("You are badly burnt by the dragon fire!"); + break; + case 1:// has a shield + if (c.getItemAssistant().playerHasEquipped(5, 1540)) { + damage = Misc.random(4) + 1; + c.getPacketSender().sendMessage("Your shield protects you from the fire."); + } + break; + case 2:// melee + damage = Misc.random(5); + break; + } + } + if (damage > 0) { + CombatAssistant.applyRecoilNPC(c, damage, i); + } + NpcHandler.handleSpecialEffects(c, i, damage); + c.logoutDelay = System.currentTimeMillis(); // logout delay + c.handleHitMask(damage); + c.playerLevel[3] -= damage; + c.getPlayerAssistant().refreshSkill(3); + FightCaves.tzKihEffect(c, i, damage); + c.updateRequired = true; + } + } + } + +} diff --git a/2006Redone Server/src/redone/game/content/combat/npcs/NpcEmotes.java b/2006Redone Server/src/com/rebotted/game/content/combat/npcs/NpcEmotes.java similarity index 95% rename from 2006Redone Server/src/redone/game/content/combat/npcs/NpcEmotes.java rename to 2006Redone Server/src/com/rebotted/game/content/combat/npcs/NpcEmotes.java index 8f3202ce..27eb5269 100644 --- a/2006Redone Server/src/redone/game/content/combat/npcs/NpcEmotes.java +++ b/2006Redone Server/src/com/rebotted/game/content/combat/npcs/NpcEmotes.java @@ -1,182 +1,182 @@ -package redone.game.content.combat.npcs; - -import redone.game.npcs.NpcHandler; - -/** - * Npc Emotes - * @author Andrew (I'm A Boss on Rune-Server and Mr Extremez on Mopar & Runelocus) - */ - -public enum NpcEmotes { - MAN(new int[] {1, 2, 3, 4, 5, 6}, 422, 1834, 836), - GARGOYLE(new int[] {1610, 1611}, 1517, 1519, 1518), - SKELETAL_WYVERN(new int[] {3068}, 2989, 2988, 2987), - BAT(new int[] {412, 78}, 30, 31, 36), - BEAR(new int[] {105, 106}, 41, 42, 44), - HOB_GOBLIN(new int[] {122, 123}, 164, 165, 167), - AHRIM(new int[] {2025}, 729, 404, 2304), - DHAROK(new int[] {2026}, 2067, 404, 2304), - GUTHAN(new int[] {2027}, 422, 404, 2304), - KARIL(new int[] {2028}, 2075, 404, 2304), - TORAG(new int[] {2029}, 0x814, 404, 2304), - VERAC(new int[] {2030}, 2062, 404, 2304), - BABY_DRAGON(new int[] {51, 52, 1589, 3376}, 25, 26, 28), - CHICKEN(new int[] {41}, 55, 56, 57), - KBD_METAL_DRAGON(new int [] {50, 1590, 1591, 1592}, 80, 89, 92), - DRAGON(new int[] {53, 54, 55, 941}, 91, 89, 92), - BASILISK(new int[] {1616, 1617, 4228}, 1546, 1547, 1548), - BLOOD_WORM(new int[] {2031}, 2070, 2072, 2073), - TREE_SPIRIT(new int[] {438, 439, 440, 441, 442, 443}, 94, 95, 97), - ZOMBIE(new int[] {73, 74, 75, 76, 751}, 299, 300, 302), - ROCK_GOLEM(new int[] {413, 414, 415, 416, 417, 418}, 153, 154, 156), - RIVER_TROLL(new int[] {391, 392, 393, 394, 395, 396}, 284, 285, 287), - GOBLIN(new int[] {100, 101, 102, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776}, 309, 312, 313), - COW(new int[] {81, 397, 1766, 1767, 1768}, 59, 60, 62), - BLOODVELD(new int[] {1618, 1619}, 1552, 1550, 1553), - IMP(new int[] {708}, 169, 170, 172), - DARK_WIZARD(new int[] {172, 13}, 711, 1834, 836), - DUCK(new int[] {44, 45}, 7, 8, 9), - SPINOLYP(new int[] {2892, 2894}, 2868, 2864, 2865), - DWARF(new int[] {118, 119}, 99, 100, 102), - DEFILER(new int[] {3762, 3763, 3764, 3765, 3766, 3767, 3768, 3769, 3770, 3771}, 3920, 3921, 3922), - SPINNER(new int[] {3747, 3748, 3749, 3750, 3751}, 3908, 3909, 3910), - SHIFTER(new int[] {3732, 3733, 3734, 3735, 3736, 3737, 3738, 3739, 3740, 3741}, 3901, 3902, 3903), - RAVAGER(new int[] {3742, 3743, 3744, 3745, 3746}, 3915, 3916, 3917), - BRAWLER(new int[] {3772, 3773, 3774, 3775, 3776}, 3897, 3895, 3894), - SPLATTER(new int[] {3727, 3728, 3729, 3730, 3731}, 3891, 3890, 3888), - TORCHER(new int[] {3752, 3753, 3754, 3755, 3756, 3757, 3758, 3759, 3760, 3761}, 3882, 3880, 3881), - KALPHITE_WORKER(new int[] {1153, 1154, 1155, 1156, 1157, 1158, 1161}, 1184, 1186, 1187), - KALPHITE_QUEEN(new int[] {1159}, 1185, 1186, 1187), - KALPHITE_QUEEN_2(new int[] {1160}, 1177, 1179, 1182), - DEMON(new int[] {82, 83, 84, 1472}, 64, 65, 67), - DUST_DEVIL(new int[] {1624}, 1557, 1555, 1558), - CHAOS_ELEMENTAL(new int[] {3200}, 3146, 3148, 3147), - GIANT(new int[] {110, 111, 112, 113, 116, 117}, 128, 129, 131), - DAGGANOTH_PRIME(new int[] {2881}, 2855, 2852, 2856), - DAGGANOTH_SUPREME(new int[] {2882}, 2854, 2852, 2856), - DAGGANOTH_REX(new int[] {2883}, 2851, 2852, 2856), - WHITE_KNIGHT(new int[] {1092, 19}, 406, -1, 843), - KNIGHT_WARRIOR(new int[] {125, 178, 179}, 451, -1, 843), - PORTAL(new int[] {3777, 3778, 3779, 3780}, -1, -1, -1), - DARK_BEAST(new int[] {2783}, 2731, 2732, 2733), - TZHAAR_NPCS(new int[] {2604, 2598, 2591}, 2609, 2606, 2607), - TZHAAR_MEJ(new int[] {2591}, 2612, 2606, 2607), - TZHAAR_KET(new int[] {2610, 2615}, 2612, 2606, 2608), - TZHAAR_XIL(new int[] {2607}, 2611, 2610, 2607), - TZ_KIH(new int[] {2627}, 2621, 2622, 2620), - TZ_KEK(new int[] {2629, 2630, 2736, 2738}, 2625, 2626, 2627), - TOK_XIL(new int[] {2631, 2632}, 2628, 2629, 2630), - TZHAAR_YT(new int[] {2741, 2742, 2746}, 2637, 2635, 2638), - KET_ZEK(new int[] {2743, 2744}, 2644, 2645, 2646), - COCKATRICE(new int[] {1620, 1621}, 1562, 1560, 1563), - GNOME_CHILD(new int[] {160, 161}, 191, 194, 196), - GNOME_GUARD(new int[] {163, 164}, 192, 193, 196), - GNOME_WOMAN(new int[] {168, 169}, 190, 193, 196), - TUROTH(new int[] {1626, 1627, 1628, 1629, 1630, 1631, 1632}, 1595, 1596, 1597), - GHOST(new int[] {103, 104, 491}, 123, 124, 126), - ROCK_CRAB(new int[] {1265, 1267}, 1312, 1313, 1314), - DOG_WOLF(new int[] {96, 97, 99, 1593, 1594, 141, 142, 143}, 75, 76, 78), - SPIDER(new int[] {58, 59, 60, 62, 63, 64, 134, 1009, 2035}, 143, 144, 146), - UNICORN(new int[] {89, 133, 987}, 289, 290, 292), - OGRE(new int[] {114, 115, 374}, 359, 360, 361), - FIEND(new int[] {1633, 1634, 1635, 1636, 3406}, 1582, 1581, 1580), - BANSHEE(new int[] {1612}, 1523, 1525, 1524), - EXPERIMENT_25(new int[] {1677}, 1616, 1617, 1618), - EXPERIMENT_25_2(new int[] {1678}, 1612, 1613, 1614), - EXPERIMENT_51(new int[] {1676}, 1626, 1627, 1628), - ABYSSAL_DEMON(new int[] {1615}, 1537, 1539, 1538), - NECHRYAEL(new int[] {1613}, 1528, 1529, 1530), - SCORPION(new int[] {144, 107, 108}, 246, 247, 248), - SMALL_SPIDER(new int[] {61}, 280, 279, 273), - PIT_SCORPION(new int[] {109}, 270, 271, 273), - CRAWLING_HAND(new int[] {1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657}, 1592, 1591, 1590), - ABBERANT_SPECTRE(new int[] {1604, 1605, 1606, 1607}, 1507, 1509, 1508), - INFERNAL_MAGE(new int[] {1643, 1644, 1645, 1646, 1647}, 429, 430, 2304), - MONKEY_GUARD(new int[] {1455, 1459, 1460}, 1402, 1403, 1404), - RAT(new int[] {86, 87, 88, 224, 446, 748, 950, 978, 2033}, 138, 139, 141), - SMALL_RAT(new int[] {47, 2032}, 2705, 2706, 2707), - DAGGANOTH(new int[] {1338, 1340, 1341, 1342, 2455, 2456}, 1341, 1340, 1342), - SKELETON(new int[] {90, 91, 92, 93}, 260, 261, 263); - - int[] npcId; - int attackAnim, blockAnim, deadAnim; - - private NpcEmotes(int[] npcId, int attackAnim, int blockAnim, int deadAnim) { - this.npcId = npcId; - this.attackAnim = attackAnim; - this.blockAnim = blockAnim; - this.deadAnim = deadAnim; - } - - private int[] getNpcId() { - return npcId; - } - - private int getAttack() { - return attackAnim; - } - - private int getBlock() { - return blockAnim; - } - - private int getDead() { - return deadAnim; - } - - public static int getAttackEmote(int i) { - for (NpcEmotes e : NpcEmotes.values()) { - for (int f = 0; f < e.getNpcId().length; f++) { - if (NpcHandler.npcs[i].npcType == e.getNpcId()[f]) { - return e.getAttack(); - } else { - switch (NpcHandler.npcs[i].npcType) { - case 2745: - if (NpcHandler.npcs[i].attackType == 2) { - return 2656; - } else if (NpcHandler.npcs[i].attackType == 1) { - return 2652; - } else if (NpcHandler.npcs[i].attackType == 0) { - return 2655; - } - - } - } - } - } - return 0x326; - } - - public static int getBlockEmote(int i) { - for (NpcEmotes e : NpcEmotes.values()) { - for (int f = 0; f < e.getNpcId().length; f++) { - if (NpcHandler.npcs[i].npcType == e.getNpcId()[f]) { - return e.getBlock(); - } else { - switch (NpcHandler.npcs[i].npcType) { - case 2745: - return 2653; - } - } - } - } - return -1; - } - - public static int getDeadEmote(int i) { - for (NpcEmotes e : NpcEmotes.values()) { - for (int f = 0; f < e.getNpcId().length; f++) { - if (NpcHandler.npcs[i].npcType == e.getNpcId()[f]) { - return e.getDead(); - } else { - switch (NpcHandler.npcs[i].npcType) { - case 2745: - return 2654; - } - } - } - } - return 2304; - } - +package com.rebotted.game.content.combat.npcs; + +import com.rebotted.game.npcs.NpcHandler; + +/** + * Npc Emotes + * @author Andrew (Mr Extremez) + */ + +public enum NpcEmotes { + MAN(new int[] {1, 2, 3, 4, 5, 6}, 422, 1834, 836), + GARGOYLE(new int[] {1610, 1611}, 1517, 1519, 1518), + SKELETAL_WYVERN(new int[] {3068}, 2989, 2988, 2987), + BAT(new int[] {412, 78}, 30, 31, 36), + BEAR(new int[] {105, 106}, 41, 42, 44), + HOB_GOBLIN(new int[] {122, 123}, 164, 165, 167), + AHRIM(new int[] {2025}, 729, 404, 2304), + DHAROK(new int[] {2026}, 2067, 404, 2304), + GUTHAN(new int[] {2027}, 422, 404, 2304), + KARIL(new int[] {2028}, 2075, 404, 2304), + TORAG(new int[] {2029}, 0x814, 404, 2304), + VERAC(new int[] {2030}, 2062, 404, 2304), + BABY_DRAGON(new int[] {51, 52, 1589, 3376}, 25, 26, 28), + CHICKEN(new int[] {41}, 55, 56, 57), + KBD_METAL_DRAGON(new int [] {50, 1590, 1591, 1592}, 80, 89, 92), + DRAGON(new int[] {53, 54, 55, 941}, 91, 89, 92), + BASILISK(new int[] {1616, 1617, 4228}, 1546, 1547, 1548), + BLOOD_WORM(new int[] {2031}, 2070, 2072, 2073), + TREE_SPIRIT(new int[] {438, 439, 440, 441, 442, 443}, 94, 95, 97), + ZOMBIE(new int[] {73, 74, 75, 76, 751}, 299, 300, 302), + ROCK_GOLEM(new int[] {413, 414, 415, 416, 417, 418}, 153, 154, 156), + RIVER_TROLL(new int[] {391, 392, 393, 394, 395, 396}, 284, 285, 287), + GOBLIN(new int[] {100, 101, 102, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776}, 309, 312, 313), + COW(new int[] {81, 397, 1766, 1767, 1768}, 59, 60, 62), + BLOODVELD(new int[] {1618, 1619}, 1552, 1550, 1553), + IMP(new int[] {708}, 169, 170, 172), + DARK_WIZARD(new int[] {172, 13}, 711, 1834, 836), + DUCK(new int[] {44, 45}, 7, 8, 9), + SPINOLYP(new int[] {2892, 2894}, 2868, 2864, 2865), + DWARF(new int[] {118, 119}, 99, 100, 102), + DEFILER(new int[] {3762, 3763, 3764, 3765, 3766, 3767, 3768, 3769, 3770, 3771}, 3920, 3921, 3922), + SPINNER(new int[] {3747, 3748, 3749, 3750, 3751}, 3908, 3909, 3910), + SHIFTER(new int[] {3732, 3733, 3734, 3735, 3736, 3737, 3738, 3739, 3740, 3741}, 3901, 3902, 3903), + RAVAGER(new int[] {3742, 3743, 3744, 3745, 3746}, 3915, 3916, 3917), + BRAWLER(new int[] {3772, 3773, 3774, 3775, 3776}, 3897, 3895, 3894), + SPLATTER(new int[] {3727, 3728, 3729, 3730, 3731}, 3891, 3890, 3888), + TORCHER(new int[] {3752, 3753, 3754, 3755, 3756, 3757, 3758, 3759, 3760, 3761}, 3882, 3880, 3881), + KALPHITE_WORKER(new int[] {1153, 1154, 1155, 1156, 1157, 1158, 1161}, 1184, 1186, 1187), + KALPHITE_QUEEN(new int[] {1159}, 1185, 1186, 1187), + KALPHITE_QUEEN_2(new int[] {1160}, 1177, 1179, 1182), + DEMON(new int[] {82, 83, 84, 1472}, 64, 65, 67), + DUST_DEVIL(new int[] {1624}, 1557, 1555, 1558), + CHAOS_ELEMENTAL(new int[] {3200}, 3146, 3148, 3147), + GIANT(new int[] {110, 111, 112, 113, 116, 117}, 128, 129, 131), + DAGGANOTH_PRIME(new int[] {2881}, 2855, 2852, 2856), + DAGGANOTH_SUPREME(new int[] {2882}, 2854, 2852, 2856), + DAGGANOTH_REX(new int[] {2883}, 2851, 2852, 2856), + WHITE_KNIGHT(new int[] {1092, 19}, 406, -1, 843), + KNIGHT_WARRIOR(new int[] {125, 178, 179}, 451, -1, 843), + PORTAL(new int[] {3777, 3778, 3779, 3780}, -1, -1, -1), + DARK_BEAST(new int[] {2783}, 2731, 2732, 2733), + TZHAAR_NPCS(new int[] {2604, 2598, 2591}, 2609, 2606, 2607), + TZHAAR_MEJ(new int[] {2591}, 2612, 2606, 2607), + TZHAAR_KET(new int[] {2610, 2615}, 2612, 2606, 2608), + TZHAAR_XIL(new int[] {2607}, 2611, 2610, 2607), + TZ_KIH(new int[] {2627}, 2621, 2622, 2620), + TZ_KEK(new int[] {2629, 2630, 2736, 2738}, 2625, 2626, 2627), + TOK_XIL(new int[] {2631, 2632}, 2628, 2629, 2630), + TZHAAR_YT(new int[] {2741, 2742, 2746}, 2637, 2635, 2638), + KET_ZEK(new int[] {2743, 2744}, 2644, 2645, 2646), + COCKATRICE(new int[] {1620, 1621}, 1562, 1560, 1563), + GNOME_CHILD(new int[] {160, 161}, 191, 194, 196), + GNOME_GUARD(new int[] {163, 164}, 192, 193, 196), + GNOME_WOMAN(new int[] {168, 169}, 190, 193, 196), + TUROTH(new int[] {1626, 1627, 1628, 1629, 1630, 1631, 1632}, 1595, 1596, 1597), + GHOST(new int[] {103, 104, 491}, 123, 124, 126), + ROCK_CRAB(new int[] {1265, 1267}, 1312, 1313, 1314), + DOG_WOLF(new int[] {96, 97, 99, 1593, 1594, 141, 142, 143}, 75, 76, 78), + SPIDER(new int[] {58, 59, 60, 62, 63, 64, 134, 1009, 2035}, 143, 144, 146), + UNICORN(new int[] {89, 133, 987}, 289, 290, 292), + OGRE(new int[] {114, 115, 374}, 359, 360, 361), + FIEND(new int[] {1633, 1634, 1635, 1636, 3406}, 1582, 1581, 1580), + BANSHEE(new int[] {1612}, 1523, 1525, 1524), + EXPERIMENT_25(new int[] {1677}, 1616, 1617, 1618), + EXPERIMENT_25_2(new int[] {1678}, 1612, 1613, 1614), + EXPERIMENT_51(new int[] {1676}, 1626, 1627, 1628), + ABYSSAL_DEMON(new int[] {1615}, 1537, 1539, 1538), + NECHRYAEL(new int[] {1613}, 1528, 1529, 1530), + SCORPION(new int[] {144, 107, 108}, 246, 247, 248), + SMALL_SPIDER(new int[] {61}, 280, 279, 273), + PIT_SCORPION(new int[] {109}, 270, 271, 273), + CRAWLING_HAND(new int[] {1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657}, 1592, 1591, 1590), + ABBERANT_SPECTRE(new int[] {1604, 1605, 1606, 1607}, 1507, 1509, 1508), + INFERNAL_MAGE(new int[] {1643, 1644, 1645, 1646, 1647}, 429, 430, 2304), + MONKEY_GUARD(new int[] {1455, 1459, 1460}, 1402, 1403, 1404), + RAT(new int[] {86, 87, 88, 224, 446, 748, 950, 978, 2033}, 138, 139, 141), + SMALL_RAT(new int[] {47, 2032}, 2705, 2706, 2707), + DAGGANOTH(new int[] {1338, 1340, 1341, 1342, 2455, 2456}, 1341, 1340, 1342), + SKELETON(new int[] {90, 91, 92, 93}, 260, 261, 263); + + int[] npcId; + int attackAnim, blockAnim, deadAnim; + + private NpcEmotes(int[] npcId, int attackAnim, int blockAnim, int deadAnim) { + this.npcId = npcId; + this.attackAnim = attackAnim; + this.blockAnim = blockAnim; + this.deadAnim = deadAnim; + } + + private int[] getNpcId() { + return npcId; + } + + private int getAttack() { + return attackAnim; + } + + private int getBlock() { + return blockAnim; + } + + private int getDead() { + return deadAnim; + } + + public static int getAttackEmote(int i) { + for (NpcEmotes e : NpcEmotes.values()) { + for (int f = 0; f < e.getNpcId().length; f++) { + if (NpcHandler.npcs[i].npcType == e.getNpcId()[f]) { + return e.getAttack(); + } else { + switch (NpcHandler.npcs[i].npcType) { + case 2745: + if (NpcHandler.npcs[i].attackType == 2) { + return 2656; + } else if (NpcHandler.npcs[i].attackType == 1) { + return 2652; + } else if (NpcHandler.npcs[i].attackType == 0) { + return 2655; + } + + } + } + } + } + return 0x326; + } + + public static int getBlockEmote(int i) { + for (NpcEmotes e : NpcEmotes.values()) { + for (int f = 0; f < e.getNpcId().length; f++) { + if (NpcHandler.npcs[i].npcType == e.getNpcId()[f]) { + return e.getBlock(); + } else { + switch (NpcHandler.npcs[i].npcType) { + case 2745: + return 2653; + } + } + } + } + return -1; + } + + public static int getDeadEmote(int i) { + for (NpcEmotes e : NpcEmotes.values()) { + for (int f = 0; f < e.getNpcId().length; f++) { + if (NpcHandler.npcs[i].npcType == e.getNpcId()[f]) { + return e.getDead(); + } else { + switch (NpcHandler.npcs[i].npcType) { + case 2745: + return 2654; + } + } + } + } + return 2304; + } + } \ No newline at end of file diff --git a/2006Redone Server/src/com/rebotted/game/content/combat/prayer/ActivatePrayers.java b/2006Redone Server/src/com/rebotted/game/content/combat/prayer/ActivatePrayers.java new file mode 100644 index 00000000..23444709 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/combat/prayer/ActivatePrayers.java @@ -0,0 +1,287 @@ +package com.rebotted.game.content.combat.prayer; + +import com.rebotted.game.content.music.sound.SoundList; +import com.rebotted.game.players.Player; + +public class ActivatePrayers { + + public static void activatePrayer(Player player, int i) { + if (player.duelRule[7]) { + for (int p = 0; p < player.getPrayer().PRAYER.length; p++) { // reset + // prayer + // glows + player.getPrayer().prayerActive[p] = false; + player.getPacketSender().sendConfig(player.getPrayer().PRAYER_GLOW[p], + 0); + } + player.getPacketSender().sendMessage( + "Prayer has been disabled in this duel!"); + return; + } + if (i == 24 && player.playerLevel[1] < 65) { + player.getPacketSender().sendConfig(player.getPrayer().PRAYER_GLOW[i], 0); + player.getPacketSender().sendMessage( + "You may not use this prayer yet."); + return; + } + if (i == 25 && player.playerLevel[1] < 70) { + player.getPacketSender().sendConfig(player.getPrayer().PRAYER_GLOW[i], 0); + player.getPacketSender().sendMessage( + "You may not use this prayer yet."); + return; + } + int[] defencePrayer = { 0, 5, 13, 24, 25 }; + int[] strengthPrayer = { 1, 6, 14, 24, 25 }; + int[] attackPrayer = { 2, 7, 15, 24, 25 }; + int[] rangePrayer = { 3, 11, 19 }; + int[] magePrayer = { 4, 12, 20 }; + + if (player.playerLevel[5] > 0) { + if (player.getPlayerAssistant().getLevelForXP(player.playerXP[5]) >= player + .getPrayer().PRAYER_LEVEL_REQUIRED[i]) { + boolean headIcon = false; + switch (i) { + case 0: + case 5: + case 13: + if (player.getPrayer().prayerActive[i] == false) { + for (int j = 0; j < defencePrayer.length; j++) { + if (defencePrayer[j] != i) { + player.getPrayer().prayerActive[defencePrayer[j]] = false; + player.getPacketSender().sendConfig(player.getPrayer().PRAYER_GLOW[defencePrayer[j]], 0); + } + } + } + break; + + case 1: + case 6: + case 14: + if (player.getPrayer().prayerActive[i] == false) { + for (int j = 0; j < strengthPrayer.length; j++) { + if (strengthPrayer[j] != i) { + player.getPrayer().prayerActive[strengthPrayer[j]] = false; + player.getPacketSender().sendConfig(player.getPrayer().PRAYER_GLOW[strengthPrayer[j]], 0); + } + } + for (int j = 0; j < rangePrayer.length; j++) { + if (rangePrayer[j] != i) { + player.getPrayer().prayerActive[rangePrayer[j]] = false; + player.getPacketSender().sendConfig(player.getPrayer().PRAYER_GLOW[rangePrayer[j]],0); + } + } + for (int j = 0; j < magePrayer.length; j++) { + if (magePrayer[j] != i) { + player.getPrayer().prayerActive[magePrayer[j]] = false; + player.getPacketSender().sendConfig(player.getPrayer().PRAYER_GLOW[magePrayer[j]], 0); + } + } + } + break; + + case 2: + case 7: + case 15: + if (player.getPrayer().prayerActive[i] == false) { + for (int j = 0; j < attackPrayer.length; j++) { + if (attackPrayer[j] != i) { + player.getPrayer().prayerActive[attackPrayer[j]] = false; + player.getPacketSender().sendConfig(player.getPrayer().PRAYER_GLOW[attackPrayer[j]], 0); + } + } + for (int j = 0; j < rangePrayer.length; j++) { + if (rangePrayer[j] != i) { + player.getPrayer().prayerActive[rangePrayer[j]] = false; + player.getPacketSender().sendConfig(player.getPrayer().PRAYER_GLOW[rangePrayer[j]], 0); + } + } + for (int j = 0; j < magePrayer.length; j++) { + if (magePrayer[j] != i) { + player.getPrayer().prayerActive[magePrayer[j]] = false; + player.getPacketSender().sendConfig(player.getPrayer().PRAYER_GLOW[magePrayer[j]], 0); + } + } + } + break; + + case 3:// range prays + case 11: + case 19: + if (player.getPrayer().prayerActive[i] == false) { + for (int j = 0; j < attackPrayer.length; j++) { + if (attackPrayer[j] != i) { + player.getPrayer().prayerActive[attackPrayer[j]] = false; + player.getPacketSender().sendConfig(player.getPrayer().PRAYER_GLOW[attackPrayer[j]], 0); + } + } + for (int j = 0; j < strengthPrayer.length; j++) { + if (strengthPrayer[j] != i) { + player.getPrayer().prayerActive[strengthPrayer[j]] = false; + player.getPacketSender().sendConfig(player.getPrayer().PRAYER_GLOW[strengthPrayer[j]], 0); + } + } + for (int j = 0; j < rangePrayer.length; j++) { + if (rangePrayer[j] != i) { + player.getPrayer().prayerActive[rangePrayer[j]] = false; + player.getPacketSender().sendConfig(player.getPrayer().PRAYER_GLOW[rangePrayer[j]], 0); + } + } + for (int j = 0; j < magePrayer.length; j++) { + if (magePrayer[j] != i) { + player.getPrayer().prayerActive[magePrayer[j]] = false; + player.getPacketSender().sendConfig(player.getPrayer().PRAYER_GLOW[magePrayer[j]], 0); + } + } + } + break; + case 4: + case 12: + case 20: + if (player.getPrayer().prayerActive[i] == false) { + for (int j = 0; j < attackPrayer.length; j++) { + if (attackPrayer[j] != i) { + player.getPrayer().prayerActive[attackPrayer[j]] = false; + player.getPacketSender().sendConfig(player.getPrayer().PRAYER_GLOW[attackPrayer[j]], 0); + } + } + for (int j = 0; j < strengthPrayer.length; j++) { + if (strengthPrayer[j] != i) { + player.getPrayer().prayerActive[strengthPrayer[j]] = false; + player.getPacketSender().sendConfig(player.getPrayer().PRAYER_GLOW[strengthPrayer[j]], 0); + } + } + for (int j = 0; j < rangePrayer.length; j++) { + if (rangePrayer[j] != i) { + player.getPrayer().prayerActive[rangePrayer[j]] = false; + player.getPacketSender().sendConfig(player.getPrayer().PRAYER_GLOW[rangePrayer[j]], 0); + } + } + for (int j = 0; j < magePrayer.length; j++) { + if (magePrayer[j] != i) { + player.getPrayer().prayerActive[magePrayer[j]] = false; + player.getPacketSender().sendConfig(player.getPrayer().PRAYER_GLOW[magePrayer[j]], 0); + } + } + } + break; + case 10: + player.lastProtItem = System.currentTimeMillis(); + break; + + case 16: + case 17: + case 18: + if (System.currentTimeMillis() + - player.getPrayer().stopPrayerDelay < 5000) { + player.getPacketSender() + .sendMessage( + "You have been injured and can't use this prayer!"); + player.getPacketSender().sendConfig( + player.getPrayer().PRAYER_GLOW[16], 0); + player.getPacketSender().sendConfig( + player.getPrayer().PRAYER_GLOW[17], 0); + player.getPacketSender().sendConfig( + player.getPrayer().PRAYER_GLOW[18], 0); + return; + } + if (i == 16) { + player.protMageDelay = System.currentTimeMillis(); + } else if (i == 17) { + player.protRangeDelay = System.currentTimeMillis(); + } else if (i == 18) { + player.protMeleeDelay = System.currentTimeMillis(); + } + case 21: + case 22: + case 23: + headIcon = true; + for (int p = 16; p < 24; p++) { + if (i != p && p != 19 && p != 20) { + player.getPrayer().prayerActive[p] = false; + player.getPacketSender().sendConfig( + player.getPrayer().PRAYER_GLOW[p], 0); + } + } + break; + case 24: + case 25: + if (player.getPrayer().prayerActive[i] == false) { + for (int j = 0; j < attackPrayer.length; j++) { + if (attackPrayer[j] != i) { + player.getPrayer().prayerActive[attackPrayer[j]] = false; + player.getPacketSender().sendConfig(player.getPrayer().PRAYER_GLOW[attackPrayer[j]], 0); + } + } + for (int j = 0; j < strengthPrayer.length; j++) { + if (strengthPrayer[j] != i) { + player.getPrayer().prayerActive[strengthPrayer[j]] = false; + player.getPacketSender().sendConfig(player.getPrayer().PRAYER_GLOW[strengthPrayer[j]], 0); + } + } + for (int j = 0; j < rangePrayer.length; j++) { + if (rangePrayer[j] != i) { + player.getPrayer().prayerActive[rangePrayer[j]] = false; + player.getPacketSender().sendConfig(player.getPrayer().PRAYER_GLOW[rangePrayer[j]], 0); + } + } + for (int j = 0; j < magePrayer.length; j++) { + if (magePrayer[j] != i) { + player.getPrayer().prayerActive[magePrayer[j]] = false; + player.getPacketSender().sendConfig(player.getPrayer().PRAYER_GLOW[magePrayer[j]], 0); + } + } + for (int j = 0; j < defencePrayer.length; j++) { + if (defencePrayer[j] != i) { + player.getPrayer().prayerActive[defencePrayer[j]] = false; + player.getPacketSender().sendConfig(player.getPrayer().PRAYER_GLOW[defencePrayer[j]], 0); + } + } + } + break; + } + + if (!headIcon) { + if (player.getPrayer().prayerActive[i] == false) { + player.getPrayer().prayerActive[i] = true; + player.getPacketSender().sendConfig( + player.getPrayer().PRAYER_GLOW[i], 1); + } else { + player.getPrayer().prayerActive[i] = false; + player.getPacketSender().sendConfig( + player.getPrayer().PRAYER_GLOW[i], 0); + } + } else { + if (player.getPrayer().prayerActive[i] == false) { + player.getPrayer().prayerActive[i] = true; + player.getPacketSender().sendConfig( + player.getPrayer().PRAYER_GLOW[i], 1); + player.headIcon = player.getPrayer().PRAYER_HEAD_ICONS[i]; + player.getPlayerAssistant().requestUpdates(); + } else { + player.getPrayer().prayerActive[i] = false; + player.getPacketSender().sendConfig( + player.getPrayer().PRAYER_GLOW[i], 0); + player.headIcon = -1; + player.getPlayerAssistant().requestUpdates(); + } + } + } else { + player.getPacketSender().sendConfig(player.getPrayer().PRAYER_GLOW[i], + 0); + player.getPacketSender().sendFrame126( + "You need a @blu@Prayer level of " + + player.getPrayer().PRAYER_LEVEL_REQUIRED[i] + + " to use " + player.getPrayer().PRAYER_NAME[i] + + ".", 357); + player.getPacketSender().sendFrame126("Click here to continue", 358); + player.getPacketSender().sendChatInterface(356); + } + } else { + player.getPacketSender().sendConfig(player.getPrayer().PRAYER_GLOW[i], 0); + player.getPacketSender().sendMessage("You have run out of prayer points!"); + player.getPacketSender().sendSound(SoundList.NO_PRAY, 100, 0); + } + + } + +} diff --git a/2006Redone Server/src/redone/game/content/combat/prayer/PrayerData.java b/2006Redone Server/src/com/rebotted/game/content/combat/prayer/PrayerData.java similarity index 95% rename from 2006Redone Server/src/redone/game/content/combat/prayer/PrayerData.java rename to 2006Redone Server/src/com/rebotted/game/content/combat/prayer/PrayerData.java index 22496d94..96a858c9 100644 --- a/2006Redone Server/src/redone/game/content/combat/prayer/PrayerData.java +++ b/2006Redone Server/src/com/rebotted/game/content/combat/prayer/PrayerData.java @@ -1,72 +1,72 @@ -package redone.game.content.combat.prayer; - -public class PrayerData { - - public int prayerId = -1; - public static double prayerPoint = 1.0; - public long stopPrayerDelay, prayerDelay; - public boolean usingPrayer; - - public final int[] PRAYER_DRAIN_RATE = { 500, 500, 500, 500, 500, 500, 500, - 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, - 500, 500, 500, 500, 500, 500 }; - - public final int[] PRAYER_LEVEL_REQUIRED = { 1, 4, 7, 8, 9, 10, 13, 16, 19, - 22, 25, 26, 27, 28, 31, 34, 37, 40, 43, 44, 45, 46, 49, 52, 60, 70 }; - - public final int[] PRAYER = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 }; - - public final String[] PRAYER_NAME = { "Thick Skin", "Burst of Strength", - "Clarity of Thought", "Sharp Eye", "Mystic Will", "Rock Skin", - "Superhuman Strength", "Improved Reflexes", "Rapid Restore", - "Rapid Heal", "Protect Item", "Hawk Eye", "Mystic Lore", - "Steel Skin", "Ultimate Strength", "Incredible Reflexes", - "Protect from Magic", "Protect from Missiles", - "Protect from Melee", "Eagle Eye", "Mystic Might", "Retribution", - "Redemption", "Smite", "Chivalry", "Piety" }; - - public final int[] PRAYER_GLOW = { 83, 84, 85, 601, 602, 86, 87, 88, 89, - 90, 91, 603, 604, 92, 93, 94, 95, 96, 97, 605, 606, 98, 99, 100, - 607, 608 }; - - public final int[] PRAYER_HEAD_ICONS = { -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 2, 1, 0, -1, -1, 3, 5, 4, -1, -1 }; - - public boolean[] prayerActive = { false, false, false, false, false, false, - false, false, false, false, false, false, false, false, false, - false, false, false, false, false, false, false, false, false, - false, false }; - - /** - * How fast the prayer is drained - */ - - public static final double[] prayerData = { 1, // Thick Skin. - 1, // Burst of Strength. - 1, // Clarity of Thought. - 1, // Sharp Eye. - 1, // Mystic Will. - 2, // Rock Skin. - 2, // SuperHuman Strength. - 2, // Improved Reflexes. - 0.4, // Rapid restore. - 0.6, // Rapid Heal. - 0.6, // Protect Items. - 1.5, // Hawk eye. - 2, // Mystic Lore. - 4, // Steel Skin. - 4, // Ultimate Strength. - 4, // Incredible Reflexes. - 4, // Protect from Magic. - 4, // Protect from Missiles. - 4, // Protect from Melee. - 4, // Eagle Eye. - 4, // Mystic Might. - 1, // Retribution. - 2, // Redemption. - 6, // Smite. - 8, // Chivalry. - 8, // Piety. - }; -} +package com.rebotted.game.content.combat.prayer; + +public class PrayerData { + + public int prayerId = -1; + public static double prayerPoint = 1.0; + public long stopPrayerDelay, prayerDelay; + public boolean usingPrayer; + + public final int[] PRAYER_DRAIN_RATE = { 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500 }; + + public final int[] PRAYER_LEVEL_REQUIRED = { 1, 4, 7, 8, 9, 10, 13, 16, 19, + 22, 25, 26, 27, 28, 31, 34, 37, 40, 43, 44, 45, 46, 49, 52, 60, 70 }; + + public final int[] PRAYER = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 }; + + public final String[] PRAYER_NAME = { "Thick Skin", "Burst of Strength", + "Clarity of Thought", "Sharp Eye", "Mystic Will", "Rock Skin", + "Superhuman Strength", "Improved Reflexes", "Rapid Restore", + "Rapid Heal", "Protect Item", "Hawk Eye", "Mystic Lore", + "Steel Skin", "Ultimate Strength", "Incredible Reflexes", + "Protect from Magic", "Protect from Missiles", + "Protect from Melee", "Eagle Eye", "Mystic Might", "Retribution", + "Redemption", "Smite", "Chivalry", "Piety" }; + + public final int[] PRAYER_GLOW = { 83, 84, 85, 601, 602, 86, 87, 88, 89, + 90, 91, 603, 604, 92, 93, 94, 95, 96, 97, 605, 606, 98, 99, 100, + 607, 608 }; + + public final int[] PRAYER_HEAD_ICONS = { -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 2, 1, 0, -1, -1, 3, 5, 4, -1, -1 }; + + public boolean[] prayerActive = { false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, + false, false }; + + /** + * How fast the prayer is drained + */ + + public static final double[] prayerData = { 1, // Thick Skin. + 1, // Burst of Strength. + 1, // Clarity of Thought. + 1, // Sharp Eye. + 1, // Mystic Will. + 2, // Rock Skin. + 2, // SuperHuman Strength. + 2, // Improved Reflexes. + 0.4, // Rapid restore. + 0.6, // Rapid Heal. + 0.6, // Protect Items. + 1.5, // Hawk eye. + 2, // Mystic Lore. + 4, // Steel Skin. + 4, // Ultimate Strength. + 4, // Incredible Reflexes. + 4, // Protect from Magic. + 4, // Protect from Missiles. + 4, // Protect from Melee. + 4, // Eagle Eye. + 4, // Mystic Might. + 1, // Retribution. + 2, // Redemption. + 6, // Smite. + 8, // Chivalry. + 8, // Piety. + }; +} diff --git a/2006Redone Server/src/com/rebotted/game/content/combat/prayer/PrayerDrain.java b/2006Redone Server/src/com/rebotted/game/content/combat/prayer/PrayerDrain.java new file mode 100644 index 00000000..9c3d0c52 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/combat/prayer/PrayerDrain.java @@ -0,0 +1,49 @@ +package com.rebotted.game.content.combat.prayer; + +import com.rebotted.game.players.Player; + +public class PrayerDrain { + + public static void handlePrayerDrain(Player player) { + player.getPrayer().usingPrayer = false; + double toRemove = 0.0; + for (int j = 0; j < PrayerData.prayerData.length; j++) { + if (player.getPrayer().prayerActive[j]) { + toRemove += PrayerData.prayerData[j] / 20; + player.getPrayer().usingPrayer = true; + } + } + if (toRemove > 0) { + toRemove /= 1 + 0.035 * player.playerBonus[11]; + } + PrayerData.prayerPoint -= toRemove; + if (PrayerData.prayerPoint <= 0) { + PrayerData.prayerPoint = 1.0 + PrayerData.prayerPoint; + reducePrayerLevel(player); + } + + } + + public static void reducePrayerLevel(Player c) { + if (c.playerLevel[5] - 1 > 0) { + c.playerLevel[5] -= 1; + } else { + c.getPacketSender().sendMessage( + "You have run out of prayer points!"); + c.playerLevel[5] = 0; + resetPrayers(c); + c.getPrayer().prayerId = -1; + } + c.getPlayerAssistant().refreshSkill(5); + } + + public static void resetPrayers(Player player) { + for (int i = 0; i < player.getPrayer().prayerActive.length; i++) { + player.getPrayer().prayerActive[i] = false; + player.getPacketSender().sendConfig(player.getPrayer().PRAYER_GLOW[i], 0); + } + player.headIcon = -1; + player.getPlayerAssistant().requestUpdates(); + } + +} diff --git a/2006Redone Server/src/redone/game/content/combat/range/DwarfCannon.java b/2006Redone Server/src/com/rebotted/game/content/combat/range/DwarfCannon.java similarity index 78% rename from 2006Redone Server/src/redone/game/content/combat/range/DwarfCannon.java rename to 2006Redone Server/src/com/rebotted/game/content/combat/range/DwarfCannon.java index a4fc1543..17e1050f 100644 --- a/2006Redone Server/src/redone/game/content/combat/range/DwarfCannon.java +++ b/2006Redone Server/src/com/rebotted/game/content/combat/range/DwarfCannon.java @@ -1,519 +1,518 @@ -package redone.game.content.combat.range; - -import redone.Constants; -import redone.Server; -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.npcs.Npc; -import redone.game.npcs.NpcHandler; -import redone.game.players.Client; -import redone.game.players.PlayerHandler; -import redone.util.Misc; - -/** - * Cannon - * @author Andrew - */ - -public class DwarfCannon { - - public DwarfCannon(Client player) { - this.player = player; - } - - private Client player; - - public final int[] ITEM_PARTS = {6, 8, 10, 12}; - - private final int[] OBJECT_PARTS = {7, 8, 9, 6}; - - private final int ballsID = 2; - - public boolean settingUp = false; - - private int setUpStage = 0; - - private int maxBalls = 30; - - public int myBalls = 0; - - private boolean rotating = false; - - private int rotation = 0; - - private int maxHit = 30; - - private final int maxDistance = 20; - - private final int expRate = 50; - - private int totalRotations = 0; - - private boolean justClicked = false; - - public void placeCannon() { - if (settingUp == true) { - return; - } - if (noSetUpArea()) { - player.getActionSender().sendMessage("You are not allowed to set up a cannon here!"); - return; - } - if (hasCannon()) { - player.getActionSender().sendMessage("You already have a cannon placed!"); - return; - } - if (nearCannon()) { - player.getActionSender().sendMessage("You must be farther away from an existing cannon to set a new one up!"); - return; - } - if (!canSetUp()) { - player.getActionSender().sendMessage("You need all the parts of the cannon to set a cannon up."); - return; - } - for (int i = 0; i < 50; i++) { - if (Server.cannonsX[i] == 0 && Server.cannonsY[i] == 0) { - Server.cannonsX[i] = player.absX; - Server.cannonsY[i] = player.absY; - break; - } - } - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (setUpStage >= 4) { - container.stop(); - setUpStage = 0; - settingUp = false; - return; - } - if (!canSetUp()) { - player.getActionSender().sendMessage("You need all the parts of the cannon to set a cannon up."); - container.stop(); - return; - } - settingUp = true; - player.startAnimation(827); - player.turnPlayerTo(player.absX, player.absY); - player.cannonX = player.absX; - player.cannonY = player.absY; - placeObject(OBJECT_PARTS[setUpStage], player.absX, player.absY); - player.getItemAssistant().deleteItem(ITEM_PARTS[setUpStage], 1); - setUpStage ++; - } - @Override - public void stop() { - /** - * Balls - */ - int cballs = getBalls(); - int amount = cballs - myBalls; - player.getItemAssistant().deleteItem(ballsID, player.getItemAssistant().getItemSlot(ballsID), amount); - myBalls = cballs; - } - }, 2); - } - - public boolean needsCannon() { - return (player.lostCannon == true); - } - - public void loginCheck() { - if (needsCannon()) { - player.getActionSender().sendMessage("@red@You can collect your cannon at home from Nulodion."); - } - } - - private boolean canSetUp() { - if (setUpStage == 0) { - if (player.getItemAssistant().playerHasItem(ITEM_PARTS[0]) && player.getItemAssistant().playerHasItem(ITEM_PARTS[1]) && player.getItemAssistant().playerHasItem(ITEM_PARTS[2]) && player.getItemAssistant().playerHasItem(ITEM_PARTS[3])) { - return true; - } - } else if (setUpStage == 1) { - if (player.getItemAssistant().playerHasItem(ITEM_PARTS[1]) && player.getItemAssistant().playerHasItem(ITEM_PARTS[2]) && player.getItemAssistant().playerHasItem(ITEM_PARTS[3])) { - return true; - } - } else if (setUpStage == 2) { - if (player.getItemAssistant().playerHasItem(ITEM_PARTS[2]) && player.getItemAssistant().playerHasItem(ITEM_PARTS[3])) { - return true; - } - } else if (setUpStage == 3) { - if (player.getItemAssistant().playerHasItem(ITEM_PARTS[3])) { - return true; - } - } - return false; - } - - public boolean hasCannon() { - return (player.cannonX > 0) && (player.cannonY > 0) || (player.cannonX > 0 && player.cannonY > 0); - } - - private boolean myCannon(int x, int y) { - return (player.cannonX == x) && (player.cannonY == y); - } - - public int getBalls() { - int cannonBalls = player.getItemAssistant().getItemAmount(ballsID); - if (cannonBalls >= maxBalls) { - return maxBalls; - } - return cannonBalls; - } - - public boolean nearCannon() { - for(int i = 0; i < Server.cannonsX.length; i++) { - if ((player.absX >= Server.cannonsX[i] - 1) && (player.absX <= Server.cannonsX[i] + 1) && (player.absY >= Server.cannonsY[i] - 2) && (player.absY <= Server.cannonsY[i] + 1)) { - return true; - } - } - return false; - } - - public void loadCannons() { - for(int i = 0; i < Server.cannonsX.length; i++) { - if (Server.cannonsX[i] != 0) { - player.getActionSender().checkObjectSpawn(6, Server.cannonsX[i], Server.cannonsY[i], 0, 10); - } - } - } - - public void loadCannon(int x, int y) { - int cballs = getBalls(); - if (!myCannon(x, y)) { - player.getActionSender().sendMessage("You can't load somebody else's cannon!"); - return; - } - if (myBalls <= 29) { - int amount = cballs - myBalls; - player.getItemAssistant().deleteItem(ballsID, player.getItemAssistant().getItemSlot(ballsID), amount); - myBalls = cballs; - if (player.getItemAssistant().playerHasItem(ballsID)) { - player.getActionSender().sendMessage(amount > 1 ? "You load the cannon with " + amount + " cannonballs." : "You load the cannon with 1 cannonball."); - } else { - player.getActionSender().sendMessage("You have no cannonballs to load into the cannon."); - } - } - } - - public void clickCannon(int x, int y) { - if (!myCannon(x, y)) { - player.getActionSender().sendMessage("You can't fire somebody else's cannon!"); - return; - } - if (myBalls == 0) { - player.getActionSender().sendMessage("Your cannon has run out of cannonballs."); - return; - } - if (myBalls >= 1 && rotating == false) { - shoot(); - } else if (myBalls >= 1 && rotating == true) { - player.getActionSender().sendMessage("Your cannon is already shooting."); - } - } - - public void handleDisconnect() { - removeObject(player.cannonX, player.cannonY); - for(int i = 0; i < Server.cannonsX.length; i++) { - if (Server.cannonsX[i] == player.cannonX && Server.cannonsY[i] == player.cannonY) { - Server.cannonsX[i] = 0; - Server.cannonsY[i] = 0; - Server.cannonsO[i] = null; - } - } - } - - public void handleDeath() { - if (hasCannon()) { - player.lostCannon = true; - removeObject(player.cannonX, player.cannonY); - for(int i = 0; i < Server.cannonsX.length; i++) { - if (Server.cannonsX[i] == player.cannonX && Server.cannonsY[i] == player.cannonY) { - Server.cannonsX[i] = 0; - Server.cannonsY[i] = 0; - Server.cannonsO[i] = null; - } - } - player.cannonX = 0; - player.cannonY = 0; - } - } - - public void shoot() { - if (justClicked == true) { - return; - } - rotating = true; - justClicked = true; - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer e) { - totalRotations += 1; - if (totalRotations >= 2) { - justClicked = false; - } - if(rotating == false) { - e.stop(); - } - if (myBalls < 1) { - rotating = false; - e.stop(); - } - if (rotating == true) { - rotation += 1; - rotateCannon(); - shootNpcs(); - } - } - @Override - public void stop() { - - } - }, 2); - } - - private void rotateCannon() { - switch (rotation) { - case 1: //north - player.getPlayerAssistant().objectAnim(player.cannonX, player.cannonY, 516, 10, -1); - break; - case 2: //north-east - player.getPlayerAssistant().objectAnim(player.cannonX, player.cannonY, 517, 10, -1); - break; - case 3: //east - player.getPlayerAssistant().objectAnim(player.cannonX, player.cannonY, 518, 10, -1); - break; - case 4: //south-east - player.getPlayerAssistant().objectAnim(player.cannonX, player.cannonY, 519, 10, -1); - break; - case 5: //south - player.getPlayerAssistant().objectAnim(player.cannonX, player.cannonY, 520, 10, -1); - break; - case 6: //south-west - player.getPlayerAssistant().objectAnim(player.cannonX, player.cannonY, 521, 10, -1); - break; - case 7: //west - player.getPlayerAssistant().objectAnim(player.cannonX, player.cannonY, 514, 10, -1); - break; - case 8: //north-west - player.getPlayerAssistant().objectAnim(player.cannonX, player.cannonY, 515, 10, -1); - rotation = 0; - break; - } - } - - public void removeCannon(int x, int y) { - for (int i = 0; i < Server.cannonsX.length; i++) { - if (Server.cannonsX[i] == x && Server.cannonsY[i] == y) { - Server.cannonsX[i] = 0; - Server.cannonsY[i] = 0; - break; - } - } - } - - public void pickup(int x, int y) { - if (!myCannon(x, y)) { - player.getActionSender().sendMessage("You can't pick up somebody else's cannon!"); - return; - } - if (rotating == true) { - rotating = false; - } - if (player.getItemAssistant().freeSlots() > 3) { - player.startAnimation(827); - player.getActionSender().sendMessage("You pick up the cannon. It's really heavy."); - removeCannon(player.cannonX, player.cannonY); - player.getItemAssistant().addItem(ITEM_PARTS[0], 1); - player.getItemAssistant().addItem(ITEM_PARTS[1], 1); - player.getItemAssistant().addItem(ITEM_PARTS[2], 1); - player.getItemAssistant().addItem(ITEM_PARTS[3], 1); - } else { - player.getActionSender().sendMessage("You don't have enough free inventory slots to do that."); - } - if (myBalls > 0) { - player.getItemAssistant().addItem(ballsID, myBalls); - myBalls = 0; - } - removeObject(player.cannonX, player.cannonY); - player.cannonX = 0; - player.cannonY = 0; - player.cannonX = 0; - player.cannonY = 0; - } - - public void placeObject(int id, int x, int y) { - for (int j = 0; j < PlayerHandler.players.length; j++) { - if (PlayerHandler.players[j] != null) { - Client a = (Client)PlayerHandler.players[j]; - a.getActionSender().object(id, x, y, 516, 10); - } - } - } - - public void removeObject(int x, int y) { - placeObject(-1, x, y); - } - - public boolean noSetUpArea() { - return player.inBank() || player.inFightCaves(); - } - - private int getHit() { - int hits = Misc.random(2); - switch (hits) { - case 0: - return Misc.random(maxHit); - case 1: - return 15+Misc.random(maxHit-15); - case 2: - return 10+Misc.random(maxHit-10); - } - return 0; - } - - public void shootNpcs() { - int damage = getHit(); - Npc target = targetNpc(); - if (target != null) { - if (damage > target.HP) { - damage = target.HP; - } - if (!player.inMulti()) { - if (target.underAttackBy > 0 && target.underAttackBy != player.playerId) { - return; - } - if (player.underAttackBy2 > 0 && player.underAttackBy2 != target.npcId) { - return; - } - } - cannonProjectile(target); - target.hitDiff2 = damage; - target.HP -= damage; - player.globalDamageDealt += damage; - target.killerId = player.playerId; - target.killedBy = player.playerId; - target.facePlayer(player.playerId); - target.hitUpdateRequired2 = true; - target.updateRequired = true; - myBalls -= 1; - player.getPlayerAssistant().addSkillXP(damage * Constants.RANGE_EXP_RATE, player.playerRanged); - } - } - - - private Npc targetNpc() { - for (int i = 0; i < NpcHandler.MAX_NPCS; i++) { - if (NpcHandler.npcs[i] == null) { - continue; - } - Npc npc = NpcHandler.npcs[i]; - int myX = player.cannonX; - int myY = player.cannonY; - int theirX = npc.absX; - int theirY = npc.absY; - if (!npc.isDead && !npc.isDead && npc.HP != 0 && npc.npcType != 1266 && npc.npcType != 1268 && inDistance(theirX, theirY)) { - switch (rotation) { - case 1: - if (theirY > myY && theirX >= myX - 1 && theirX <= myX + 1) { - return npc; - } - break; - case 2: - if (theirX >= myX + 1 && theirY >= myY + 1) { - return npc; - } - break; - case 3: - if (theirX > myX && theirY >= myY - 1 && theirY <= myY + 1) { - return npc; - } - break; - case 4: - if (theirY <= myY - 1 && theirX >= myX + 1) { - return npc; - } - break; - case 5: - if (theirY < myY && theirX >= myX - 1 && theirX <= myX + 1) { - return npc; - } - break; - case 6: - if (theirX <= myX - 1 && theirY <= myY - 1) { - return npc; - } - break; - case 7: - if (theirX < myX && theirY >= myY - 1 && theirY <= myY + 1) { - return npc; - } - break; - case 8: - if (theirX <= myX - 1 && theirY >= myY + 1) { - return npc; - } - break; - } - } - } - return null; - } - - public boolean inDistance(int npcX, int npcY) { - return (npcX >= player.cannonX - maxDistance && npcX <= player.cannonX + maxDistance && npcY >= player.cannonY - maxDistance && npcY <= player.cannonY + maxDistance); - } - - private void cannonProjectile(Npc n) { - int oX = player.cannonX+getShootXPos(); - int oY = player.cannonY+getShootYPos(); - int offX = ((oX - n.absX) * -1); - int offY = ((oY - n.absY) * -1); - player.getPlayerAssistant().createPlayersProjectile(oX, oY, offY, offX, 50, 60, 53, 20, 20, -player.oldNpcIndex + 1, 30); - } - - public int getShootXPos() { - switch(rotation) { - case 1: - return 1; - case 2: - return 2; - case 3: - return 2; - case 4: - return 2; - case 5: - return 1; - case 6: - return 0; - case 7: - return 0; - case 8: - return 0; - } - return 0; - } - - public int getShootYPos() { - switch(rotation) { - case 1: - return 2; - case 2: - return 2; - case 3: - return 1; - case 4: - return 0; - case 5: - return 0; - case 6: - return 0; - case 7: - return 1; - case 8: - return 2; - } - return 0; - } +package com.rebotted.game.content.combat.range; + +import com.rebotted.GameConstants; +import com.rebotted.GameEngine; +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.npcs.Npc; +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerHandler; +import com.rebotted.util.Misc; + +/** + * Cannon + * @author Andrew (Mr Extremez) + */ + +public class DwarfCannon { + + public DwarfCannon(Player player2) { + this.player = player2; + } + + private Player player; + + public final int[] ITEM_PARTS = {6, 8, 10, 12}; + + private final int[] OBJECT_PARTS = {7, 8, 9, 6}; + + private final int ballsID = 2; + + public boolean settingUp = false; + + private int setUpStage = 0; + + private int maxBalls = 30; + + public int myBalls = 0; + + private boolean rotating = false; + + private int rotation = 0; + + private int maxHit = 30; + + private final int maxDistance = 20; + + private int totalRotations = 0; + + private boolean justClicked = false; + + public void placeCannon() { + if (settingUp == true) { + return; + } + if (noSetUpArea()) { + player.getPacketSender().sendMessage("You are not allowed to set up a cannon here!"); + return; + } + if (hasCannon()) { + player.getPacketSender().sendMessage("You already have a cannon placed!"); + return; + } + if (nearCannon()) { + player.getPacketSender().sendMessage("You must be farther away from an existing cannon to set a new one up!"); + return; + } + if (!canSetUp()) { + player.getPacketSender().sendMessage("You need all the parts of the cannon to set a cannon up."); + return; + } + for (int i = 0; i < 50; i++) { + if (GameEngine.cannonsX[i] == 0 && GameEngine.cannonsY[i] == 0) { + GameEngine.cannonsX[i] = player.absX; + GameEngine.cannonsY[i] = player.absY; + break; + } + } + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (setUpStage >= 4) { + container.stop(); + setUpStage = 0; + settingUp = false; + return; + } + if (!canSetUp()) { + player.getPacketSender().sendMessage("You need all the parts of the cannon to set a cannon up."); + container.stop(); + return; + } + settingUp = true; + player.startAnimation(827); + player.turnPlayerTo(player.absX, player.absY); + player.cannonX = player.absX; + player.cannonY = player.absY; + placeObject(OBJECT_PARTS[setUpStage], player.absX, player.absY); + player.getItemAssistant().deleteItem(ITEM_PARTS[setUpStage], 1); + setUpStage ++; + } + @Override + public void stop() { + /** + * Balls + */ + int cballs = getBalls(); + int amount = cballs - myBalls; + player.getItemAssistant().deleteItem(ballsID, player.getItemAssistant().getItemSlot(ballsID), amount); + myBalls = cballs; + } + }, 2); + } + + public boolean needsCannon() { + return (player.lostCannon == true); + } + + public void loginCheck() { + if (needsCannon()) { + player.getPacketSender().sendMessage("@red@You can collect your cannon at home from Nulodion."); + } + } + + private boolean canSetUp() { + if (setUpStage == 0) { + if (player.getItemAssistant().playerHasItem(ITEM_PARTS[0]) && player.getItemAssistant().playerHasItem(ITEM_PARTS[1]) && player.getItemAssistant().playerHasItem(ITEM_PARTS[2]) && player.getItemAssistant().playerHasItem(ITEM_PARTS[3])) { + return true; + } + } else if (setUpStage == 1) { + if (player.getItemAssistant().playerHasItem(ITEM_PARTS[1]) && player.getItemAssistant().playerHasItem(ITEM_PARTS[2]) && player.getItemAssistant().playerHasItem(ITEM_PARTS[3])) { + return true; + } + } else if (setUpStage == 2) { + if (player.getItemAssistant().playerHasItem(ITEM_PARTS[2]) && player.getItemAssistant().playerHasItem(ITEM_PARTS[3])) { + return true; + } + } else if (setUpStage == 3) { + if (player.getItemAssistant().playerHasItem(ITEM_PARTS[3])) { + return true; + } + } + return false; + } + + public boolean hasCannon() { + return (player.cannonX > 0) && (player.cannonY > 0) || (player.cannonX > 0 && player.cannonY > 0); + } + + private boolean myCannon(int x, int y) { + return (player.cannonX == x) && (player.cannonY == y); + } + + public int getBalls() { + int cannonBalls = player.getItemAssistant().getItemAmount(ballsID); + if (cannonBalls >= maxBalls) { + return maxBalls; + } + return cannonBalls; + } + + public boolean nearCannon() { + for(int i = 0; i < GameEngine.cannonsX.length; i++) { + if ((player.absX >= GameEngine.cannonsX[i] - 1) && (player.absX <= GameEngine.cannonsX[i] + 1) && (player.absY >= GameEngine.cannonsY[i] - 2) && (player.absY <= GameEngine.cannonsY[i] + 1)) { + return true; + } + } + return false; + } + + public void loadCannons() { + for(int i = 0; i < GameEngine.cannonsX.length; i++) { + if (GameEngine.cannonsX[i] != 0) { + player.getPacketSender().checkObjectSpawn(6, GameEngine.cannonsX[i], GameEngine.cannonsY[i], 0, 10); + } + } + } + + public void loadCannon(int x, int y) { + int cballs = getBalls(); + if (!myCannon(x, y)) { + player.getPacketSender().sendMessage("You can't load somebody else's cannon!"); + return; + } + if (myBalls <= 29) { + int amount = cballs - myBalls; + player.getItemAssistant().deleteItem(ballsID, player.getItemAssistant().getItemSlot(ballsID), amount); + myBalls = cballs; + if (player.getItemAssistant().playerHasItem(ballsID)) { + player.getPacketSender().sendMessage(amount > 1 ? "You load the cannon with " + amount + " cannonballs." : "You load the cannon with 1 cannonball."); + } else { + player.getPacketSender().sendMessage("You have no cannonballs to load into the cannon."); + } + } + } + + public void clickCannon(int x, int y) { + if (!myCannon(x, y)) { + player.getPacketSender().sendMessage("You can't fire somebody else's cannon!"); + return; + } + if (myBalls == 0) { + player.getPacketSender().sendMessage("Your cannon has run out of cannonballs."); + return; + } + if (myBalls >= 1 && rotating == false) { + shoot(); + } else if (myBalls >= 1 && rotating == true) { + player.getPacketSender().sendMessage("Your cannon is already shooting."); + } + } + + public void handleDisconnect() { + removeObject(player.cannonX, player.cannonY); + for(int i = 0; i < GameEngine.cannonsX.length; i++) { + if (GameEngine.cannonsX[i] == player.cannonX && GameEngine.cannonsY[i] == player.cannonY) { + GameEngine.cannonsX[i] = 0; + GameEngine.cannonsY[i] = 0; + GameEngine.cannonsO[i] = null; + } + } + } + + public void handleDeath() { + if (hasCannon()) { + player.lostCannon = true; + removeObject(player.cannonX, player.cannonY); + for(int i = 0; i < GameEngine.cannonsX.length; i++) { + if (GameEngine.cannonsX[i] == player.cannonX && GameEngine.cannonsY[i] == player.cannonY) { + GameEngine.cannonsX[i] = 0; + GameEngine.cannonsY[i] = 0; + GameEngine.cannonsO[i] = null; + } + } + player.cannonX = 0; + player.cannonY = 0; + } + } + + public void shoot() { + if (justClicked == true) { + return; + } + rotating = true; + justClicked = true; + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + @Override + public void execute(CycleEventContainer e) { + totalRotations += 1; + if (totalRotations >= 2) { + justClicked = false; + } + if(rotating == false) { + e.stop(); + } + if (myBalls < 1) { + rotating = false; + e.stop(); + } + if (rotating == true) { + rotation += 1; + rotateCannon(); + shootNpcs(); + } + } + @Override + public void stop() { + + } + }, 2); + } + + private void rotateCannon() { + switch (rotation) { + case 1: //north + player.getPlayerAssistant().objectAnim(player.cannonX, player.cannonY, 516, 10, -1); + break; + case 2: //north-east + player.getPlayerAssistant().objectAnim(player.cannonX, player.cannonY, 517, 10, -1); + break; + case 3: //east + player.getPlayerAssistant().objectAnim(player.cannonX, player.cannonY, 518, 10, -1); + break; + case 4: //south-east + player.getPlayerAssistant().objectAnim(player.cannonX, player.cannonY, 519, 10, -1); + break; + case 5: //south + player.getPlayerAssistant().objectAnim(player.cannonX, player.cannonY, 520, 10, -1); + break; + case 6: //south-west + player.getPlayerAssistant().objectAnim(player.cannonX, player.cannonY, 521, 10, -1); + break; + case 7: //west + player.getPlayerAssistant().objectAnim(player.cannonX, player.cannonY, 514, 10, -1); + break; + case 8: //north-west + player.getPlayerAssistant().objectAnim(player.cannonX, player.cannonY, 515, 10, -1); + rotation = 0; + break; + } + } + + public void removeCannon(int x, int y) { + for (int i = 0; i < GameEngine.cannonsX.length; i++) { + if (GameEngine.cannonsX[i] == x && GameEngine.cannonsY[i] == y) { + GameEngine.cannonsX[i] = 0; + GameEngine.cannonsY[i] = 0; + break; + } + } + } + + public void pickup(int x, int y) { + if (!myCannon(x, y)) { + player.getPacketSender().sendMessage("You can't pick up somebody else's cannon!"); + return; + } + if (rotating == true) { + rotating = false; + } + if (player.getItemAssistant().freeSlots() > 3) { + player.startAnimation(827); + player.getPacketSender().sendMessage("You pick up the cannon. It's really heavy."); + removeCannon(player.cannonX, player.cannonY); + player.getItemAssistant().addItem(ITEM_PARTS[0], 1); + player.getItemAssistant().addItem(ITEM_PARTS[1], 1); + player.getItemAssistant().addItem(ITEM_PARTS[2], 1); + player.getItemAssistant().addItem(ITEM_PARTS[3], 1); + } else { + player.getPacketSender().sendMessage("You don't have enough free inventory slots to do that."); + } + if (myBalls > 0) { + player.getItemAssistant().addItem(ballsID, myBalls); + myBalls = 0; + } + removeObject(player.cannonX, player.cannonY); + player.cannonX = 0; + player.cannonY = 0; + player.cannonX = 0; + player.cannonY = 0; + } + + public void placeObject(int id, int x, int y) { + for (int j = 0; j < PlayerHandler.players.length; j++) { + if (PlayerHandler.players[j] != null) { + Client a = (Client)PlayerHandler.players[j]; + a.getPacketSender().object(id, x, y, 516, 10); + } + } + } + + public void removeObject(int x, int y) { + placeObject(-1, x, y); + } + + public boolean noSetUpArea() { + return player.inBank() || player.inFightCaves(); + } + + private int getHit() { + int hits = Misc.random(2); + switch (hits) { + case 0: + return Misc.random(maxHit); + case 1: + return 15+Misc.random(maxHit-15); + case 2: + return 10+Misc.random(maxHit-10); + } + return 0; + } + + public void shootNpcs() { + int damage = getHit(); + Npc target = targetNpc(); + if (target != null) { + if (damage > target.HP) { + damage = target.HP; + } + if (!player.inMulti()) { + if (target.underAttackBy > 0 && target.underAttackBy != player.playerId) { + return; + } + if (player.underAttackBy2 > 0 && player.underAttackBy2 != target.npcId) { + return; + } + } + cannonProjectile(target); + target.hitDiff2 = damage; + target.HP -= damage; + player.globalDamageDealt += damage; + target.killerId = player.playerId; + target.killedBy = player.playerId; + target.facePlayer(player.playerId); + target.hitUpdateRequired2 = true; + target.updateRequired = true; + myBalls -= 1; + player.getPlayerAssistant().addSkillXP(damage * GameConstants.RANGE_EXP_RATE, player.playerRanged); + } + } + + + private Npc targetNpc() { + for (int i = 0; i < NpcHandler.MAX_NPCS; i++) { + if (NpcHandler.npcs[i] == null) { + continue; + } + Npc npc = NpcHandler.npcs[i]; + int myX = player.cannonX; + int myY = player.cannonY; + int theirX = npc.absX; + int theirY = npc.absY; + if (!npc.isDead && !npc.isDead && npc.HP != 0 && npc.npcType != 1266 && npc.npcType != 1268 && inDistance(theirX, theirY)) { + switch (rotation) { + case 1: + if (theirY > myY && theirX >= myX - 1 && theirX <= myX + 1) { + return npc; + } + break; + case 2: + if (theirX >= myX + 1 && theirY >= myY + 1) { + return npc; + } + break; + case 3: + if (theirX > myX && theirY >= myY - 1 && theirY <= myY + 1) { + return npc; + } + break; + case 4: + if (theirY <= myY - 1 && theirX >= myX + 1) { + return npc; + } + break; + case 5: + if (theirY < myY && theirX >= myX - 1 && theirX <= myX + 1) { + return npc; + } + break; + case 6: + if (theirX <= myX - 1 && theirY <= myY - 1) { + return npc; + } + break; + case 7: + if (theirX < myX && theirY >= myY - 1 && theirY <= myY + 1) { + return npc; + } + break; + case 8: + if (theirX <= myX - 1 && theirY >= myY + 1) { + return npc; + } + break; + } + } + } + return null; + } + + public boolean inDistance(int npcX, int npcY) { + return (npcX >= player.cannonX - maxDistance && npcX <= player.cannonX + maxDistance && npcY >= player.cannonY - maxDistance && npcY <= player.cannonY + maxDistance); + } + + private void cannonProjectile(Npc n) { + int oX = player.cannonX+getShootXPos(); + int oY = player.cannonY+getShootYPos(); + int offX = ((oX - n.absX) * -1); + int offY = ((oY - n.absY) * -1); + player.getPlayerAssistant().createPlayersProjectile(oX, oY, offY, offX, 50, 60, 53, 20, 20, -player.oldNpcIndex + 1, 30); + } + + public int getShootXPos() { + switch(rotation) { + case 1: + return 1; + case 2: + return 2; + case 3: + return 2; + case 4: + return 2; + case 5: + return 1; + case 6: + return 0; + case 7: + return 0; + case 8: + return 0; + } + return 0; + } + + public int getShootYPos() { + switch(rotation) { + case 1: + return 2; + case 2: + return 2; + case 3: + return 1; + case 4: + return 0; + case 5: + return 0; + case 6: + return 0; + case 7: + return 1; + case 8: + return 2; + } + return 0; + } } \ No newline at end of file diff --git a/2006Redone Server/src/redone/game/content/combat/range/RangeData.java b/2006Redone Server/src/com/rebotted/game/content/combat/range/RangeData.java similarity index 84% rename from 2006Redone Server/src/redone/game/content/combat/range/RangeData.java rename to 2006Redone Server/src/com/rebotted/game/content/combat/range/RangeData.java index 27784b63..abf82eaf 100644 --- a/2006Redone Server/src/redone/game/content/combat/range/RangeData.java +++ b/2006Redone Server/src/com/rebotted/game/content/combat/range/RangeData.java @@ -1,370 +1,370 @@ -package redone.game.content.combat.range; - -import redone.game.players.Client; - -public class RangeData { - - public final static int[] BOWS = { 9185, 839, 845, 847, 851, 855, 859, 841, - 843, 849, 853, 857, 861, 4212, 4214, 4215, 11235, 4216, 4217, 4218, - 4219, 4220, 4221, 4222, 4223, 6724, 4734, 4934, 4935, 4936, 4937 }; - public final static int[] ARROWS = { 882, 884, 886, 888, 890, 892, 4740, - 11212, 9140, 9141, 4142, 9143, 9144, 9240, 9241, 9242, 9243, 9244, - 9245, 4150, 4160, 4172 }; - public final static int[] NO_ARROW_DROP = { 4212, 4214, 4215, 4216, 4217, - 4218, 4219, 4220, 4221, 4222, 4223, 4734, 4934, 4935, 4936, 4937 }; - public final static int[] OTHER_RANGE_WEAPONS = { 863, 864, 865, 866, 867, - 868, 869, 806, 807, 808, 809, 810, 811, 825, 826, 827, 828, 829, - 830, 800, 801, 802, 803, 804, 805, 6522 }; - - public static boolean usingDbow(Client c) { - return c.playerEquipment[c.playerWeapon] == 11235; - } - - public static boolean usingCrystalBow(Client c) { - return c.playerEquipment[c.playerWeapon] >= 4212 - && c.playerEquipment[c.playerWeapon] <= 4223; - } - - public static boolean usingBolts(Client c) { - return c.playerEquipment[c.playerArrows] >= 9130 - && c.playerEquipment[c.playerArrows] <= 9145 - || c.playerEquipment[c.playerArrows] >= 9230 - && c.playerEquipment[c.playerArrows] <= 9245; - } - - public static boolean properBolts(Client c) { - return c.playerEquipment[c.playerArrows] >= 9140 - && c.playerEquipment[c.playerArrows] <= 9144 - || c.playerEquipment[c.playerArrows] >= 9240 - && c.playerEquipment[c.playerArrows] <= 9244; - } - - public static boolean usingHally(Client c) { - switch (c.playerEquipment[c.playerWeapon]) { - case 3190: - case 3192: - case 3194: - case 3196: - case 3198: - case 3200: - case 3202: - case 3204: - return true; - - default: - return false; - } - } - - public static int correctBowAndArrows(Client c) { - if (usingBolts(c)) { - return -1; - } - switch (c.playerEquipment[c.playerWeapon]) { - - case 839: - case 841: - return 882; - - case 843: - case 845: - return 884; - - case 847: - case 849: - return 886; - - case 851: - case 853: - return 888; - - case 855: - case 857: - return 890; - - case 859: - case 861: - if (c.playerEquipment[c.playerArrows] == 892) { - return 892; - } else if (c.playerEquipment[c.playerArrows] == 4172) { - return 4172; - } - - case 4734: - case 4935: - case 4936: - case 4937: - return 4740; - - case 11235: - return 11212; - } - return -1; - } - - public static int getRangeStartGFX(Client c) { - switch (c.rangeItemUsed) { - - case 863: - return 220; - case 864: - return 219; - case 865: - return 221; - case 866: // knives - return 223; - case 867: - return 224; - case 868: - return 225; - case 869: - return 222; - - case 806: - return 232; - case 807: - return 233; - case 808: - return 234; - case 809: // darts - return 235; - case 810: - return 236; - case 811: - return 237; - - case 825: - return 206; - case 826: - return 207; - case 827: // javelin - return 208; - case 828: - return 209; - case 829: - return 210; - case 830: - return 211; - - case 800: - return 42; - case 801: - return 43; - case 802: - return 44; // axes - case 803: - return 45; - case 804: - return 46; - case 805: - return 48; - - case 882: - return 19; - - case 884: - return 18; - - case 886: - return 20; - - case 888: - return 21; - - case 890: - return 22; - - case 892: - return 24; - - case 11212: - return 26; - - case 4212: - case 4214: - case 4215: - case 4216: - case 4217: - case 4218: - case 4219: - case 4220: - case 4221: - case 4222: - case 4223: - return 250; - - } - return -1; - } - - public static int getRangeProjectileGFX(Client c) { - if (c.dbowSpec) { - return 672; - } - if (c.bowSpecShot > 0) { - switch (c.rangeItemUsed) { - default: - return 249; - } - } - if (c.playerEquipment[c.playerWeapon] == 9185) { - return 27; - } - switch (c.rangeItemUsed) { - - case 863: - return 213; - case 864: - return 212; - case 865: - return 214; - case 866: // knives - return 216; - case 867: - return 217; - case 868: - return 218; - case 869: - return 215; - - case 806: - return 226; - case 807: - return 227; - case 808: - return 228; - case 809: // darts - return 229; - case 810: - return 230; - case 811: - return 231; - - case 825: - return 200; - case 826: - return 201; - case 827: // javelin - return 202; - case 828: - return 203; - case 829: - return 204; - case 830: - return 205; - - case 6522: // Toktz-xil-ul - return 442; - - case 800: - return 36; - case 801: - return 35; - case 802: - return 37; // axes - case 803: - return 38; - case 804: - return 39; - case 805: - return 40; - - case 882: - return 10; - - case 884: - return 9; - - case 886: - return 11; - - case 888: - return 12; - - case 890: - return 13; - - case 892: - return 15; - - case 11212: - return 17; - - case 4740: // bolt rack - return 27; - - case 4212: - case 4214: - case 4215: - case 4216: - case 4217: - case 4218: - case 4219: - case 4220: - case 4221: - case 4222: - case 4223: - return 249; - - } - return -1; - } - - public static int getProjectileSpeed(Client c) { - if (c.dbowSpec) { - return 100; - } - return 70; - } - - public static int getProjectileShowDelay(Client c) { - switch (c.playerEquipment[c.playerWeapon]) { - case 863: - case 864: - case 865: - case 866: // knives - case 867: - case 868: - case 869: - - case 806: - case 807: - case 808: - case 809: // darts - case 810: - case 811: - - case 825: - case 826: - case 827: // javelin - case 828: - case 829: - case 830: - - case 800: - case 801: - case 802: - case 803: // axes - case 804: - case 805: - - case 4734: - case 9185: - case 4935: - case 4936: - case 4937: - return 15; - - default: - return 5; - } - } - - public static boolean fullVoidRange(Client c) { - return c.playerEquipment[c.playerHat] == 11664 - && c.playerEquipment[c.playerLegs] == 8840 - && c.playerEquipment[c.playerChest] == 8839 - && c.playerEquipment[c.playerHands] == 8842; - } - -} +package com.rebotted.game.content.combat.range; + +import com.rebotted.game.players.Player; + +public class RangeData { + + public final static int[] BOWS = { 9185, 839, 845, 847, 851, 855, 859, 841, + 843, 849, 853, 857, 861, 4212, 4214, 4215, 11235, 4216, 4217, 4218, + 4219, 4220, 4221, 4222, 4223, 6724, 4734, 4934, 4935, 4936, 4937 }; + public final static int[] ARROWS = { 882, 884, 886, 888, 890, 892, 4740, + 11212, 9140, 9141, 4142, 9143, 9144, 9240, 9241, 9242, 9243, 9244, + 9245, 4150, 4160, 4172 }; + public final static int[] NO_ARROW_DROP = { 4212, 4214, 4215, 4216, 4217, + 4218, 4219, 4220, 4221, 4222, 4223, 4734, 4934, 4935, 4936, 4937 }; + public final static int[] OTHER_RANGE_WEAPONS = { 863, 864, 865, 866, 867, + 868, 869, 806, 807, 808, 809, 810, 811, 825, 826, 827, 828, 829, + 830, 800, 801, 802, 803, 804, 805, 6522 }; + + public static boolean usingDbow(Player c) { + return c.playerEquipment[c.playerWeapon] == 11235; + } + + public static boolean usingCrystalBow(Player c) { + return c.playerEquipment[c.playerWeapon] >= 4212 + && c.playerEquipment[c.playerWeapon] <= 4223; + } + + public static boolean usingBolts(Player c) { + return c.playerEquipment[c.playerArrows] >= 9130 + && c.playerEquipment[c.playerArrows] <= 9145 + || c.playerEquipment[c.playerArrows] >= 9230 + && c.playerEquipment[c.playerArrows] <= 9245; + } + + public static boolean properBolts(Player c) { + return c.playerEquipment[c.playerArrows] >= 9140 + && c.playerEquipment[c.playerArrows] <= 9144 + || c.playerEquipment[c.playerArrows] >= 9240 + && c.playerEquipment[c.playerArrows] <= 9244; + } + + public static boolean usingHally(Player c) { + switch (c.playerEquipment[c.playerWeapon]) { + case 3190: + case 3192: + case 3194: + case 3196: + case 3198: + case 3200: + case 3202: + case 3204: + return true; + + default: + return false; + } + } + + public static int correctBowAndArrows(Player c) { + if (usingBolts(c)) { + return -1; + } + switch (c.playerEquipment[c.playerWeapon]) { + + case 839: + case 841: + return 882; + + case 843: + case 845: + return 884; + + case 847: + case 849: + return 886; + + case 851: + case 853: + return 888; + + case 855: + case 857: + return 890; + + case 859: + case 861: + if (c.playerEquipment[c.playerArrows] == 892) { + return 892; + } else if (c.playerEquipment[c.playerArrows] == 4172) { + return 4172; + } + + case 4734: + case 4935: + case 4936: + case 4937: + return 4740; + + case 11235: + return 11212; + } + return -1; + } + + public static int getRangeStartGFX(Player c) { + switch (c.rangeItemUsed) { + + case 863: + return 220; + case 864: + return 219; + case 865: + return 221; + case 866: // knives + return 223; + case 867: + return 224; + case 868: + return 225; + case 869: + return 222; + + case 806: + return 232; + case 807: + return 233; + case 808: + return 234; + case 809: // darts + return 235; + case 810: + return 236; + case 811: + return 237; + + case 825: + return 206; + case 826: + return 207; + case 827: // javelin + return 208; + case 828: + return 209; + case 829: + return 210; + case 830: + return 211; + + case 800: + return 42; + case 801: + return 43; + case 802: + return 44; // axes + case 803: + return 45; + case 804: + return 46; + case 805: + return 48; + + case 882: + return 19; + + case 884: + return 18; + + case 886: + return 20; + + case 888: + return 21; + + case 890: + return 22; + + case 892: + return 24; + + case 11212: + return 26; + + case 4212: + case 4214: + case 4215: + case 4216: + case 4217: + case 4218: + case 4219: + case 4220: + case 4221: + case 4222: + case 4223: + return 250; + + } + return -1; + } + + public static int getRangeProjectileGFX(Player c) { + if (c.dbowSpec) { + return 672; + } + if (c.bowSpecShot > 0) { + switch (c.rangeItemUsed) { + default: + return 249; + } + } + if (c.playerEquipment[c.playerWeapon] == 9185) { + return 27; + } + switch (c.rangeItemUsed) { + + case 863: + return 213; + case 864: + return 212; + case 865: + return 214; + case 866: // knives + return 216; + case 867: + return 217; + case 868: + return 218; + case 869: + return 215; + + case 806: + return 226; + case 807: + return 227; + case 808: + return 228; + case 809: // darts + return 229; + case 810: + return 230; + case 811: + return 231; + + case 825: + return 200; + case 826: + return 201; + case 827: // javelin + return 202; + case 828: + return 203; + case 829: + return 204; + case 830: + return 205; + + case 6522: // Toktz-xil-ul + return 442; + + case 800: + return 36; + case 801: + return 35; + case 802: + return 37; // axes + case 803: + return 38; + case 804: + return 39; + case 805: + return 40; + + case 882: + return 10; + + case 884: + return 9; + + case 886: + return 11; + + case 888: + return 12; + + case 890: + return 13; + + case 892: + return 15; + + case 11212: + return 17; + + case 4740: // bolt rack + return 27; + + case 4212: + case 4214: + case 4215: + case 4216: + case 4217: + case 4218: + case 4219: + case 4220: + case 4221: + case 4222: + case 4223: + return 249; + + } + return -1; + } + + public static int getProjectileSpeed(Player c) { + if (c.dbowSpec) { + return 100; + } + return 70; + } + + public static int getProjectileShowDelay(Player c) { + switch (c.playerEquipment[c.playerWeapon]) { + case 863: + case 864: + case 865: + case 866: // knives + case 867: + case 868: + case 869: + + case 806: + case 807: + case 808: + case 809: // darts + case 810: + case 811: + + case 825: + case 826: + case 827: // javelin + case 828: + case 829: + case 830: + + case 800: + case 801: + case 802: + case 803: // axes + case 804: + case 805: + + case 4734: + case 9185: + case 4935: + case 4936: + case 4937: + return 15; + + default: + return 5; + } + } + + public static boolean fullVoidRange(Player c) { + return c.playerEquipment[c.playerHat] == 11664 + && c.playerEquipment[c.playerLegs] == 8840 + && c.playerEquipment[c.playerChest] == 8839 + && c.playerEquipment[c.playerHands] == 8842; + } + +} diff --git a/2006Redone Server/src/redone/game/content/combat/range/RangeMaxHit.java b/2006Redone Server/src/com/rebotted/game/content/combat/range/RangeMaxHit.java similarity index 90% rename from 2006Redone Server/src/redone/game/content/combat/range/RangeMaxHit.java rename to 2006Redone Server/src/com/rebotted/game/content/combat/range/RangeMaxHit.java index 9fd3eb34..1134eedd 100644 --- a/2006Redone Server/src/redone/game/content/combat/range/RangeMaxHit.java +++ b/2006Redone Server/src/com/rebotted/game/content/combat/range/RangeMaxHit.java @@ -1,101 +1,101 @@ -package redone.game.content.combat.range; - -import redone.game.players.Client; - -public class RangeMaxHit { - - public static int calculateRangeDefence(Client c) { - int defenceLevel = c.playerLevel[1]; - if (c.getPrayer().prayerActive[0]) { - defenceLevel += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.05; - } else if (c.getPrayer().prayerActive[5]) { - defenceLevel += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.1; - } else if (c.getPrayer().prayerActive[13]) { - defenceLevel += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.15; - } else if (c.getPrayer().prayerActive[24]) { - defenceLevel += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.2; - } else if (c.getPrayer().prayerActive[25]) { - defenceLevel += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.25; - } - return defenceLevel + c.playerBonus[9] + c.playerBonus[9] / 2; - } - - public static int calculateRangeAttack(Client c) { - int rangeLevel = c.playerLevel[4]; - rangeLevel *= c.specAccuracy; - if (RangeData.fullVoidRange(c)) { - rangeLevel += c.getLevelForXP(c.playerXP[c.playerRanged]) * 0.1; - } - if (c.getPrayer().prayerActive[3]) { - rangeLevel *= 1.05; - } else if (c.getPrayer().prayerActive[11]) { - rangeLevel *= 1.10; - } else if (c.getPrayer().prayerActive[19]) { - rangeLevel *= 1.15; - } - // dbow spec - if (RangeData.fullVoidRange(c) && c.specAccuracy > 1.15) { - rangeLevel *= 1.75; - } - return (int) (rangeLevel + c.playerBonus[4] * 1.95); - } - - public static int rangeMaxHit(Client c) { - int rangeLevel = c.playerLevel[4]; - int itemUsed = getRangeStr(c.usingBow ? c.lastArrowUsed : c.lastWeaponUsed); - double modifier = 1.00; - if (c.getPrayer().prayerActive[3]) { - modifier *= 1.05; - } else if (c.getPrayer().prayerActive[11]) { - modifier *= 1.10; - } else if (c.getPrayer().prayerActive[19]) { - modifier *= 1.15; - } - if (RangeData.fullVoidRange(c)) { - modifier *= 1.20; - } - double e = Math.floor(rangeLevel * modifier); - if (c.fightMode == 0) { - e = (e + 3.0); - } - double darkbow = 1.0; - if (c.usingSpecial) { - if (c.playerEquipment[3] == 11235) { - if (c.lastArrowUsed == 11212) { - darkbow = 1.5; - } else { - darkbow = 1.3; - } - } - } - double max = (1.3 + e / 10 + itemUsed / 80 + e * itemUsed / 640) * darkbow; - return (int) max; - } - - public static int getRangeStr(int i) { - int str = 0; - int[][] data = { { 877, 10 }, { 9140, 46 }, { 9145, 36 }, { 9141, 64 }, - { 9142, 82 }, { 9143, 100 }, { 9144, 115 }, { 9236, 14 }, - { 9237, 30 }, { 9238, 48 }, { 9239, 66 }, { 9240, 83 }, - { 9241, 85 }, { 9242, 103 }, { 9243, 105 }, { 9244, 117 }, - { 9245, 120 }, { 882, 7 }, { 884, 10 }, { 886, 16 }, - { 888, 22 }, { 890, 31 }, { 892, 49 }, { 4740, 55 }, - { 11212, 60 }, { 806, 1 }, { 807, 3 }, { 808, 4 }, { 809, 7 }, - { 810, 10 }, { 811, 14 }, { 11230, 20 }, { 864, 3 }, - { 863, 4 }, { 865, 7 }, { 866, 10 }, { 867, 14 }, { 868, 24 }, - { 825, 6 }, { 826, 10 }, { 827, 12 }, { 828, 18 }, { 829, 28 }, - { 830, 42 }, { 800, 5 }, { 801, 7 }, { 802, 11 }, { 803, 16 }, - { 804, 23 }, { 805, 36 }, { 9976, 0 }, { 9977, 15 }, - { 4212, 70 }, { 4214, 70 }, { 4215, 70 }, { 4216, 70 }, - { 4217, 70 }, { 4218, 70 }, { 4219, 70 }, { 4220, 70 }, - { 4221, 70 }, { 4222, 70 }, { 4223, 70 }, { 6522, 49 }, - { 10034, 15 }, }; - for (int[] element : data) { - if (i == element[0]) { - str = element[1]; - } - } - return str; - } - -} +package com.rebotted.game.content.combat.range; + +import com.rebotted.game.players.Player; + +public class RangeMaxHit { + + public static int calculateRangeDefence(Player c) { + int defenceLevel = c.playerLevel[1]; + if (c.getPrayer().prayerActive[0]) { + defenceLevel += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.05; + } else if (c.getPrayer().prayerActive[5]) { + defenceLevel += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.1; + } else if (c.getPrayer().prayerActive[13]) { + defenceLevel += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.15; + } else if (c.getPrayer().prayerActive[24]) { + defenceLevel += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.2; + } else if (c.getPrayer().prayerActive[25]) { + defenceLevel += c.getLevelForXP(c.playerXP[c.playerDefence]) * 0.25; + } + return defenceLevel + c.playerBonus[9] + c.playerBonus[9] / 2; + } + + public static int calculateRangeAttack(Player c) { + int rangeLevel = c.playerLevel[4]; + rangeLevel *= c.specAccuracy; + if (RangeData.fullVoidRange(c)) { + rangeLevel += c.getLevelForXP(c.playerXP[c.playerRanged]) * 0.1; + } + if (c.getPrayer().prayerActive[3]) { + rangeLevel *= 1.05; + } else if (c.getPrayer().prayerActive[11]) { + rangeLevel *= 1.10; + } else if (c.getPrayer().prayerActive[19]) { + rangeLevel *= 1.15; + } + // dbow spec + if (RangeData.fullVoidRange(c) && c.specAccuracy > 1.15) { + rangeLevel *= 1.75; + } + return (int) (rangeLevel + c.playerBonus[4] * 1.95); + } + + public static int rangeMaxHit(Player c) { + int rangeLevel = c.playerLevel[4]; + int itemUsed = getRangeStr(c.usingBow ? c.lastArrowUsed : c.lastWeaponUsed); + double modifier = 1.00; + if (c.getPrayer().prayerActive[3]) { + modifier *= 1.05; + } else if (c.getPrayer().prayerActive[11]) { + modifier *= 1.10; + } else if (c.getPrayer().prayerActive[19]) { + modifier *= 1.15; + } + if (RangeData.fullVoidRange(c)) { + modifier *= 1.20; + } + double e = Math.floor(rangeLevel * modifier); + if (c.fightMode == 0) { + e = (e + 3.0); + } + double darkbow = 1.0; + if (c.usingSpecial) { + if (c.playerEquipment[3] == 11235) { + if (c.lastArrowUsed == 11212) { + darkbow = 1.5; + } else { + darkbow = 1.3; + } + } + } + double max = (1.3 + e / 10 + itemUsed / 80 + e * itemUsed / 640) * darkbow; + return (int) max; + } + + public static int getRangeStr(int i) { + int str = 0; + int[][] data = { { 877, 10 }, { 9140, 46 }, { 9145, 36 }, { 9141, 64 }, + { 9142, 82 }, { 9143, 100 }, { 9144, 115 }, { 9236, 14 }, + { 9237, 30 }, { 9238, 48 }, { 9239, 66 }, { 9240, 83 }, + { 9241, 85 }, { 9242, 103 }, { 9243, 105 }, { 9244, 117 }, + { 9245, 120 }, { 882, 7 }, { 884, 10 }, { 886, 16 }, + { 888, 22 }, { 890, 31 }, { 892, 49 }, { 4740, 55 }, + { 11212, 60 }, { 806, 1 }, { 807, 3 }, { 808, 4 }, { 809, 7 }, + { 810, 10 }, { 811, 14 }, { 11230, 20 }, { 864, 3 }, + { 863, 4 }, { 865, 7 }, { 866, 10 }, { 867, 14 }, { 868, 24 }, + { 825, 6 }, { 826, 10 }, { 827, 12 }, { 828, 18 }, { 829, 28 }, + { 830, 42 }, { 800, 5 }, { 801, 7 }, { 802, 11 }, { 803, 16 }, + { 804, 23 }, { 805, 36 }, { 9976, 0 }, { 9977, 15 }, + { 4212, 70 }, { 4214, 70 }, { 4215, 70 }, { 4216, 70 }, + { 4217, 70 }, { 4218, 70 }, { 4219, 70 }, { 4220, 70 }, + { 4221, 70 }, { 4222, 70 }, { 4223, 70 }, { 6522, 49 }, + { 10034, 15 }, }; + for (int[] element : data) { + if (i == element[0]) { + str = element[1]; + } + } + return str; + } + +} diff --git a/2006Redone Server/src/redone/game/content/consumables/Beverages.java b/2006Redone Server/src/com/rebotted/game/content/consumables/Beverages.java similarity index 65% rename from 2006Redone Server/src/redone/game/content/consumables/Beverages.java rename to 2006Redone Server/src/com/rebotted/game/content/consumables/Beverages.java index 6ee33777..c42d1962 100644 --- a/2006Redone Server/src/redone/game/content/consumables/Beverages.java +++ b/2006Redone Server/src/com/rebotted/game/content/consumables/Beverages.java @@ -1,218 +1,217 @@ -package redone.game.content.consumables; - -import redone.event.*; -import redone.game.players.Client; -import redone.util.Misc; - -public class Beverages { - - private static final int BEERGLASS = 1919; - //private static final int EMPTYJUG = 1935; - - public static enum beverageData { - BEER(1917, BEERGLASS, 829, true, false, false, false), - BEER1(7740, BEERGLASS, 829, true, false, false, false), - GROG(1915, BEERGLASS, 829, true, false, false, false), - BANDITS_BREW(4627, BEERGLASS, 829, true, false, false, false), - DRAGON_BITTER(1911, BEERGLASS, 829, true, false, false, false), - CIDER(7752,BEERGLASS, 829, true, false, false, false), - MATURE_CIDER(5765, BEERGLASS, 829, true, false, false, false), - MOONLIGHT_MEAD(7750, BEERGLASS, 829, true, false, false, false), - DWARVEN_STOUT(1913, BEERGLASS, 829, true, false, false, false), - GREENMANS_ALE(1909, BEERGLASS, 829, true, false, false, false), - CHEFS_DELIGHT(7754, BEERGLASS, 829, true, false, false, false), - ASGARNIAN_ALE(1905, BEERGLASS, 829, true, false, false, false), - WIZARDS_MIND_BOMB(1907, BEERGLASS, 829, true, false, false, false); - - private int bevId, replacement, bevAnim; - private boolean effect1, effect2, effect3, effect4; - - private beverageData(final int bevId, final int replacement, - final int bevAnim, final boolean effect1, - final boolean effect2, final boolean effect3, - final boolean effect4) { - this.bevId = bevId; - this.replacement = replacement; - this.bevAnim = bevAnim; - this.effect1 = effect1; - this.effect2 = effect2; - this.effect3 = effect3; - this.effect4 = effect4; - } - - public int getBev() { - return bevId; - } - - public int getRep() { - return replacement; - } - - public int getAnim() { - return bevAnim; - } - - public boolean getEffect1() { - return effect1; - } - - public boolean getEffect2() { - return effect2; - } - - public boolean getEffect3() { - return effect3; - } - - public boolean getEffect4() { - return effect4; - } - - private final String getName() { - return Misc.optimizeText(toString().toLowerCase().replaceAll("_", " ")); - } - } - - public static boolean isBeverage(Client c, int beverageId) { - boolean isBeverage = false; - for (final beverageData b : beverageData.values()) { - if (beverageId == b.getBev()) { - isBeverage = true; - } - } - return isBeverage; - } - - private static int drunkTimer = 0; - - private static void resetDrunk(Client c) { - c.playerStandIndex = 0x328; - c.updateRequired = true; - c.appearanceUpdateRequired = true; - drunkTimer = -1; - } - - private static void getBevEffect(final Client c, int bevEffectId) { - switch (bevEffectId) { - case 1: - c.playerStandIndex = 3040; - c.getActionSender().sendMessage("You start to feel dizzy."); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (c.disconnected) { - container.stop(); - return; - } - - if (drunkTimer > 0) { - drunkTimer--; - } - if (drunkTimer == 0) { - container.stop(); - } - } - - public void stop() { - resetDrunk(c); - } - }, 1); - break; - default: - break; - } - c.updateRequired = true; - c.appearanceUpdateRequired = true; - } - - public static void foodEffect(Client c, int id) { - switch (id) { - case 1917: - case 7740://beer - double beerEffectStrength = c.getLevelForXP(c.playerXP[2]) * .04 + c.getLevelForXP(c.playerXP[2]); - double beerEffectAttack = c.getLevelForXP(c.playerXP[0]) * .07; - if (c.playerLevel[2] < beerEffectStrength) { - c.playerLevel[2] = (int) beerEffectStrength; - } - if (c.playerLevel[0] > 0) { - c.playerLevel[0] -= beerEffectAttack; - } - if (c.playerLevel[0] <= 0) { - c.playerLevel[0] = 1; - } - c.getPlayerAssistant().refreshSkill(0); - c.getPlayerAssistant().refreshSkill(2); - break; - case 1913: //dwarven stout - c.playerLevel[c.playerMining] = c.getPlayerAssistant().getLevelForXP(c.playerXP[c.playerMining]) + 1; - c.playerLevel[c.playerSmithing] = c.getPlayerAssistant().getLevelForXP(c.playerXP[c.playerSmithing]) + 1; - c.getPlayerAssistant().refreshSkill(c.playerMining); - c.getPlayerAssistant().refreshSkill(c.playerSmithing); - break; - case 1907://wizard's mind bomb - if (c.playerLevel[c.playerMagic] < 50) { - c.playerLevel[c.playerMagic] = c.getPlayerAssistant().getLevelForXP(c.playerXP[c.playerMagic]) + 2; - } else { - c.playerLevel[c.playerMagic] = c.getPlayerAssistant().getLevelForXP(c.playerXP[c.playerMagic]) + 3; - } - c.playerLevel[c.playerStrength] = c.getPlayerAssistant().getLevelForXP(c.playerXP[c.playerStrength]) - 3; - c.playerLevel[c.playerDefence] = c.getPlayerAssistant().getLevelForXP(c.playerXP[c.playerDefence]) - 3; - c.playerLevel[c.playerAttack] = c.getPlayerAssistant().getLevelForXP(c.playerXP[c.playerAttack]) - 4; - c.getPlayerAssistant().refreshSkill(c.playerDefence); - c.getPlayerAssistant().refreshSkill(c.playerMagic); - c.getPlayerAssistant().refreshSkill(c.playerAttack); - c.getPlayerAssistant().refreshSkill(c.playerStrength); - break; - case 1915://grog - c.playerLevel[2] = c.getPlayerAssistant().getLevelForXP(c.playerXP[2]) + 3; - if (c.playerLevel[0] > 0) { - c.playerLevel[0] = c.getPlayerAssistant().getLevelForXP(c.playerXP[0]) - 2; - } - if (c.playerLevel[0] <= 0) { - c.playerLevel[0] = 1; - } - c.getPlayerAssistant().refreshSkill(0); - c.getPlayerAssistant().refreshSkill(2); - break; - } - } - - public static void drinkBeverage(final Client c, final int beverageId, int slotId) { - for (final beverageData b : beverageData.values()) { - if (beverageId == b.getBev()) { - if (System.currentTimeMillis() - c.potDelay >= 1500) { - if (c.getItemAssistant().playerHasItem(beverageId)) { - if (b.getEffect1()) { - drunkTimer = 30; - getBevEffect(c, 1); - } - if (b.getEffect2()) { - drunkTimer = 45; - getBevEffect(c, 2); - } - if (b.getEffect3()) { - drunkTimer = 60; - getBevEffect(c, 3); - } - if (b.getEffect4()) { - drunkTimer = 75; - getBevEffect(c, 4); - } - foodEffect(c, beverageId); - c.potDelay = System.currentTimeMillis(); - c.foodDelay = c.potDelay; - c.getCombatAssistant().resetPlayerAttack(); - c.attackTimer++; - c.startAnimation(b.getAnim()); - c.getItemAssistant().resetItems(3214); - c.potDelay = System.currentTimeMillis(); - c.getItemAssistant().deleteItem(beverageId, slotId, 1); - c.getItemAssistant().addItem(b.getRep(), 1); - c.forcedChat("Cheers mate!"); - c.getActionSender().sendMessage("You drink the " + b.getName() + "."); - } - } - } - } - } +package com.rebotted.game.content.consumables; + +import com.rebotted.event.*; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +public class Beverages { + + private static final int BEER_GLASS = 1919; + + public static enum beverageData { + BEER(1917, BEER_GLASS, 829, true, false, false, false), + BEER1(7740, BEER_GLASS, 829, true, false, false, false), + GROG(1915, BEER_GLASS, 829, true, false, false, false), + BANDITS_BREW(4627, BEER_GLASS, 829, true, false, false, false), + DRAGON_BITTER(1911, BEER_GLASS, 829, true, false, false, false), + CIDER(7752,BEER_GLASS, 829, true, false, false, false), + MATURE_CIDER(5765, BEER_GLASS, 829, true, false, false, false), + MOONLIGHT_MEAD(7750, BEER_GLASS, 829, true, false, false, false), + DWARVEN_STOUT(1913, BEER_GLASS, 829, true, false, false, false), + GREENMANS_ALE(1909, BEER_GLASS, 829, true, false, false, false), + CHEFS_DELIGHT(7754, BEER_GLASS, 829, true, false, false, false), + ASGARNIAN_ALE(1905, BEER_GLASS, 829, true, false, false, false), + WIZARDS_MIND_BOMB(1907, BEER_GLASS, 829, true, false, false, false); + + private int bevId, replacement, bevAnim; + private boolean effect1, effect2, effect3, effect4; + + private beverageData(final int bevId, final int replacement, + final int bevAnim, final boolean effect1, + final boolean effect2, final boolean effect3, + final boolean effect4) { + this.bevId = bevId; + this.replacement = replacement; + this.bevAnim = bevAnim; + this.effect1 = effect1; + this.effect2 = effect2; + this.effect3 = effect3; + this.effect4 = effect4; + } + + public int getBev() { + return bevId; + } + + public int getRep() { + return replacement; + } + + public int getAnim() { + return bevAnim; + } + + public boolean getEffect1() { + return effect1; + } + + public boolean getEffect2() { + return effect2; + } + + public boolean getEffect3() { + return effect3; + } + + public boolean getEffect4() { + return effect4; + } + + private final String getName() { + return Misc.optimizeText(toString().toLowerCase().replaceAll("_", " ")); + } + } + + public static boolean isBeverage(Player c, int beverageId) { + boolean isBeverage = false; + for (final beverageData b : beverageData.values()) { + if (beverageId == b.getBev()) { + isBeverage = true; + } + } + return isBeverage; + } + + private static int drunkTimer = 0; + + private static void resetDrunk(Player c) { + c.playerStandIndex = 0x328; + c.updateRequired = true; + c.appearanceUpdateRequired = true; + drunkTimer = -1; + } + + private static void getBevEffect(final Player c, int bevEffectId) { + switch (bevEffectId) { + case 1: + c.playerStandIndex = 3040; + c.getPacketSender().sendMessage("You start to feel dizzy."); + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (c.disconnected) { + container.stop(); + return; + } + + if (drunkTimer > 0) { + drunkTimer--; + } + if (drunkTimer == 0) { + container.stop(); + } + } + + public void stop() { + resetDrunk(c); + } + }, 1); + break; + default: + break; + } + c.updateRequired = true; + c.appearanceUpdateRequired = true; + } + + public static void foodEffect(Player c, int id) { + switch (id) { + case 1917: + case 7740://beer + double beerEffectStrength = c.getLevelForXP(c.playerXP[2]) * .04 + c.getLevelForXP(c.playerXP[2]); + double beerEffectAttack = c.getLevelForXP(c.playerXP[0]) * .07; + if (c.playerLevel[2] < beerEffectStrength) { + c.playerLevel[2] = (int) beerEffectStrength; + } + if (c.playerLevel[0] > 0) { + c.playerLevel[0] -= beerEffectAttack; + } + if (c.playerLevel[0] <= 0) { + c.playerLevel[0] = 1; + } + c.getPlayerAssistant().refreshSkill(0); + c.getPlayerAssistant().refreshSkill(2); + break; + case 1913: //dwarven stout + c.playerLevel[c.playerMining] = c.getPlayerAssistant().getLevelForXP(c.playerXP[c.playerMining]) + 1; + c.playerLevel[c.playerSmithing] = c.getPlayerAssistant().getLevelForXP(c.playerXP[c.playerSmithing]) + 1; + c.getPlayerAssistant().refreshSkill(c.playerMining); + c.getPlayerAssistant().refreshSkill(c.playerSmithing); + break; + case 1907://wizard's mind bomb + if (c.playerLevel[c.playerMagic] < 50) { + c.playerLevel[c.playerMagic] = c.getPlayerAssistant().getLevelForXP(c.playerXP[c.playerMagic]) + 2; + } else { + c.playerLevel[c.playerMagic] = c.getPlayerAssistant().getLevelForXP(c.playerXP[c.playerMagic]) + 3; + } + c.playerLevel[c.playerStrength] = c.getPlayerAssistant().getLevelForXP(c.playerXP[c.playerStrength]) - 3; + c.playerLevel[c.playerDefence] = c.getPlayerAssistant().getLevelForXP(c.playerXP[c.playerDefence]) - 3; + c.playerLevel[c.playerAttack] = c.getPlayerAssistant().getLevelForXP(c.playerXP[c.playerAttack]) - 4; + c.getPlayerAssistant().refreshSkill(c.playerDefence); + c.getPlayerAssistant().refreshSkill(c.playerMagic); + c.getPlayerAssistant().refreshSkill(c.playerAttack); + c.getPlayerAssistant().refreshSkill(c.playerStrength); + break; + case 1915://grog + c.playerLevel[2] = c.getPlayerAssistant().getLevelForXP(c.playerXP[2]) + 3; + if (c.playerLevel[0] > 0) { + c.playerLevel[0] = c.getPlayerAssistant().getLevelForXP(c.playerXP[0]) - 2; + } + if (c.playerLevel[0] <= 0) { + c.playerLevel[0] = 1; + } + c.getPlayerAssistant().refreshSkill(0); + c.getPlayerAssistant().refreshSkill(2); + break; + } + } + + public static void drinkBeverage(final Player player, final int beverageId, int slotId) { + for (final beverageData b : beverageData.values()) { + if (beverageId == b.getBev()) { + if (System.currentTimeMillis() - player.potDelay >= 1500) { + if (player.getItemAssistant().playerHasItem(beverageId)) { + if (b.getEffect1()) { + drunkTimer = 30; + getBevEffect(player, 1); + } + if (b.getEffect2()) { + drunkTimer = 45; + getBevEffect(player, 2); + } + if (b.getEffect3()) { + drunkTimer = 60; + getBevEffect(player, 3); + } + if (b.getEffect4()) { + drunkTimer = 75; + getBevEffect(player, 4); + } + foodEffect(player, beverageId); + player.potDelay = System.currentTimeMillis(); + player.foodDelay = player.potDelay; + player.getCombatAssistant().resetPlayerAttack(); + player.attackTimer++; + player.startAnimation(b.getAnim()); + player.getItemAssistant().resetItems(3214); + player.potDelay = System.currentTimeMillis(); + player.getItemAssistant().deleteItem(beverageId, slotId, 1); + player.getItemAssistant().addItem(b.getRep(), 1); + player.forcedChat("Cheers mate!"); + player.getPacketSender().sendMessage("You drink the " + b.getName() + "."); + } + } + } + } + } } \ No newline at end of file diff --git a/2006Redone Server/src/redone/game/content/consumables/Food.java b/2006Redone Server/src/com/rebotted/game/content/consumables/Food.java similarity index 90% rename from 2006Redone Server/src/redone/game/content/consumables/Food.java rename to 2006Redone Server/src/com/rebotted/game/content/consumables/Food.java index 26c4842f..fef3c463 100644 --- a/2006Redone Server/src/redone/game/content/consumables/Food.java +++ b/2006Redone Server/src/com/rebotted/game/content/consumables/Food.java @@ -1,254 +1,254 @@ -package redone.game.content.consumables; - -import java.util.HashMap; - -import redone.game.content.music.sound.SoundList; -import redone.game.items.impl.RareProtection; -import redone.game.players.Client; -import redone.util.Misc; - -public class Food { - - private final Client c; - - public Food(Client c) { - this.c = c; - } - - public static enum FoodToEat { - Easter_Egg(1961, 12, "Easter Egg", 0, "Food", false), Pumpkin(1959, 14, - "Pumpkin", 0, "Food", false), Half_Jug_of_Wine(1989, 7, - "Half Full Wine Jug", 1935, "Drink", false), - //GROG(1915, 3, "Grog", 1919, "Drink", true), - CUP_OF_TEA(1978, 2 + Misc.random(1), "Cup of Tea", 1980, "Drink", true), CUP_OF_TEA2( - 712, 2 + Misc.random(1), "Cup of Tea", 1980, "Drink", true), - //WIZARD_MIND(1907, 0, "Wizard Mind Bomb", 0, "Drink", true), - LEMON(2102, 2,"Lemon", 0, "Food", false), LIME(2120, 2, "Lime", 0, "Food", - false), PINEAPPLE(2114, 2, "Pineapple", 0, "Food", false), CHOCOLATE_BAR( - 1973, 2, "Chocolate Bar", 0, "Food", false), Wine(1993, 11, - "Wine", 1935, "Drink", false), MACKERAL(355, 6, "Mackeral", 0, - "Food", false), MANTA(391, 22, "Manta Ray", 0, "Food", false), SHARK( - 385, 20, "Shark", 0, "Food", false), LOBSTER(379, 12, - "Lobster", 0, "Food", false), KARAMBWAN(3144, 2 + Misc.random(4), "Karambwan", 0, "Food", false), - //BEER(1917, 1, "Beer", 1919, "Drink", true), - //GREENMANS_ALE(1909, 1, "Greenman's Ale", 1919, "Drink", true), - TROUT(333, 7, "Trout", - 0, "Food", false), SALMON(329, 9, "Salmon", 0, "Food", false), SWORDFISH( - 373, 14, "Swordfish", 0, "Food", false), TUNA(361, 10, "Tuna", - 0, "Food", false), - //MOONLIGHT_MEAD(2955, 4, "Moonlight mead", 1919, "Drink", false), - MONKFISH(7946, 16, "Monkfish", 0, - "Food", false), SEA_TURTLE(397, 21, "Sea Turtle", 0, "Food", - false), CABBAGE(1965, 1, "Cabbage", 0, "Food", false), SPINACH( - 1969, 2, "Spinach Roll", 0, "Food", false), CAKE(1891, 4, - "Cake", 1893, "Food", false), CAKE2(1893, 4, "2/3 Cake", 1895, - "Food", false), SLICE_OF_CAKE(1895, 4, "2/3 Cake", 0, "Food", - false), BASS(365, 13, "Bass", 0, "Food", false), COD(339, 7, - "Cod", 0, "Food", false), POTATO(1942, 1, "Potato", 0, "Food", - false), BAKED_POTATO(6701, 4, "Baked Potato", 0, "Food", false), POTATO_WITH_CHEESE( - 6705, 16, "Potato with Cheese", 0, "Food", false), EGG_POTATO( - 7056, 16, "Egg Potato", 0, "Food", false), CHILLI_POTATO(7054, - 14, "Chilli Potato", 0, "Food", false), MUSHROOM_POTATO(7058, - 20, "Mushroom Potato", 0, "Food", false), TUNA_POTATO(7060, 22, - "Tuna Potato", 0, "Food", false), SHRIMPS(315, 3, "Shrimps", 0, - "Food", false), HERRING(347, 5, "Herring", 0, "Food", false), SARDINE( - 325, 4, "Sardine", 0, "Food", false), CHOCOLATE_CAKE(1897, 5, - "Chocolate Cake", 1899, "Food", false), HALF_CHOCOLATE_CAKE( - 1899, 5, "2/3 Chocolate Cake", 1901, "Food", false), CHOCOLATE_SLICE( - 1901, 5, "Chocolate Slice", 0, "Food", false), ANCHOVIES(319, - 2, "Anchovies", 0, "Food", false), PLAIN_PIZZA(2289, 7, - "Plain Pizza", 2291, "Food", false), HALF_PLAIN_PIZZA(2291, 7, - "1/2 Plain pizza", 0, "Food", false), MEAT_PIZZA(2293, 8, - "Meat Pizza", 2295, "Food", false), CHICKEN(2140, 3, "Chicken", - 0, "Food", false), MEAT(2142, 2, "Meat", 0, "Food", false), HALF_MEAT_PIZZA( - 2295, 8, "1/2 Meat Pizza", 0, "Food", false), ANCHOVY_PIZZA( - 2297, 9, "Anchovy Pizza", 2299, "Food", false), HALF_ANCHOVY_PIZZA( - 2299, 9, "1/2 Anchovy Pizza", 0, "Food", false), PINEAPPLE_PIZZA( - 2301, 11, "Pineapple Pizza", 2303, "Food", false), HALF_PINEAPPLE_PIZZA( - 2303, 11, "1/2 Pineapple Pizza", 0, "Food", false), BREAD(2309, - 5, "Bread", 0, "Food", false), APPLE_PIE(2323, 7, "Apple Pie", - 2335, "Food", false), HALF_APPLE_PIE(2335, 7, "Half Apple Pie", - 2313, "Food", false), REDBERRY_PIE(2325, 5, "Redberry Pie", - 2333, "Food", false), HALF_REDBERRY_PIE(2333, 5, - "Half Redberry Pie", 2313, "Food", false), Ugthanki_kebab(1883, - 2, "Ugthanki kebab", 0, "Food", false), - // Kebab(1971, 2, "kebab", 0, "food", false), - SEAWEED(403, 4, "Edible Seaweed", 0, "Food", false), - MEAT_PIE(2327, 6, "Meat Pie", 2331, "Food", false), HALF_MEAT_PIE(2331, - 6, "Half Meat Pie", 2313, "Food", false), SUMMER_PIE(7218, 11, - "Summer Pie", 7220, "Food", false), HALF_SUMMER_PIE(7220, 11, - "Half Summer Pie", 2313, "Food", false), PIKE(351, 8, "Pike", - 0, "Food", false), POTATO_WITH_BUTTER(6703, 14, - "Potato with Butter", 0, "Food", false), - SLICED_BANANA(3162, 2, "Sliced Banana", 0, "Food", false), - BANANA(1963, 2, "Banana", 0, "Food", false), PEACH(6883, 8, "Peach", 0, "Food", - false), ORANGE(2108, 2, "Orange", 0, "Food", false), PINEAPPLE_RINGS( - 2118, 2, "Pineapple Rings", 0, "Food", false), PINEAPPLE_CHUNKS( - 2116, 2, "Pineapple Chunks", 0, "Food", false), EASTER_EGG( - 7928, 1, "Easter Egg", 0, "Food", false), EASTER_EGG2(7929, 1, - "Easter Egg", 0, "Food", false), EASTER_EGG3(7930, 1, - "Easter Egg", 0, "Food", false), EASTER_EGG4(7931, 1, - "Easter Egg", 0, "Food", false), EASTER_EGG5(7932, 1, - "Easter Egg", 0, "Food", false), EASTER_EGG6(7933, 1, - "Easter Egg", 0, "Food", false), PURPLE_SWEETS(10476, 9, - "Purple Sweets", 0, "Food", false), POT_OF_CREAM(2130, 1, - "Pot of cream", 0, "Food", false), - FILED_RATION(7934, 9, "Field Ration", 0, "Food", false), - STEW(2003, 11, "Stew", 1923, "Food", false), - CURRY(2011, 19, "Curry", 1923, "Drink", false), - BANDAGES(4049, 3, "Bandages", 0, "Food", false); - - private int id; - private int heal; - private String name; - private int replace; - private String type; - private boolean foodEffect; - - private FoodToEat(int id, int heal, String name, int replaceWith, - String type, boolean foodEffect) { - this.id = id; - this.heal = heal; - this.name = name; - replace = replaceWith; - this.type = type; - this.foodEffect = foodEffect; - } - - private boolean hasEffect() { - return foodEffect; - } - - private int getId() { - return id; - } - - private String getType() { - return type; - } - - private int getHeal() { - return heal; - } - - public String getName() { - return name; - } - - public int replaceWith() { - return replace; - } - - public static HashMap food = new HashMap(); - - static { - for (FoodToEat f : FoodToEat.values()) { - food.put(f.getId(), f); - } - } - } - - public int random(int r) { - return Misc.random(r); - } - - public void eat(int id, int slot) { - if (c.isDead || c.playerLevel[3] <= 0) { - return; - } - if (c.duelRule[6]) { - c.getActionSender() - .sendMessage("You may not eat in this duel."); - return; - } - if (!RareProtection.eatDupedItem(c, id)) { - return; - } - if (System.currentTimeMillis() - c.foodDelay >= 1800 - && c.playerLevel[3] > 0) { - c.getCombatAssistant().resetPlayerAttack(); - c.attackTimer += 2; - c.startAnimation(829); - c.getItemAssistant().deleteItem(id, slot, 1); - FoodToEat f = FoodToEat.food.get(id); - if (f.hasEffect()) { - foodEffect(id); - } - if (f.replaceWith() > 0) { - c.getItemAssistant().addItem(f.replaceWith(), 1); - } - if (f.getType().equalsIgnoreCase("Food")) { - c.getActionSender().sendMessage( - "You eat the " + f.getName() + "."); - } else if (f.getType().equalsIgnoreCase("Drink")) { - c.getActionSender().sendMessage( - "You drink the " + f.getName() + "."); - } - if (id == 1965) { - c.getActionSender().sendMessage( - "You eat the cabbage. Yuck!"); - } - if (id == 2955) { - c.getActionSender().sendMessage("It tastes like something just died in your mouth."); - } - if (f.getType().equalsIgnoreCase("Food")) { - c.getActionSender().sendSound(SoundList.FOOD_EAT, 100, 0); - } else if (f.getType().equalsIgnoreCase("Drink")) { - c.getActionSender().sendSound(SoundList.DRINK, 100, 0); - } - c.foodDelay = System.currentTimeMillis(); - if (c.playerLevel[3] < c.getLevelForXP(c.playerXP[3])) { - c.playerLevel[3] += f.getHeal(); - c.getActionSender().sendMessage("It heals some health."); - if (c.playerLevel[3] > c.getLevelForXP(c.playerXP[3])) { - c.playerLevel[3] = c.getLevelForXP(c.playerXP[3]); - } - } - c.getPlayerAssistant().refreshSkill(3); - } - } - - public void foodEffect(int id) { - switch (id) { - case 1978: - case 712: - c.forcedChat("Aaah, nothing like a nice cuppa tea!"); - break; - case 1907: - if (c.playerLevel[6] < 50) { - c.playerLevel[6] = c.getPlayerAssistant().getLevelForXP( - c.playerXP[6]) + 2; - } else { - c.playerLevel[6] = c.getPlayerAssistant().getLevelForXP( - c.playerXP[6]) + 3; - } - if (c.playerLevel[2] < 4) { - c.playerLevel[2] = 1; - } - if (c.playerLevel[0] < 5) { - c.playerLevel[0] = 1; - } else { - c.playerLevel[0] = c.getPlayerAssistant().getLevelForXP(c.playerXP[0]) - 4; - } - if (c.playerLevel[1] < 4) { - c.playerLevel[1] = 1; - } else { - c.playerLevel[1] = c.getPlayerAssistant().getLevelForXP(c.playerXP[1]) - 3; - } - if (c.playerLevel[2] < 4) { - c.playerLevel[2] = 1; - } else { - c.playerLevel[2] = c.getPlayerAssistant().getLevelForXP(c.playerXP[2]) - 3; - } - c.getPlayerAssistant().refreshSkill(0); - c.getPlayerAssistant().refreshSkill(1); - c.getPlayerAssistant().refreshSkill(2); - c.getPlayerAssistant().refreshSkill(6); - break; - } - } - - public boolean isFood(int id) { - return FoodToEat.food.containsKey(id); - } -} +package com.rebotted.game.content.consumables; + +import java.util.HashMap; +import com.rebotted.game.content.music.sound.SoundList; +import com.rebotted.game.items.impl.RareProtection; +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +public class Food { + + private final Player c; + + public Food(Player player) { + this.c = player; + } + + public static enum FoodToEat { + Easter_Egg(1961, 12, "Easter Egg", 0, "Food", false), Pumpkin(1959, 14, + "Pumpkin", 0, "Food", false), Half_Jug_of_Wine(1989, 7, + "Half Full Wine Jug", 1935, "Drink", false), + //GROG(1915, 3, "Grog", 1919, "Drink", true), + CUP_OF_TEA(1978, 2 + Misc.random(1), "Cup of Tea", 1980, "Drink", true), CUP_OF_TEA2( + 712, 2 + Misc.random(1), "Cup of Tea", 1980, "Drink", true), + //WIZARD_MIND(1907, 0, "Wizard Mind Bomb", 0, "Drink", true), + LEMON(2102, 2,"Lemon", 0, "Food", false), LIME(2120, 2, "Lime", 0, "Food", + false), PINEAPPLE(2114, 2, "Pineapple", 0, "Food", false), CHOCOLATE_BAR( + 1973, 2, "Chocolate Bar", 0, "Food", false), Wine(1993, 11, + "Wine", 1935, "Drink", false), MACKERAL(355, 6, "Mackeral", 0, + "Food", false), MANTA(391, 22, "Manta Ray", 0, "Food", false), SHARK( + 385, 20, "Shark", 0, "Food", false), LOBSTER(379, 12, + "Lobster", 0, "Food", false), KARAMBWAN(3144, 2 + Misc.random(4), "Karambwan", 0, "Food", false), + //BEER(1917, 1, "Beer", 1919, "Drink", true), + //GREENMANS_ALE(1909, 1, "Greenman's Ale", 1919, "Drink", true), + TROUT(333, 7, "Trout", + 0, "Food", false), SALMON(329, 9, "Salmon", 0, "Food", false), SWORDFISH( + 373, 14, "Swordfish", 0, "Food", false), TUNA(361, 10, "Tuna", + 0, "Food", false), + //MOONLIGHT_MEAD(2955, 4, "Moonlight mead", 1919, "Drink", false), + MONKFISH(7946, 16, "Monkfish", 0, + "Food", false), SEA_TURTLE(397, 21, "Sea Turtle", 0, "Food", + false), CABBAGE(1965, 1, "Cabbage", 0, "Food", false), SPINACH( + 1969, 2, "Spinach Roll", 0, "Food", false), CAKE(1891, 4, + "Cake", 1893, "Food", false), CAKE2(1893, 4, "2/3 Cake", 1895, + "Food", false), SLICE_OF_CAKE(1895, 4, "2/3 Cake", 0, "Food", + false), BASS(365, 13, "Bass", 0, "Food", false), COD(339, 7, + "Cod", 0, "Food", false), POTATO(1942, 1, "Potato", 0, "Food", + false), BAKED_POTATO(6701, 4, "Baked Potato", 0, "Food", false), POTATO_WITH_CHEESE( + 6705, 16, "Potato with Cheese", 0, "Food", false), EGG_POTATO( + 7056, 16, "Egg Potato", 0, "Food", false), CHILLI_POTATO(7054, + 14, "Chilli Potato", 0, "Food", false), MUSHROOM_POTATO(7058, + 20, "Mushroom Potato", 0, "Food", false), TUNA_POTATO(7060, 22, + "Tuna Potato", 0, "Food", false), SHRIMPS(315, 3, "Shrimps", 0, + "Food", false), HERRING(347, 5, "Herring", 0, "Food", false), SARDINE( + 325, 4, "Sardine", 0, "Food", false), CHOCOLATE_CAKE(1897, 5, + "Chocolate Cake", 1899, "Food", false), HALF_CHOCOLATE_CAKE( + 1899, 5, "2/3 Chocolate Cake", 1901, "Food", false), CHOCOLATE_SLICE( + 1901, 5, "Chocolate Slice", 0, "Food", false), ANCHOVIES(319, + 2, "Anchovies", 0, "Food", false), PLAIN_PIZZA(2289, 7, + "Plain Pizza", 2291, "Food", false), HALF_PLAIN_PIZZA(2291, 7, + "1/2 Plain pizza", 0, "Food", false), MEAT_PIZZA(2293, 8, + "Meat Pizza", 2295, "Food", false), CHICKEN(2140, 3, "Chicken", + 0, "Food", false), MEAT(2142, 2, "Meat", 0, "Food", false), HALF_MEAT_PIZZA( + 2295, 8, "1/2 Meat Pizza", 0, "Food", false), ANCHOVY_PIZZA( + 2297, 9, "Anchovy Pizza", 2299, "Food", false), HALF_ANCHOVY_PIZZA( + 2299, 9, "1/2 Anchovy Pizza", 0, "Food", false), PINEAPPLE_PIZZA( + 2301, 11, "Pineapple Pizza", 2303, "Food", false), HALF_PINEAPPLE_PIZZA( + 2303, 11, "1/2 Pineapple Pizza", 0, "Food", false), BREAD(2309, + 5, "Bread", 0, "Food", false), APPLE_PIE(2323, 7, "Apple Pie", + 2335, "Food", false), HALF_APPLE_PIE(2335, 7, "Half Apple Pie", + 2313, "Food", false), REDBERRY_PIE(2325, 5, "Redberry Pie", + 2333, "Food", false), HALF_REDBERRY_PIE(2333, 5, + "Half Redberry Pie", 2313, "Food", false), Ugthanki_kebab(1883, + 2, "Ugthanki kebab", 0, "Food", false), + // Kebab(1971, 2, "kebab", 0, "food", false), + SEAWEED(403, 4, "Edible Seaweed", 0, "Food", false), + MEAT_PIE(2327, 6, "Meat Pie", 2331, "Food", false), HALF_MEAT_PIE(2331, + 6, "Half Meat Pie", 2313, "Food", false), SUMMER_PIE(7218, 11, + "Summer Pie", 7220, "Food", false), HALF_SUMMER_PIE(7220, 11, + "Half Summer Pie", 2313, "Food", false), PIKE(351, 8, "Pike", + 0, "Food", false), POTATO_WITH_BUTTER(6703, 14, + "Potato with Butter", 0, "Food", false), + SLICED_BANANA(3162, 2, "Sliced Banana", 0, "Food", false), + BANANA(1963, 2, "Banana", 0, "Food", false), PEACH(6883, 8, "Peach", 0, "Food", + false), ORANGE(2108, 2, "Orange", 0, "Food", false), PINEAPPLE_RINGS( + 2118, 2, "Pineapple Rings", 0, "Food", false), PINEAPPLE_CHUNKS( + 2116, 2, "Pineapple Chunks", 0, "Food", false), EASTER_EGG( + 7928, 1, "Easter Egg", 0, "Food", false), EASTER_EGG2(7929, 1, + "Easter Egg", 0, "Food", false), EASTER_EGG3(7930, 1, + "Easter Egg", 0, "Food", false), EASTER_EGG4(7931, 1, + "Easter Egg", 0, "Food", false), EASTER_EGG5(7932, 1, + "Easter Egg", 0, "Food", false), EASTER_EGG6(7933, 1, + "Easter Egg", 0, "Food", false), PURPLE_SWEETS(10476, 9, + "Purple Sweets", 0, "Food", false), POT_OF_CREAM(2130, 1, + "Pot of cream", 0, "Food", false), + FILED_RATION(7934, 9, "Field Ration", 0, "Food", false), + STEW(2003, 11, "Stew", 1923, "Food", false), + CURRY(2011, 19, "Curry", 1923, "Drink", false), + BANDAGES(4049, 3, "Bandages", 0, "Food", false); + + private int id; + private int heal; + private String name; + private int replace; + private String type; + private boolean foodEffect; + + private FoodToEat(int id, int heal, String name, int replaceWith, + String type, boolean foodEffect) { + this.id = id; + this.heal = heal; + this.name = name; + replace = replaceWith; + this.type = type; + this.foodEffect = foodEffect; + } + + private boolean hasEffect() { + return foodEffect; + } + + private int getId() { + return id; + } + + private String getType() { + return type; + } + + private int getHeal() { + return heal; + } + + public String getName() { + return name; + } + + public int replaceWith() { + return replace; + } + + public static HashMap food = new HashMap(); + + static { + for (FoodToEat f : FoodToEat.values()) { + food.put(f.getId(), f); + } + } + } + + public int random(int r) { + return Misc.random(r); + } + + public void eat(int id, int slot) { + if (c.isDead || c.playerLevel[3] <= 0) { + return; + } + if (c.duelRule[6]) { + c.getPacketSender() + .sendMessage("You may not eat in this duel."); + return; + } + if (!RareProtection.eatDupedItem(c, id)) { + return; + } + if (System.currentTimeMillis() - c.foodDelay >= 1800 + && c.playerLevel[3] > 0) { + c.getCombatAssistant().resetPlayerAttack(); + c.attackTimer += 2; + c.startAnimation(829); + c.getItemAssistant().deleteItem(id, slot, 1); + FoodToEat f = FoodToEat.food.get(id); + if (f.hasEffect()) { + foodEffect(id); + } + if (f.replaceWith() > 0) { + c.getItemAssistant().addItem(f.replaceWith(), 1); + } + if (f.getType().equalsIgnoreCase("Food")) { + c.getPacketSender().sendMessage( + "You eat the " + f.getName() + "."); + } else if (f.getType().equalsIgnoreCase("Drink")) { + c.getPacketSender().sendMessage( + "You drink the " + f.getName() + "."); + } + if (id == 1965) { + c.getPacketSender().sendMessage( + "You eat the cabbage. Yuck!"); + } + if (id == 2955) { + c.getPacketSender().sendMessage("It tastes like something just died in your mouth."); + } + if (f.getType().equalsIgnoreCase("Food")) { + c.getPacketSender().sendSound(SoundList.FOOD_EAT, 100, 0); + } else if (f.getType().equalsIgnoreCase("Drink")) { + c.getPacketSender().sendSound(SoundList.DRINK, 100, 0); + } + c.foodDelay = System.currentTimeMillis(); + if (c.playerLevel[3] < c.getLevelForXP(c.playerXP[3])) { + c.playerLevel[3] += f.getHeal(); + c.getPacketSender().sendMessage("It heals some health."); + if (c.playerLevel[3] > c.getLevelForXP(c.playerXP[3])) { + c.playerLevel[3] = c.getLevelForXP(c.playerXP[3]); + } + } + c.getPlayerAssistant().refreshSkill(3); + } + } + + public void foodEffect(int id) { + switch (id) { + case 1978: + case 712: + c.forcedChat("Aaah, nothing like a nice cuppa tea!"); + break; + case 1907: + if (c.playerLevel[6] < 50) { + c.playerLevel[6] = c.getPlayerAssistant().getLevelForXP( + c.playerXP[6]) + 2; + } else { + c.playerLevel[6] = c.getPlayerAssistant().getLevelForXP( + c.playerXP[6]) + 3; + } + if (c.playerLevel[2] < 4) { + c.playerLevel[2] = 1; + } + if (c.playerLevel[0] < 5) { + c.playerLevel[0] = 1; + } else { + c.playerLevel[0] = c.getPlayerAssistant().getLevelForXP(c.playerXP[0]) - 4; + } + if (c.playerLevel[1] < 4) { + c.playerLevel[1] = 1; + } else { + c.playerLevel[1] = c.getPlayerAssistant().getLevelForXP(c.playerXP[1]) - 3; + } + if (c.playerLevel[2] < 4) { + c.playerLevel[2] = 1; + } else { + c.playerLevel[2] = c.getPlayerAssistant().getLevelForXP(c.playerXP[2]) - 3; + } + c.getPlayerAssistant().refreshSkill(0); + c.getPlayerAssistant().refreshSkill(1); + c.getPlayerAssistant().refreshSkill(2); + c.getPlayerAssistant().refreshSkill(6); + break; + } + } + + public boolean isFood(int id) { + return FoodToEat.food.containsKey(id); + } +} diff --git a/2006Redone Server/src/redone/game/content/consumables/Kebabs.java b/2006Redone Server/src/com/rebotted/game/content/consumables/Kebabs.java similarity index 68% rename from 2006Redone Server/src/redone/game/content/consumables/Kebabs.java rename to 2006Redone Server/src/com/rebotted/game/content/consumables/Kebabs.java index f72e9a8b..a1686804 100644 --- a/2006Redone Server/src/redone/game/content/consumables/Kebabs.java +++ b/2006Redone Server/src/com/rebotted/game/content/consumables/Kebabs.java @@ -1,136 +1,136 @@ -package redone.game.content.consumables; - -import redone.game.players.Client; -import redone.util.Misc; - -/** - * @author darkside1222 - */ -public class Kebabs { - - public static int Kebab = 1971; - float chances = 0.0f; - - /** - * Chances(Percents) - */ - public static float chances(String effect) { - float chances = 0.0f;// PERCENT - if (effect.equalsIgnoreCase("Effect1")) {// Nothing - chances = 8.7f; - } else if (effect.equalsIgnoreCase("Effect2")) {// normal heal - chances = 61.2f; - } else if (effect.equalsIgnoreCase("Effect3")) {// better heal - chances = 21.1f; - } else if (effect.equalsIgnoreCase("Effect4")) {// SUPER heal - chances = 3.6f; - } else if (effect.equalsIgnoreCase("Effect5")) {// Damages you. - chances = 6.3f - 0.9f; - ; - } else { - chances = Float.parseFloat(effect); - } - return chances; // Equals 100% - } - - /** - * Different effects(Healing,lowering,damaging) - */ - public static void effects(Client c) { - float eff1 = chances("effect1"); - float eff2 = chances("effect2"); - float eff3 = chances("effect3"); - float eff4 = chances("effect4"); - float eff5 = chances("effect5"); - - if (Misc.random(100.0f) <= eff1) { // 8.71% - c.getActionSender().sendMessage( - "That kebab didn't seem to do a lot."); - - } else if (Misc.random(100.0f) <= eff2) { // 61.24% heals 10% of HP - c.getActionSender() - .sendMessage("It restores some life points."); - if (c.playerLevel[3] < c.getLevelForXP(c.playerXP[3])) { - c.playerLevel[3] += c.getLevelForXP(c.playerXP[3]) * 0.10; - if (c.playerLevel[3] > c.getLevelForXP(c.playerXP[3])) { - c.playerLevel[3] = c.getLevelForXP(c.playerXP[3]); - } - - } - - } else if (Misc.random(100.0f) <= eff3) { // 21.12% + 10-20 HP - c.getActionSender().sendMessage( - "That was a good kebab. You feel a lot better. "); - if (c.playerLevel[3] < c.getLevelForXP(c.playerXP[3])) { - c.playerLevel[3] += Misc.random(20); - if (c.playerLevel[3] > c.getLevelForXP(c.playerXP[3])) { - c.playerLevel[3] = c.getLevelForXP(c.playerXP[3]); - } - } - - } else if (Misc.random(100.0f) <= eff4) {// 3.65% + attk,str,def + - // 2-3 + heal 0-300 - c.getActionSender() - .sendMessage( - "Wow, that was an amazing kebab! You feel really invigorated."); - c.playerLevel[1] += 2 + Misc.random(1); // def - c.playerLevel[2] += 2 + Misc.random(1); // str - c.playerLevel[0] += 2 + Misc.random(1); // atk - c.getPlayerAssistant().refreshSkill(1); - c.getPlayerAssistant().refreshSkill(2); - c.getPlayerAssistant().refreshSkill(3); - if (c.playerLevel[3] < c.getLevelForXP(c.playerXP[3])) { - c.playerLevel[3] += Misc.random(30); - if (c.playerLevel[3] > c.getLevelForXP(c.playerXP[3])) { - c.playerLevel[3] = c.getLevelForXP(c.playerXP[3]); - } - } - - } else if (Misc.random(100.0f) <= eff5) {// 6.3%. lower STAT - c.getActionSender().sendMessage( - "That tasted very dodgy. You feel very ill."); - c.getActionSender().sendMessage( - "Eating the kebab has done damage to some of your stats."); - for (int j = 0; j < 2; j++) { - c.playerLevel[j] -= 2; // Fix this l0l - c.getPlayerAssistant().refreshSkill(j); - } - } - - } - - /** - * Eatting the kebab - */ - public static void eat(Client c, int slot) { - if (System.currentTimeMillis() - c.foodDelay >= 1500 - && c.playerLevel[3] > 0) { - if (c.playerLevel[3] == c.getLevelForXP(c.playerXP[3])) { // If - // full - // health, - // does - // nothing - // but - // eat. - c.getCombatAssistant().resetPlayerAttack(); - c.getActionSender().sendMessage("You eat the kebab."); - c.attackTimer += 2; - c.startAnimation(829); - c.getItemAssistant().deleteItem(Kebab, slot, 1); - c.getActionSender().sendSound(317, 100, 0); - c.foodDelay = System.currentTimeMillis(); - c.getPlayerAssistant().refreshSkill(3); - return; - } - c.getCombatAssistant().resetPlayerAttack(); - c.getActionSender().sendMessage("You eat the kebab."); - effects(c); - c.attackTimer += 2; - c.startAnimation(829); - c.getItemAssistant().deleteItem(Kebab, slot, 1); - c.getActionSender().sendSound(317, 100, 0); - c.foodDelay = System.currentTimeMillis(); - c.getPlayerAssistant().refreshSkill(3); - } - } -} +package com.rebotted.game.content.consumables; + +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +/** + * @author darkside1222 + */ +public class Kebabs { + + public static int Kebab = 1971; + float chances = 0.0f; + + /** + * Chances(Percents) + */ + public static float chances(String effect) { + float chances = 0.0f;// PERCENT + if (effect.equalsIgnoreCase("Effect1")) {// Nothing + chances = 8.7f; + } else if (effect.equalsIgnoreCase("Effect2")) {// normal heal + chances = 61.2f; + } else if (effect.equalsIgnoreCase("Effect3")) {// better heal + chances = 21.1f; + } else if (effect.equalsIgnoreCase("Effect4")) {// SUPER heal + chances = 3.6f; + } else if (effect.equalsIgnoreCase("Effect5")) {// Damages you. + chances = 6.3f - 0.9f; + ; + } else { + chances = Float.parseFloat(effect); + } + return chances; // Equals 100% + } + + /** + * Different effects(Healing,lowering,damaging) + */ + public static void effects(Player c) { + float eff1 = chances("effect1"); + float eff2 = chances("effect2"); + float eff3 = chances("effect3"); + float eff4 = chances("effect4"); + float eff5 = chances("effect5"); + + if (Misc.random(100.0f) <= eff1) { // 8.71% + c.getPacketSender().sendMessage( + "That kebab didn't seem to do a lot."); + + } else if (Misc.random(100.0f) <= eff2) { // 61.24% heals 10% of HP + c.getPacketSender() + .sendMessage("It restores some life points."); + if (c.playerLevel[3] < c.getLevelForXP(c.playerXP[3])) { + c.playerLevel[3] += c.getLevelForXP(c.playerXP[3]) * 0.10; + if (c.playerLevel[3] > c.getLevelForXP(c.playerXP[3])) { + c.playerLevel[3] = c.getLevelForXP(c.playerXP[3]); + } + + } + + } else if (Misc.random(100.0f) <= eff3) { // 21.12% + 10-20 HP + c.getPacketSender().sendMessage( + "That was a good kebab. You feel a lot better. "); + if (c.playerLevel[3] < c.getLevelForXP(c.playerXP[3])) { + c.playerLevel[3] += Misc.random(20); + if (c.playerLevel[3] > c.getLevelForXP(c.playerXP[3])) { + c.playerLevel[3] = c.getLevelForXP(c.playerXP[3]); + } + } + + } else if (Misc.random(100.0f) <= eff4) {// 3.65% + attk,str,def + + // 2-3 + heal 0-300 + c.getPacketSender() + .sendMessage( + "Wow, that was an amazing kebab! You feel really invigorated."); + c.playerLevel[1] += 2 + Misc.random(1); // def + c.playerLevel[2] += 2 + Misc.random(1); // str + c.playerLevel[0] += 2 + Misc.random(1); // atk + c.getPlayerAssistant().refreshSkill(1); + c.getPlayerAssistant().refreshSkill(2); + c.getPlayerAssistant().refreshSkill(3); + if (c.playerLevel[3] < c.getLevelForXP(c.playerXP[3])) { + c.playerLevel[3] += Misc.random(30); + if (c.playerLevel[3] > c.getLevelForXP(c.playerXP[3])) { + c.playerLevel[3] = c.getLevelForXP(c.playerXP[3]); + } + } + + } else if (Misc.random(100.0f) <= eff5) {// 6.3%. lower STAT + c.getPacketSender().sendMessage( + "That tasted very dodgy. You feel very ill."); + c.getPacketSender().sendMessage( + "Eating the kebab has done damage to some of your stats."); + for (int j = 0; j < 2; j++) { + c.playerLevel[j] -= 2; // Fix this l0l + c.getPlayerAssistant().refreshSkill(j); + } + } + + } + + /** + * Eatting the kebab + */ + public static void eat(Player player, int slot) { + if (System.currentTimeMillis() - player.foodDelay >= 1500 + && player.playerLevel[3] > 0) { + if (player.playerLevel[3] == player.getLevelForXP(player.playerXP[3])) { // If + // full + // health, + // does + // nothing + // but + // eat. + player.getCombatAssistant().resetPlayerAttack(); + player.getPacketSender().sendMessage("You eat the kebab."); + player.attackTimer += 2; + player.startAnimation(829); + player.getItemAssistant().deleteItem(Kebab, slot, 1); + player.getPacketSender().sendSound(317, 100, 0); + player.foodDelay = System.currentTimeMillis(); + player.getPlayerAssistant().refreshSkill(3); + return; + } + player.getCombatAssistant().resetPlayerAttack(); + player.getPacketSender().sendMessage("You eat the kebab."); + effects(player); + player.attackTimer += 2; + player.startAnimation(829); + player.getItemAssistant().deleteItem(Kebab, slot, 1); + player.getPacketSender().sendSound(317, 100, 0); + player.foodDelay = System.currentTimeMillis(); + player.getPlayerAssistant().refreshSkill(3); + } + } +} diff --git a/2006Redone Server/src/redone/game/content/consumables/Potions.java b/2006Redone Server/src/com/rebotted/game/content/consumables/Potions.java similarity index 90% rename from 2006Redone Server/src/redone/game/content/consumables/Potions.java rename to 2006Redone Server/src/com/rebotted/game/content/consumables/Potions.java index f6515166..4e9fbd9a 100644 --- a/2006Redone Server/src/redone/game/content/consumables/Potions.java +++ b/2006Redone Server/src/com/rebotted/game/content/consumables/Potions.java @@ -1,473 +1,473 @@ -package redone.game.content.consumables; - -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.items.Item; -import redone.game.items.ItemAssistant; -import redone.game.players.Client; - -public class Potions { - - private final Client c; - - public Potions(Client c) { - this.c = c; - } - - public void handlePotion(int itemId, int slot) { - if (c.duelRule[5]) { - c.getActionSender().sendMessage( - "You may not drink potions in this duel."); - return; - } - if (c.isDead || c.playerLevel[3] <= 0) { - return; - } - if (System.currentTimeMillis() - c.potDelay >= 1200) { - c.potDelay = System.currentTimeMillis(); - c.foodDelay = System.currentTimeMillis(); - c.getCombatAssistant().resetPlayerAttack(); - c.attackTimer++; - c.getActionSender().sendMessage( - "You drink some of your " + Item.getItemName(itemId) + "."); - c.startAnimation(829); - final String item = Item.getItemName(itemId); - String m = ""; - if (item.endsWith("(4)")) { - m = "You have 3 doses of potion left."; - } else if (item.endsWith("(3)")) { - m = "You have 2 doses of potion left."; - } else if (item.endsWith("(2)")) { - m = "You have 1 dose of potion left."; - } else if (item.endsWith("(1)")) { - m = "You have finished your potion."; - } - final String m1 = m; - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - c.getActionSender().sendMessage(m1); - container.stop(); - } - @Override - public void stop() { - - } - }, 1); - switch (itemId) { - case 3040: - drinkStatPotion(itemId, 3042, slot, 6, false); - break; - case 3042: - drinkStatPotion(itemId, 3044, slot, 6, false); - break; - case 3044: - drinkStatPotion(itemId, 3046, slot, 6, false); - break; - case 3046: - drinkStatPotion(itemId, 229, slot, 6, false); - break; - case 2450: - doTheBrewzam(itemId, 189, slot); - break; - case 189: - doTheBrewzam(itemId, 191, slot); - break; - case 191: - doTheBrewzam(itemId, 193, slot); - break; - case 193: - doTheBrewzam(itemId, 229, slot); - break; - case 6685: // brews - doTheBrew(itemId, 6687, slot); - break; - case 6687: - doTheBrew(itemId, 6689, slot); - break; - case 6689: - doTheBrew(itemId, 6691, slot); - break; - case 6691: - doTheBrew(itemId, 229, slot); - break; - case 2436: - drinkStatPotion(itemId, 145, slot, 0, true); // sup attack - break; - case 145: - drinkStatPotion(itemId, 147, slot, 0, true); - break; - case 147: - drinkStatPotion(itemId, 149, slot, 0, true); - break; - case 149: - drinkStatPotion(itemId, 229, slot, 0, true); - break; - case 2440: - drinkStatPotion(itemId, 157, slot, 2, true); // sup str - break; - case 157: - drinkStatPotion(itemId, 159, slot, 2, true); - break; - case 159: - drinkStatPotion(itemId, 161, slot, 2, true); - break; - case 161: - drinkStatPotion(itemId, 229, slot, 2, true); - break; - case 2444: - drinkStatPotion(itemId, 169, slot, 4, false); // range pot - break; - case 169: - drinkStatPotion(itemId, 171, slot, 4, false); - break; - case 171: - drinkStatPotion(itemId, 173, slot, 4, false); - break; - case 173: - drinkStatPotion(itemId, 229, slot, 4, false); - break; - case 2432: - drinkStatPotion(itemId, 133, slot, 1, false); // def pot - break; - case 133: - drinkStatPotion(itemId, 135, slot, 1, false); - break; - case 135: - drinkStatPotion(itemId, 137, slot, 1, false); - break; - case 137: - drinkStatPotion(itemId, 229, slot, 1, false); - break; - case 113: - drinkStatPotion(itemId, 115, slot, 2, false); // str pot - break; - case 115: - drinkStatPotion(itemId, 117, slot, 2, false); - break; - case 117: - drinkStatPotion(itemId, 119, slot, 2, false); - break; - case 119: - drinkStatPotion(itemId, 229, slot, 2, false); - break; - case 2428: - drinkStatPotion(itemId, 121, slot, 0, false); // attack - // pot - break; - case 121: - drinkStatPotion(itemId, 123, slot, 0, false); - break; - case 123: - drinkStatPotion(itemId, 125, slot, 0, false); - break; - case 125: - drinkStatPotion(itemId, 229, slot, 0, false); - break; - case 2442: - drinkStatPotion(itemId, 163, slot, 1, true); // super def - // pot - break; - case 163: - drinkStatPotion(itemId, 165, slot, 1, true); - break; - case 165: - drinkStatPotion(itemId, 167, slot, 1, true); - break; - case 167: - drinkStatPotion(itemId, 229, slot, 1, true); - break; - case 3024: - drinkPrayerPot(itemId, 3026, slot, true); // sup restore - break; - case 3026: - drinkPrayerPot(itemId, 3028, slot, true); - break; - case 3028: - drinkPrayerPot(itemId, 3030, slot, true); - break; - case 3030: - drinkPrayerPot(itemId, 229, slot, true); - break; - case 10925: - drinkPrayerPot(itemId, 10927, slot, true); // sanfew - // serums - curePoison(300000); - break; - case 10927: - drinkPrayerPot(itemId, 10929, slot, true); - curePoison(300000); - break; - case 10929: - drinkPrayerPot(itemId, 10931, slot, true); - curePoison(300000); - break; - case 10931: - drinkPrayerPot(itemId, 229, slot, true); - curePoison(300000); - break; - case 2434: - drinkPrayerPot(itemId, 139, slot, false); // pray pot - break; - case 139: - drinkPrayerPot(itemId, 141, slot, false); - break; - case 141: - drinkPrayerPot(itemId, 143, slot, false); - break; - case 143: - drinkPrayerPot(itemId, 229, slot, false); - break; - case 2446: - drinkAntiPoison(itemId, 175, slot, 30000); // anti poisons - break; - case 175: - drinkAntiPoison(itemId, 177, slot, 30000); - break; - case 177: - drinkAntiPoison(itemId, 179, slot, 30000); - break; - case 179: - drinkAntiPoison(itemId, 229, slot, 30000); - break; - case 2448: - drinkAntiPoison(itemId, 181, slot, 300000); // anti - // poisons - break; - case 181: - drinkAntiPoison(itemId, 183, slot, 300000); - break; - case 183: - drinkAntiPoison(itemId, 185, slot, 300000); - break; - case 185: - drinkAntiPoison(itemId, 229, slot, 300000); - break; - /** Energy Potions **/ - case 3008: - energyPotion(itemId, 3010, slot); - break; - case 3010: - energyPotion(itemId, 3012, slot); - break; - case 3012: - energyPotion(itemId, 3014, slot); - break; - case 3014: - energyPotion(itemId, 229, slot); - break; - /** Super Energy Potions **/ - case 3016: - energyPotion(itemId, 3018, slot); - break; - case 3018: - energyPotion(itemId, 3020, slot); - break; - case 3020: - energyPotion(itemId, 3022, slot); - break; - case 3022: - energyPotion(itemId, 229, slot); - break; - case 2452: - antifirePot(itemId, 2454, slot); - break; - case 2454: - antifirePot(itemId, 2456, slot); - break; - case 2456: - antifirePot(itemId, 2458, slot); - break; - case 2458: - antifirePot(itemId, 229, slot); - break; - } - } - } - - private void energyPotion(int itemId, int replaceItem, int slot) { - c.playerItems[slot] = replaceItem + 1; - c.getItemAssistant().resetItems(3214); - if (itemId >= 3008 && itemId <= 3014) { - c.playerEnergy += 20; - } else { - c.playerEnergy += 40; - } - if (c.playerEnergy > 100) { - c.playerEnergy = 100; - } - c.getPlayerAssistant().sendFrame126((int) Math.ceil(c.playerEnergy) + "%", 149); - } - - public void drinkAntiPoison(int itemId, int replaceItem, int slot, - long delay) { - // c.startAnimation(829); - c.playerItems[slot] = replaceItem + 1; - c.getItemAssistant().resetItems(3214); - curePoison(delay); - } - - public void curePoison(long delay) { - c.poisonDamage = 0; - c.poisonImmune = delay; - c.lastPoisonSip = System.currentTimeMillis(); - } - - public void drinkStatPotion(int itemId, int replaceItem, int slot, - int stat, boolean sup) { - // c.startAnimation(829); - c.playerItems[slot] = replaceItem + 1; - c.getItemAssistant().resetItems(3214); - enchanceStat(stat, sup); - } - - public void drinkPrayerPot(int itemId, int replaceItem, int slot, - boolean rest) { - // c.startAnimation(829); - c.playerItems[slot] = replaceItem + 1; - c.getItemAssistant().resetItems(3214); - c.playerLevel[5] += c.getLevelForXP(c.playerXP[5]) * .33; - if (rest) { - c.playerLevel[5] += 1; - } - if (c.playerLevel[5] > c.getLevelForXP(c.playerXP[5])) { - c.playerLevel[5] = c.getLevelForXP(c.playerXP[5]); - } - c.getPlayerAssistant().refreshSkill(5); - if (rest) { - restoreStats(); - } - } - - public void restoreStats() { - for (int j = 0; j <= 6; j++) { - if (j == 5 || j == 3) { - continue; - } - if (c.playerLevel[j] < c.getLevelForXP(c.playerXP[j])) { - c.playerLevel[j] += c.getLevelForXP(c.playerXP[j]) * .33; - if (c.playerLevel[j] > c.getLevelForXP(c.playerXP[j])) { - c.playerLevel[j] = c.getLevelForXP(c.playerXP[j]); - } - c.getPlayerAssistant().refreshSkill(j); - c.getActionSender().setSkillLevel(j, c.playerLevel[j], - c.playerXP[j]); - } - } - } - - public void doTheBrewzam(int itemId, int replaceItem, int slot) { - // c.startAnimation(829); - c.playerItems[slot] = replaceItem + 1; - c.getItemAssistant().resetItems(3214); - int[] toDecrease = { 1, 3 }; - for (int tD : toDecrease) { - c.playerLevel[tD] -= getBrewStat(tD, .10); - if (c.playerLevel[tD] < 0) { - c.playerLevel[tD] = 1; - } - c.getPlayerAssistant().refreshSkill(tD); - c.getActionSender().setSkillLevel(tD, c.playerLevel[tD], - c.playerXP[tD]); - } - c.playerLevel[0] += getBrewStat(0, .20); - if (c.playerLevel[0] > c.getLevelForXP(c.playerXP[0]) * 1.2 + 1) { - c.playerLevel[0] = (int) (c.getLevelForXP(c.playerXP[0]) * 1.2); - } - c.playerLevel[2] += getBrewStat(2, .12); - if (c.playerLevel[2] > c.getLevelForXP(c.playerXP[2]) * 1.2 + 1) { - c.playerLevel[2] = (int) (c.getLevelForXP(c.playerXP[2]) * 1.2); - } - c.playerLevel[5] += getBrewStat(5, .10); - if (c.playerLevel[5] > c.getLevelForXP(c.playerXP[5]) * 1.2 + 1) { - c.playerLevel[5] = (int) (c.getLevelForXP(c.playerXP[5]) * 1.2); - } - c.getPlayerAssistant().refreshSkill(0); - c.getPlayerAssistant().refreshSkill(2); - c.getPlayerAssistant().refreshSkill(5); - c.hitUpdateRequired = true; - c.hitDiff = 9; - } - - public void doTheBrew(int itemId, int replaceItem, int slot) { - if (c.duelRule[6]) { - c.getActionSender() - .sendMessage("You may not eat in this duel."); - return; - } - // c.startAnimation(829); - c.playerItems[slot] = replaceItem + 1; - c.getItemAssistant().resetItems(3214); - int[] toDecrease = { 0, 2, 4, 6 }; - for (int tD : toDecrease) { - c.playerLevel[tD] -= getBrewStat(tD, .10); - if (c.playerLevel[tD] < 0) { - c.playerLevel[tD] = 1; - } - c.getPlayerAssistant().refreshSkill(tD); - c.getActionSender().setSkillLevel(tD, c.playerLevel[tD], - c.playerXP[tD]); - } - c.playerLevel[1] += getBrewStat(1, .20); - if (c.playerLevel[1] > c.getLevelForXP(c.playerXP[1]) * 1.2 + 1) { - c.playerLevel[1] = (int) (c.getLevelForXP(c.playerXP[1]) * 1.2); - } - c.getPlayerAssistant().refreshSkill(1); - - c.playerLevel[3] += getBrewStat(3, .15); - if (c.playerLevel[3] > c.getLevelForXP(c.playerXP[3]) * 1.17 + 1) { - c.playerLevel[3] = (int) (c.getLevelForXP(c.playerXP[3]) * 1.17); - } - c.getPlayerAssistant().refreshSkill(3); - } - - public void enchanceStat(int skillID, boolean sup) { - c.playerLevel[skillID] += getBoostedStat(skillID, sup); - c.getPlayerAssistant().refreshSkill(skillID); - } - - public void antifirePot(int itemId, int replaceItem, int slot) { - c.startAnimation(829); - c.playerItems[slot] = replaceItem + 1; - c.antiFirePot = true; - c.antiFirePotion(); - c.getActionSender().sendMessage( - "Your immunity against dragon fire has been increased."); - c.getItemAssistant().resetItems(3214); - - } - - public int getBrewStat(int skill, double amount) { - return (int) (c.getLevelForXP(c.playerXP[skill]) * amount); - } - - public int getBoostedStat(int skill, boolean sup) { - int increaseBy; - if (sup) { - increaseBy = (int) (c.getLevelForXP(c.playerXP[skill]) * .20); - } else { - increaseBy = (int) (c.getLevelForXP(c.playerXP[skill]) * .13) + 1; - } - if (c.playerLevel[skill] + increaseBy > c - .getLevelForXP(c.playerXP[skill]) + increaseBy + 1) { - return c.getLevelForXP(c.playerXP[skill]) + increaseBy - - c.playerLevel[skill]; - } - return increaseBy; - } - - public boolean isPotion(int itemId) { - String name = ItemAssistant.getItemName(itemId); - return name.contains("(4)") || name.contains("(3)") - || name.contains("(2)") || name.contains("(1)"); - } - - public boolean potionNames(int itemId) { - String name = ItemAssistant.getItemName(itemId); - return name.endsWith("potion(4)") || name.endsWith("potion(3)") - || name.endsWith("potion(2)") || name.endsWith("potion(1)") - || name.contains("saradomin brew") - || name.contains("zamorak brew"); - } -} +package com.rebotted.game.content.consumables; + +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.items.Item; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Player; + +public class Potions { + + private final Player c; + + public Potions(Player player) { + this.c = player; + } + + public void handlePotion(int itemId, int slot) { + if (c.duelRule[5]) { + c.getPacketSender().sendMessage( + "You may not drink potions in this duel."); + return; + } + if (c.isDead || c.playerLevel[3] <= 0) { + return; + } + if (System.currentTimeMillis() - c.potDelay >= 1200) { + c.potDelay = System.currentTimeMillis(); + c.foodDelay = System.currentTimeMillis(); + c.getCombatAssistant().resetPlayerAttack(); + c.attackTimer++; + c.getPacketSender().sendMessage( + "You drink some of your " + Item.getItemName(itemId) + "."); + c.startAnimation(829); + final String item = Item.getItemName(itemId); + String m = ""; + if (item.endsWith("(4)")) { + m = "You have 3 doses of potion left."; + } else if (item.endsWith("(3)")) { + m = "You have 2 doses of potion left."; + } else if (item.endsWith("(2)")) { + m = "You have 1 dose of potion left."; + } else if (item.endsWith("(1)")) { + m = "You have finished your potion."; + } + final String m1 = m; + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + c.getPacketSender().sendMessage(m1); + container.stop(); + } + @Override + public void stop() { + + } + }, 1); + switch (itemId) { + case 3040: + drinkStatPotion(itemId, 3042, slot, 6, false); + break; + case 3042: + drinkStatPotion(itemId, 3044, slot, 6, false); + break; + case 3044: + drinkStatPotion(itemId, 3046, slot, 6, false); + break; + case 3046: + drinkStatPotion(itemId, 229, slot, 6, false); + break; + case 2450: + doTheBrewzam(itemId, 189, slot); + break; + case 189: + doTheBrewzam(itemId, 191, slot); + break; + case 191: + doTheBrewzam(itemId, 193, slot); + break; + case 193: + doTheBrewzam(itemId, 229, slot); + break; + case 6685: // brews + doTheBrew(itemId, 6687, slot); + break; + case 6687: + doTheBrew(itemId, 6689, slot); + break; + case 6689: + doTheBrew(itemId, 6691, slot); + break; + case 6691: + doTheBrew(itemId, 229, slot); + break; + case 2436: + drinkStatPotion(itemId, 145, slot, 0, true); // sup attack + break; + case 145: + drinkStatPotion(itemId, 147, slot, 0, true); + break; + case 147: + drinkStatPotion(itemId, 149, slot, 0, true); + break; + case 149: + drinkStatPotion(itemId, 229, slot, 0, true); + break; + case 2440: + drinkStatPotion(itemId, 157, slot, 2, true); // sup str + break; + case 157: + drinkStatPotion(itemId, 159, slot, 2, true); + break; + case 159: + drinkStatPotion(itemId, 161, slot, 2, true); + break; + case 161: + drinkStatPotion(itemId, 229, slot, 2, true); + break; + case 2444: + drinkStatPotion(itemId, 169, slot, 4, false); // range pot + break; + case 169: + drinkStatPotion(itemId, 171, slot, 4, false); + break; + case 171: + drinkStatPotion(itemId, 173, slot, 4, false); + break; + case 173: + drinkStatPotion(itemId, 229, slot, 4, false); + break; + case 2432: + drinkStatPotion(itemId, 133, slot, 1, false); // def pot + break; + case 133: + drinkStatPotion(itemId, 135, slot, 1, false); + break; + case 135: + drinkStatPotion(itemId, 137, slot, 1, false); + break; + case 137: + drinkStatPotion(itemId, 229, slot, 1, false); + break; + case 113: + drinkStatPotion(itemId, 115, slot, 2, false); // str pot + break; + case 115: + drinkStatPotion(itemId, 117, slot, 2, false); + break; + case 117: + drinkStatPotion(itemId, 119, slot, 2, false); + break; + case 119: + drinkStatPotion(itemId, 229, slot, 2, false); + break; + case 2428: + drinkStatPotion(itemId, 121, slot, 0, false); // attack + // pot + break; + case 121: + drinkStatPotion(itemId, 123, slot, 0, false); + break; + case 123: + drinkStatPotion(itemId, 125, slot, 0, false); + break; + case 125: + drinkStatPotion(itemId, 229, slot, 0, false); + break; + case 2442: + drinkStatPotion(itemId, 163, slot, 1, true); // super def + // pot + break; + case 163: + drinkStatPotion(itemId, 165, slot, 1, true); + break; + case 165: + drinkStatPotion(itemId, 167, slot, 1, true); + break; + case 167: + drinkStatPotion(itemId, 229, slot, 1, true); + break; + case 3024: + drinkPrayerPot(itemId, 3026, slot, true); // sup restore + break; + case 3026: + drinkPrayerPot(itemId, 3028, slot, true); + break; + case 3028: + drinkPrayerPot(itemId, 3030, slot, true); + break; + case 3030: + drinkPrayerPot(itemId, 229, slot, true); + break; + case 10925: + drinkPrayerPot(itemId, 10927, slot, true); // sanfew + // serums + curePoison(300000); + break; + case 10927: + drinkPrayerPot(itemId, 10929, slot, true); + curePoison(300000); + break; + case 10929: + drinkPrayerPot(itemId, 10931, slot, true); + curePoison(300000); + break; + case 10931: + drinkPrayerPot(itemId, 229, slot, true); + curePoison(300000); + break; + case 2434: + drinkPrayerPot(itemId, 139, slot, false); // pray pot + break; + case 139: + drinkPrayerPot(itemId, 141, slot, false); + break; + case 141: + drinkPrayerPot(itemId, 143, slot, false); + break; + case 143: + drinkPrayerPot(itemId, 229, slot, false); + break; + case 2446: + drinkAntiPoison(itemId, 175, slot, 30000); // anti poisons + break; + case 175: + drinkAntiPoison(itemId, 177, slot, 30000); + break; + case 177: + drinkAntiPoison(itemId, 179, slot, 30000); + break; + case 179: + drinkAntiPoison(itemId, 229, slot, 30000); + break; + case 2448: + drinkAntiPoison(itemId, 181, slot, 300000); // anti + // poisons + break; + case 181: + drinkAntiPoison(itemId, 183, slot, 300000); + break; + case 183: + drinkAntiPoison(itemId, 185, slot, 300000); + break; + case 185: + drinkAntiPoison(itemId, 229, slot, 300000); + break; + /** Energy Potions **/ + case 3008: + energyPotion(itemId, 3010, slot); + break; + case 3010: + energyPotion(itemId, 3012, slot); + break; + case 3012: + energyPotion(itemId, 3014, slot); + break; + case 3014: + energyPotion(itemId, 229, slot); + break; + /** Super Energy Potions **/ + case 3016: + energyPotion(itemId, 3018, slot); + break; + case 3018: + energyPotion(itemId, 3020, slot); + break; + case 3020: + energyPotion(itemId, 3022, slot); + break; + case 3022: + energyPotion(itemId, 229, slot); + break; + case 2452: + antifirePot(itemId, 2454, slot); + break; + case 2454: + antifirePot(itemId, 2456, slot); + break; + case 2456: + antifirePot(itemId, 2458, slot); + break; + case 2458: + antifirePot(itemId, 229, slot); + break; + } + } + } + + private void energyPotion(int itemId, int replaceItem, int slot) { + c.playerItems[slot] = replaceItem + 1; + c.getItemAssistant().resetItems(3214); + if (itemId >= 3008 && itemId <= 3014) { + c.playerEnergy += 20; + } else { + c.playerEnergy += 40; + } + if (c.playerEnergy > 100) { + c.playerEnergy = 100; + } + c.getPacketSender().sendFrame126((int) Math.ceil(c.playerEnergy) + "%", 149); + } + + public void drinkAntiPoison(int itemId, int replaceItem, int slot, + long delay) { + // c.startAnimation(829); + c.playerItems[slot] = replaceItem + 1; + c.getItemAssistant().resetItems(3214); + curePoison(delay); + } + + public void curePoison(long delay) { + c.poisonDamage = 0; + c.poisonImmune = delay; + c.lastPoisonSip = System.currentTimeMillis(); + } + + public void drinkStatPotion(int itemId, int replaceItem, int slot, + int stat, boolean sup) { + // c.startAnimation(829); + c.playerItems[slot] = replaceItem + 1; + c.getItemAssistant().resetItems(3214); + enchanceStat(stat, sup); + } + + public void drinkPrayerPot(int itemId, int replaceItem, int slot, + boolean rest) { + // c.startAnimation(829); + c.playerItems[slot] = replaceItem + 1; + c.getItemAssistant().resetItems(3214); + c.playerLevel[5] += c.getLevelForXP(c.playerXP[5]) * .33; + if (rest) { + c.playerLevel[5] += 1; + } + if (c.playerLevel[5] > c.getLevelForXP(c.playerXP[5])) { + c.playerLevel[5] = c.getLevelForXP(c.playerXP[5]); + } + c.getPlayerAssistant().refreshSkill(5); + if (rest) { + restoreStats(); + } + } + + public void restoreStats() { + for (int j = 0; j <= 6; j++) { + if (j == 5 || j == 3) { + continue; + } + if (c.playerLevel[j] < c.getLevelForXP(c.playerXP[j])) { + c.playerLevel[j] += c.getLevelForXP(c.playerXP[j]) * .33; + if (c.playerLevel[j] > c.getLevelForXP(c.playerXP[j])) { + c.playerLevel[j] = c.getLevelForXP(c.playerXP[j]); + } + c.getPlayerAssistant().refreshSkill(j); + c.getPacketSender().setSkillLevel(j, c.playerLevel[j], + c.playerXP[j]); + } + } + } + + public void doTheBrewzam(int itemId, int replaceItem, int slot) { + // c.startAnimation(829); + c.playerItems[slot] = replaceItem + 1; + c.getItemAssistant().resetItems(3214); + int[] toDecrease = { 1, 3 }; + for (int tD : toDecrease) { + c.playerLevel[tD] -= getBrewStat(tD, .10); + if (c.playerLevel[tD] < 0) { + c.playerLevel[tD] = 1; + } + c.getPlayerAssistant().refreshSkill(tD); + c.getPacketSender().setSkillLevel(tD, c.playerLevel[tD], + c.playerXP[tD]); + } + c.playerLevel[0] += getBrewStat(0, .20); + if (c.playerLevel[0] > c.getLevelForXP(c.playerXP[0]) * 1.2 + 1) { + c.playerLevel[0] = (int) (c.getLevelForXP(c.playerXP[0]) * 1.2); + } + c.playerLevel[2] += getBrewStat(2, .12); + if (c.playerLevel[2] > c.getLevelForXP(c.playerXP[2]) * 1.2 + 1) { + c.playerLevel[2] = (int) (c.getLevelForXP(c.playerXP[2]) * 1.2); + } + c.playerLevel[5] += getBrewStat(5, .10); + if (c.playerLevel[5] > c.getLevelForXP(c.playerXP[5]) * 1.2 + 1) { + c.playerLevel[5] = (int) (c.getLevelForXP(c.playerXP[5]) * 1.2); + } + c.getPlayerAssistant().refreshSkill(0); + c.getPlayerAssistant().refreshSkill(2); + c.getPlayerAssistant().refreshSkill(5); + c.hitUpdateRequired = true; + c.hitDiff = 9; + } + + public void doTheBrew(int itemId, int replaceItem, int slot) { + if (c.duelRule[6]) { + c.getPacketSender() + .sendMessage("You may not eat in this duel."); + return; + } + // c.startAnimation(829); + c.playerItems[slot] = replaceItem + 1; + c.getItemAssistant().resetItems(3214); + int[] toDecrease = { 0, 2, 4, 6 }; + for (int tD : toDecrease) { + c.playerLevel[tD] -= getBrewStat(tD, .10); + if (c.playerLevel[tD] < 0) { + c.playerLevel[tD] = 1; + } + c.getPlayerAssistant().refreshSkill(tD); + c.getPacketSender().setSkillLevel(tD, c.playerLevel[tD], + c.playerXP[tD]); + } + c.playerLevel[1] += getBrewStat(1, .20); + if (c.playerLevel[1] > c.getLevelForXP(c.playerXP[1]) * 1.2 + 1) { + c.playerLevel[1] = (int) (c.getLevelForXP(c.playerXP[1]) * 1.2); + } + c.getPlayerAssistant().refreshSkill(1); + + c.playerLevel[3] += getBrewStat(3, .15); + if (c.playerLevel[3] > c.getLevelForXP(c.playerXP[3]) * 1.17 + 1) { + c.playerLevel[3] = (int) (c.getLevelForXP(c.playerXP[3]) * 1.17); + } + c.getPlayerAssistant().refreshSkill(3); + } + + public void enchanceStat(int skillID, boolean sup) { + c.playerLevel[skillID] += getBoostedStat(skillID, sup); + c.getPlayerAssistant().refreshSkill(skillID); + } + + public void antifirePot(int itemId, int replaceItem, int slot) { + c.startAnimation(829); + c.playerItems[slot] = replaceItem + 1; + c.antiFirePot = true; + c.antiFirePotion(); + c.getPacketSender().sendMessage( + "Your immunity against dragon fire has been increased."); + c.getItemAssistant().resetItems(3214); + + } + + public int getBrewStat(int skill, double amount) { + return (int) (c.getLevelForXP(c.playerXP[skill]) * amount); + } + + public int getBoostedStat(int skill, boolean sup) { + int increaseBy; + if (sup) { + increaseBy = (int) (c.getLevelForXP(c.playerXP[skill]) * .20); + } else { + increaseBy = (int) (c.getLevelForXP(c.playerXP[skill]) * .13) + 1; + } + if (c.playerLevel[skill] + increaseBy > c + .getLevelForXP(c.playerXP[skill]) + increaseBy + 1) { + return c.getLevelForXP(c.playerXP[skill]) + increaseBy + - c.playerLevel[skill]; + } + return increaseBy; + } + + public boolean isPotion(int itemId) { + String name = ItemAssistant.getItemName(itemId); + return name.contains("(4)") || name.contains("(3)") + || name.contains("(2)") || name.contains("(1)"); + } + + public boolean potionNames(int itemId) { + String name = ItemAssistant.getItemName(itemId); + return name.endsWith("potion(4)") || name.endsWith("potion(3)") + || name.endsWith("potion(2)") || name.endsWith("potion(1)") + || name.contains("saradomin brew") + || name.contains("zamorak brew"); + } +} diff --git a/2006Redone Server/src/com/rebotted/game/content/guilds/Guilds.java b/2006Redone Server/src/com/rebotted/game/content/guilds/Guilds.java new file mode 100644 index 00000000..6fe6eaf0 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/guilds/Guilds.java @@ -0,0 +1,186 @@ +package com.rebotted.game.content.guilds; + +import com.rebotted.GameConstants; +import com.rebotted.game.content.quests.QuestAssistant; +import com.rebotted.game.globalworldobjects.PassDoor; +import com.rebotted.game.objects.impl.Climbing; +import com.rebotted.game.objects.impl.UseOther; +import com.rebotted.game.players.Player; + +/** + * Guilds Class + * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) + */ + +public class Guilds { + + private static boolean hasCompletedLegends = false; + + public static void attemptGuild(Player player, int objectId) { + if (!GameConstants.GUILDS) { + player.getPacketSender().sendMessage("Guilds are currently disabled."); + return; + } + if (checkRequirements(player, objectId)) { + player.getPacketSender().sendMessage("You pass through the guild."); + movePlayer(player, objectId); + } + } + + public static void movePlayer(Player player, int objectId) { + switch (objectId) { + case 2514: // Range Guild + if (player.absX == 2659 && player.absY == 3438) { + PassDoor.passThroughDoor(player, objectId, 1, 2, 9, -1, 1, 0); + } else if (player.absX == 2658 && player.absY == 3437) { + PassDoor.passThroughDoor(player, objectId, 1, 2, 9, -1, 1, 0); + } else if (player.absX == 2658 && player.absY == 3439) { + PassDoor.passThroughDoor(player, objectId, 1, 2, 9, 1, -1, 0); + } else if (player.absX == 2657 && player.absY == 3438) { + PassDoor.passThroughDoor(player, objectId, 1, 2, 9, 1, -1, 0); + } + break; + case 1805: // Champions Guild + if (player.absY == 3362 && player.absX != 3192 && player.absX != 3190) { + player.getPlayerAssistant().movePlayer(player.absX, player.absY + 1, 0); + } else if (player.absY == 3363 && player.absX != 3192 && player.absX != 3190) { + player.getPlayerAssistant().movePlayer(player.absX, player.absY - 1, 0); + } + break; + case 2641: // Monastery + if (player.heightLevel == 0) { + Climbing.climbUp(player); + } else if (player.heightLevel == 1) { + Climbing.climbDown(player); + } + break; + case 2712: // Cooks Guild + if (player.absY == 3443) { + player.getPlayerAssistant().movePlayer(player.absX, player.absY + 1, 0); + } else if (player.absY == 3444) { + player.getPlayerAssistant().movePlayer(player.absX, player.absY - 1, 0); + } + break; + case 2647: // Crafting Guild + if (player.absY == 3289) { + player.getPlayerAssistant().movePlayer(player.absX, player.absY - 1, 0); + } else if (player.absY == 3288) { + player.getPlayerAssistant().movePlayer(player.absX, player.absY + 1, 0); + } + break; + case 2113: // Mining Guild + UseOther.useDown(player, objectId); + break; + case 1755: // Mining Guild + UseOther.useUp(player, objectId); + break; + case 2025: // Fishing Guild + if (player.absY == 3393) { + player.getPlayerAssistant().movePlayer(player.absX, player.absY + 1, 0); + } else if (player.absY == 3394) { + player.getPlayerAssistant().movePlayer(player.absX, player.absY - 1, 0); + } + break; + case 1600: // Wizards Guild + case 1601: + if (player.absX == 2597) { + player.getPlayerAssistant().movePlayer(player.absX - 1, player.absY, 0); + } else if (player.absX == 2596) { + player.getPlayerAssistant().movePlayer(player.absX + 1, player.absY, 0); + } + break; + case 2624: // Heroes Guild + case 2625: + if (player.absX == 2902) { + player.getPlayerAssistant().movePlayer(player.absX - 1, player.absY, 0); + } else if (player.absX == 2901) { + player.getPlayerAssistant().movePlayer(player.absX + 1, player.absY, 0); + } + break; + case 2392: // Legends Guild + case 2391: + if (player.absY == 3349) { + player.getPlayerAssistant().movePlayer(player.absX, player.absY + 1, 0); + } else if (player.absY == 3350) { + player.getPlayerAssistant().movePlayer(player.absX, player.absY - 1, 0); + } + break; + default: + player.getPacketSender().sendMessage( + "You can't access this guild from here."); + break; + } + } + + public static boolean checkRequirements(Player player, int objectId) { + switch (objectId) { + case 1805: // Champions Guild + int requiredQP = Math.min(32, QuestAssistant.MAXIMUM_QUESTPOINTS); + if (player.questPoints < requiredQP) { + player.getDialogueHandler().sendStatement("You need " + requiredQP + " quest points to enter this guild!"); + player.nextChat = 0; + return false; + } + break; + case 2392: + case 2391: + if (hasCompletedLegends == false && player.playerRights < 3) { + player.getDialogueHandler().sendStatement("You need to complete Legends Quest to enter this guild!"); + player.nextChat = 0; + return false; + } + break; + case 2641: // Prayer Guild + if (player.getPlayerAssistant().getLevelForXP(player.playerXP[5]) < 31) { + player.getDialogueHandler().sendStatement("You need 31 prayer to enter this guild!"); + player.nextChat = 0; + return false; + } + break; + case 2712: // Cooking Guild + if (player.playerLevel[player.playerCooking] < 32 || player.playerEquipment[player.playerHat] != 1949) { + player.getDialogueHandler().sendStatement("You need 32 cooking and a chefs hat to enter this guild!"); + player.nextChat = 0; + return false; + } + break; + case 2647: // Crafting Guild + if (player.playerLevel[player.playerCrafting] < 40 || player.playerEquipment[player.playerChest] != 1757) { + player.getDialogueHandler().sendStatement("You need 40 Crafting and a Brown Apron to enter this guild!"); + player.nextChat = 0; + return false; + } + break; + case 2113: // Mining Guild + if (player.playerLevel[player.playerMining] < 60) { + player.getDialogueHandler().sendStatement("You need 60 Mining to enter this guild!"); + player.nextChat = 0; + return false; + } + break; + case 2025: // Fishing Guild + if (player.playerLevel[player.playerFishing] < 68) { + player.getDialogueHandler().sendStatement("You need 68 Fishing to enter this guild!"); + player.nextChat = 0; + return false; + } + break; + case 1600: + case 1601: // Wizards Guild + if (player.playerLevel[player.playerMagic] < 66) { + player.getDialogueHandler().sendStatement("You need 66 Magic to enter this guild!"); + player.nextChat = 0; + return false; + } + break; + case 2514: + if (player.playerLevel[player.playerRanged] < 40) { // Ranging Guild + player.getDialogueHandler().sendStatement("You need 40 Range to enter this guild!"); + player.nextChat = 0; + return false; + } + break; + } + return true; + } +} diff --git a/2006Redone Server/src/com/rebotted/game/content/guilds/impl/RangersGuild.java b/2006Redone Server/src/com/rebotted/game/content/guilds/impl/RangersGuild.java new file mode 100644 index 00000000..36d9d93e --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/guilds/impl/RangersGuild.java @@ -0,0 +1,361 @@ +package com.rebotted.game.content.guilds.impl; + +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.content.combat.range.RangeData; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +/** + * Rangers Guild + * @author Aintaro + * @edit Haile N. + */ +public class RangersGuild { + + public final int + ARROWS_REQ = 882, + HIT_CHANCE = 55, + RANGED_LV = 4; + + public final String + MISSED = "Missed!", + BLACK = "Hit Black!", + YELLOW = "Hit Yellow!", + BLUE = "Hit Blue!", + RED = "Hit Red!", + BULLSEYE = "Bulls-Eye"; + + public int + arrowsLeft = 0, + playerScore = 0, + hitChance; + + public boolean isFiringTarget; + + private Player c; + + public RangersGuild(Player player) { + this.c = player; + } + + public void fireAtTarget() { + if(isFiringTarget) { + return; + } + hitChance = Misc.random(HIT_CHANCE)+Misc.random(c.playerLevel[RANGED_LV]); + if (arrowsLeft != 0) { + for (int bowId : RangeData.BOWS) { + if(c.playerEquipment[c.playerWeapon] == bowId) { + c.usingBow = true; + if (c.playerEquipment[c.playerArrows] == ARROWS_REQ && c.usingBow) { + if (isInTargetArea()) { + if (hitChance >= 10) { + c.getPacketSender().closeAllWindows(); + c.startAnimation(426); + isFiringTarget = true; + //c.getPlayerAction().setAction(true); + //c.getPlayerAction().canWalk(false); + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (hitChance >= 10 && hitChance <= 20) { + playerScore += 10; + sendConfiguration(80 + Misc.random(10), -60 + Misc.random(90)); + c.getPacketSender().sendFrame126(BLACK, 567); + c.getPlayerAssistant().addSkillXP(5, 4); + c.getItemAssistant().deleteArrow(); + //c.getPlayerAction().setAction(false); + //c.getPlayerAction().canWalk(true); + } else if (hitChance >= 20 && hitChance < 30) { + playerScore += 20; + sendConfiguration(-70 + Misc.random(10),10 - Misc.random(40)); + c.getPacketSender().sendFrame126(BLUE,567); + c.getPlayerAssistant().addSkillXP(10, 4); + c.getItemAssistant().deleteArrow(); + //c.getPlayerAction().setAction(false); + //c.getPlayerAction().canWalk(true); + } else if (hitChance >= 30 && hitChance < 50) { + playerScore += 30; + sendConfiguration(-30 - Misc.random(15),10 - Misc.random(25)); + c.getPacketSender().sendFrame126(RED, 567); + c.getPlayerAssistant().addSkillXP(15, 4); + c.getItemAssistant().deleteArrow(); + //c.getPlayerAction().setAction(false); + //c.getPlayerAction().canWalk(true); + } else if (hitChance >= 50 && hitChance < 75) { + playerScore += 50; + sendConfiguration(5 - Misc.random(20),0 - Misc.random(20)); + c.getPacketSender().sendFrame126(YELLOW, 567); + c.getPlayerAssistant().addSkillXP(15, 4); + c.getItemAssistant().deleteArrow(); + //c.getPlayerAction().setAction(false); + //c.getPlayerAction().canWalk(true); + } else if (hitChance >= 75) { + playerScore += 100; + sendConfiguration(0, 0); + c.getPacketSender().sendFrame126(BULLSEYE, 567); + c.getPlayerAssistant().addSkillXP(50, 4); + c.getItemAssistant().deleteArrow(); + //c.getPlayerAction().setAction(false); + //c.getPlayerAction().canWalk(true); + } else { + c.getPacketSender().sendFrame126(MISSED, 567); + sendConfiguration(1200, 1200); + c.getItemAssistant().deleteArrow(); + //c.getPlayerAction().setAction(false); + //c.getPlayerAction().canWalk(true); + } + container.stop(); + } + @Override + public void stop() { + isFiringTarget = false; + } + }, 3); + } + } else { + c.getDialogueHandler().sendStatement("You can't shoot from here."); + } + } else { + c.getDialogueHandler().sendStatement("You need some bronze arrows and a bow to shoot the target."); + c.nextChat = 0; + }}} + } else { + c.getDialogueHandler().sendStatement("You should talk to the competition judge."); + c.nextChat = 0; + } + } + + private void sendConfiguration(int xPos, int yPos) { + switch (arrowsLeft) { + case 1: + arrowsLeft--; + c.getPacketSender().sendFrame70(1200, 1200, 538); + c.getPacketSender().sendFrame70(1200, 1200, 557); + c.getPacketSender().sendFrame70(1200, 1200, 559); + c.getPacketSender().sendFrame70(1200, 1200, 560); + c.getPacketSender().sendFrame70(1200, 1200, 561); + c.getPacketSender().sendFrame70(1200, 1200, 562); + c.getPacketSender().sendFrame70(1200, 1200, 563); + c.getPacketSender().sendFrame70(1200, 1200, 564); + c.getPacketSender().sendFrame70(1200, 1200, 565); + c.getPacketSender().sendFrame70(1200, 1200, 566); + c.getPacketSender().sendFrame126("" + playerScore, 551); + c.getPacketSender().sendFrame70(xPos, yPos, 536); + c.getPacketSender().showInterface(446); + break; + + case 2: + arrowsLeft--; + c.getPacketSender().sendFrame70(0, 0, 538); + c.getPacketSender().sendFrame70(1200, 1200, 557); + c.getPacketSender().sendFrame70(1200, 1200, 559); + c.getPacketSender().sendFrame70(1200, 1200, 560); + c.getPacketSender().sendFrame70(1200, 1200, 561); + c.getPacketSender().sendFrame70(1200, 1200, 562); + c.getPacketSender().sendFrame70(1200, 1200, 563); + c.getPacketSender().sendFrame70(1200, 1200, 564); + c.getPacketSender().sendFrame70(1200, 1200, 565); + c.getPacketSender().sendFrame70(1200, 1200, 566); + c.getPacketSender().sendFrame126("" + playerScore, 551); + c.getPacketSender().sendFrame70(xPos, yPos, 536); + c.getPacketSender().showInterface(446); + break; + + case 3: + arrowsLeft--; + c.getPacketSender().sendFrame70(0, 0, 538); + c.getPacketSender().sendFrame70(0, 0, 557); + c.getPacketSender().sendFrame70(1200, 1200, 559); + c.getPacketSender().sendFrame70(1200, 1200, 560); + c.getPacketSender().sendFrame70(1200, 1200, 561); + c.getPacketSender().sendFrame70(1200, 1200, 562); + c.getPacketSender().sendFrame70(1200, 1200, 563); + c.getPacketSender().sendFrame70(1200, 1200, 564); + c.getPacketSender().sendFrame70(1200, 1200, 565); + c.getPacketSender().sendFrame70(1200, 1200, 566); + c.getPacketSender().sendFrame126("" + playerScore, 551); + c.getPacketSender().sendFrame70(xPos, yPos, 536); + c.getPacketSender().showInterface(446); + break; + + case 4: + arrowsLeft--; + c.getPacketSender().sendFrame70(0, 0, 538); + c.getPacketSender().sendFrame70(0, 0, 557); + c.getPacketSender().sendFrame70(0, 0, 559); + c.getPacketSender().sendFrame70(1200, 1200, 560); + c.getPacketSender().sendFrame70(1200, 1200, 561); + c.getPacketSender().sendFrame70(1200, 1200, 562); + c.getPacketSender().sendFrame70(1200, 1200, 563); + c.getPacketSender().sendFrame70(1200, 1200, 564); + c.getPacketSender().sendFrame70(1200, 1200, 565); + c.getPacketSender().sendFrame70(1200, 1200, 566); + c.getPacketSender().sendFrame126("" + playerScore, 551); + c.getPacketSender().sendFrame70(xPos, yPos, 536); + c.getPacketSender().showInterface(446); + break; + + case 5: + arrowsLeft--; + c.getPacketSender().sendFrame70(0, 0, 538); + c.getPacketSender().sendFrame70(0, 0, 557); + c.getPacketSender().sendFrame70(0, 0, 559); + c.getPacketSender().sendFrame70(0, 0, 560); + c.getPacketSender().sendFrame70(1200, 1200, 561); + c.getPacketSender().sendFrame70(1200, 1200, 562); + c.getPacketSender().sendFrame70(1200, 1200, 563); + c.getPacketSender().sendFrame70(1200, 1200, 564); + c.getPacketSender().sendFrame70(1200, 1200, 565); + c.getPacketSender().sendFrame70(1200, 1200, 566); + c.getPacketSender().sendFrame126("" + playerScore, 551); + c.getPacketSender().sendFrame70(xPos, yPos, 536); + c.getPacketSender().showInterface(446); + break; + + case 6: + arrowsLeft--; + c.getPacketSender().sendFrame70(0, 0, 538); + c.getPacketSender().sendFrame70(0, 0, 557); + c.getPacketSender().sendFrame70(0, 0, 559); + c.getPacketSender().sendFrame70(0, 0, 560); + c.getPacketSender().sendFrame70(0, 0, 561); + c.getPacketSender().sendFrame70(1200, 1200, 562); + c.getPacketSender().sendFrame70(1200, 1200, 563); + c.getPacketSender().sendFrame70(1200, 1200, 564); + c.getPacketSender().sendFrame70(1200, 1200, 565); + c.getPacketSender().sendFrame70(1200, 1200, 566); + c.getPacketSender().sendFrame126("" + playerScore, 551); + c.getPacketSender().sendFrame70(xPos, yPos, 536); + c.getPacketSender().showInterface(446); + break; + + case 7: + arrowsLeft--; + c.getPacketSender().sendFrame70(0, 0, 538); + c.getPacketSender().sendFrame70(0, 0, 557); + c.getPacketSender().sendFrame70(0, 0, 559); + c.getPacketSender().sendFrame70(0, 0, 560); + c.getPacketSender().sendFrame70(0, 0, 561); + c.getPacketSender().sendFrame70(0, 0, 562); + c.getPacketSender().sendFrame70(1200, 1200, 563); + c.getPacketSender().sendFrame70(1200, 1200, 564); + c.getPacketSender().sendFrame70(1200, 1200, 565); + c.getPacketSender().sendFrame70(1200, 1200, 566); + c.getPacketSender().sendFrame126("" + playerScore, 551); + c.getPacketSender().sendFrame70(xPos, yPos, 536); + c.getPacketSender().showInterface(446); + break; + + case 8: + arrowsLeft--; + c.getPacketSender().sendFrame70(0, 0, 538); + c.getPacketSender().sendFrame70(0, 0, 557); + c.getPacketSender().sendFrame70(0, 0, 559); + c.getPacketSender().sendFrame70(0, 0, 560); + c.getPacketSender().sendFrame70(0, 0, 561); + c.getPacketSender().sendFrame70(0, 0, 562); + c.getPacketSender().sendFrame70(0, 0, 563); + c.getPacketSender().sendFrame70(1200, 1200, 564); + c.getPacketSender().sendFrame70(1200, 1200, 565); + c.getPacketSender().sendFrame70(1200, 1200, 566); + c.getPacketSender().sendFrame126("" + playerScore, 551); + c.getPacketSender().sendFrame70(xPos, yPos, 536); + c.getPacketSender().showInterface(446); + break; + + case 9: + arrowsLeft--; + c.getPacketSender().sendFrame70(0, 0, 538); + c.getPacketSender().sendFrame70(0, 0, 557); + c.getPacketSender().sendFrame70(0, 0, 559); + c.getPacketSender().sendFrame70(0, 0, 560); + c.getPacketSender().sendFrame70(0, 0, 561); + c.getPacketSender().sendFrame70(0, 0, 562); + c.getPacketSender().sendFrame70(0, 0, 563); + c.getPacketSender().sendFrame70(0, 0, 564); + c.getPacketSender().sendFrame70(1200, 1200, 565); + c.getPacketSender().sendFrame70(1200, 1200, 566); + c.getPacketSender().sendFrame126("" + playerScore, 551); + c.getPacketSender().sendFrame70(xPos, yPos, 536); + c.getPacketSender().showInterface(446); + break; + + case 10: + arrowsLeft--; + c.getPacketSender().sendFrame70(0, 0, 538); + c.getPacketSender().sendFrame70(0, 0, 557); + c.getPacketSender().sendFrame70(0, 0, 559); + c.getPacketSender().sendFrame70(0, 0, 560); + c.getPacketSender().sendFrame70(0, 0, 561); + c.getPacketSender().sendFrame70(0, 0, 562); + c.getPacketSender().sendFrame70(0, 0, 563); + c.getPacketSender().sendFrame70(0, 0, 564); + c.getPacketSender().sendFrame70(0, 0, 565); + c.getPacketSender().sendFrame126("" + playerScore, 551); + c.getPacketSender().sendFrame70(xPos, yPos, 536); + c.getPacketSender().showInterface(446); + break; + } + } + + public boolean isInTargetArea() { + if (c.absX >= 2669 && c.absX <= 2674 && c.absY >= 3415 && c.absY <= 3421) { + return true; + } + return false; + } + + public void exchangePoints() { + if (arrowsLeft == 0 && playerScore > 0) { + if(c.getItemAssistant().freeSlots() > 0) { + int ticketsAmt = playerScore / 10; + c.getItemAssistant().addItem(1464, ticketsAmt); + c.getDialogueHandler().sendNpcChat2("Well done. Your score is : " + playerScore + ".", "You have earned " + ticketsAmt + " Archery tickets.", c.talkingNpc, "Tutor"); + playerScore = 0; + c.nextChat = 0; + } else { + c.getDialogueHandler().sendStatement("You need 1 free slot to exchange tickets."); + c.nextChat = 0; + } + } else { + c.getDialogueHandler().sendStatement("You still have " + arrowsLeft + " shots left."); + c.nextChat = 0; + } + } + + public void howAmIDoing() { + if (playerScore == 0) { + c.getDialogueHandler().sendNpcChat2("You haven't started yet. Stand behind the hay bales and", "shoot those arrows at the targets.", c.talkingNpc, "Tutor"); + c.nextChat = 0; + } else { + c.getDialogueHandler().sendNpcChat2("Your score is : " + playerScore, "Your doing very well!", c.talkingNpc, "Tutor"); + c.nextChat = 0; + } + } + + public void buyArrows() { + if (arrowsLeft == 0) { + if (c.getItemAssistant().playerHasItem(995, 200)) { + if (c.getItemAssistant().freeSlots() > 1) { + arrowsLeft = 10; + c.getItemAssistant().deleteItem(995, 200); + c.getItemAssistant().addItem(ARROWS_REQ, 10); + c.getItemAssistant().addItem(841, 1); + c.getDialogueHandler().sendStatement("The archer hands you 10 bronze arrows and a bow."); + c.nextChat = 0; + } else { + c.getDialogueHandler().sendStatement("You need 2 free slots to receive arrows and a bow."); + } + } else { + c.getDialogueHandler().sendStatement("You need at least 200 gp to buy 10 arrows and a bow."); + c.nextChat = 0; + } + } else { + c.getDialogueHandler().sendStatement("You still have " + arrowsLeft + " shots left."); + c.nextChat = 0; + } + } +} diff --git a/2006Redone Server/src/redone/game/content/minigames/Barrows.java b/2006Redone Server/src/com/rebotted/game/content/minigames/Barrows.java similarity index 82% rename from 2006Redone Server/src/redone/game/content/minigames/Barrows.java rename to 2006Redone Server/src/com/rebotted/game/content/minigames/Barrows.java index a385e783..08a1e8a1 100644 --- a/2006Redone Server/src/redone/game/content/minigames/Barrows.java +++ b/2006Redone Server/src/com/rebotted/game/content/minigames/Barrows.java @@ -1,281 +1,281 @@ -package redone.game.content.minigames; - -import redone.game.content.quests.QuestRewards; -import redone.game.npcs.NpcHandler; -import redone.game.players.Client; -import redone.util.Misc; - -public class Barrows { - - public Barrows(Client c) { - this.c = c; - } - - private Client c; - - /** - * Variables used for reward. - */ - public static int Barrows[] = {4708, 4710, 4712, 4714, 4716, 4718, 4720, 4722, 4724, 4726, 4728, 4730, 4732, 4734, 4736, 4738, 4745, 4747, 4749, 4751, 4753, 4755, 4757, 4759}; - public static int Runes[] = {554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565}; - public static int Pots[] = {121, 123, 125, 127, 119, 2428, 2430, 2434, 2432, 2444}; - /** - * Getting random barrow pieces. - * @return - */ - public int randomBarrows() { - return Barrows[(int)(Math.random()*Barrows.length)]; - } - - /** - * Getting random runes. - * @return - */ - public int randomRunes() { - return Runes[(int) (Math.random()*Runes.length)]; - } - - /** - * Getting random pots. - * @return - */ - public int randomPots() { - return Pots[(int) (Math.random()*Pots.length)]; - } - - /** - * All of the barrow data. - */ - public static int[][] barrowData = { - /** ID Coffin X Y Stair X Y */ - {2026, 6771, 3556, 9716, 6703, 3574, 3297}, /**Dharoks*/ - {2030, 6823, 3575, 9706, 6707, 3557, 3297}, /**Veracs*/ - {2025, 6821, 3557, 9700, 6702, 3565, 3288}, /**Ahrims*/ - {2029, 6772, 3568, 9685, 6706, 3554, 3282}, /**Torags*/ - {2027, 6773, 3537, 9703, 6704, 3577, 3282}, /**Guthans*/ - {2028, 6822, 3549, 9682, 6705, 3566, 3275} /**Karils*/ - }; - - /** - * All of the spade data - */ - public int[][] spadeData = { - /** X Y X1 Y1 toX toY */ - {3553, 3301, 3561, 3294, 3578, 9706}, - {3550, 3287, 3557, 3278, 3568, 9683}, - {3561, 3292, 3568, 3285, 3557, 9703}, - {3570, 3302, 3579, 3293, 3556, 9718}, - {3571, 3285, 3582, 3278, 3534, 9704}, - {3562, 3279, 3569, 3273, 3546, 9684}, - }; - - /** - * Spade digging data - */ - public void spadeDigging() { - if(c.inArea(spadeData[0][0], spadeData[0][1], spadeData[0][2], spadeData[0][3])) { - c.getPlayerAssistant().movePlayer(spadeData[0][4], spadeData[0][5], 3); - } else if(c.inArea(spadeData[1][0], spadeData[1][1], spadeData[1][2], spadeData[1][3])) { - c.getPlayerAssistant().movePlayer(spadeData[1][4], spadeData[1][5], 3); - } else if(c.inArea(spadeData[2][0], spadeData[2][1], spadeData[2][2], spadeData[2][3])) { - c.getPlayerAssistant().movePlayer(spadeData[2][4], spadeData[2][5], 3); - } else if(c.inArea(spadeData[3][0], spadeData[3][1], spadeData[3][2], spadeData[3][3])) { - c.getPlayerAssistant().movePlayer(spadeData[3][4], spadeData[3][5], 3); - } else if(c.inArea(spadeData[4][0], spadeData[4][1], spadeData[4][2], spadeData[4][3])) { - c.getPlayerAssistant().movePlayer(spadeData[4][4], spadeData[4][5], 3); - } else if(c.inArea(spadeData[5][0], spadeData[5][1], spadeData[5][2], spadeData[5][3])) { - c.getPlayerAssistant().movePlayer(spadeData[5][4], spadeData[5][5], 3); - } else if (c.absX == 2999 && c.absY == 3375) { - c.getDialogueHandler().sendDialogues(1007, c.npcType); - } else if (c.absX == 2996 && c.absY == 3377) { - c.getDialogueHandler().sendDialogues(1007, c.npcType); - } else if (c.absX == 3005 && c.absY == 3376) { - c.getDialogueHandler().sendDialogues(1007, c.npcType); - } else if (c.absX == 2999 && c.absY == 3383 && c.pirateTreasure == 4) { - NpcHandler.spawnNpc(c, 1217, c.absX + Misc.random(1), c.absY + Misc.random(1), c.heightLevel, 0, 10, 2, 5, 5, true, true); - c.getDialogueHandler().sendNpcChat1("First moles, now this! Take this, vanda!", c.talkingNpc, "Gardener"); - c.pirateTreasure = 5; - } else if (c.absX == 2999 && c.absY == 3383 && c.pirateTreasure == 5) { - QuestRewards.pirateFinish(c); - } else { - c.getActionSender().sendMessage("You don't find anything..."); - } - } - - /** - * Stair data - */ - public void useStairs() { - if (c.isInBarrows2()) { - switch(c.objectId) { - case 6703: - c.getPlayerAssistant().movePlayer(barrowData[0][5], barrowData[0][6], 0); - break; - case 6707: - c.getPlayerAssistant().movePlayer(barrowData[1][5], barrowData[1][6], 0); - break; - case 6702: - c.getPlayerAssistant().movePlayer(barrowData[2][5], barrowData[2][6], 0); - break; - case 6706: - c.getPlayerAssistant().movePlayer(barrowData[3][5], barrowData[3][6], 0); - break; - case 6704: - c.getPlayerAssistant().movePlayer(barrowData[4][5], barrowData[4][6], 0); - break; - case 6705: - c.getPlayerAssistant().movePlayer(barrowData[5][5], barrowData[5][6], 0); - break; - } - } else { - c.getActionSender().sendMessage("You have to be in barrows to do this!"); - } - } - - - public void checkCoffins() { - if (c.isInBarrows2()) { - if (c.barrowsKillCount < 5) { - c.getActionSender().sendMessage("You still have to kill the following brothers:"); - if (c.barrowsNpcs[2][1] == 0) { - c.getActionSender().sendMessage("- Karils"); - } - if (c.barrowsNpcs[3][1] == 0) { - c.getActionSender().sendMessage("- Guthans"); - } - if (c.barrowsNpcs[1][1] == 0) { - c.getActionSender().sendMessage("- Torags"); - } - if (c.barrowsNpcs[5][1] == 0) { - c.getActionSender().sendMessage("- Ahrims"); - } - if (c.barrowsNpcs[0][1] == 0) { - c.getActionSender().sendMessage("- Veracs"); - } - c.getPlayerAssistant().removeAllWindows(); - } else if (c.barrowsKillCount == 5) { - NpcHandler.spawnNpc(c, 2026, c.getX(), c.getY()-1, 3, 0, 120, 25, 200, 200, true, true); - c.getPlayerAssistant().removeAllWindows(); - } else if (c.barrowsKillCount > 5) { - c.getPlayerAssistant().movePlayer(3551, 9694, 0); - c.getActionSender().sendMessage("You teleport to the chest."); - c.getPlayerAssistant().removeAllWindows(); - } - } else { - c.getActionSender().sendMessage("You have to be in barrows to do this!"); - } - } - - /** - * Grabs the reward based on random chance depending on what your killcount is. - */ - public void reward() { - if (c.isInBarrows2()) { - c.getItemAssistant().addItem(randomRunes(), Misc.random(150) + 100); - c.getItemAssistant().addItem(randomRunes(), Misc.random(150) + 100); - c.getItemAssistant().addItem(randomPots(), 1); - if (c.barrowsKillCount >= 6 && c.barrowsKillCount <= 24) { - if (Misc.random(10) == 1) - c.getItemAssistant().addItem(randomBarrows(), 1); - } else if (c.barrowsKillCount >= 25 && c.barrowsKillCount <= 49) { - if (Misc.random(8) == 1) - c.getItemAssistant().addItem(randomBarrows(), 1); - } else if (c.barrowsKillCount >= 50 && c.barrowsKillCount <= 99) { - if (Misc.random(5) == 1) - c.getItemAssistant().addItem(randomBarrows(), 1); - } else if (c.barrowsKillCount >= 100 && c.barrowsKillCount <= 149) { - if (Misc.random(2) == 1) - c.getItemAssistant().addItem(randomBarrows(), 1); - } else if (c.barrowsKillCount >= 150) { - c.getItemAssistant().addItem(randomBarrows(), 1); - } - } else { - c.getActionSender().sendMessage("You have to be in barrows to do this!"); - } - } - - /** - * Checking if you have killed all of the brothers. - * @return - */ - public boolean checkBarrows() { - if (c.barrowsNpcs[2][1] == 2 || - c.barrowsNpcs[3][1] == 2 || - c.barrowsNpcs[1][1] == 2 || - c.barrowsNpcs[5][1] == 2 || - c.barrowsNpcs[0][1] == 2 || - c.barrowsNpcs[4][1] == 2) { - return true; - } - return false; - } - - /** - * Using the chest. - */ - public void useChest() { - if (c.isInBarrows2()) { - if (!checkBarrows()) { - c.getActionSender().sendMessage("You haven't killed all the brothers!"); - return; - } - if (c.barrowsKillCount == 5) { - if (c.barrowsNpcs[4][1] == 0) { - NpcHandler.spawnNpc(c, 2026, c.getX(), c.getY()-1, 0, 0, 120, 25, 200, 200, true, true); - } - c.barrowsNpcs[4][1] = 1; - } - if (c.barrowsKillCount > 5 && checkBarrows()) { - if (c.getItemAssistant().freeSlots() >= 4) { - reward(); - resetBarrows(); - } else { - c.getActionSender().sendMessage("You need more inventory slots to open the chest."); - } - } - } else { - c.getActionSender().sendMessage("You have to be in barrows to do this!"); - } - } - - public void fixAllBarrows() { - int totalCost = 0; - int cashAmount = c.getItemAssistant().getItemAmount(995); - for (int j = 0; j < c.playerItems.length; j++) { - boolean breakOut = false; - for (int i = 0; i < c.getItemAssistant().brokenBarrows.length; i++) { - if (c.playerItems[j] - 1 == c.getItemAssistant().brokenBarrows[i][1]) { - if (totalCost + 80000 > cashAmount) { - breakOut = true; - c.getActionSender().sendMessage("You have run out of money."); - break; - } else { - totalCost += 80000; - } - c.playerItems[j] = c.getItemAssistant().brokenBarrows[i][0] + 1; - } - } - if (breakOut) - break; - } - if (totalCost > 0) - c.getItemAssistant().deleteItem(995, c.getItemAssistant().getItemSlot(995), - totalCost); - } - - /** - * Resetting the minigame. - */ - public void resetBarrows() { - c.barrowsNpcs[0][1] = 0; - c.barrowsNpcs[1][1] = 0; - c.barrowsNpcs[2][1] = 0; - c.barrowsNpcs[3][1] = 0; - c.barrowsNpcs[4][1] = 0; - c.barrowsNpcs[5][1] = 0; - c.barrowsKillCount = 0; - c.getPlayerAssistant().movePlayer(3565, 3288, 0); - } - - +package com.rebotted.game.content.minigames; + +import com.rebotted.game.content.quests.QuestRewards; +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +public class Barrows { + + public Barrows(Player player) { + this.c = player; + } + + private Player c; + + /** + * Variables used for reward. + */ + public static int Barrows[] = {4708, 4710, 4712, 4714, 4716, 4718, 4720, 4722, 4724, 4726, 4728, 4730, 4732, 4734, 4736, 4738, 4745, 4747, 4749, 4751, 4753, 4755, 4757, 4759}; + public static int Runes[] = {554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565}; + public static int Pots[] = {121, 123, 125, 127, 119, 2428, 2430, 2434, 2432, 2444}; + /** + * Getting random barrow pieces. + * @return + */ + public int randomBarrows() { + return Barrows[(int)(Math.random()*Barrows.length)]; + } + + /** + * Getting random runes. + * @return + */ + public int randomRunes() { + return Runes[(int) (Math.random()*Runes.length)]; + } + + /** + * Getting random pots. + * @return + */ + public int randomPots() { + return Pots[(int) (Math.random()*Pots.length)]; + } + + /** + * All of the barrow data. + */ + public static int[][] barrowData = { + /** ID Coffin X Y Stair X Y */ + {2026, 6771, 3556, 9716, 6703, 3574, 3297}, /**Dharoks*/ + {2030, 6823, 3575, 9706, 6707, 3557, 3297}, /**Veracs*/ + {2025, 6821, 3557, 9700, 6702, 3565, 3288}, /**Ahrims*/ + {2029, 6772, 3568, 9685, 6706, 3554, 3282}, /**Torags*/ + {2027, 6773, 3537, 9703, 6704, 3577, 3282}, /**Guthans*/ + {2028, 6822, 3549, 9682, 6705, 3566, 3275} /**Karils*/ + }; + + /** + * All of the spade data + */ + public int[][] spadeData = { + /** X Y X1 Y1 toX toY */ + {3553, 3301, 3561, 3294, 3578, 9706}, + {3550, 3287, 3557, 3278, 3568, 9683}, + {3561, 3292, 3568, 3285, 3557, 9703}, + {3570, 3302, 3579, 3293, 3556, 9718}, + {3571, 3285, 3582, 3278, 3534, 9704}, + {3562, 3279, 3569, 3273, 3546, 9684}, + }; + + /** + * Spade digging data + */ + public void spadeDigging() { + if(c.inArea(spadeData[0][0], spadeData[0][1], spadeData[0][2], spadeData[0][3])) { + c.getPlayerAssistant().movePlayer(spadeData[0][4], spadeData[0][5], 3); + } else if(c.inArea(spadeData[1][0], spadeData[1][1], spadeData[1][2], spadeData[1][3])) { + c.getPlayerAssistant().movePlayer(spadeData[1][4], spadeData[1][5], 3); + } else if(c.inArea(spadeData[2][0], spadeData[2][1], spadeData[2][2], spadeData[2][3])) { + c.getPlayerAssistant().movePlayer(spadeData[2][4], spadeData[2][5], 3); + } else if(c.inArea(spadeData[3][0], spadeData[3][1], spadeData[3][2], spadeData[3][3])) { + c.getPlayerAssistant().movePlayer(spadeData[3][4], spadeData[3][5], 3); + } else if(c.inArea(spadeData[4][0], spadeData[4][1], spadeData[4][2], spadeData[4][3])) { + c.getPlayerAssistant().movePlayer(spadeData[4][4], spadeData[4][5], 3); + } else if(c.inArea(spadeData[5][0], spadeData[5][1], spadeData[5][2], spadeData[5][3])) { + c.getPlayerAssistant().movePlayer(spadeData[5][4], spadeData[5][5], 3); + } else if (c.absX == 2999 && c.absY == 3375) { + c.getDialogueHandler().sendDialogues(1007, c.npcType); + } else if (c.absX == 2996 && c.absY == 3377) { + c.getDialogueHandler().sendDialogues(1007, c.npcType); + } else if (c.absX == 3005 && c.absY == 3376) { + c.getDialogueHandler().sendDialogues(1007, c.npcType); + } else if (c.absX == 2999 && c.absY == 3383 && c.pirateTreasure == 4) { + NpcHandler.spawnNpc(c, 1217, c.absX + Misc.random(1), c.absY + Misc.random(1), c.heightLevel, 0, 10, 2, 5, 5, true, true); + c.getDialogueHandler().sendNpcChat1("First moles, now this! Take this, vanda!", c.talkingNpc, "Gardener"); + c.pirateTreasure = 5; + } else if (c.absX == 2999 && c.absY == 3383 && c.pirateTreasure == 5) { + QuestRewards.pirateFinish(c); + } else { + c.getPacketSender().sendMessage("You don't find anything..."); + } + } + + /** + * Stair data + */ + public void useStairs() { + if (c.isInBarrows2()) { + switch(c.objectId) { + case 6703: + c.getPlayerAssistant().movePlayer(barrowData[0][5], barrowData[0][6], 0); + break; + case 6707: + c.getPlayerAssistant().movePlayer(barrowData[1][5], barrowData[1][6], 0); + break; + case 6702: + c.getPlayerAssistant().movePlayer(barrowData[2][5], barrowData[2][6], 0); + break; + case 6706: + c.getPlayerAssistant().movePlayer(barrowData[3][5], barrowData[3][6], 0); + break; + case 6704: + c.getPlayerAssistant().movePlayer(barrowData[4][5], barrowData[4][6], 0); + break; + case 6705: + c.getPlayerAssistant().movePlayer(barrowData[5][5], barrowData[5][6], 0); + break; + } + } else { + c.getPacketSender().sendMessage("You have to be in barrows to do this!"); + } + } + + + public void checkCoffins() { + if (c.isInBarrows2()) { + if (c.barrowsKillCount < 5) { + c.getPacketSender().sendMessage("You still have to kill the following brothers:"); + if (c.barrowsNpcs[2][1] == 0) { + c.getPacketSender().sendMessage("- Karils"); + } + if (c.barrowsNpcs[3][1] == 0) { + c.getPacketSender().sendMessage("- Guthans"); + } + if (c.barrowsNpcs[1][1] == 0) { + c.getPacketSender().sendMessage("- Torags"); + } + if (c.barrowsNpcs[5][1] == 0) { + c.getPacketSender().sendMessage("- Ahrims"); + } + if (c.barrowsNpcs[0][1] == 0) { + c.getPacketSender().sendMessage("- Veracs"); + } + c.getPacketSender().closeAllWindows(); + } else if (c.barrowsKillCount == 5) { + NpcHandler.spawnNpc(c, 2026, c.getX(), c.getY()-1, 3, 0, 120, 25, 200, 200, true, true); + c.getPacketSender().closeAllWindows(); + } else if (c.barrowsKillCount > 5) { + c.getPlayerAssistant().movePlayer(3551, 9694, 0); + c.getPacketSender().sendMessage("You teleport to the chest."); + c.getPacketSender().closeAllWindows(); + } + } else { + c.getPacketSender().sendMessage("You have to be in barrows to do this!"); + } + } + + /** + * Grabs the reward based on random chance depending on what your killcount is. + */ + public void reward() { + if (c.isInBarrows2()) { + c.getItemAssistant().addItem(randomRunes(), Misc.random(150) + 100); + c.getItemAssistant().addItem(randomRunes(), Misc.random(150) + 100); + c.getItemAssistant().addItem(randomPots(), 1); + if (c.barrowsKillCount >= 6 && c.barrowsKillCount <= 24) { + if (Misc.random(10) == 1) + c.getItemAssistant().addItem(randomBarrows(), 1); + } else if (c.barrowsKillCount >= 25 && c.barrowsKillCount <= 49) { + if (Misc.random(8) == 1) + c.getItemAssistant().addItem(randomBarrows(), 1); + } else if (c.barrowsKillCount >= 50 && c.barrowsKillCount <= 99) { + if (Misc.random(5) == 1) + c.getItemAssistant().addItem(randomBarrows(), 1); + } else if (c.barrowsKillCount >= 100 && c.barrowsKillCount <= 149) { + if (Misc.random(2) == 1) + c.getItemAssistant().addItem(randomBarrows(), 1); + } else if (c.barrowsKillCount >= 150) { + c.getItemAssistant().addItem(randomBarrows(), 1); + } + } else { + c.getPacketSender().sendMessage("You have to be in barrows to do this!"); + } + } + + /** + * Checking if you have killed all of the brothers. + * @return + */ + public boolean checkBarrows() { + if (c.barrowsNpcs[2][1] == 2 || + c.barrowsNpcs[3][1] == 2 || + c.barrowsNpcs[1][1] == 2 || + c.barrowsNpcs[5][1] == 2 || + c.barrowsNpcs[0][1] == 2 || + c.barrowsNpcs[4][1] == 2) { + return true; + } + return false; + } + + /** + * Using the chest. + */ + public void useChest() { + if (c.isInBarrows2()) { + if (!checkBarrows()) { + c.getPacketSender().sendMessage("You haven't killed all the brothers!"); + return; + } + if (c.barrowsKillCount == 5) { + if (c.barrowsNpcs[4][1] == 0) { + NpcHandler.spawnNpc(c, 2026, c.getX(), c.getY()-1, 0, 0, 120, 25, 200, 200, true, true); + } + c.barrowsNpcs[4][1] = 1; + } + if (c.barrowsKillCount > 5 && checkBarrows()) { + if (c.getItemAssistant().freeSlots() >= 4) { + reward(); + resetBarrows(); + } else { + c.getPacketSender().sendMessage("You need more inventory slots to open the chest."); + } + } + } else { + c.getPacketSender().sendMessage("You have to be in barrows to do this!"); + } + } + + public void fixAllBarrows() { + int totalCost = 0; + int cashAmount = c.getItemAssistant().getItemAmount(995); + for (int j = 0; j < c.playerItems.length; j++) { + boolean breakOut = false; + for (int i = 0; i < c.getItemAssistant().brokenBarrows.length; i++) { + if (c.playerItems[j] - 1 == c.getItemAssistant().brokenBarrows[i][1]) { + if (totalCost + 80000 > cashAmount) { + breakOut = true; + c.getPacketSender().sendMessage("You have run out of money."); + break; + } else { + totalCost += 80000; + } + c.playerItems[j] = c.getItemAssistant().brokenBarrows[i][0] + 1; + } + } + if (breakOut) + break; + } + if (totalCost > 0) + c.getItemAssistant().deleteItem(995, c.getItemAssistant().getItemSlot(995), + totalCost); + } + + /** + * Resetting the minigame. + */ + public void resetBarrows() { + c.barrowsNpcs[0][1] = 0; + c.barrowsNpcs[1][1] = 0; + c.barrowsNpcs[2][1] = 0; + c.barrowsNpcs[3][1] = 0; + c.barrowsNpcs[4][1] = 0; + c.barrowsNpcs[5][1] = 0; + c.barrowsKillCount = 0; + c.getPlayerAssistant().movePlayer(3565, 3288, 0); + } + + } \ No newline at end of file diff --git a/2006Redone Server/src/redone/game/content/minigames/Dueling.java b/2006Redone Server/src/com/rebotted/game/content/minigames/Dueling.java similarity index 77% rename from 2006Redone Server/src/redone/game/content/minigames/Dueling.java rename to 2006Redone Server/src/com/rebotted/game/content/minigames/Dueling.java index 9dc94d01..1a9ae917 100644 --- a/2006Redone Server/src/redone/game/content/minigames/Dueling.java +++ b/2006Redone Server/src/com/rebotted/game/content/minigames/Dueling.java @@ -1,853 +1,854 @@ -package redone.game.content.minigames; - -import java.util.concurrent.CopyOnWriteArrayList; - -import redone.Constants; -import redone.Server; -import redone.game.content.combat.prayer.PrayerDrain; -import redone.game.content.minigames.castlewars.CastleWars; -import redone.game.items.GameItem; -import redone.game.items.Item; -import redone.game.items.ItemAssistant; -import redone.game.items.impl.RareProtection; -import redone.game.players.Client; -import redone.game.players.PlayerHandler; -import redone.game.players.PlayerSave; -import redone.util.GameLogger; -import redone.util.Misc; - -public class Dueling { - - private final Client player; - - public Dueling(Client Client) { - player = Client; - } - - public CopyOnWriteArrayList otherStakedItems = new CopyOnWriteArrayList(); - public CopyOnWriteArrayList stakedItems = new CopyOnWriteArrayList(); - - public void requestDuel(int id) { - try { - if (id == player.playerId) { - return; - } - if (!CastleWars.deleteCastleWarsItems(player, id)) { - return; - } - if (player.inTrade || player.isShopping) { - player.getActionSender().sendMessage("You can not stake currently."); - return; - } - if (!player.inDuelArena()) { - player.getActionSender().sendMessage("You must be in the duel arena to do that."); - return; - } - resetDuel(); - resetDuelItems(); - player.duelingWith = id; - Client o = (Client) PlayerHandler.players[id]; - if (o == null) { - return; - } - /*if (player.connectedFrom.equals(o.connectedFrom)) { - player.getActionSender().sendMessage("You can't duel your own IP."); - return; - }*/ - player.duelRequested = true; - if (player.duelStatus == 0 && o.duelStatus == 0 && player.duelRequested - && o.duelRequested && player.duelingWith == o.getId() - && o.duelingWith == player.getId()) { - if (player.goodDistance(player.getX(), player.getY(), o.getX(), o.getY(), 2)) { - player.getDueling().openDuel(); - o.getDueling().openDuel(); - } else { - player.getActionSender() - .sendMessage( - "You need to get closer to your opponent to start the duel."); - } - - } else { - player.getActionSender().sendMessage("Sending duel request..."); - o.getActionSender().sendMessage(player.playerName + ":duelreq:"); - } - } catch (Exception e) { - Misc.println("Error requesting duel."); - } - } - - public void openDuel() { - Client o = (Client) PlayerHandler.players[player.duelingWith]; - if (o == null) { - return; - } - if (player.inTrade || player.isShopping) { - player.getActionSender().sendMessage("You can not stake currently."); - return; - } - if (!player.inDuelArena()) { - player.getActionSender().sendMessage("You must be in the duel arena to do that."); - return; - } - if (player.duelingArena()) { - player.getActionSender().sendMessage("You can't do that in a duel!"); - return; - } - player.duelStatus = 1; - refreshduelRules(); - refreshDuelScreen(); - player.openDuel = true; - o.openDuel = true; - for (int i = 0; i < player.playerEquipment.length; i++) { - sendDuelEquipment(player.playerEquipment[i], player.playerEquipmentN[i], i); - } - player.getPlayerAssistant().sendFrame126("Dueling with: " + o.playerName + " (level-" + o.combatLevel + ")", 6671); - player.getPlayerAssistant().sendFrame126("", 6684); - player.getPlayerAssistant().sendFrame248(6575, 3321); - player.getItemAssistant().resetItems(3322); - } - - public void sendDuelEquipment(int itemId, int amount, int slot) { - synchronized (player) { - if (itemId != 0) { - player.getOutStream().createFrameVarSizeWord(34); - player.getOutStream().writeWord(13824); - player.getOutStream().writeByte(slot); - player.getOutStream().writeWord(itemId + 1); - - if (amount > 254) { - player.getOutStream().writeByte(255); - player.getOutStream().writeDWord(amount); - } else { - player.getOutStream().writeByte(amount); - } - player.getOutStream().endFrameVarSizeWord(); - player.flushOutStream(); - } - } - } - - public void refreshduelRules() { - for (int i = 0; i < player.duelRule.length; i++) { - player.duelRule[i] = false; - } - player.getPlayerAssistant().sendFrame87(286, 0); - player.duelOption = 0; - } - - public void refreshDuelScreen() { - synchronized (player) { - Client o = (Client) PlayerHandler.players[player.duelingWith]; - if (o == null) { - return; - } - if(!player.openDuel && !o.openDuel) { - declineDuel(); - return; - } - player.getOutStream().createFrameVarSizeWord(53); - player.getOutStream().writeWord(6669); - player.getOutStream().writeWord(stakedItems.toArray().length); - int current = 0; - for (GameItem item : stakedItems) { - if (item.amount > 254) { - player.getOutStream().writeByte(255); - player.getOutStream().writeDWord_v2(item.amount); - } else { - player.getOutStream().writeByte(item.amount); - } - if (item.id > Constants.ITEM_LIMIT || item.id < 0) { - item.id = Constants.ITEM_LIMIT; - } - player.getOutStream().writeWordBigEndianA(item.id + 1); - - current++; - } - - if (current < 27) { - for (int i = current; i < 28; i++) { - player.getOutStream().writeByte(1); - player.getOutStream().writeWordBigEndianA(-1); - } - } - player.getOutStream().endFrameVarSizeWord(); - player.flushOutStream(); - - player.getOutStream().createFrameVarSizeWord(53); - player.getOutStream().writeWord(6670); - player.getOutStream().writeWord( - o.getDueling().stakedItems.toArray().length); - current = 0; - for (GameItem item : o.getDueling().stakedItems) { - if (item.amount > 254) { - player.getOutStream().writeByte(255); - player.getOutStream().writeDWord_v2(item.amount); - } else { - player.getOutStream().writeByte(item.amount); - } - if (item.id > Constants.ITEM_LIMIT || item.id < 0) { - item.id = Constants.ITEM_LIMIT; - } - player.getOutStream().writeWordBigEndianA(item.id + 1); - current++; - } - - if (current < 27) { - for (int i = current; i < 28; i++) { - player.getOutStream().writeByte(1); - player.getOutStream().writeWordBigEndianA(-1); - } - } - player.getOutStream().endFrameVarSizeWord(); - player.flushOutStream(); - } - } - - public boolean stakeItem(int itemID, int fromSlot, int amount) { - - for (int i : Constants.ITEM_TRADEABLE) { - if (i == itemID || itemID >= 6864 && itemID <= 6882) { - player.getActionSender().sendMessage( - "You can't stake this item."); - return false; - } - } - if (player.inTrade || player.isShopping) { - player.getActionSender().sendMessage("You can not stake currently."); - return false; - } - if (!player.inDuelArena()) { - player.getActionSender().sendMessage("You must be in the duel arena to do that."); - return false; - } - if (player.duelingArena()) { - player.getActionSender().sendMessage("You can't do that in a duel!"); - return false; - } - if (!RareProtection.doOtherDupe(player, itemID)) { - return false; - } - if (amount <= 0) { - return false; - } - Client o = (Client) PlayerHandler.players[player.duelingWith]; - if(!player.openDuel && !o.openDuel) { - declineDuel(); - return false; - } - if(!player.getItemAssistant().playerHasItem(itemID, amount)) - return false; - if (amount <= 0) - return false; - if (o == null) { - declineDuel(); - return false; - } - if (o.duelStatus <= 0 || player.duelStatus <= 0) { - declineDuel(); - o.getDueling().declineDuel(); - return false; - } - changeDuelStuff(); - if (!Item.itemStackable[itemID]) { - for (int a = 0; a < amount; a++) { - if (player.getItemAssistant().playerHasItem(itemID, 1)) { - stakedItems.add(new GameItem(itemID, 1)); - player.getItemAssistant().deleteItem(itemID, - player.getItemAssistant().getItemSlot(itemID), 1); - } - } - player.getItemAssistant().resetItems(3214); - player.getItemAssistant().resetItems(3322); - o.getItemAssistant().resetItems(3214); - o.getItemAssistant().resetItems(3322); - refreshDuelScreen(); - o.getDueling().refreshDuelScreen(); - player.getPlayerAssistant().sendFrame126("", 6684); - o.getPlayerAssistant().sendFrame126("", 6684); - } - if (Item.itemStackable[itemID] || Item.itemIsNote[itemID]) { - boolean found = false; - for (GameItem item : stakedItems) { - if (item.id == itemID) { - found = true; - item.amount += amount; - player.getItemAssistant().deleteItem(itemID, fromSlot, amount); - break; - } - } - if (!found) { - player.getItemAssistant().deleteItem(itemID, fromSlot, amount); - stakedItems.add(new GameItem(itemID, amount)); - } - } - - player.getItemAssistant().resetItems(3214); - player.getItemAssistant().resetItems(3322); - o.getItemAssistant().resetItems(3214); - o.getItemAssistant().resetItems(3322); - refreshDuelScreen(); - o.getDueling().refreshDuelScreen(); - player.getPlayerAssistant().sendFrame126("", 6684); - o.getPlayerAssistant().sendFrame126("", 6684); - return true; - } - - public boolean fromDuel(int itemID, int fromSlot, int amount) { - Client o = (Client) PlayerHandler.players[player.duelingWith]; - if (o == null) { - declineDuel(); - return false; - } - if(!player.openDuel && !o.openDuel) { - declineDuel(); - return false; - } - if (player.inTrade || player.isShopping) { - player.getActionSender().sendMessage("You can not stake currently."); - return false; - } - if (!player.inDuelArena()) { - player.getActionSender().sendMessage("You must be in the duel arena to do that."); - return false; - } - if (player.duelingArena()) { - player.getActionSender().sendMessage("You can't do that in a duel!"); - return false; - } - if (o.duelStatus <= 0 || player.duelStatus <= 0) { - declineDuel(); - o.getDueling().declineDuel(); - return false; - } - if (Item.itemStackable[itemID]) { - if (player.getItemAssistant().freeSlots() - 1 < player.duelSpaceReq) { - player.getActionSender().sendMessage( - "You have too many rules set to remove that item."); - return false; - } - } - - changeDuelStuff(); - boolean goodSpace = true; - if (!Item.itemStackable[itemID]) { - for (int a = 0; a < amount; a++) { - for (GameItem item : stakedItems) { - if (item.id == itemID) { - if (!item.stackable) { - if (player.getItemAssistant().freeSlots() - 1 < player.duelSpaceReq) { - goodSpace = false; - break; - } - stakedItems.remove(item); - player.getItemAssistant().addItem(itemID, 1); - } else { - if (player.getItemAssistant().freeSlots() - 1 < player.duelSpaceReq) { - goodSpace = false; - break; - } - if (item.amount > amount) { - item.amount -= amount; - player.getItemAssistant().addItem(itemID, amount); - } else { - if (player.getItemAssistant().freeSlots() - 1 < player.duelSpaceReq) { - goodSpace = false; - break; - } - amount = item.amount; - stakedItems.remove(item); - player.getItemAssistant().addItem(itemID, amount); - } - } - break; - } - o.duelStatus = 1; - player.duelStatus = 1; - player.getItemAssistant().resetItems(3214); - player.getItemAssistant().resetItems(3322); - o.getItemAssistant().resetItems(3214); - o.getItemAssistant().resetItems(3322); - player.getDueling().refreshDuelScreen(); - o.getDueling().refreshDuelScreen(); - o.getPlayerAssistant().sendFrame126("", 6684); - } - } - } - - for (GameItem item : stakedItems) { - if (item.id == itemID) { - if (!item.stackable) { - } else { - if (item.amount > amount) { - item.amount -= amount; - player.getItemAssistant().addItem(itemID, amount); - } else { - amount = item.amount; - stakedItems.remove(item); - player.getItemAssistant().addItem(itemID, amount); - } - } - break; - } - } - o.duelStatus = 1; - player.duelStatus = 1; - player.getItemAssistant().resetItems(3214); - player.getItemAssistant().resetItems(3322); - o.getItemAssistant().resetItems(3214); - o.getItemAssistant().resetItems(3322); - player.getDueling().refreshDuelScreen(); - o.getDueling().refreshDuelScreen(); - o.getPlayerAssistant().sendFrame126("", 6684); - if (!goodSpace) { - player.getActionSender().sendMessage( - "You have too many rules set to remove that item."); - return true; - } - return true; - } - - public void confirmDuel() { - Client o = (Client) PlayerHandler.players[player.duelingWith]; - if (o == null) { - declineDuel(); - return; - } - if (player.inTrade || player.isShopping) { - player.getActionSender().sendMessage("You can not stake currently."); - return; - } - if (!player.inDuelArena()) { - player.getActionSender().sendMessage("You must be in the duel arena to confirm a duel."); - return; - } - if (player.duelingArena()) { - player.getActionSender().sendMessage("You can't do that in a duel!"); - return; - } - String itemId = ""; - for (GameItem item : stakedItems) { - if (Item.itemStackable[item.id] || Item.itemIsNote[item.id]) { - itemId += ItemAssistant.getItemName(item.id) + " x " - + Misc.format(item.amount) + "\\n"; - } else { - itemId += ItemAssistant.getItemName(item.id) + "\\n"; - } - } - player.getPlayerAssistant().sendFrame126(itemId, 6516); - itemId = ""; - for (GameItem item : o.getDueling().stakedItems) { - if (Item.itemStackable[item.id] || Item.itemIsNote[item.id]) { - itemId += ItemAssistant.getItemName(item.id) + " x " - + Misc.format(item.amount) + "\\n"; - } else { - itemId += ItemAssistant.getItemName(item.id) + "\\n"; - } - } - player.getPlayerAssistant().sendFrame126(itemId, 6517); - player.getPlayerAssistant().sendFrame126("", 8242); - for (int i = 8238; i <= 8253; i++) { - player.getPlayerAssistant().sendFrame126("", i); - } - player.getPlayerAssistant().sendFrame126("Hitpoints will be restored.", 8250); - player.getPlayerAssistant().sendFrame126("Boosted stats will be restored.", - 8238); - if (player.duelRule[8]) { - player.getPlayerAssistant().sendFrame126( - "There will be obstacles in the arena.", 8239); - } - player.getPlayerAssistant().sendFrame126("", 8240); - player.getPlayerAssistant().sendFrame126("", 8241); - - String[] rulesOption = { "Players cannot forfeit!", - "Players cannot move.", "Players cannot use range.", - "Players cannot use melee.", "Players cannot use magic.", - "Players cannot drink pots.", "Players cannot eat food.", - "Players cannot use prayer." }; - - int lineNumber = 8242; - for (int i = 0; i < 8; i++) { - if (player.duelRule[i]) { - player.getPlayerAssistant().sendFrame126("" + rulesOption[i], - lineNumber); - lineNumber++; - } - } - player.getPlayerAssistant().sendFrame126("", 6571); - player.getPlayerAssistant().sendFrame248(6412, 197); - // c.getPA().showInterface(6412); - } - - public void startDuel() { - Client o = (Client) PlayerHandler.players[player.duelingWith]; - if (!player.inDuelArena()) { - player.getActionSender().sendMessage("You must be in the duel arena to start a duel."); - return; - } - if (player.inTrade || player.isShopping) { - player.getActionSender().sendMessage("You can not stake currently."); - return; - } - if (player.duelingArena()) { - player.getActionSender().sendMessage("You can't do that in a duel!"); - return; - } - if (o == null || o.disconnected) { - duelVictory(); - } - player.headIconHints = 2; - - if (player.duelRule[7]) { - for (int p = 0; p < player.getPrayer().PRAYER.length; p++) { // reset - // prayer - // glows - player.getPrayer().prayerActive[p] = false; - player.getPlayerAssistant().sendConfig(player.getPrayer().PRAYER_GLOW[p], - 0); - } - player.headIcon = -1; - player.getPlayerAssistant().requestUpdates(); - } - if (player.duelRule[11]) { - player.getItemAssistant().removeItem(player.playerEquipment[0], 0); - } - if (player.duelRule[12]) { - player.getItemAssistant().removeItem(player.playerEquipment[1], 1); - } - if (player.duelRule[13]) { - player.getItemAssistant().removeItem(player.playerEquipment[2], 2); - } - if (player.duelRule[14]) { - player.getItemAssistant().removeItem(player.playerEquipment[3], 3); - } - if (player.duelRule[15]) { - player.getItemAssistant().removeItem(player.playerEquipment[4], 4); - } - if (player.duelRule[16]) { - player.getItemAssistant().removeItem(player.playerEquipment[5], 5); - } - if (player.duelRule[17]) { - player.getItemAssistant().removeItem(player.playerEquipment[7], 7); - } - if (player.duelRule[18]) { - player.getItemAssistant().removeItem(player.playerEquipment[9], 9); - } - if (player.duelRule[19]) { - player.getItemAssistant().removeItem(player.playerEquipment[10], 10); - } - if (player.duelRule[20]) { - player.getItemAssistant().removeItem(player.playerEquipment[12], 12); - } - if (player.duelRule[21]) { - player.getItemAssistant().removeItem(player.playerEquipment[13], 13); - } - player.duelStatus = 5; - player.getPlayerAssistant().removeAllWindows(); - player.specAmount = 10; - player.getItemAssistant().addSpecialBar(player.playerEquipment[player.playerWeapon]); - - if (player.duelRule[8]) { - if (player.duelRule[1]) { - player.getPlayerAssistant().movePlayer(player.duelTeleX, player.duelTeleY, 0); - } else { - player.getPlayerAssistant().movePlayer(3366 + Misc.random(12), - 3246 + Misc.random(6), 0); - } - } else { - if (player.duelRule[1]) { - player.getPlayerAssistant().movePlayer(player.duelTeleX, player.duelTeleY, 0); - } else { - player.getPlayerAssistant().movePlayer(3335 + Misc.random(12), - 3246 + Misc.random(6), 0); - } - } - - player.getActionSender().createPlayerHints(10, o.playerId); - player.getActionSender().showOption(3, 0, "Attack", 1); - for (int i = 0; i < 20; i++) { - player.playerLevel[i] = player.getPlayerAssistant().getLevelForXP( - player.playerXP[i]); - player.getPlayerAssistant().refreshSkill(i); - } - for (GameItem item : o.getDueling().stakedItems) { - otherStakedItems.add(new GameItem(item.id, item.amount)); - } - PlayerSave.saveGame(player); - player.getPlayerAssistant().requestUpdates(); - } - - public void duelVictory() { - Client opponent = (Client) PlayerHandler.players[player.duelingWith]; - if (opponent != null) { - player.getPlayerAssistant().sendFrame126("" + opponent.combatLevel, 6839); - player.getPlayerAssistant().sendFrame126(opponent.playerName, 6840); - opponent.duelStatus = 0; - } else { - player.getPlayerAssistant().sendFrame126("", 6839); - player.getPlayerAssistant().sendFrame126("", 6840); - } - PrayerDrain.resetPrayers(player); - for (int i = 0; i < 20; i++) { - player.playerLevel[i] = player.getPlayerAssistant().getLevelForXP( - player.playerXP[i]); - player.getPlayerAssistant().refreshSkill(i); - } - // c.getPacketDispatcher().sendSound(Sound.DUEL_WON, 100, 0); - player.duelStatus = 6; - if (player.isSkulled) { - player.isSkulled = false; - player.skullTimer = 0; - player.headIconPk = -1; - player.getPlayerAssistant().requestUpdates(); - } - player.getPlayerAssistant().refreshSkill(3); - duelRewardInterface(); - player.getPlayerAssistant().showInterface(6733); - player.getActionSender().sendMessage("You have won the duel!"); - if (player.getPlayerAssistant().isPlayer()) { - GameLogger.writeLog(player.playerName, "duelingkiller", player.playerName + " killed " + opponent.playerName + " in the duel arena."); - } - player.getPlayerAssistant().movePlayer(Constants.DUELING_RESPAWN_X + Misc.random(5), Constants.DUELING_RESPAWN_Y + Misc.random(5), 0); - player.getPlayerAssistant().requestUpdates(); - player.getActionSender().showOption(3, 0, "Challenge", 3); - player.getActionSender().createPlayerHints(10, -1); - player.duelSpaceReq = 0; - player.openDuel = false; - opponent.openDuel = false; - player.duelingWith = 0; - player.getCombatAssistant().resetPlayerAttack(); - player.duelRequested = false; - PlayerSave.saveGame(player); - if (opponent != null) { - PlayerSave.saveGame(opponent); - } - } - - public void duelRewardInterface() { - synchronized (player) { - player.getOutStream().createFrameVarSizeWord(53); - player.getOutStream().writeWord(6822); - player.getOutStream().writeWord(otherStakedItems.toArray().length); - for (GameItem item : otherStakedItems) { - if (item.amount > 254) { - player.getOutStream().writeByte(255); - player.getOutStream().writeDWord_v2(item.amount); - } else { - player.getOutStream().writeByte(item.amount); - } - if (item.id > Constants.ITEM_LIMIT || item.id < 0) { - item.id = Constants.ITEM_LIMIT; - } - player.getOutStream().writeWordBigEndianA(item.id + 1); - } - player.getOutStream().endFrameVarSizeWord(); - player.flushOutStream(); - } - } - - public void claimStakedItems() { - for (GameItem item : otherStakedItems) { - if (item.id > 0 && item.amount > 0) { - if (Item.itemStackable[item.id]) { - if (!player.getItemAssistant().addItem(item.id, item.amount)) { - Server.itemHandler.createGroundItem(player, item.id, - player.getX(), player.getY(), item.amount, player.getId()); - } - } else { - int amount = item.amount; - for (int a = 1; a <= amount; a++) { - if (!player.getItemAssistant().addItem(item.id, 1)) { - Server.itemHandler.createGroundItem(player, item.id, - player.getX(), player.getY(), 1, player.getId()); - } - } - } - } - } - for (GameItem item : stakedItems) { - if (item.id > 0 && item.amount > 0) { - if (Item.itemStackable[item.id]) { - if (!player.getItemAssistant().addItem(item.id, item.amount)) { - Server.itemHandler.createGroundItem(player, item.id, - player.getX(), player.getY(), item.amount, player.getId()); - } - } else { - int amount = item.amount; - for (int a = 1; a <= amount; a++) { - if (!player.getItemAssistant().addItem(item.id, 1)) { - Server.itemHandler.createGroundItem(player, item.id, - player.getX(), player.getY(), 1, player.getId()); - } - } - } - } - } - resetDuel(); - resetDuelItems(); - PlayerSave.saveGame(player); - player.duelStatus = 0; - } - - public void declineDuel() { - Client o = (Client) PlayerHandler.players[player.duelingWith]; - if (!player.inDuelArena()) { - player.getActionSender().sendMessage("You must be in the duel arena to do that."); - return; - } - if (player.duelingArena()) { - player.getActionSender().sendMessage("You can't do that in a duel!"); - return; - } - player.getPlayerAssistant().removeAllWindows(); - player.duelStatus = 0; - player.openDuel = false; - o.openDuel = false; - player.duelingWith = 0; - player.duelSpaceReq = 0; - player.duelRequested = false; - for (GameItem item : stakedItems) { - if (item.amount < 1) { - continue; - } - if (Item.itemStackable[item.id] || Item.itemIsNote[item.id]) { - player.getItemAssistant().addItem(item.id, item.amount); - } else { - player.getItemAssistant().addItem(item.id, 1); - } - } - stakedItems.clear(); - for (int i = 0; i < player.duelRule.length; i++) { - player.duelRule[i] = false; - } - } - - public void checkDuelWalk() { - Client o = (Client) PlayerHandler.players[player.duelingWith]; - if (player.duelStatus == 5 && o.duelStatus == 5 && o.duelingArena() && !player.duelingArena()) { - o.getDueling().duelVictory(); - player.getDueling().resetDuel(); - return; - } - } - - public void resetDuel() { - //Client o = (Client) PlayerHandler.players[player.duelingWith]; - if (player.isDead) { - player.lostDuel = true; - } - player.getActionSender().showOption(3, 0, "Challenge", 3); - player.headIconHints = 0; - for (int i = 0; i < player.duelRule.length; i++) { - player.duelRule[i] = false; - } - player.getActionSender().createPlayerHints(10, -1); - player.duelStatus = 0; - player.duelSpaceReq = 0; - //player.openDuel = false; - //o.openDuel = false; - player.duelingWith = 0; - player.getPlayerAssistant().requestUpdates(); - player.getCombatAssistant().resetPlayerAttack(); - player.duelRequested = false; - } - - public void resetDuelItems() { - stakedItems.clear(); - otherStakedItems.clear(); - } - - public void changeDuelStuff() { - Client o = (Client) PlayerHandler.players[player.duelingWith]; - if (o == null) { - return; - } - o.duelStatus = 1; - player.duelStatus = 1; - o.getPlayerAssistant().sendFrame126("", 6684); - player.getPlayerAssistant().sendFrame126("", 6684); - } - - public void selectRule(int i) { // rules - Client o = (Client) PlayerHandler.players[player.duelingWith]; - if (!player.inDuelArena()) { - player.getActionSender().sendMessage("You must be in the duel arena to change your rules."); - return; - } - if (player.duelingArena()) { - player.getActionSender().sendMessage("You can't do that in a duel!"); - return; - } - if (o == null) { - return; - } - changeDuelStuff(); - o.duelSlot = player.duelSlot; - if (i >= 11 && player.duelSlot > -1) { - if (player.playerEquipment[player.duelSlot] > 0) { - if (!player.duelRule[i]) { - player.duelSpaceReq++; - } else { - player.duelSpaceReq--; - } - } - if (o.playerEquipment[o.duelSlot] > 0) { - if (!o.duelRule[i]) { - o.duelSpaceReq++; - } else { - o.duelSpaceReq--; - } - } - } - if (i == 16 && (player.getItemAssistant().is2handed(ItemAssistant.getItemName(player.playerEquipment[player.playerWeapon]).toLowerCase(), player.playerEquipment[player.playerWeapon]) - && player.getItemAssistant().freeSlots() == 0) || (o.getItemAssistant().is2handed(ItemAssistant.getItemName(player.playerEquipment[player.playerWeapon]).toLowerCase(), player.playerEquipment[player.playerWeapon]) - && o.getItemAssistant().freeSlots() == 0)) { - player.getActionSender().sendMessage("You or your opponent don't have the required space to set this rule."); - return; - } - - if (i >= 11) { - if (player.getItemAssistant().freeSlots() < player.duelSpaceReq - || o.getItemAssistant().freeSlots() < o.duelSpaceReq) { - player.getActionSender() - .sendMessage( - "You or your opponent don't have the required space to set this rule."); - if (player.playerEquipment[player.duelSlot] > 0) { - player.duelSpaceReq--; - } - if (o.playerEquipment[o.duelSlot] > 0) { - o.duelSpaceReq--; - } - return; - } - } - - if (!player.duelRule[i]) { - player.duelRule[i] = true; - player.duelOption += player.DUEL_RULE_ID[i]; - } else { - player.duelRule[i] = false; - player.duelOption -= player.DUEL_RULE_ID[i]; - } - - player.getPlayerAssistant().sendFrame87(286, player.duelOption); - o.duelOption = player.duelOption; - o.duelRule[i] = player.duelRule[i]; - o.getPlayerAssistant().sendFrame87(286, o.duelOption); - - if (player.duelRule[8]) { - if (player.duelRule[1]) { - player.duelTeleX = 3366 + Misc.random(12); - o.duelTeleX = player.duelTeleX - 1; - player.duelTeleY = 3246 + Misc.random(6); - o.duelTeleY = player.duelTeleY; - } - } else { - if (player.duelRule[1]) { - player.duelTeleX = 3335 + Misc.random(12); - o.duelTeleX = player.duelTeleX - 1; - player.duelTeleY = 3246 + Misc.random(6); - o.duelTeleY = player.duelTeleY; - } - } - } -} +package com.rebotted.game.content.minigames; + +import java.util.concurrent.CopyOnWriteArrayList; + +import com.rebotted.GameConstants; +import com.rebotted.GameEngine; +import com.rebotted.game.content.combat.prayer.PrayerDrain; +import com.rebotted.game.content.minigames.castlewars.CastleWars; +import com.rebotted.game.items.GameItem; +import com.rebotted.game.items.Item; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.items.impl.RareProtection; +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerHandler; +import com.rebotted.game.players.PlayerSave; +import com.rebotted.util.GameLogger; +import com.rebotted.util.Misc; + +public class Dueling { + + private final Player player; + + public Dueling(Player player2) { + player = player2; + } + + public CopyOnWriteArrayList otherStakedItems = new CopyOnWriteArrayList(); + public CopyOnWriteArrayList stakedItems = new CopyOnWriteArrayList(); + + public void requestDuel(int id) { + try { + if (id == player.playerId) { + return; + } + if (!CastleWars.deleteCastleWarsItems(player, id)) { + return; + } + if (player.inTrade || player.isShopping) { + player.getPacketSender().sendMessage("You can not stake currently."); + return; + } + if (!player.inDuelArena()) { + player.getPacketSender().sendMessage("You must be in the duel arena to do that."); + return; + } + resetDuel(); + resetDuelItems(); + player.duelingWith = id; + Client o = (Client) PlayerHandler.players[id]; + if (o == null) { + return; + } + /*if (player.connectedFrom.equals(o.connectedFrom)) { + player.getActionSender().sendMessage("You can't duel your own IP."); + return; + }*/ + player.duelRequested = true; + if (player.duelStatus == 0 && o.duelStatus == 0 && player.duelRequested + && o.duelRequested && player.duelingWith == o.getId() + && o.duelingWith == player.getId()) { + if (player.goodDistance(player.getX(), player.getY(), o.getX(), o.getY(), 2)) { + player.getDueling().openDuel(); + o.getDueling().openDuel(); + } else { + player.getPacketSender() + .sendMessage( + "You need to get closer to your opponent to start the duel."); + } + + } else { + player.getPacketSender().sendMessage("Sending duel request..."); + o.getPacketSender().sendMessage(player.playerName + ":duelreq:"); + } + } catch (Exception e) { + Misc.println("Error requesting duel."); + } + } + + public void openDuel() { + Client o = (Client) PlayerHandler.players[player.duelingWith]; + if (o == null) { + return; + } + if (player.inTrade || player.isShopping) { + player.getPacketSender().sendMessage("You can not stake currently."); + return; + } + if (!player.inDuelArena()) { + player.getPacketSender().sendMessage("You must be in the duel arena to do that."); + return; + } + if (player.duelingArena()) { + player.getPacketSender().sendMessage("You can't do that in a duel!"); + return; + } + player.duelStatus = 1; + refreshduelRules(); + refreshDuelScreen(); + player.openDuel = true; + o.openDuel = true; + for (int i = 0; i < player.playerEquipment.length; i++) { + sendDuelEquipment(player.playerEquipment[i], player.playerEquipmentN[i], i); + } + player.getPacketSender().sendFrame126("Dueling with: " + o.playerName + " (level-" + o.combatLevel + ")", 6671); + player.getPacketSender().sendFrame126("", 6684); + player.getPacketSender().sendFrame248(6575, 3321); + player.getItemAssistant().resetItems(3322); + } + + public void sendDuelEquipment(int itemId, int amount, int slot) { + synchronized (player) { + if (itemId != 0) { + player.getOutStream().createFrameVarSizeWord(34); + player.getOutStream().writeWord(13824); + player.getOutStream().writeByte(slot); + player.getOutStream().writeWord(itemId + 1); + + if (amount > 254) { + player.getOutStream().writeByte(255); + player.getOutStream().writeDWord(amount); + } else { + player.getOutStream().writeByte(amount); + } + player.getOutStream().endFrameVarSizeWord(); + player.flushOutStream(); + } + } + } + + public void refreshduelRules() { + for (int i = 0; i < player.duelRule.length; i++) { + player.duelRule[i] = false; + } + player.getPacketSender().sendFrame87(286, 0); + player.duelOption = 0; + } + + public void refreshDuelScreen() { + synchronized (player) { + Client o = (Client) PlayerHandler.players[player.duelingWith]; + if (o == null) { + return; + } + if(!player.openDuel && !o.openDuel) { + declineDuel(); + return; + } + player.getOutStream().createFrameVarSizeWord(53); + player.getOutStream().writeWord(6669); + player.getOutStream().writeWord(stakedItems.toArray().length); + int current = 0; + for (GameItem item : stakedItems) { + if (item.amount > 254) { + player.getOutStream().writeByte(255); + player.getOutStream().writeDWord_v2(item.amount); + } else { + player.getOutStream().writeByte(item.amount); + } + if (item.id > GameConstants.ITEM_LIMIT || item.id < 0) { + item.id = GameConstants.ITEM_LIMIT; + } + player.getOutStream().writeWordBigEndianA(item.id + 1); + + current++; + } + + if (current < 27) { + for (int i = current; i < 28; i++) { + player.getOutStream().writeByte(1); + player.getOutStream().writeWordBigEndianA(-1); + } + } + player.getOutStream().endFrameVarSizeWord(); + player.flushOutStream(); + + player.getOutStream().createFrameVarSizeWord(53); + player.getOutStream().writeWord(6670); + player.getOutStream().writeWord( + o.getDueling().stakedItems.toArray().length); + current = 0; + for (GameItem item : o.getDueling().stakedItems) { + if (item.amount > 254) { + player.getOutStream().writeByte(255); + player.getOutStream().writeDWord_v2(item.amount); + } else { + player.getOutStream().writeByte(item.amount); + } + if (item.id > GameConstants.ITEM_LIMIT || item.id < 0) { + item.id = GameConstants.ITEM_LIMIT; + } + player.getOutStream().writeWordBigEndianA(item.id + 1); + current++; + } + + if (current < 27) { + for (int i = current; i < 28; i++) { + player.getOutStream().writeByte(1); + player.getOutStream().writeWordBigEndianA(-1); + } + } + player.getOutStream().endFrameVarSizeWord(); + player.flushOutStream(); + } + } + + public boolean stakeItem(int itemID, int fromSlot, int amount) { + + for (int i : GameConstants.ITEM_TRADEABLE) { + if (i == itemID || itemID >= 6864 && itemID <= 6882) { + player.getPacketSender().sendMessage( + "You can't stake this item."); + return false; + } + } + if (player.inTrade || player.isShopping) { + player.getPacketSender().sendMessage("You can not stake currently."); + return false; + } + if (!player.inDuelArena()) { + player.getPacketSender().sendMessage("You must be in the duel arena to do that."); + return false; + } + if (player.duelingArena()) { + player.getPacketSender().sendMessage("You can't do that in a duel!"); + return false; + } + if (!RareProtection.doOtherDupe(player, itemID)) { + return false; + } + if (amount <= 0) { + return false; + } + Client o = (Client) PlayerHandler.players[player.duelingWith]; + if(!player.openDuel && !o.openDuel) { + declineDuel(); + return false; + } + if(!player.getItemAssistant().playerHasItem(itemID, amount)) + return false; + if (amount <= 0) + return false; + if (o == null) { + declineDuel(); + return false; + } + if (o.duelStatus <= 0 || player.duelStatus <= 0) { + declineDuel(); + o.getDueling().declineDuel(); + return false; + } + changeDuelStuff(); + if (!Item.itemStackable[itemID]) { + for (int a = 0; a < amount; a++) { + if (player.getItemAssistant().playerHasItem(itemID, 1)) { + stakedItems.add(new GameItem(itemID, 1)); + player.getItemAssistant().deleteItem(itemID, + player.getItemAssistant().getItemSlot(itemID), 1); + } + } + player.getItemAssistant().resetItems(3214); + player.getItemAssistant().resetItems(3322); + o.getItemAssistant().resetItems(3214); + o.getItemAssistant().resetItems(3322); + refreshDuelScreen(); + o.getDueling().refreshDuelScreen(); + player.getPacketSender().sendFrame126("", 6684); + o.getPacketSender().sendFrame126("", 6684); + } + if (Item.itemStackable[itemID] || Item.itemIsNote[itemID]) { + boolean found = false; + for (GameItem item : stakedItems) { + if (item.id == itemID) { + found = true; + item.amount += amount; + player.getItemAssistant().deleteItem(itemID, fromSlot, amount); + break; + } + } + if (!found) { + player.getItemAssistant().deleteItem(itemID, fromSlot, amount); + stakedItems.add(new GameItem(itemID, amount)); + } + } + + player.getItemAssistant().resetItems(3214); + player.getItemAssistant().resetItems(3322); + o.getItemAssistant().resetItems(3214); + o.getItemAssistant().resetItems(3322); + refreshDuelScreen(); + o.getDueling().refreshDuelScreen(); + player.getPacketSender().sendFrame126("", 6684); + o.getPacketSender().sendFrame126("", 6684); + return true; + } + + public boolean fromDuel(int itemID, int fromSlot, int amount) { + Client o = (Client) PlayerHandler.players[player.duelingWith]; + if (o == null) { + declineDuel(); + return false; + } + if(!player.openDuel && !o.openDuel) { + declineDuel(); + return false; + } + if (player.inTrade || player.isShopping) { + player.getPacketSender().sendMessage("You can not stake currently."); + return false; + } + if (!player.inDuelArena()) { + player.getPacketSender().sendMessage("You must be in the duel arena to do that."); + return false; + } + if (player.duelingArena()) { + player.getPacketSender().sendMessage("You can't do that in a duel!"); + return false; + } + if (o.duelStatus <= 0 || player.duelStatus <= 0) { + declineDuel(); + o.getDueling().declineDuel(); + return false; + } + if (Item.itemStackable[itemID]) { + if (player.getItemAssistant().freeSlots() - 1 < player.duelSpaceReq) { + player.getPacketSender().sendMessage( + "You have too many rules set to remove that item."); + return false; + } + } + + changeDuelStuff(); + boolean goodSpace = true; + if (!Item.itemStackable[itemID]) { + for (int a = 0; a < amount; a++) { + for (GameItem item : stakedItems) { + if (item.id == itemID) { + if (!item.stackable) { + if (player.getItemAssistant().freeSlots() - 1 < player.duelSpaceReq) { + goodSpace = false; + break; + } + stakedItems.remove(item); + player.getItemAssistant().addItem(itemID, 1); + } else { + if (player.getItemAssistant().freeSlots() - 1 < player.duelSpaceReq) { + goodSpace = false; + break; + } + if (item.amount > amount) { + item.amount -= amount; + player.getItemAssistant().addItem(itemID, amount); + } else { + if (player.getItemAssistant().freeSlots() - 1 < player.duelSpaceReq) { + goodSpace = false; + break; + } + amount = item.amount; + stakedItems.remove(item); + player.getItemAssistant().addItem(itemID, amount); + } + } + break; + } + o.duelStatus = 1; + player.duelStatus = 1; + player.getItemAssistant().resetItems(3214); + player.getItemAssistant().resetItems(3322); + o.getItemAssistant().resetItems(3214); + o.getItemAssistant().resetItems(3322); + player.getDueling().refreshDuelScreen(); + o.getDueling().refreshDuelScreen(); + o.getPacketSender().sendFrame126("", 6684); + } + } + } + + for (GameItem item : stakedItems) { + if (item.id == itemID) { + if (!item.stackable) { + } else { + if (item.amount > amount) { + item.amount -= amount; + player.getItemAssistant().addItem(itemID, amount); + } else { + amount = item.amount; + stakedItems.remove(item); + player.getItemAssistant().addItem(itemID, amount); + } + } + break; + } + } + o.duelStatus = 1; + player.duelStatus = 1; + player.getItemAssistant().resetItems(3214); + player.getItemAssistant().resetItems(3322); + o.getItemAssistant().resetItems(3214); + o.getItemAssistant().resetItems(3322); + player.getDueling().refreshDuelScreen(); + o.getDueling().refreshDuelScreen(); + o.getPacketSender().sendFrame126("", 6684); + if (!goodSpace) { + player.getPacketSender().sendMessage( + "You have too many rules set to remove that item."); + return true; + } + return true; + } + + public void confirmDuel() { + Client o = (Client) PlayerHandler.players[player.duelingWith]; + if (o == null) { + declineDuel(); + return; + } + if (player.inTrade || player.isShopping) { + player.getPacketSender().sendMessage("You can not stake currently."); + return; + } + if (!player.inDuelArena()) { + player.getPacketSender().sendMessage("You must be in the duel arena to confirm a duel."); + return; + } + if (player.duelingArena()) { + player.getPacketSender().sendMessage("You can't do that in a duel!"); + return; + } + String itemId = ""; + for (GameItem item : stakedItems) { + if (Item.itemStackable[item.id] || Item.itemIsNote[item.id]) { + itemId += ItemAssistant.getItemName(item.id) + " x " + + Misc.format(item.amount) + "\\n"; + } else { + itemId += ItemAssistant.getItemName(item.id) + "\\n"; + } + } + player.getPacketSender().sendFrame126(itemId, 6516); + itemId = ""; + for (GameItem item : o.getDueling().stakedItems) { + if (Item.itemStackable[item.id] || Item.itemIsNote[item.id]) { + itemId += ItemAssistant.getItemName(item.id) + " x " + + Misc.format(item.amount) + "\\n"; + } else { + itemId += ItemAssistant.getItemName(item.id) + "\\n"; + } + } + player.getPacketSender().sendFrame126(itemId, 6517); + player.getPacketSender().sendFrame126("", 8242); + for (int i = 8238; i <= 8253; i++) { + player.getPacketSender().sendFrame126("", i); + } + player.getPacketSender().sendFrame126("Hitpoints will be restored.", 8250); + player.getPacketSender().sendFrame126("Boosted stats will be restored.", + 8238); + if (player.duelRule[8]) { + player.getPacketSender().sendFrame126( + "There will be obstacles in the arena.", 8239); + } + player.getPacketSender().sendFrame126("", 8240); + player.getPacketSender().sendFrame126("", 8241); + + String[] rulesOption = { "Players cannot forfeit!", + "Players cannot move.", "Players cannot use range.", + "Players cannot use melee.", "Players cannot use magic.", + "Players cannot drink pots.", "Players cannot eat food.", + "Players cannot use prayer." }; + + int lineNumber = 8242; + for (int i = 0; i < 8; i++) { + if (player.duelRule[i]) { + player.getPacketSender().sendFrame126("" + rulesOption[i], + lineNumber); + lineNumber++; + } + } + player.getPacketSender().sendFrame126("", 6571); + player.getPacketSender().sendFrame248(6412, 197); + // c.getPA().showInterface(6412); + } + + public void startDuel() { + Client o = (Client) PlayerHandler.players[player.duelingWith]; + if (!player.inDuelArena()) { + player.getPacketSender().sendMessage("You must be in the duel arena to start a duel."); + return; + } + if (player.inTrade || player.isShopping) { + player.getPacketSender().sendMessage("You can not stake currently."); + return; + } + if (player.duelingArena()) { + player.getPacketSender().sendMessage("You can't do that in a duel!"); + return; + } + if (o == null || o.disconnected) { + duelVictory(); + } + player.headIconHints = 2; + + if (player.duelRule[7]) { + for (int p = 0; p < player.getPrayer().PRAYER.length; p++) { // reset + // prayer + // glows + player.getPrayer().prayerActive[p] = false; + player.getPacketSender().sendConfig(player.getPrayer().PRAYER_GLOW[p], + 0); + } + player.headIcon = -1; + player.getPlayerAssistant().requestUpdates(); + } + if (player.duelRule[11]) { + player.getItemAssistant().removeItem(player.playerEquipment[0], 0); + } + if (player.duelRule[12]) { + player.getItemAssistant().removeItem(player.playerEquipment[1], 1); + } + if (player.duelRule[13]) { + player.getItemAssistant().removeItem(player.playerEquipment[2], 2); + } + if (player.duelRule[14]) { + player.getItemAssistant().removeItem(player.playerEquipment[3], 3); + } + if (player.duelRule[15]) { + player.getItemAssistant().removeItem(player.playerEquipment[4], 4); + } + if (player.duelRule[16]) { + player.getItemAssistant().removeItem(player.playerEquipment[5], 5); + } + if (player.duelRule[17]) { + player.getItemAssistant().removeItem(player.playerEquipment[7], 7); + } + if (player.duelRule[18]) { + player.getItemAssistant().removeItem(player.playerEquipment[9], 9); + } + if (player.duelRule[19]) { + player.getItemAssistant().removeItem(player.playerEquipment[10], 10); + } + if (player.duelRule[20]) { + player.getItemAssistant().removeItem(player.playerEquipment[12], 12); + } + if (player.duelRule[21]) { + player.getItemAssistant().removeItem(player.playerEquipment[13], 13); + } + player.duelStatus = 5; + player.getPacketSender().closeAllWindows(); + player.specAmount = 10; + player.getItemAssistant().addSpecialBar(player.playerEquipment[player.playerWeapon]); + + if (player.duelRule[8]) { + if (player.duelRule[1]) { + player.getPlayerAssistant().movePlayer(player.duelTeleX, player.duelTeleY, 0); + } else { + player.getPlayerAssistant().movePlayer(3366 + Misc.random(12), + 3246 + Misc.random(6), 0); + } + } else { + if (player.duelRule[1]) { + player.getPlayerAssistant().movePlayer(player.duelTeleX, player.duelTeleY, 0); + } else { + player.getPlayerAssistant().movePlayer(3335 + Misc.random(12), + 3246 + Misc.random(6), 0); + } + } + + player.getPacketSender().createPlayerHints(10, o.playerId); + player.getPacketSender().showOption(3, 0, "Attack", 1); + for (int i = 0; i < 20; i++) { + player.playerLevel[i] = player.getPlayerAssistant().getLevelForXP( + player.playerXP[i]); + player.getPlayerAssistant().refreshSkill(i); + } + for (GameItem item : o.getDueling().stakedItems) { + otherStakedItems.add(new GameItem(item.id, item.amount)); + } + PlayerSave.saveGame(player); + player.getPlayerAssistant().requestUpdates(); + } + + public void duelVictory() { + Client opponent = (Client) PlayerHandler.players[player.duelingWith]; + if (opponent != null) { + player.getPacketSender().sendFrame126("" + opponent.combatLevel, 6839); + player.getPacketSender().sendFrame126(opponent.playerName, 6840); + opponent.duelStatus = 0; + } else { + player.getPacketSender().sendFrame126("", 6839); + player.getPacketSender().sendFrame126("", 6840); + } + PrayerDrain.resetPrayers(player); + for (int i = 0; i < 20; i++) { + player.playerLevel[i] = player.getPlayerAssistant().getLevelForXP( + player.playerXP[i]); + player.getPlayerAssistant().refreshSkill(i); + } + // c.getPacketDispatcher().sendSound(Sound.DUEL_WON, 100, 0); + player.duelStatus = 6; + if (player.isSkulled) { + player.isSkulled = false; + player.skullTimer = 0; + player.headIconPk = -1; + player.getPlayerAssistant().requestUpdates(); + } + player.getPlayerAssistant().refreshSkill(3); + duelRewardInterface(); + player.getPacketSender().showInterface(6733); + player.getPacketSender().sendMessage("You have won the duel!"); + if (player.getPlayerAssistant().isPlayer()) { + GameLogger.writeLog(player.playerName, "duelingkiller", player.playerName + " killed " + opponent.playerName + " in the duel arena."); + } + player.getPlayerAssistant().movePlayer(GameConstants.DUELING_RESPAWN_X + Misc.random(5), GameConstants.DUELING_RESPAWN_Y + Misc.random(5), 0); + player.getPlayerAssistant().requestUpdates(); + player.getPacketSender().showOption(3, 0, "Challenge", 3); + player.getPacketSender().createPlayerHints(10, -1); + player.duelSpaceReq = 0; + player.openDuel = false; + opponent.openDuel = false; + player.duelingWith = 0; + player.getCombatAssistant().resetPlayerAttack(); + player.duelRequested = false; + PlayerSave.saveGame(player); + if (opponent != null) { + PlayerSave.saveGame(opponent); + } + } + + public void duelRewardInterface() { + synchronized (player) { + player.getOutStream().createFrameVarSizeWord(53); + player.getOutStream().writeWord(6822); + player.getOutStream().writeWord(otherStakedItems.toArray().length); + for (GameItem item : otherStakedItems) { + if (item.amount > 254) { + player.getOutStream().writeByte(255); + player.getOutStream().writeDWord_v2(item.amount); + } else { + player.getOutStream().writeByte(item.amount); + } + if (item.id > GameConstants.ITEM_LIMIT || item.id < 0) { + item.id = GameConstants.ITEM_LIMIT; + } + player.getOutStream().writeWordBigEndianA(item.id + 1); + } + player.getOutStream().endFrameVarSizeWord(); + player.flushOutStream(); + } + } + + public void claimStakedItems() { + for (GameItem item : otherStakedItems) { + if (item.id > 0 && item.amount > 0) { + if (Item.itemStackable[item.id]) { + if (!player.getItemAssistant().addItem(item.id, item.amount)) { + GameEngine.itemHandler.createGroundItem(player, item.id, + player.getX(), player.getY(), item.amount, player.getId()); + } + } else { + int amount = item.amount; + for (int a = 1; a <= amount; a++) { + if (!player.getItemAssistant().addItem(item.id, 1)) { + GameEngine.itemHandler.createGroundItem(player, item.id, + player.getX(), player.getY(), 1, player.getId()); + } + } + } + } + } + for (GameItem item : stakedItems) { + if (item.id > 0 && item.amount > 0) { + if (Item.itemStackable[item.id]) { + if (!player.getItemAssistant().addItem(item.id, item.amount)) { + GameEngine.itemHandler.createGroundItem(player, item.id, + player.getX(), player.getY(), item.amount, player.getId()); + } + } else { + int amount = item.amount; + for (int a = 1; a <= amount; a++) { + if (!player.getItemAssistant().addItem(item.id, 1)) { + GameEngine.itemHandler.createGroundItem(player, item.id, + player.getX(), player.getY(), 1, player.getId()); + } + } + } + } + } + resetDuel(); + resetDuelItems(); + PlayerSave.saveGame(player); + player.duelStatus = 0; + } + + public void declineDuel() { + Client o = (Client) PlayerHandler.players[player.duelingWith]; + if (!player.inDuelArena()) { + player.getPacketSender().sendMessage("You must be in the duel arena to do that."); + return; + } + if (player.duelingArena()) { + player.getPacketSender().sendMessage("You can't do that in a duel!"); + return; + } + player.getPacketSender().closeAllWindows(); + player.duelStatus = 0; + player.openDuel = false; + o.openDuel = false; + player.duelingWith = 0; + player.duelSpaceReq = 0; + player.duelRequested = false; + for (GameItem item : stakedItems) { + if (item.amount < 1) { + continue; + } + if (Item.itemStackable[item.id] || Item.itemIsNote[item.id]) { + player.getItemAssistant().addItem(item.id, item.amount); + } else { + player.getItemAssistant().addItem(item.id, 1); + } + } + stakedItems.clear(); + for (int i = 0; i < player.duelRule.length; i++) { + player.duelRule[i] = false; + } + } + + public void checkDuelWalk() { + Client o = (Client) PlayerHandler.players[player.duelingWith]; + if (player.duelStatus == 5 && o.duelStatus == 5 && o.duelingArena() && !player.duelingArena()) { + o.getDueling().duelVictory(); + player.getDueling().resetDuel(); + return; + } + } + + public void resetDuel() { + //Client o = (Client) PlayerHandler.players[player.duelingWith]; + if (player.isDead) { + player.lostDuel = true; + } + player.getPacketSender().showOption(3, 0, "Challenge", 3); + player.headIconHints = 0; + for (int i = 0; i < player.duelRule.length; i++) { + player.duelRule[i] = false; + } + player.getPacketSender().createPlayerHints(10, -1); + player.duelStatus = 0; + player.duelSpaceReq = 0; + //player.openDuel = false; + //o.openDuel = false; + player.duelingWith = 0; + player.getPlayerAssistant().requestUpdates(); + player.getCombatAssistant().resetPlayerAttack(); + player.duelRequested = false; + } + + public void resetDuelItems() { + stakedItems.clear(); + otherStakedItems.clear(); + } + + public void changeDuelStuff() { + Client o = (Client) PlayerHandler.players[player.duelingWith]; + if (o == null) { + return; + } + o.duelStatus = 1; + player.duelStatus = 1; + o.getPacketSender().sendFrame126("", 6684); + player.getPacketSender().sendFrame126("", 6684); + } + + public void selectRule(int i) { // rules + Client o = (Client) PlayerHandler.players[player.duelingWith]; + if (!player.inDuelArena()) { + player.getPacketSender().sendMessage("You must be in the duel arena to change your rules."); + return; + } + if (player.duelingArena()) { + player.getPacketSender().sendMessage("You can't do that in a duel!"); + return; + } + if (o == null) { + return; + } + changeDuelStuff(); + o.duelSlot = player.duelSlot; + if (i >= 11 && player.duelSlot > -1) { + if (player.playerEquipment[player.duelSlot] > 0) { + if (!player.duelRule[i]) { + player.duelSpaceReq++; + } else { + player.duelSpaceReq--; + } + } + if (o.playerEquipment[o.duelSlot] > 0) { + if (!o.duelRule[i]) { + o.duelSpaceReq++; + } else { + o.duelSpaceReq--; + } + } + } + if (i == 16 && (player.getItemAssistant().is2handed(ItemAssistant.getItemName(player.playerEquipment[player.playerWeapon]).toLowerCase(), player.playerEquipment[player.playerWeapon]) + && player.getItemAssistant().freeSlots() == 0) || (o.getItemAssistant().is2handed(ItemAssistant.getItemName(player.playerEquipment[player.playerWeapon]).toLowerCase(), player.playerEquipment[player.playerWeapon]) + && o.getItemAssistant().freeSlots() == 0)) { + player.getPacketSender().sendMessage("You or your opponent don't have the required space to set this rule."); + return; + } + + if (i >= 11) { + if (player.getItemAssistant().freeSlots() < player.duelSpaceReq + || o.getItemAssistant().freeSlots() < o.duelSpaceReq) { + player.getPacketSender() + .sendMessage( + "You or your opponent don't have the required space to set this rule."); + if (player.playerEquipment[player.duelSlot] > 0) { + player.duelSpaceReq--; + } + if (o.playerEquipment[o.duelSlot] > 0) { + o.duelSpaceReq--; + } + return; + } + } + + if (!player.duelRule[i]) { + player.duelRule[i] = true; + player.duelOption += player.DUEL_RULE_ID[i]; + } else { + player.duelRule[i] = false; + player.duelOption -= player.DUEL_RULE_ID[i]; + } + + player.getPacketSender().sendFrame87(286, player.duelOption); + o.duelOption = player.duelOption; + o.duelRule[i] = player.duelRule[i]; + o.getPacketSender().sendFrame87(286, o.duelOption); + + if (player.duelRule[8]) { + if (player.duelRule[1]) { + player.duelTeleX = 3366 + Misc.random(12); + o.duelTeleX = player.duelTeleX - 1; + player.duelTeleY = 3246 + Misc.random(6); + o.duelTeleY = player.duelTeleY; + } + } else { + if (player.duelRule[1]) { + player.duelTeleX = 3335 + Misc.random(12); + o.duelTeleX = player.duelTeleX - 1; + player.duelTeleY = 3246 + Misc.random(6); + o.duelTeleY = player.duelTeleY; + } + } + } +} diff --git a/2006Redone Server/src/redone/game/content/minigames/FightCaves.java b/2006Redone Server/src/com/rebotted/game/content/minigames/FightCaves.java similarity index 85% rename from 2006Redone Server/src/redone/game/content/minigames/FightCaves.java rename to 2006Redone Server/src/com/rebotted/game/content/minigames/FightCaves.java index a3c81791..c1d70f36 100644 --- a/2006Redone Server/src/redone/game/content/minigames/FightCaves.java +++ b/2006Redone Server/src/com/rebotted/game/content/minigames/FightCaves.java @@ -1,415 +1,416 @@ -package redone.game.content.minigames; - -import redone.Server; -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.npcs.Npc; -import redone.game.npcs.NpcHandler; -import redone.game.players.Client; -import redone.game.players.PlayerHandler; -import redone.util.Misc; - -public class FightCaves { - - public static final int TZ_KIH = 2627, TZ_KEK_SPAWN = 2738, TZ_KEK = 2630, - TOK_XIL = 2631, YT_MEJKOT = 2741, KET_ZEK = 2743, TZTOK_JAD = 2745, YT_HURKOT = 2746; - - /** - * Holds the data for the 63 waves fight cave. - */ - private final int[][] WAVES = { - { TZ_KIH }, - { TZ_KIH, TZ_KIH }, - { TZ_KEK }, - { TZ_KEK, TZ_KIH }, - { TZ_KEK, TZ_KIH, TZ_KIH }, - { TZ_KEK, TZ_KEK }, - { TOK_XIL }, - { TOK_XIL, TZ_KIH }, - { TOK_XIL, TZ_KIH, TZ_KIH }, - { TOK_XIL, TZ_KEK }, - { TOK_XIL, TZ_KEK, TZ_KIH }, - { TOK_XIL, TZ_KEK, TZ_KIH, TZ_KIH }, - { TOK_XIL, TZ_KEK, TZ_KEK }, - { TOK_XIL, TOK_XIL }, - { YT_MEJKOT }, - { YT_MEJKOT, TZ_KIH }, - { YT_MEJKOT, TZ_KIH, TZ_KIH }, - { YT_MEJKOT, TZ_KEK }, - { YT_MEJKOT, TZ_KEK, TZ_KIH }, - { YT_MEJKOT, TZ_KEK, TZ_KIH, TZ_KIH }, - { YT_MEJKOT, TZ_KEK, TZ_KEK }, - { YT_MEJKOT, TOK_XIL }, - { YT_MEJKOT, TOK_XIL, TZ_KIH }, - { YT_MEJKOT, TOK_XIL, TZ_KIH, TZ_KIH }, - { YT_MEJKOT, TOK_XIL, TZ_KEK }, - { YT_MEJKOT, TOK_XIL, TZ_KEK, TZ_KIH }, - { YT_MEJKOT, TOK_XIL, TZ_KEK, TZ_KIH, TZ_KIH }, - { YT_MEJKOT, TOK_XIL, TZ_KEK, TZ_KEK }, - { YT_MEJKOT, TOK_XIL, TOK_XIL }, - { YT_MEJKOT, YT_MEJKOT }, - { KET_ZEK }, - { KET_ZEK, TZ_KIH }, - { KET_ZEK, TZ_KIH, TZ_KIH }, - { KET_ZEK, TZ_KEK }, - { KET_ZEK, TZ_KEK, TZ_KIH }, - { KET_ZEK, TZ_KEK, TZ_KIH, TZ_KIH }, - { KET_ZEK, TZ_KEK, TZ_KEK }, - { KET_ZEK, TOK_XIL }, - { KET_ZEK, TOK_XIL, TZ_KIH }, - { KET_ZEK, TOK_XIL, TZ_KIH, TZ_KIH }, - { KET_ZEK, TOK_XIL, TZ_KEK }, - { KET_ZEK, TOK_XIL, TZ_KEK, TZ_KIH }, - { KET_ZEK, TOK_XIL, TZ_KEK, TZ_KIH, TZ_KIH }, - { KET_ZEK, TOK_XIL, TZ_KEK, TZ_KEK }, - { KET_ZEK, TOK_XIL, TOK_XIL }, - { KET_ZEK, YT_MEJKOT }, - { KET_ZEK, YT_MEJKOT, TZ_KIH }, - { KET_ZEK, YT_MEJKOT, TZ_KIH, TZ_KIH }, - { KET_ZEK, YT_MEJKOT, TZ_KEK }, - { KET_ZEK, YT_MEJKOT, TZ_KEK, TZ_KIH }, - { KET_ZEK, YT_MEJKOT, TZ_KEK, TZ_KIH, TZ_KIH }, - { KET_ZEK, YT_MEJKOT, TZ_KEK, TZ_KEK }, - { KET_ZEK, YT_MEJKOT, TOK_XIL }, - { KET_ZEK, YT_MEJKOT, TOK_XIL, TZ_KIH }, - { KET_ZEK, YT_MEJKOT, TOK_XIL, TZ_KIH, TZ_KIH }, - { KET_ZEK, YT_MEJKOT, TOK_XIL, TZ_KEK }, - { KET_ZEK, YT_MEJKOT, TOK_XIL, TZ_KEK, TZ_KIH }, - { KET_ZEK, YT_MEJKOT, TOK_XIL, TZ_KEK, TZ_KIH, TZ_KIH }, - { KET_ZEK, YT_MEJKOT, TOK_XIL, TZ_KEK, TZ_KEK }, - { KET_ZEK, YT_MEJKOT, TOK_XIL, TOK_XIL }, - { KET_ZEK, YT_MEJKOT, YT_MEJKOT }, - { KET_ZEK, KET_ZEK }, - { TZTOK_JAD } - }; - - private static final int[][] JAD_SPAWNS = {{2400, 5090},{2419, 5080}}; - private static final int[][] HEALER_COORDS = {{2390, 5101}, {2391, 5077}, {2411, 5084}, {2398, 5091}}; - private final static int[][] COORDINATES = {{2403, 5094}, {2390, 5096}, {2392, 5077}, {2408, 5080}, {2413, 5108}, {2381, 5106}, {2379, 5072}, {2420, 5082}}; - - /** - * Handles spawning the next fightcave wave. - * - * @param player - * The player. - */ - public void spawnNextWave(Client player) { - if (player != null) { - if (player.waveId >= WAVES.length) { - player.waveId = 0; - return; - } - if (player.waveId < 0) { - player.waveId = 0; - return; - } - int npcAmount = WAVES[player.waveId].length; - int wave = player.waveId +1; - if (player.waveId < 62 && player.waveId > -1) { - for (int j = 0; j < npcAmount; j++) { - int npc = WAVES[player.waveId][j]; - int X = COORDINATES[j][0]; - int Y = COORDINATES[j][1]; - int H = player.heightLevel; - int hp = getHp(npc); - int max = getMax(npc); - int atk = getAtk(npc); - int def = getDef(npc); - NpcHandler.spawnNpc(player, npc, X, Y, H, 0, hp, max, atk, def, true, false); - } - player.getActionSender().sendMessage("You are now on wave @red@" + wave + "@bla@."); - } else if (player.waveId == 62) { - player.getDialogueHandler().sendDialogues(102, 2617); - int a = Misc.random(1); - int npc = WAVES[62][0]; - int X = JAD_SPAWNS[a][0]; - int Y = JAD_SPAWNS[a][1]; - int H = player.heightLevel; - int hp = getHp(npc); - int max = getMax(npc); - int atk = getAtk(npc); - int def = getDef(npc); - NpcHandler.spawnNpc(player, npc, X, Y, H, 0, hp, max, atk, def, true, false); - player.getActionSender().sendMessage("You are now on wave @red@63@bla@."); - } - player.tzhaarToKill = npcAmount; - player.tzhaarKilled = 0; - } - } - - public static void ytMejKotEffect(Client player, int i) { - if(NpcHandler.npcs[i].npcType == YT_MEJKOT) { - if (NpcHandler.npcs[i].hitsToHeal < 2) { - NpcHandler.npcs[i].hitsToHeal += 1; - if (NpcHandler.npcs[i].hitsToHeal == 2) { - NpcHandler.npcs[i].hitsToHeal = 0; - NpcHandler.npcs[i].gfx0(444); - NpcHandler.npcs[i].startAnimation(2639, i); - NpcHandler.npcs[i].HP += 1+Misc.random(7); - if (NpcHandler.npcs[i].HP > getHp(YT_MEJKOT)) - NpcHandler.npcs[i].HP = getHp(YT_MEJKOT); - } - } - } - } - - public static void spawnHealers(Client player, int i, int amount) { - if (player.spawnedHealers < 4) { - int hp = getHp(YT_HURKOT); - int max = getMax(YT_HURKOT); - int atk = getAtk(YT_HURKOT); - int def = getDef(YT_HURKOT); - for (int i1 = 0; i1 < amount; i1++) { - NpcHandler.spawnNpc(player, YT_HURKOT, HEALER_COORDS[i1][0], HEALER_COORDS[i1][1], player.heightLevel, 0, hp, max, atk, def, false, false); - } - player.spawnedHealers = amount; - player.canHealersRespawn = false; - } - } - - /** - * Handles the correct tz-kih effect; prayer is drained by the formula: - * drain = damage + 1 - * - * @param player - * The player - * @param i - * The npcId - * @param damage - * What the npchit - */ - public static void tzKihEffect(Client player, int i, int damage) { - if (NpcHandler.npcs[i].npcType == TZ_KIH) { - if (player != null) { - if (player.playerLevel[5] > 0) { - player.playerLevel[5] -= 1 + damage; - player.getPlayerAssistant().refreshSkill(5); - } - } - } - } - - public static void tzKekEffect(Client player, int i) { - if (NpcHandler.npcs[i].npcType == TZ_KEK) { - - int x = NpcHandler.npcs[i].absX + 2; - int y = NpcHandler.npcs[i].absY + 2; - int x1 = NpcHandler.npcs[i].absX - 2; - int y1 = NpcHandler.npcs[i].absY - 2; - - int hp = getHp(TZ_KEK_SPAWN); - int max = getMax(TZ_KEK_SPAWN); - int atk = getAtk(TZ_KEK_SPAWN); - int def = getDef(TZ_KEK_SPAWN); - - if (player != null) { - if (player.tzKekTimer == 0) { - if (NpcHandler.npcs[i].isDead) { - NpcHandler.spawnNpc(player, TZ_KEK_SPAWN, x, y, - player.heightLevel, 0, hp, max, atk, def, true, - false); - NpcHandler.spawnNpc(player, TZ_KEK_SPAWN, x1, y1, - player.heightLevel, 0, hp, max, atk, def, true, - false); - } - } - } - } - } - - public static int getHp(int npc) { - switch (npc) { - case TZ_KIH: - case TZ_KEK_SPAWN: - return 10; - case TZ_KEK: - return 20; - case TOK_XIL: - return 40; - case YT_MEJKOT: - return 80; - case KET_ZEK: - return 150; - case YT_HURKOT: - return 80; - case TZTOK_JAD: - return 250; - } - return 100; - } - - public static int getMax(int npc) { - switch (npc) { - case TZ_KIH: - case TZ_KEK_SPAWN: - return 4; - case TZ_KEK: - return 7; - case TOK_XIL: - return 13; - case YT_MEJKOT: - return 28; - case KET_ZEK: - return 54; - case TZTOK_JAD: - return 97; - case YT_HURKOT: - return 16; - } - return 5; - } - - public static int getAtk(int npc) { - switch (npc) { - case TZ_KIH: - case TZ_KEK_SPAWN: - return 30; - case TZ_KEK: - return 50; - case TOK_XIL: - return 100; - case YT_MEJKOT: - return 150; - case KET_ZEK: - return 450; - case TZTOK_JAD: - return 650; - case YT_HURKOT: - return 120; - } - return 100; - } - - public static int getDef(int npc) { - switch (npc) { - case TZ_KIH: - case TZ_KEK_SPAWN: - return 30; - case TZ_KEK: - return 50; - case TOK_XIL: - return 100; - case YT_MEJKOT: - return 150; - case KET_ZEK: - return 300; - case TZTOK_JAD: - return 500; - case YT_HURKOT: - return 125; - } - return 100; - } - - private static void killedTzhaar(int i) { - final Client c2 = (Client) PlayerHandler.players[NpcHandler.npcs[i].spawnedBy]; - c2.tzhaarKilled++; - if (c2.tzhaarKilled == c2.tzhaarToKill) { - c2.waveId++; - CycleEventHandler.getSingleton().addEvent(c2, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (c2 != null) { - Server.fightCaves.spawnNextWave(c2); - } - container.stop(); - } - @Override - public void stop() { - - } - }, 15); - - } - } - - public static void handleJadDeath(int i) { - Client c = (Client) PlayerHandler.players[NpcHandler.npcs[i].spawnedBy]; - if (c.inFightCaves()) { - c.getItemAssistant().addItem(6570, 1); - c.getItemAssistant().addItem(6529, 8032); - c.getDialogueHandler().sendDialogues(103, 2617); - c.getActionSender().sendMessage("You were victorious!"); - c.getPlayerAssistant().resetTzhaar(); - c.killedJad = true; - c.waveId = 300; - c.setSpecialTarget(null); - } else { - c.getActionSender().sendMessage("You must be in the fight caves to do this."); - } - } - - public static void healJad(Client player, int i) { - if (NpcHandler.npcs[i].npcType == YT_HURKOT && !NpcHandler.npcs[i].isDead) { - if (player.getSpecialTarget() != null) { - if (player.getSpecialTarget().npcType == TZTOK_JAD) { - Npc jad = player.getSpecialTarget(); - NpcHandler.npcs[i].gfx0(444); - NpcHandler.npcs[i].startAnimation(2639, i); - jad.HP += 1+Misc.random(8); - if (jad.HP >= getHp(TZTOK_JAD)) { - jad.HP = getHp(TZTOK_JAD); - if (player.spawnedHealers < 4) - spawnHealers(player, i, 4-player.spawnedHealers); - } - } - } - } - } - - /** - * Checks if a tzhaar npc has been killed, if so then it checks if it needs - * to do the tz-kek effect. If tzKek spawn has been killed twice or didn't - * need to be killed it calls killedTzhaar. - * - * @param i - * The npc. - */ - public static void tzhaarDeathHandler(int i) { - if (isFightCaveNpc(i) && NpcHandler.npcs[i].npcType != FightCaves.TZ_KEK && NpcHandler.npcs[i].npcType != FightCaves.YT_HURKOT) { - killedTzhaar(i); - } - if (NpcHandler.npcs[i].npcType == FightCaves.TZ_KEK_SPAWN) { - int p = NpcHandler.npcs[i].killerId; - if (PlayerHandler.players[p] != null) { - Client c = (Client) PlayerHandler.players[p]; - c.tzKekSpawn += 1; - if (c.tzKekSpawn == 2) { - killedTzhaar(i); - c.tzKekSpawn = 0; - } - } - } - if (NpcHandler.npcs[i].npcType == FightCaves.TZ_KEK) { - int p = NpcHandler.npcs[i].killerId; - if (PlayerHandler.players[p] != null) { - Client c = (Client) PlayerHandler.players[p]; - FightCaves.tzKekEffect(c, i); - } - } - } - - /** - * Checks if something is a fight cave npc. - * - * @param i - * The npc. - * @return Whether or not it is a fight caves npc. - */ - public static boolean isFightCaveNpc(int i) { - switch (NpcHandler.npcs[i].npcType) { - case FightCaves.TZ_KIH: - case FightCaves.TZ_KEK: - case FightCaves.TZ_KEK_SPAWN: - case FightCaves.TOK_XIL: - case FightCaves.YT_MEJKOT: - case FightCaves.KET_ZEK: - case FightCaves.TZTOK_JAD: - case FightCaves.YT_HURKOT: - return true; - } - return false; - } - -} +package com.rebotted.game.content.minigames; + +import com.rebotted.GameEngine; +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.npcs.Npc; +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerHandler; +import com.rebotted.util.Misc; + +public class FightCaves { + + public static final int TZ_KIH = 2627, TZ_KEK_SPAWN = 2738, TZ_KEK = 2630, + TOK_XIL = 2631, YT_MEJKOT = 2741, KET_ZEK = 2743, TZTOK_JAD = 2745, YT_HURKOT = 2746; + + /** + * Holds the data for the 63 waves fight cave. + */ + private final int[][] WAVES = { + { TZ_KIH }, + { TZ_KIH, TZ_KIH }, + { TZ_KEK }, + { TZ_KEK, TZ_KIH }, + { TZ_KEK, TZ_KIH, TZ_KIH }, + { TZ_KEK, TZ_KEK }, + { TOK_XIL }, + { TOK_XIL, TZ_KIH }, + { TOK_XIL, TZ_KIH, TZ_KIH }, + { TOK_XIL, TZ_KEK }, + { TOK_XIL, TZ_KEK, TZ_KIH }, + { TOK_XIL, TZ_KEK, TZ_KIH, TZ_KIH }, + { TOK_XIL, TZ_KEK, TZ_KEK }, + { TOK_XIL, TOK_XIL }, + { YT_MEJKOT }, + { YT_MEJKOT, TZ_KIH }, + { YT_MEJKOT, TZ_KIH, TZ_KIH }, + { YT_MEJKOT, TZ_KEK }, + { YT_MEJKOT, TZ_KEK, TZ_KIH }, + { YT_MEJKOT, TZ_KEK, TZ_KIH, TZ_KIH }, + { YT_MEJKOT, TZ_KEK, TZ_KEK }, + { YT_MEJKOT, TOK_XIL }, + { YT_MEJKOT, TOK_XIL, TZ_KIH }, + { YT_MEJKOT, TOK_XIL, TZ_KIH, TZ_KIH }, + { YT_MEJKOT, TOK_XIL, TZ_KEK }, + { YT_MEJKOT, TOK_XIL, TZ_KEK, TZ_KIH }, + { YT_MEJKOT, TOK_XIL, TZ_KEK, TZ_KIH, TZ_KIH }, + { YT_MEJKOT, TOK_XIL, TZ_KEK, TZ_KEK }, + { YT_MEJKOT, TOK_XIL, TOK_XIL }, + { YT_MEJKOT, YT_MEJKOT }, + { KET_ZEK }, + { KET_ZEK, TZ_KIH }, + { KET_ZEK, TZ_KIH, TZ_KIH }, + { KET_ZEK, TZ_KEK }, + { KET_ZEK, TZ_KEK, TZ_KIH }, + { KET_ZEK, TZ_KEK, TZ_KIH, TZ_KIH }, + { KET_ZEK, TZ_KEK, TZ_KEK }, + { KET_ZEK, TOK_XIL }, + { KET_ZEK, TOK_XIL, TZ_KIH }, + { KET_ZEK, TOK_XIL, TZ_KIH, TZ_KIH }, + { KET_ZEK, TOK_XIL, TZ_KEK }, + { KET_ZEK, TOK_XIL, TZ_KEK, TZ_KIH }, + { KET_ZEK, TOK_XIL, TZ_KEK, TZ_KIH, TZ_KIH }, + { KET_ZEK, TOK_XIL, TZ_KEK, TZ_KEK }, + { KET_ZEK, TOK_XIL, TOK_XIL }, + { KET_ZEK, YT_MEJKOT }, + { KET_ZEK, YT_MEJKOT, TZ_KIH }, + { KET_ZEK, YT_MEJKOT, TZ_KIH, TZ_KIH }, + { KET_ZEK, YT_MEJKOT, TZ_KEK }, + { KET_ZEK, YT_MEJKOT, TZ_KEK, TZ_KIH }, + { KET_ZEK, YT_MEJKOT, TZ_KEK, TZ_KIH, TZ_KIH }, + { KET_ZEK, YT_MEJKOT, TZ_KEK, TZ_KEK }, + { KET_ZEK, YT_MEJKOT, TOK_XIL }, + { KET_ZEK, YT_MEJKOT, TOK_XIL, TZ_KIH }, + { KET_ZEK, YT_MEJKOT, TOK_XIL, TZ_KIH, TZ_KIH }, + { KET_ZEK, YT_MEJKOT, TOK_XIL, TZ_KEK }, + { KET_ZEK, YT_MEJKOT, TOK_XIL, TZ_KEK, TZ_KIH }, + { KET_ZEK, YT_MEJKOT, TOK_XIL, TZ_KEK, TZ_KIH, TZ_KIH }, + { KET_ZEK, YT_MEJKOT, TOK_XIL, TZ_KEK, TZ_KEK }, + { KET_ZEK, YT_MEJKOT, TOK_XIL, TOK_XIL }, + { KET_ZEK, YT_MEJKOT, YT_MEJKOT }, + { KET_ZEK, KET_ZEK }, + { TZTOK_JAD } + }; + + private static final int[][] JAD_SPAWNS = {{2400, 5090},{2419, 5080}}; + private static final int[][] HEALER_COORDS = {{2390, 5101}, {2391, 5077}, {2411, 5084}, {2398, 5091}}; + private final static int[][] COORDINATES = {{2403, 5094}, {2390, 5096}, {2392, 5077}, {2408, 5080}, {2413, 5108}, {2381, 5106}, {2379, 5072}, {2420, 5082}}; + + /** + * Handles spawning the next fightcave wave. + * + * @param player + * The player. + */ + public void spawnNextWave(Client player) { + if (player != null) { + if (player.waveId >= WAVES.length) { + player.waveId = 0; + return; + } + if (player.waveId < 0) { + player.waveId = 0; + return; + } + int npcAmount = WAVES[player.waveId].length; + int wave = player.waveId +1; + if (player.waveId < 62 && player.waveId > -1) { + for (int j = 0; j < npcAmount; j++) { + int npc = WAVES[player.waveId][j]; + int X = COORDINATES[j][0]; + int Y = COORDINATES[j][1]; + int H = player.heightLevel; + int hp = getHp(npc); + int max = getMax(npc); + int atk = getAtk(npc); + int def = getDef(npc); + NpcHandler.spawnNpc(player, npc, X, Y, H, 0, hp, max, atk, def, true, false); + } + player.getPacketSender().sendMessage("You are now on wave @red@" + wave + "@bla@."); + } else if (player.waveId == 62) { + player.getDialogueHandler().sendDialogues(102, 2617); + int a = Misc.random(1); + int npc = WAVES[62][0]; + int X = JAD_SPAWNS[a][0]; + int Y = JAD_SPAWNS[a][1]; + int H = player.heightLevel; + int hp = getHp(npc); + int max = getMax(npc); + int atk = getAtk(npc); + int def = getDef(npc); + NpcHandler.spawnNpc(player, npc, X, Y, H, 0, hp, max, atk, def, true, false); + player.getPacketSender().sendMessage("You are now on wave @red@63@bla@."); + } + player.tzhaarToKill = npcAmount; + player.tzhaarKilled = 0; + } + } + + public static void ytMejKotEffect(Client player, int i) { + if(NpcHandler.npcs[i].npcType == YT_MEJKOT) { + if (NpcHandler.npcs[i].hitsToHeal < 2) { + NpcHandler.npcs[i].hitsToHeal += 1; + if (NpcHandler.npcs[i].hitsToHeal == 2) { + NpcHandler.npcs[i].hitsToHeal = 0; + NpcHandler.npcs[i].gfx0(444); + NpcHandler.npcs[i].startAnimation(2639, i); + NpcHandler.npcs[i].HP += 1+Misc.random(7); + if (NpcHandler.npcs[i].HP > getHp(YT_MEJKOT)) + NpcHandler.npcs[i].HP = getHp(YT_MEJKOT); + } + } + } + } + + public static void spawnHealers(Player c, int i, int amount) { + if (c.spawnedHealers < 4) { + int hp = getHp(YT_HURKOT); + int max = getMax(YT_HURKOT); + int atk = getAtk(YT_HURKOT); + int def = getDef(YT_HURKOT); + for (int i1 = 0; i1 < amount; i1++) { + NpcHandler.spawnNpc(c, YT_HURKOT, HEALER_COORDS[i1][0], HEALER_COORDS[i1][1], c.heightLevel, 0, hp, max, atk, def, false, false); + } + c.spawnedHealers = amount; + c.canHealersRespawn = false; + } + } + + /** + * Handles the correct tz-kih effect; prayer is drained by the formula: + * drain = damage + 1 + * + * @param player + * The player + * @param i + * The npcId + * @param damage + * What the npchit + */ + public static void tzKihEffect(Client player, int i, int damage) { + if (NpcHandler.npcs[i].npcType == TZ_KIH) { + if (player != null) { + if (player.playerLevel[5] > 0) { + player.playerLevel[5] -= 1 + damage; + player.getPlayerAssistant().refreshSkill(5); + } + } + } + } + + public static void tzKekEffect(Client player, int i) { + if (NpcHandler.npcs[i].npcType == TZ_KEK) { + + int x = NpcHandler.npcs[i].absX + 2; + int y = NpcHandler.npcs[i].absY + 2; + int x1 = NpcHandler.npcs[i].absX - 2; + int y1 = NpcHandler.npcs[i].absY - 2; + + int hp = getHp(TZ_KEK_SPAWN); + int max = getMax(TZ_KEK_SPAWN); + int atk = getAtk(TZ_KEK_SPAWN); + int def = getDef(TZ_KEK_SPAWN); + + if (player != null) { + if (player.tzKekTimer == 0) { + if (NpcHandler.npcs[i].isDead) { + NpcHandler.spawnNpc(player, TZ_KEK_SPAWN, x, y, + player.heightLevel, 0, hp, max, atk, def, true, + false); + NpcHandler.spawnNpc(player, TZ_KEK_SPAWN, x1, y1, + player.heightLevel, 0, hp, max, atk, def, true, + false); + } + } + } + } + } + + public static int getHp(int npc) { + switch (npc) { + case TZ_KIH: + case TZ_KEK_SPAWN: + return 10; + case TZ_KEK: + return 20; + case TOK_XIL: + return 40; + case YT_MEJKOT: + return 80; + case KET_ZEK: + return 150; + case YT_HURKOT: + return 80; + case TZTOK_JAD: + return 250; + } + return 100; + } + + public static int getMax(int npc) { + switch (npc) { + case TZ_KIH: + case TZ_KEK_SPAWN: + return 4; + case TZ_KEK: + return 7; + case TOK_XIL: + return 13; + case YT_MEJKOT: + return 28; + case KET_ZEK: + return 54; + case TZTOK_JAD: + return 97; + case YT_HURKOT: + return 16; + } + return 5; + } + + public static int getAtk(int npc) { + switch (npc) { + case TZ_KIH: + case TZ_KEK_SPAWN: + return 30; + case TZ_KEK: + return 50; + case TOK_XIL: + return 100; + case YT_MEJKOT: + return 150; + case KET_ZEK: + return 450; + case TZTOK_JAD: + return 650; + case YT_HURKOT: + return 120; + } + return 100; + } + + public static int getDef(int npc) { + switch (npc) { + case TZ_KIH: + case TZ_KEK_SPAWN: + return 30; + case TZ_KEK: + return 50; + case TOK_XIL: + return 100; + case YT_MEJKOT: + return 150; + case KET_ZEK: + return 300; + case TZTOK_JAD: + return 500; + case YT_HURKOT: + return 125; + } + return 100; + } + + private static void killedTzhaar(int i) { + final Client c2 = (Client) PlayerHandler.players[NpcHandler.npcs[i].spawnedBy]; + c2.tzhaarKilled++; + if (c2.tzhaarKilled == c2.tzhaarToKill) { + c2.waveId++; + CycleEventHandler.getSingleton().addEvent(c2, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (c2 != null) { + GameEngine.fightCaves.spawnNextWave(c2); + } + container.stop(); + } + @Override + public void stop() { + + } + }, 15); + + } + } + + public static void handleJadDeath(int i) { + Client c = (Client) PlayerHandler.players[NpcHandler.npcs[i].spawnedBy]; + if (c.inFightCaves()) { + c.getItemAssistant().addItem(6570, 1); + c.getItemAssistant().addItem(6529, 8032); + c.getDialogueHandler().sendDialogues(103, 2617); + c.getPacketSender().sendMessage("You were victorious!"); + c.getPlayerAssistant().resetTzhaar(); + c.killedJad = true; + c.waveId = 300; + c.setSpecialTarget(null); + } else { + c.getPacketSender().sendMessage("You must be in the fight caves to do this."); + } + } + + public static void healJad(Player c, int i) { + if (NpcHandler.npcs[i].npcType == YT_HURKOT && !NpcHandler.npcs[i].isDead) { + if (c.getSpecialTarget() != null) { + if (c.getSpecialTarget().npcType == TZTOK_JAD) { + Npc jad = c.getSpecialTarget(); + NpcHandler.npcs[i].gfx0(444); + NpcHandler.npcs[i].startAnimation(2639, i); + jad.HP += 1+Misc.random(8); + if (jad.HP >= getHp(TZTOK_JAD)) { + jad.HP = getHp(TZTOK_JAD); + if (c.spawnedHealers < 4) + spawnHealers(c, i, 4-c.spawnedHealers); + } + } + } + } + } + + /** + * Checks if a tzhaar npc has been killed, if so then it checks if it needs + * to do the tz-kek effect. If tzKek spawn has been killed twice or didn't + * need to be killed it calls killedTzhaar. + * + * @param i + * The npc. + */ + public static void tzhaarDeathHandler(int i) { + if (isFightCaveNpc(i) && NpcHandler.npcs[i].npcType != FightCaves.TZ_KEK && NpcHandler.npcs[i].npcType != FightCaves.YT_HURKOT) { + killedTzhaar(i); + } + if (NpcHandler.npcs[i].npcType == FightCaves.TZ_KEK_SPAWN) { + int p = NpcHandler.npcs[i].killerId; + if (PlayerHandler.players[p] != null) { + Client c = (Client) PlayerHandler.players[p]; + c.tzKekSpawn += 1; + if (c.tzKekSpawn == 2) { + killedTzhaar(i); + c.tzKekSpawn = 0; + } + } + } + if (NpcHandler.npcs[i].npcType == FightCaves.TZ_KEK) { + int p = NpcHandler.npcs[i].killerId; + if (PlayerHandler.players[p] != null) { + Client c = (Client) PlayerHandler.players[p]; + FightCaves.tzKekEffect(c, i); + } + } + } + + /** + * Checks if something is a fight cave npc. + * + * @param i + * The npc. + * @return Whether or not it is a fight caves npc. + */ + public static boolean isFightCaveNpc(int i) { + switch (NpcHandler.npcs[i].npcType) { + case FightCaves.TZ_KIH: + case FightCaves.TZ_KEK: + case FightCaves.TZ_KEK_SPAWN: + case FightCaves.TOK_XIL: + case FightCaves.YT_MEJKOT: + case FightCaves.KET_ZEK: + case FightCaves.TZTOK_JAD: + case FightCaves.YT_HURKOT: + return true; + } + return false; + } + +} diff --git a/2006Redone Server/src/redone/game/content/minigames/FightPits.java b/2006Redone Server/src/com/rebotted/game/content/minigames/FightPits.java similarity index 65% rename from 2006Redone Server/src/redone/game/content/minigames/FightPits.java rename to 2006Redone Server/src/com/rebotted/game/content/minigames/FightPits.java index 2595ad96..a8e9861e 100644 --- a/2006Redone Server/src/redone/game/content/minigames/FightPits.java +++ b/2006Redone Server/src/com/rebotted/game/content/minigames/FightPits.java @@ -1,237 +1,231 @@ -package redone.game.content.minigames; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -import redone.game.players.Client; -import redone.util.Misc; - -/** - * @author ArrowzFtw - */ -public class FightPits { - - /** - * @note States of minigames - */ - private static final String PLAYING = "PLAYING"; - private static final String WAITING = "WAITING"; - /** - * @note Current fight pits champion - */ - private static String pitsChampion = "None"; - /** - * @note Countdown for game to start - */ - private static int gameStartTimer = 80; - /** - * @note Elapsed Game start time - */ - private static int elapsedGameTime = 0; - private static final int END_GAME_TIME = 400; - /* - * @note Game started or not? - */ - private static boolean gameStarted = false; - /** - * @note Stores player and State - */ - private static Map playerMap = Collections - .synchronizedMap(new HashMap()); - - /** - * @note Where to spawn when pits game starts - */ - private static final int MINIGAME_START_POINT_X = 2392; - private static final int MINIGAME_START_POINT_Y = 5139; - /** - * @note Exit game area - */ - private static final int EXIT_GAME_X = 2399; - private static final int EXIT_GAME_Y = 5169; - /** - * @note Exit waiting room - */ - public static final int EXIT_WAITING_X = 2399; - public static final int EXIT_WAITING_Y = 5177; - /** - * @note Waiting room coordinates - */ - private static final int WAITING_ROOM_X = 2399; - private static final int WAITING_ROOM_Y = 5175; - - /** - * @return HashMap Value - */ - public static String getState(Client c) { - return playerMap.get(c); - } - - private static final int TOKKUL_ID = 6529; - - /** - * @note Adds player to waiting room. - */ - public static void addPlayer(Client c) { - playerMap.put(c, WAITING); - c.getPlayerAssistant().movePlayer(WAITING_ROOM_X, WAITING_ROOM_Y, 0); - } - - /** - * @note Starts the game and moves players to arena - */ - private static void enterGame(Client c) { - playerMap.put(c, PLAYING); - int teleportToX = MINIGAME_START_POINT_X + Misc.random(12); - int teleportToY = MINIGAME_START_POINT_Y + Misc.random(12); - c.getPlayerAssistant().movePlayer(teleportToX, teleportToY, 0); - c.inPits = true; - // c.getPA().showOption(3, 0, "Attack", 1); - // c.getPA().showOption(3, 0, "Null", 1); - } - - /** - * @note Removes player from pits if there in waiting or in game - */ - public static void removePlayer(Client c, boolean forceRemove) { - c.inPits = false; - if (forceRemove) { - c.getPlayerAssistant() - .movePlayer(EXIT_WAITING_X, EXIT_WAITING_Y, 0); - playerMap.remove(c); - return; - } - String state = playerMap.get(c); - if (state == null) { - c.getPlayerAssistant() - .movePlayer(EXIT_WAITING_X, EXIT_WAITING_Y, 0); - return; - } - - if (state.equals(PLAYING)) { - if (getListCount(PLAYING) - 1 == 0 && !forceRemove) { - pitsChampion = c.playerName; - c.headIcon = 21; - c.updateRequired = true; - c.getItemAssistant() - .addItem(TOKKUL_ID, 1500 + Misc.random(500)); - - } - c.getPlayerAssistant().movePlayer(EXIT_GAME_X, EXIT_GAME_Y, 0); - } else if (state.equals(WAITING)) { - c.getPlayerAssistant() - .movePlayer(EXIT_WAITING_X, EXIT_WAITING_Y, 0); - c.getPlayerAssistant().walkableInterface(-1); - } - playerMap.remove(c); - - if (state.equals(PLAYING)) { - if (!forceRemove) { - playerMap.put(c, WAITING); - } - } - } - - /** - * @return Players playing fight pits - */ - public static int getListCount(String state) { - int count = 0; - for (String s : playerMap.values()) { - if (state == s) { - count++; - } - } - return count; - } - - /** - * @note Updates players - */ - private static void update() { - for (Client c : playerMap.keySet()) { - String status = playerMap.get(c); - @SuppressWarnings("unused") - boolean updated = status == WAITING ? updateWaitingRoom(c) - : updateGame(c); - } - } - - /** - * @note Updates waiting room interfaces etc. - */ - public static boolean updateWaitingRoom(Client c) { - c.getPlayerAssistant().sendFrame126( - "Next Game Begins In : " + gameStartTimer, 2805); - c.getPlayerAssistant().sendFrame126( - "Champion: JalYt-Ket-" + pitsChampion, 2806); - c.getPlayerAssistant().sendConfig(560, 1); - c.getPlayerAssistant().walkableInterface(2804); - return true; - } - - /** - * @note Updates players in game interfaces etc. - */ - public static boolean updateGame(Client c) { - c.getPlayerAssistant().sendFrame126( - "Foes Remaining: " + getListCount(PLAYING), 2805); - c.getPlayerAssistant().sendFrame126( - "Champion: JalYt-Ket-" + pitsChampion, 2806); - c.getPlayerAssistant().sendConfig(560, 1); - c.getPlayerAssistant().walkableInterface(2804); - return true; - } - - /** - * @note Handles death and respawn rubbish. - */ - public static void handleDeath(Client c) { - removePlayer(c, true); - } - - /* - * @process 600ms Tick - */ - public static void process() { - update(); - if (!gameStarted) { - if (gameStartTimer > 0) { - gameStartTimer--; - } else if (gameStartTimer == 0) { - if (getListCount(WAITING) > 4) { - beginGame(); - } - gameStartTimer = 80; - } - } - if (gameStarted) { - elapsedGameTime++; - if (elapsedGameTime == END_GAME_TIME) { - endGame(); - elapsedGameTime = 0; - gameStarted = false; - gameStartTimer = 80; - } - } - } - - /** - * @note Starts game for the players in waiting room - */ - private static void beginGame() { - for (Client c : playerMap.keySet()) { - enterGame(c); - } - } - - /** - * @note Ends game and returns player to their normal spot. - */ - private static void endGame() { - for (Client c : playerMap.keySet()) { - removePlayer(c, true); - } - } -} +package com.rebotted.game.content.minigames; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +/** + * @author ArrowzFtw + */ +public class FightPits { + + /** + * @note States of minigames + */ + private static final String PLAYING = "PLAYING"; + private static final String WAITING = "WAITING"; + /** + * @note Current fight pits champion + */ + private static String pitsChampion = "None"; + /** + * @note Countdown for game to start + */ + private static int gameStartTimer = 80; + /** + * @note Elapsed Game start time + */ + private static int elapsedGameTime = 0; + private static final int END_GAME_TIME = 400; + /* + * @note Game started or not? + */ + private static boolean gameStarted = false; + /** + * @note Stores player and State + */ + private static Map playerMap = Collections + .synchronizedMap(new HashMap()); + + /** + * @note Where to spawn when pits game starts + */ + private static final int MINIGAME_START_POINT_X = 2392; + private static final int MINIGAME_START_POINT_Y = 5139; + /** + * @note Exit game area + */ + private static final int EXIT_GAME_X = 2399; + private static final int EXIT_GAME_Y = 5169; + /** + * @note Exit waiting room + */ + public static final int EXIT_WAITING_X = 2399; + public static final int EXIT_WAITING_Y = 5177; + /** + * @note Waiting room coordinates + */ + private static final int WAITING_ROOM_X = 2399; + private static final int WAITING_ROOM_Y = 5175; + + /** + * @return HashMap Value + */ + public static String getState(Player player) { + return playerMap.get(player); + } + + private static final int TOKKUL_ID = 6529; + + /** + * @note Adds player to waiting room. + */ + public static void addPlayer(Player c) { + playerMap.put(c, WAITING); + c.getPlayerAssistant().movePlayer(WAITING_ROOM_X, WAITING_ROOM_Y, 0); + } + + /** + * @note Starts the game and moves players to arena + */ + private static void enterGame(Player c) { + playerMap.put(c, PLAYING); + int teleportToX = MINIGAME_START_POINT_X + Misc.random(12); + int teleportToY = MINIGAME_START_POINT_Y + Misc.random(12); + c.getPlayerAssistant().movePlayer(teleportToX, teleportToY, 0); + c.inPits = true; + // c.getPA().showOption(3, 0, "Attack", 1); + // c.getPA().showOption(3, 0, "Null", 1); + } + + /** + * @note Removes player from pits if there in waiting or in game + */ + public static void removePlayer(Player player, boolean forceRemove) { + player.inPits = false; + if (forceRemove) { + player.getPlayerAssistant() + .movePlayer(EXIT_WAITING_X, EXIT_WAITING_Y, 0); + playerMap.remove(player); + return; + } + String state = playerMap.get(player); + if (state == null) { + player.getPlayerAssistant() + .movePlayer(EXIT_WAITING_X, EXIT_WAITING_Y, 0); + return; + } + + if (state.equals(PLAYING)) { + if (getListCount(PLAYING) - 1 == 0 && !forceRemove) { + pitsChampion = player.playerName; + player.headIcon = 21; + player.updateRequired = true; + player.getItemAssistant() + .addItem(TOKKUL_ID, 1500 + Misc.random(500)); + + } + player.getPlayerAssistant().movePlayer(EXIT_GAME_X, EXIT_GAME_Y, 0); + } else if (state.equals(WAITING)) { + player.getPlayerAssistant() + .movePlayer(EXIT_WAITING_X, EXIT_WAITING_Y, 0); + player.getPacketSender().walkableInterface(-1); + } + playerMap.remove(player); + + if (state.equals(PLAYING)) { + if (!forceRemove) { + playerMap.put(player, WAITING); + } + } + } + + /** + * @return Players playing fight pits + */ + public static int getListCount(String state) { + int count = 0; + for (String s : playerMap.values()) { + if (state == s) { + count++; + } + } + return count; + } + + /** + * @note Updates players + */ + private static void update() { + for (Player c : playerMap.keySet()) { + String status = playerMap.get(c); + @SuppressWarnings("unused") + boolean updated = status == WAITING ? updateWaitingRoom(c) : updateGame(c); + } + } + + /** + * @note Updates waiting room interfaces etc. + */ + public static boolean updateWaitingRoom(Player c) { + c.getPacketSender().sendFrame126("Next Game Begins In : " + gameStartTimer, 2805); + c.getPacketSender().sendFrame126("Champion: JalYt-Ket-" + pitsChampion, 2806); + c.getPacketSender().sendConfig(560, 1); + c.getPacketSender().walkableInterface(2804); + return true; + } + + /** + * @note Updates players in game interfaces etc. + */ + public static boolean updateGame(Player c) { + c.getPacketSender().sendFrame126("Foes Remaining: " + getListCount(PLAYING), 2805); + c.getPacketSender().sendFrame126("Champion: JalYt-Ket-" + pitsChampion, 2806); + c.getPacketSender().sendConfig(560, 1); + c.getPacketSender().walkableInterface(2804); + return true; + } + + /** + * @note Handles death and respawn rubbish. + */ + public static void handleDeath(Player player) { + removePlayer(player, true); + } + + /* + * @process 600ms Tick + */ + public static void process() { + update(); + if (!gameStarted) { + if (gameStartTimer > 0) { + gameStartTimer--; + } else if (gameStartTimer == 0) { + if (getListCount(WAITING) > 4) { + beginGame(); + } + gameStartTimer = 80; + } + } + if (gameStarted) { + elapsedGameTime++; + if (elapsedGameTime == END_GAME_TIME) { + endGame(); + elapsedGameTime = 0; + gameStarted = false; + gameStartTimer = 80; + } + } + } + + /** + * @note Starts game for the players in waiting room + */ + private static void beginGame() { + for (Player c : playerMap.keySet()) { + enterGame(c); + } + } + + /** + * @note Ends game and returns player to their normal spot. + */ + private static void endGame() { + for (Player c : playerMap.keySet()) { + removePlayer(c, true); + } + } +} diff --git a/2006Redone Server/src/redone/game/content/minigames/MageArena.java b/2006Redone Server/src/com/rebotted/game/content/minigames/MageArena.java similarity index 79% rename from 2006Redone Server/src/redone/game/content/minigames/MageArena.java rename to 2006Redone Server/src/com/rebotted/game/content/minigames/MageArena.java index e3970b59..ed99396e 100644 --- a/2006Redone Server/src/redone/game/content/minigames/MageArena.java +++ b/2006Redone Server/src/com/rebotted/game/content/minigames/MageArena.java @@ -1,267 +1,267 @@ -/* - * To change this template, choose Tools | Templates and open the template in - * the editor. - */ - -package redone.game.content.minigames; - -import redone.game.items.ItemAssistant; -import redone.game.players.Client; - -/** - * @author D - */ -public class MageArena { - - private final Client c; - - public MageArena(Client c) { - this.c = c; - } - - private final int telePoints = 0; - private final int enchantPoints = 0; - private final int gravePoints = 0; - private final int alchPoints = 0; - - private final int[] shopItems = { 6908, 6910, 6912, 6914, 6916, 6918, 6920, - 6922, 6924, 6889, 6926, 1391, 4695, 4696, 4698, 4697, 4694, 4699, - 564, 561, 560, 563, 565, 6891 }; - - private final String[] interfaceText = { "Magic Training Arena Shop", - "Telekinetic Pizazz Points", "Enchantment Pizazz Points", - "Graveyard Pizazz Points", "Alchemist Pizazz Points" }; - - public void openShop() { - - for (int i = 0; i < shopItems.length; i++) { - c.getPlayerAssistant().sendFrame34(15948, shopItems[i], i, 100); - } - - for (int i = 15950; i < interfaceText.length; i++) { - c.getPlayerAssistant().sendFrame126(interfaceText[i - 15950], i); - } - - c.getPlayerAssistant().sendFrame126(Integer.toString(telePoints), 15955); - c.getPlayerAssistant().sendFrame126(Integer.toString(enchantPoints), - 15956); - c.getPlayerAssistant().sendFrame126(Integer.toString(gravePoints), 15957); - c.getPlayerAssistant().sendFrame126(Integer.toString(alchPoints), 15958); - c.getPlayerAssistant().showInterface(15944); - } - - public int getTelVal(int itemId) { - - switch (itemId) { - case 6922: - return 175; - case 6918: - return 350; - case 6916: - return 400; - case 6924: - return 450; - case 6920: - return 120; - case 1391: - return 1; - case 6908: - return 30; - case 6910: - return 60; - case 6912: - return 60; - case 6914: - return 150; - case 6889: - return 500; - case 6926: - return 200; - - case 4695: - case 4694: - case 4696: - case 4697: - case 4698: - case 4699: - return 1; - - case 564: - case 561: - return 0; - - case 560: - case 563: - case 565: - return 2; - - default: - return 1; - - } - } - - public int getAlchVal(int itemId) { - - switch (itemId) { - case 6922: - return 225; - case 6918: - return 400; - case 6916: - return 450; - case 6924: - return 500; - case 6920: - return 120; - case 1391: - return 2; - case 6908: - return 30; - case 6910: - return 60; - case 6912: - return 200; - case 6914: - return 240; - case 6889: - return 550; - case 6926: - return 300; - - case 4695: - case 4694: - case 4696: - case 4697: - case 4698: - case 4699: - return 1; - - case 564: - case 561: - return 1; - - case 560: - case 563: - case 565: - return 2; - - default: - return 1; - - } - } - - public int getEnchVal(int itemId) { - - switch (itemId) { - case 6922: - return 1300; - case 6918: - return 3000; - case 6916: - return 4000; - case 6924: - return 5000; - case 6920: - return 1200; - case 1391: - return 20; - case 6908: - return 300; - case 6910: - return 600; - case 6912: - return 1500; - case 6914: - return 2400; - case 6889: - return 6000; - case 6926: - return 2000; - - case 4695: - case 4694: - case 4696: - case 4697: - case 4698: - case 4699: - return 15; - - case 564: - case 561: - return 5; - - case 560: - case 563: - case 565: - return 25; - - default: - return 1; - - } - } - - public int getGraveValue(int itemId) { - - switch (itemId) { - case 6922: - return 175; - case 6918: - return 350; - case 6916: - return 400; - case 6924: - return 450; - case 6920: - return 120; - case 1391: - return 2; - case 6908: - return 30; - case 6910: - return 60; - case 6912: - return 150; - case 6914: - return 240; - case 6889: - return 500; - case 6926: - return 200; - - case 4695: - case 4694: - case 4696: - case 4697: - case 4698: - case 4699: - return 1; - - case 564: - case 561: - return 1; - - case 560: - case 563: - case 565: - return 2; - - default: - return 1; - - } - } - - public void sendMessage(int itemId) { - c.getActionSender().sendMessage( - ItemAssistant.getItemName(itemId) + " costs " - + getGraveValue(itemId) + " Graveyard points, " - + getAlchVal(itemId) + " Alchemy points,"); - c.getActionSender().sendMessage( - "" + getEnchVal(itemId) + " Enchantment points, and " - + getTelVal(itemId) + " Telekinetic points."); - } - -} +/* + * To change this template, choose Tools | Templates and open the template in + * the editor. + */ + +package com.rebotted.game.content.minigames; + +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Client; + +/** + * @author D + */ +public class MageArena { + + private final Client c; + + public MageArena(Client c) { + this.c = c; + } + + private final int telePoints = 0; + private final int enchantPoints = 0; + private final int gravePoints = 0; + private final int alchPoints = 0; + + private final int[] shopItems = { 6908, 6910, 6912, 6914, 6916, 6918, 6920, + 6922, 6924, 6889, 6926, 1391, 4695, 4696, 4698, 4697, 4694, 4699, + 564, 561, 560, 563, 565, 6891 }; + + private final String[] interfaceText = { "Magic Training Arena Shop", + "Telekinetic Pizazz Points", "Enchantment Pizazz Points", + "Graveyard Pizazz Points", "Alchemist Pizazz Points" }; + + public void openShop() { + + for (int i = 0; i < shopItems.length; i++) { + c.getPacketSender().sendFrame34(15948, shopItems[i], i, 100); + } + + for (int i = 15950; i < interfaceText.length; i++) { + c.getPacketSender().sendFrame126(interfaceText[i - 15950], i); + } + + c.getPacketSender().sendFrame126(Integer.toString(telePoints), 15955); + c.getPacketSender().sendFrame126(Integer.toString(enchantPoints), + 15956); + c.getPacketSender().sendFrame126(Integer.toString(gravePoints), 15957); + c.getPacketSender().sendFrame126(Integer.toString(alchPoints), 15958); + c.getPacketSender().showInterface(15944); + } + + public int getTelVal(int itemId) { + + switch (itemId) { + case 6922: + return 175; + case 6918: + return 350; + case 6916: + return 400; + case 6924: + return 450; + case 6920: + return 120; + case 1391: + return 1; + case 6908: + return 30; + case 6910: + return 60; + case 6912: + return 60; + case 6914: + return 150; + case 6889: + return 500; + case 6926: + return 200; + + case 4695: + case 4694: + case 4696: + case 4697: + case 4698: + case 4699: + return 1; + + case 564: + case 561: + return 0; + + case 560: + case 563: + case 565: + return 2; + + default: + return 1; + + } + } + + public int getAlchVal(int itemId) { + + switch (itemId) { + case 6922: + return 225; + case 6918: + return 400; + case 6916: + return 450; + case 6924: + return 500; + case 6920: + return 120; + case 1391: + return 2; + case 6908: + return 30; + case 6910: + return 60; + case 6912: + return 200; + case 6914: + return 240; + case 6889: + return 550; + case 6926: + return 300; + + case 4695: + case 4694: + case 4696: + case 4697: + case 4698: + case 4699: + return 1; + + case 564: + case 561: + return 1; + + case 560: + case 563: + case 565: + return 2; + + default: + return 1; + + } + } + + public int getEnchVal(int itemId) { + + switch (itemId) { + case 6922: + return 1300; + case 6918: + return 3000; + case 6916: + return 4000; + case 6924: + return 5000; + case 6920: + return 1200; + case 1391: + return 20; + case 6908: + return 300; + case 6910: + return 600; + case 6912: + return 1500; + case 6914: + return 2400; + case 6889: + return 6000; + case 6926: + return 2000; + + case 4695: + case 4694: + case 4696: + case 4697: + case 4698: + case 4699: + return 15; + + case 564: + case 561: + return 5; + + case 560: + case 563: + case 565: + return 25; + + default: + return 1; + + } + } + + public int getGraveValue(int itemId) { + + switch (itemId) { + case 6922: + return 175; + case 6918: + return 350; + case 6916: + return 400; + case 6924: + return 450; + case 6920: + return 120; + case 1391: + return 2; + case 6908: + return 30; + case 6910: + return 60; + case 6912: + return 150; + case 6914: + return 240; + case 6889: + return 500; + case 6926: + return 200; + + case 4695: + case 4694: + case 4696: + case 4697: + case 4698: + case 4699: + return 1; + + case 564: + case 561: + return 1; + + case 560: + case 563: + case 565: + return 2; + + default: + return 1; + + } + } + + public void sendMessage(int itemId) { + c.getPacketSender().sendMessage( + ItemAssistant.getItemName(itemId) + " costs " + + getGraveValue(itemId) + " Graveyard points, " + + getAlchVal(itemId) + " Alchemy points,"); + c.getPacketSender().sendMessage( + "" + getEnchVal(itemId) + " Enchantment points, and " + + getTelVal(itemId) + " Telekinetic points."); + } + +} diff --git a/2006Redone Server/src/redone/game/content/minigames/PestControl.java b/2006Redone Server/src/com/rebotted/game/content/minigames/PestControl.java similarity index 80% rename from 2006Redone Server/src/redone/game/content/minigames/PestControl.java rename to 2006Redone Server/src/com/rebotted/game/content/minigames/PestControl.java index 7dbace5d..568742a9 100644 --- a/2006Redone Server/src/redone/game/content/minigames/PestControl.java +++ b/2006Redone Server/src/com/rebotted/game/content/minigames/PestControl.java @@ -1,450 +1,441 @@ -package redone.game.content.minigames; - -import java.util.HashMap; - -import redone.Server; -import redone.game.content.combat.prayer.PrayerDrain; -import redone.game.npcs.Npc; -import redone.game.npcs.NpcHandler; -import redone.game.players.Client; -import redone.util.Misc; - -/** - * @author Harlan Credits to Sanity - */ - -public class PestControl { - - /** - * /** how long before were put into the game from lobby - */ - private static final int WAIT_TIMER = 60; - /** - * How many players we need to start a game - */ - private final static int PLAYERS_REQUIRED = 1; - /** - * Hashmap for the players in lobby - */ - public static HashMap waitingBoat = new HashMap(); - private static HashMap gamePlayers = new HashMap(); - - private static int gameTimer = -1; - private static int waitTimer = 60; - public static boolean gameStarted = false; - private int properTimer = 0; - public static int KNIGHTS_HEALTH = -1; - - /** - * Array used for storing the portals health - */ - public static int[] portalHealth = { 200, 200, 200, 200 }; - public static int[] portals = { 3777, 3778, 3779, 3780 }; - /** - * array used for storing the npcs used in the minigame - * - * @order npcId, xSpawn, ySpawn, health - */ - - public int shifter = 3732 + Misc.random(9); - public int brawler = 3772 + Misc.random(4); - public int defiler = 3762 + Misc.random(9); - public int ravager = 3742 + Misc.random(4); - public int torcher = 3752 + Misc.random(7); - public int splater = 3727 + Misc.random(4); - - private final int[][] pcNPCData = { { 3777, 2628, 2591 }, // portal - { 3778, 2680, 2588 }, // portal - { 3779, 2669, 2570 }, // portal - { 3780, 2645, 2569 }, // portal - { 3782, 2656, 2592 }, // knight - }; - - private final int[][] voidMonsterData = { - { shifter, 2660 + Misc.random(4), 2592 + Misc.random(4) }, - { brawler, 2663 + Misc.random(4), 2575 + Misc.random(4) }, - { defiler, 2656 + Misc.random(4), 2572 + Misc.random(4) }, - { ravager, 2664 + Misc.random(4), 2574 + Misc.random(4) }, - { torcher, 2656 + Misc.random(4), 2595 + Misc.random(4) }, - { ravager, 2634 + Misc.random(4), 2596 + Misc.random(4) }, - { brawler, 2638 + Misc.random(4), 2588 + Misc.random(4) }, - { shifter, 2637 + Misc.random(4), 2598 + Misc.random(4) }, - { ravager, 2677 + Misc.random(4), 2579 + Misc.random(4) }, - { defiler, 2673 + Misc.random(4), 2584 + Misc.random(4) }, - { defiler, 2673 + Misc.random(4), 2584 + Misc.random(4) }, - { defiler, 2675 + Misc.random(4), 2591 + Misc.random(4) }, - { splater, 2644 + Misc.random(4), 2575 + Misc.random(4) }, - { splater, 2633 + Misc.random(4), 2595 + Misc.random(4) }}; - - public void process() { - try { - if (properTimer > 0) { - properTimer--; - return; - } else { - properTimer = 1; - } - waitBoat(); - if (waitTimer > 0) { - waitTimer--; - } else if (waitTimer == 0) { - startGame(); - } - if (KNIGHTS_HEALTH == 0) { - endGame(false); - } - if (gameStarted && playersInGame() < 1) { - endGame(false); - } - if (gameTimer > 0 && gameStarted) { - gameTimer--; - setGameInterface(); - if (allPortalsDead() || allPortalsDead3()) { - endGame(true); - } - } else if (gameTimer <= 0 && gameStarted) { - endGame(false); - } - } catch (RuntimeException e) { - System.out.println("Failed to set process"); - e.printStackTrace(); - } - } - - /** - * Method we use for removing a player from the pc game - * - * @param player - * The Player. - */ - public static void removePlayerGame(Client player) { - if (gamePlayers.containsKey(player)) { - player.getPlayerAssistant().movePlayer(2657, 2639, 0); - gamePlayers.remove(player); - } - } - - private static void waitBoat() { - for (final Client c : waitingBoat.keySet()) { - if (c != null) { - if (gameStarted && isInPcBoat(c)) { - c.getActionSender().sendMessage("Next Departure: " + (waitTimer + gameTimer) / 60 + " minutes"); - } else { - c.getActionSender().sendMessage("Next Departure: " + waitTimer + " seconds."); - } - } - } - } - - public static void setGameInterface() { - for (final Client player : gamePlayers.keySet()) { - if (player != null) { - if (gameTimer > 60) { - player.getActionSender().sendMessage("Time remaining: " + gameTimer / 60 + " minutes"); - } else if (gameTimer < 60) { - player.getActionSender().sendMessage("Time remaining: " + gameTimer + " seconds"); - } - player.getActionSender().sendMessage("The knights current health is " + KNIGHTS_HEALTH + "."); - player.getActionSender().sendMessage("Your current pc damage is " + player.pcDamage + "."); - } - } - } - - /* - * private void setBoatInterface() { try { for (Client c : - * waitingBoat.keySet()) { if (c != null) { try { if (gameStarted) { - * c.getPlayerAssistant().sendString("Next Departure: " + (waitTimer + - * gameTimer)/60 + " minutes", 21120); } else { - * c.getPlayerAssistant().sendString("Next Departure: " + waitTimer + "", - * 21120); } c.getPlayerAssistant().sendString("Players Ready: " + - * playersInBoat() + "", 21121); c.getPlayerAssistant().sendString("(Need " - * + PLAYERS_REQUIRED + " to 25 players)", 21122); - * c.getPlayerAssistant().sendString("Points: " + c.pcPoints + "", 21123); - * switch (waitTimer) { case 60: c.getPacketDispatcher - * ().sendMessage("Next game will start in: 60 seconds."); break; case 30: - * c. - * getPacketDispatcher().sendMessage("Next game will start in: 30 seconds." - * ); break; } } catch (RuntimeException e) { // TODO Auto-generated catch - * block e.printStackTrace(); } } } } catch (RuntimeException e) { - * System.out.println("Failed to set interfaces"); e.printStackTrace(); } } - */ - - /* - * private void setGameInterface() { for (Client player : - * gamePlayers.keySet()) { if (player != null) { for (int i = 0; i < - * portalHealth.length; i++) { if (portalHealth[i] > 0) { - * player.getPlayerAssistant().sendString("" + portalHealth[i] + "", 21111 + - * i); } else player.getPlayerAssistant().sendString("Dead", 21111 + i); } - * player.getPlayerAssistant().sendString("" + KNIGHTS_HEALTH, 21115); - * player.getPlayerAssistant().sendString("" + player.pcDamage, 21116); if - * (gameTimer > 60) { - * player.getPlayerAssistant().sendString("Time remaining: " + - * (gameTimer/60) + " minutes", 21117); } else { - * player.getPlayerAssistant().sendString("Time remaining: " + gameTimer + - * " seconds", 21117); } } } } - */ - - /*** - * Moving players to arena if there's enough players - */ - private void startGame() { - if (playersInBoat() < PLAYERS_REQUIRED) { - waitTimer = WAIT_TIMER; - return; - } - for (int i = 0; i < portalHealth.length; i++) { - portalHealth[i] = 200; - } - gameStarted = true; - gameTimer = 400; - KNIGHTS_HEALTH = 250; - waitTimer = -1; - spawnNPC(); - setGameInterface(); - for (Client player : waitingBoat.keySet()) { - int team = waitingBoat.get(player); - if (player == null) { - continue; - } - player.getPlayerAssistant().movePlayer(2656 + Misc.random3(3), - 2614 - Misc.random3(4), 0); - player.getDialogueHandler().sendDialogues(599, 3790); - player.getActionSender().sendMessage( - "The Pest Control Game has begun!"); - gamePlayers.put(player, team); - } - - waitingBoat.clear(); - } - - /** - * Checks how many players are in the waiting lobby - * - * @return players waiting - */ - private static int playersInBoat() { - int players = 0; - for (Client player : waitingBoat.keySet()) { - if (player != null) { - players++; - } - if (player == null) { - players--; - } - } - return players; - } - - /** - * Checks how many players are in the game - * - * @return players in the game - */ - private int playersInGame() { - int players = 0; - for (Client player : gamePlayers.keySet()) { - if (player != null) { - players++; - } - if (player == null) { - players--; - } - } - return players; - } - - /** - * Ends the game - * - * @param won - * Did you win? - */ - private void endGame(boolean won) { - for (Client player : gamePlayers.keySet()) { - if (player == null) { - continue; - } - player.getPlayerAssistant().movePlayer(2657, 2639, 0); - if (won && player.pcDamage > 50) { - player.getDialogueHandler().sendDialogues(598, 3790); - int POINT_REWARD = 4; - player.getActionSender().sendMessage( - "You have won the pest control game and have been awarded " - + POINT_REWARD + " Pest Control points."); - player.pcPoints += POINT_REWARD; - player.getItemAssistant().addItem(995, player.combatLevel * 10); - } else if (won) { - player.getDialogueHandler().sendDialogues(596, 3790); - int POINT_REWARD2 = 2; - player.pcPoints += POINT_REWARD2; - player.getActionSender().sendMessage( - "The void knights notice your lack of zeal. You only gain " - + POINT_REWARD2 + " points."); - } else { - player.getDialogueHandler().sendDialogues(597, 3790); - player.getActionSender() - .sendMessage( - "You failed to kill all the portals in 3 minutes and have not been awarded points."); - } - } - cleanUpPlayer(); - cleanUp(); - } - - /** - * Resets the game variables and map - */ - private void cleanUp() { - gameTimer = -1; - KNIGHTS_HEALTH = -1; - waitTimer = WAIT_TIMER; - gameStarted = false; - gamePlayers.clear(); - /* - * Removes the npcs from the game if any left over for whatever reason - */ - for (int[] aPcNPCData : pcNPCData) { - for (int j = 0; j < NpcHandler.npcs.length; j++) { - if (NpcHandler.npcs[j] != null) { - if (NpcHandler.npcs[j].npcType == aPcNPCData[0]) { - NpcHandler.npcs[j] = null; - } - } - } - } - for (int[] aPcNPCData : voidMonsterData) { - for (int j = 0; j < NpcHandler.npcs.length; j++) { - if (NpcHandler.npcs[j] != null) { - if (NpcHandler.npcs[j].npcType == aPcNPCData[0]) { - NpcHandler.npcs[j] = null; - } - } - } - } - } - - /** - * Cleans the player of any damage, loss they may of received - */ - private void cleanUpPlayer() { - for (Client player : gamePlayers.keySet()) { - player.poisonDamage = 0; - PrayerDrain.resetPrayers(player); - for (int i = 0; i < 24; i++) { - player.playerLevel[i] = player.getPlayerAssistant() - .getLevelForXP(player.playerXP[i]); - player.getPlayerAssistant().refreshSkill(i); - } - player.specAmount = 10; - player.pcDamage = 0; - player.getItemAssistant().addSpecialBar( - player.playerEquipment[player.playerWeapon]); - } - } - - /** - * Checks if the portals are dead - * - * @return players dead - */ - private static boolean allPortalsDead() { - int count = 0; - for (int aPortalHealth : portalHealth) { - if (aPortalHealth <= 0) { - count++; - // System.out.println("Portal Health++" + count); - } - } - return count >= 4; - } - - public boolean allPortalsDead3() { - int count = 0; - for (Npc npc : NpcHandler.npcs) { - if (npc != null) { - if (npc.npcType > 3777 && npc.npcType < 3780) { - if (npc.needRespawn) { - count++; - } - } - } - } - return count >= 4; - } - - /** - * Moves a player out of the waiting boat - * - * @param c - * Client c - */ - public static void leaveWaitingBoat(Client c) { - if (waitingBoat.containsKey(c)) { - waitingBoat.remove(c); - c.getPlayerAssistant().movePlayer(2657, 2639, 0); - } - } - - /** - * Moves a player into the hash and into the lobby - * - * @param player - * The player - */ - public static void addToWaitRoom(Client player) { - if (player != null && player.combatLevel > 39) { - waitingBoat.put(player, 1); - player.getActionSender().sendMessage( - "You have joined the Pest Control boat."); - player.getActionSender().sendMessage( - "You currently have " + player.pcPoints - + " Pest Control Points."); - player.getActionSender().sendMessage( - "There are currently " + playersInBoat() - + " players ready in the boat."); - player.getActionSender().sendMessage( - "Players needed: " + PLAYERS_REQUIRED + " to 25 players."); - player.getPlayerAssistant().movePlayer(2661, 2639, 0); - waitBoat(); - } else if (player.combatLevel < 40) { - player.getActionSender().sendMessage("You need 40 combat to play pest control."); - } - } - - /** - * Checks if a player is in the game - * - * @param player - * The player - * @return return - */ - public static boolean isInGame(Client player) { - return gamePlayers.containsKey(player); - } - - /** - * Checks if a player is in the pc boat (lobby) - * - * @param player - * The player - * @return return - */ - public static boolean isInPcBoat(Client player) { - return waitingBoat.containsKey(player); - } - - public static boolean npcIsPCMonster(int npcType) { - return npcType >= 3727 && npcType <= 3776; - } - - private void spawnNPC() { - //npcid, npcx, npcy, heightlevel, walking type, hp, att, def - for (int[] aPcNPCData : pcNPCData) { - Server.npcHandler.spawnNpc2(aPcNPCData[0], aPcNPCData[1], aPcNPCData[2], 0, 0, 200, 0, 0, playersInGame() * 200); - } - for (int[] voidMonsters : voidMonsterData) { - //Server.npcHandler.spawnNpc2(voidMonsters[0], voidMonsters[1], voidMonsters[2], 0, 1, voidMonsters[NpcHandler.getNpcListHP(voidMonsters[0])], NpcHandler.getNpcListCombat(voidMonsters[0])/10, NpcHandler.getNpcListCombat(voidMonsters[0]), playersInGame() * 200); - Server.npcHandler.spawnNpc2(voidMonsters[0], voidMonsters[1], voidMonsters[2], 0, 1, 500, 20, 200, 25); - } - } -} +package com.rebotted.game.content.minigames; + +import java.util.HashMap; + +import com.rebotted.GameEngine; +import com.rebotted.game.content.combat.prayer.PrayerDrain; +import com.rebotted.game.npcs.Npc; +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +/** + * @author Harlan Credits to Sanity + */ + +public class PestControl { + + /** + * /** how long before were put into the game from lobby + */ + private static final int WAIT_TIMER = 60; + /** + * How many players we need to start a game + */ + private final static int PLAYERS_REQUIRED = 1; + /** + * Hashmap for the players in lobby + */ + public static HashMap waitingBoat = new HashMap(); + private static HashMap gamePlayers = new HashMap(); + + private static int gameTimer = -1; + private static int waitTimer = 60; + public static boolean gameStarted = false; + private int properTimer = 0; + public static int KNIGHTS_HEALTH = -1; + + /** + * Array used for storing the portals health + */ + public static int[] portalHealth = { 200, 200, 200, 200 }; + public static int[] portals = { 3777, 3778, 3779, 3780 }; + /** + * array used for storing the npcs used in the minigame + * + * @order npcId, xSpawn, ySpawn, health + */ + + public int shifter = 3732 + Misc.random(9); + public int brawler = 3772 + Misc.random(4); + public int defiler = 3762 + Misc.random(9); + public int ravager = 3742 + Misc.random(4); + public int torcher = 3752 + Misc.random(7); + public int splater = 3727 + Misc.random(4); + + private final int[][] pcNPCData = { { 3777, 2628, 2591 }, // portal + { 3778, 2680, 2588 }, // portal + { 3779, 2669, 2570 }, // portal + { 3780, 2645, 2569 }, // portal + { 3782, 2656, 2592 }, // knight + }; + + private final int[][] voidMonsterData = { + { shifter, 2660 + Misc.random(4), 2592 + Misc.random(4) }, + { brawler, 2663 + Misc.random(4), 2575 + Misc.random(4) }, + { defiler, 2656 + Misc.random(4), 2572 + Misc.random(4) }, + { ravager, 2664 + Misc.random(4), 2574 + Misc.random(4) }, + { torcher, 2656 + Misc.random(4), 2595 + Misc.random(4) }, + { ravager, 2634 + Misc.random(4), 2596 + Misc.random(4) }, + { brawler, 2638 + Misc.random(4), 2588 + Misc.random(4) }, + { shifter, 2637 + Misc.random(4), 2598 + Misc.random(4) }, + { ravager, 2677 + Misc.random(4), 2579 + Misc.random(4) }, + { defiler, 2673 + Misc.random(4), 2584 + Misc.random(4) }, + { defiler, 2673 + Misc.random(4), 2584 + Misc.random(4) }, + { defiler, 2675 + Misc.random(4), 2591 + Misc.random(4) }, + { splater, 2644 + Misc.random(4), 2575 + Misc.random(4) }, + { splater, 2633 + Misc.random(4), 2595 + Misc.random(4) }}; + + public void process() { + try { + if (properTimer > 0) { + properTimer--; + return; + } else { + properTimer = 1; + } + waitBoat(); + if (waitTimer > 0) { + waitTimer--; + } else if (waitTimer == 0) { + startGame(); + } + if (KNIGHTS_HEALTH == 0) { + endGame(false); + } + if (gameStarted && playersInGame() < 1) { + endGame(false); + } + if (gameTimer > 0 && gameStarted) { + gameTimer--; + setGameInterface(); + if (allPortalsDead() || allPortalsDead3()) { + endGame(true); + } + } else if (gameTimer <= 0 && gameStarted) { + endGame(false); + } + } catch (RuntimeException e) { + System.out.println("Failed to set process"); + e.printStackTrace(); + } + } + + /** + * Method we use for removing a player from the pc game + * + * @param player + * The Player. + */ + public static void removePlayerGame(Player player) { + if (gamePlayers.containsKey(player)) { + player.getPlayerAssistant().movePlayer(2657, 2639, 0); + gamePlayers.remove(player); + } + } + + private static void waitBoat() { + for (final Player c : waitingBoat.keySet()) { + if (c != null) { + if (gameStarted && isInPcBoat(c)) { + c.getPacketSender().sendMessage("Next Departure: " + (waitTimer + gameTimer) / 60 + " minutes"); + } else { + c.getPacketSender().sendMessage("Next Departure: " + waitTimer + " seconds."); + } + } + } + } + + public static void setGameInterface() { + for (final Player player : gamePlayers.keySet()) { + if (player != null) { + if (gameTimer > 60) { + player.getPacketSender().sendMessage("Time remaining: " + gameTimer / 60 + " minutes"); + } else if (gameTimer < 60) { + player.getPacketSender().sendMessage("Time remaining: " + gameTimer + " seconds"); + } + player.getPacketSender().sendMessage("The knights current health is " + KNIGHTS_HEALTH + "."); + player.getPacketSender().sendMessage("Your current pc damage is " + player.pcDamage + "."); + } + } + } + + /* + * private void setBoatInterface() { try { for (Client c : + * waitingBoat.keySet()) { if (c != null) { try { if (gameStarted) { + * c.getPlayerAssistant().sendString("Next Departure: " + (waitTimer + + * gameTimer)/60 + " minutes", 21120); } else { + * c.getPlayerAssistant().sendString("Next Departure: " + waitTimer + "", + * 21120); } c.getPlayerAssistant().sendString("Players Ready: " + + * playersInBoat() + "", 21121); c.getPlayerAssistant().sendString("(Need " + * + PLAYERS_REQUIRED + " to 25 players)", 21122); + * c.getPlayerAssistant().sendString("Points: " + c.pcPoints + "", 21123); + * switch (waitTimer) { case 60: c.getPacketDispatcher + * ().sendMessage("Next game will start in: 60 seconds."); break; case 30: + * c. + * getPacketDispatcher().sendMessage("Next game will start in: 30 seconds." + * ); break; } } catch (RuntimeException e) { // TODO Auto-generated catch + * block e.printStackTrace(); } } } } catch (RuntimeException e) { + * System.out.println("Failed to set interfaces"); e.printStackTrace(); } } + */ + + /* + * private void setGameInterface() { for (Client player : + * gamePlayers.keySet()) { if (player != null) { for (int i = 0; i < + * portalHealth.length; i++) { if (portalHealth[i] > 0) { + * player.getPlayerAssistant().sendString("" + portalHealth[i] + "", 21111 + + * i); } else player.getPlayerAssistant().sendString("Dead", 21111 + i); } + * player.getPlayerAssistant().sendString("" + KNIGHTS_HEALTH, 21115); + * player.getPlayerAssistant().sendString("" + player.pcDamage, 21116); if + * (gameTimer > 60) { + * player.getPlayerAssistant().sendString("Time remaining: " + + * (gameTimer/60) + " minutes", 21117); } else { + * player.getPlayerAssistant().sendString("Time remaining: " + gameTimer + + * " seconds", 21117); } } } } + */ + + /*** + * Moving players to arena if there's enough players + */ + private void startGame() { + if (playersInBoat() < PLAYERS_REQUIRED) { + waitTimer = WAIT_TIMER; + return; + } + for (int i = 0; i < portalHealth.length; i++) { + portalHealth[i] = 200; + } + gameStarted = true; + gameTimer = 400; + KNIGHTS_HEALTH = 250; + waitTimer = -1; + spawnNPC(); + setGameInterface(); + for (Player player : waitingBoat.keySet()) { + int team = waitingBoat.get(player); + if (player == null) { + continue; + } + player.getPlayerAssistant().movePlayer(2656 + Misc.random3(3), 2614 - Misc.random3(4), 0); + player.getDialogueHandler().sendDialogues(599, 3790); + player.getPacketSender().sendMessage("The Pest Control Game has begun!"); + gamePlayers.put(player, team); + } + + waitingBoat.clear(); + } + + /** + * Checks how many players are in the waiting lobby + * + * @return players waiting + */ + private static int playersInBoat() { + int players = 0; + for (Player player : waitingBoat.keySet()) { + if (player != null) { + players++; + } + if (player == null) { + players--; + } + } + return players; + } + + /** + * Checks how many players are in the game + * @return players in the game + */ + private int playersInGame() { + int players = 0; + for (Player player : gamePlayers.keySet()) { + if (player != null) { + players++; + } + if (player == null) { + players--; + } + } + return players; + } + + private void endGame(boolean won) { + for (Player player : gamePlayers.keySet()) { + if (player == null) { + continue; + } + player.getPlayerAssistant().movePlayer(2657, 2639, 0); + if (won && player.pcDamage > 50) { + player.getDialogueHandler().sendDialogues(598, 3790); + int POINT_REWARD = 4; + player.getPacketSender().sendMessage( + "You have won the pest control game and have been awarded " + + POINT_REWARD + " Pest Control points."); + player.pcPoints += POINT_REWARD; + player.getItemAssistant().addItem(995, player.combatLevel * 10); + } else if (won) { + player.getDialogueHandler().sendDialogues(596, 3790); + int POINT_REWARD2 = 2; + player.pcPoints += POINT_REWARD2; + player.getPacketSender().sendMessage( + "The void knights notice your lack of zeal. You only gain " + + POINT_REWARD2 + " points."); + } else { + player.getDialogueHandler().sendDialogues(597, 3790); + player.getPacketSender() + .sendMessage( + "You failed to kill all the portals in 3 minutes and have not been awarded points."); + } + } + cleanUpPlayer(); + cleanUp(); + } + + /** + * Resets the game variables and map + */ + private void cleanUp() { + gameTimer = -1; + KNIGHTS_HEALTH = -1; + waitTimer = WAIT_TIMER; + gameStarted = false; + gamePlayers.clear(); + /* + * Removes the npcs from the game if any left over for whatever reason + */ + for (int[] aPcNPCData : pcNPCData) { + for (int j = 0; j < NpcHandler.npcs.length; j++) { + if (NpcHandler.npcs[j] != null) { + if (NpcHandler.npcs[j].npcType == aPcNPCData[0]) { + NpcHandler.npcs[j] = null; + } + } + } + } + for (int[] aPcNPCData : voidMonsterData) { + for (int j = 0; j < NpcHandler.npcs.length; j++) { + if (NpcHandler.npcs[j] != null) { + if (NpcHandler.npcs[j].npcType == aPcNPCData[0]) { + NpcHandler.npcs[j] = null; + } + } + } + } + } + + /** + * Cleans the player of any damage, loss they may of received + */ + private void cleanUpPlayer() { + for (Player player : gamePlayers.keySet()) { + player.poisonDamage = 0; + PrayerDrain.resetPrayers(player); + for (int i = 0; i < 24; i++) { + player.playerLevel[i] = player.getPlayerAssistant() + .getLevelForXP(player.playerXP[i]); + player.getPlayerAssistant().refreshSkill(i); + } + player.specAmount = 10; + player.pcDamage = 0; + player.getItemAssistant().addSpecialBar( + player.playerEquipment[player.playerWeapon]); + } + } + + /** + * Checks if the portals are dead + * + * @return players dead + */ + private static boolean allPortalsDead() { + int count = 0; + for (int aPortalHealth : portalHealth) { + if (aPortalHealth <= 0) { + count++; + // System.out.println("Portal Health++" + count); + } + } + return count >= 4; + } + + public boolean allPortalsDead3() { + int count = 0; + for (Npc npc : NpcHandler.npcs) { + if (npc != null) { + if (npc.npcType > 3777 && npc.npcType < 3780) { + if (npc.needRespawn) { + count++; + } + } + } + } + return count >= 4; + } + + /** + * Moves a player out of the waiting boat + * + * @param player + * Client c + */ + public static void leaveWaitingBoat(Player player) { + if (waitingBoat.containsKey(player)) { + waitingBoat.remove(player); + player.getPlayerAssistant().movePlayer(2657, 2639, 0); + } + } + + /** + * Moves a player into the hash and into the lobby + * + * @param player + * The player + */ + public static void addToWaitRoom(Player player) { + if (player != null && player.combatLevel > 39) { + waitingBoat.put(player, 1); + player.getPacketSender().sendMessage( + "You have joined the Pest Control boat."); + player.getPacketSender().sendMessage( + "You currently have " + player.pcPoints + + " Pest Control Points."); + player.getPacketSender().sendMessage( + "There are currently " + playersInBoat() + + " players ready in the boat."); + player.getPacketSender().sendMessage( + "Players needed: " + PLAYERS_REQUIRED + " to 25 players."); + player.getPlayerAssistant().movePlayer(2661, 2639, 0); + waitBoat(); + } else if (player.combatLevel < 40) { + player.getPacketSender().sendMessage("You need 40 combat to play pest control."); + } + } + + /** + * Checks if a player is in the game + * + * @param player + * The player + * @return return + */ + public static boolean isInGame(Player player) { + return gamePlayers.containsKey(player); + } + + /** + * Checks if a player is in the pc boat (lobby) + * + * @param player + * The player + * @return return + */ + public static boolean isInPcBoat(Player player) { + return waitingBoat.containsKey(player); + } + + public static boolean npcIsPCMonster(int npcType) { + return npcType >= 3727 && npcType <= 3776; + } + + private void spawnNPC() { + //npcid, npcx, npcy, heightlevel, walking type, hp, att, def + for (int[] aPcNPCData : pcNPCData) { + GameEngine.npcHandler.spawnNpc2(aPcNPCData[0], aPcNPCData[1], aPcNPCData[2], 0, 0, 200, 0, 0, playersInGame() * 200); + } + for (int[] voidMonsters : voidMonsterData) { + //Server.npcHandler.spawnNpc2(voidMonsters[0], voidMonsters[1], voidMonsters[2], 0, 1, voidMonsters[NpcHandler.getNpcListHP(voidMonsters[0])], NpcHandler.getNpcListCombat(voidMonsters[0])/10, NpcHandler.getNpcListCombat(voidMonsters[0]), playersInGame() * 200); + GameEngine.npcHandler.spawnNpc2(voidMonsters[0], voidMonsters[1], voidMonsters[2], 0, 1, 500, 20, 200, 25); + } + } +} diff --git a/2006Redone Server/src/redone/game/content/minigames/TreasureTrails.java b/2006Redone Server/src/com/rebotted/game/content/minigames/TreasureTrails.java similarity index 91% rename from 2006Redone Server/src/redone/game/content/minigames/TreasureTrails.java rename to 2006Redone Server/src/com/rebotted/game/content/minigames/TreasureTrails.java index 466afc47..38886472 100644 --- a/2006Redone Server/src/redone/game/content/minigames/TreasureTrails.java +++ b/2006Redone Server/src/com/rebotted/game/content/minigames/TreasureTrails.java @@ -1,418 +1,418 @@ -package redone.game.content.minigames; - -import redone.game.players.Client; -import redone.util.Misc; - -public class TreasureTrails { - - public static int lowLevelReward[] = { - // Weapons - 853, // Maple shortbow - 851, // Maple longbow - 1327, // Black scimitar - 1233, // Black Dagger (p) - 5682, // Black Dagger (p+) - 5700, // Black Dagger (p++) - 6611, // White scimitar - 6591, // White dagger - 6593, // White dagger(p) - 6595, // White dagger(p+) - 6597, // White dagger(p++) - 6599, // White halberd - 6603, // White magic staff - // Armor - 6619, // White boots - 6615, // White chainbody - 6623, // White full helm - 6629, // White gloves - 6633, // White kiteshield - 6617, // White platebody - 6625, // White platelegs - 6627, // White plateskirt - 6631, // White sq shield - 2587, // Black full helm (t) - 2589, // Black kiteshield (t) - 2583, // Black platebody (t) - 2585, // Black platelegs (t) - 3472, // Black plateskirt (t) - 2595, // Black full helm (g) - 2597, // Black kiteshield (g) - 2591, // Black platebody (g) - 2593, // Black platelegs (g) - 3473, // Black plateskirt (g) - 7388, // Blue skirt (t) - 7396, // Blue wizard hat (t) - 7392, // Blue wizard robe (t) - 7386, // Blue skirt (g) - 7394, // Blue wizard hat (g) - 7390, // Blue wizard robe (g) - 7364, // Studded body (t) - 7368, // Studded chaps (t) - 7362, // Studded body (g) - 7366, // Studded chaps (g) - // Jewelery - 1639, // Emerald ring - 1641, // Ruby ring - 1637, // Sapphire ring - // Misc - 2524, // Black toy horsey - 2520, // Brown toy horsey - 2526, // Grey toy horsey - 2522, // White toy horsey - 6541, // Mouse toy - 7771, // Toy cat - 7767, // Toy mouse - 7763, // Toy doll - 3721, // Toy ship - 7759, // Toy soldier - 6856, // Bobble hat - 2978, // Chompy bird hat - 2979, // Chompy bird hat - 2980, // Chompy bird hat - 2981, // Chompy bird hat - 2982, // Chompy bird hat - 2983, // Chompy bird hat - 2984, // Chompy bird hat - 2985, // Chompy bird hat - 2986, // Chompy bird hat - 2987, // Chompy bird hat - 2988, // Chompy bird hat - 2989, // Chompy bird hat - 2990, // Chompy bird hat - 2991, // Chompy bird hat - 2992, // Chompy bird hat - 2993, // Chompy bird hat - 2994, // Chompy bird hat - 2995, // Chompy bird hat - 6345, // Villager hat - 6355, // Villager hat - 6365, // Villager hat - 6375, // Villager hat - 6862, // Woolly hat - 6860, // Tri-jester hat - 6858, // Jester hat - 6182, // Lederhosen hat - 6547, // Doctors hat - 6548, // Nurse hat - 6665, // Mudskipper hat - }; - public static int mediumLevelReward[] = { - // Weapons - 1329, // Mithril scimitar - 1331, // Adamant scimitar - 1397, // Air battlestaff - 1399, // Earth battlestaff - 1393, // Fire battlestaff - 3053, // Lava battlestaff - 6562, // Mud battlestaff - 1395, // Water battlestaff - 857, // Yew shortbow - 855, // Yew longbow - // Armor - 2605, // Adamant full helm (t) - 2603, // Adamant kiteshield (t) - 2599, // Adamant platebody (t) - 2601, // Adamant platelegs (t) - 3474, // Adamant plateskirt (t) - 2613, // Adamant full helm (g) - 2611, // Adamant kiteshield (g) - 2607, // Adamant platebody (g) - 2609, // Adamant platelegs (g) - 3475, // Adamant plateskirt (g) - 7372, // Green d'hide body (t) - 7380, // Green d'hide chaps (t) - 7370, // Green d'hide body (g) - 7378, // Green d'hide chaps (g) - // Jewelery - 2568, // Ring of forging - 2570, // Ring of life - 2550, // Ring of recoil - 1727, // Amulet of magic - 1725, // Amulet of strength - // Misc - 2581, // Robin hood hat - 2577, // Ranger boots - 2651, // Pirate's hat - 2631, //Highwayman mask - }; - public static int highLevelReward[] = { - // Weapons - 1333, // Rune scimitar - 1229, // Rune dagger(p) - 5678, // Rune dagger(p+) - 5696, // Rune dagger(p++) - 1215, // Dragon dagger - 1231, // Dragon dagger(p) - 5680, // Dragon dagger(p+) - 5698, // Dragon dagger(p++) - 1249, // Dragon spear - 3176, // Dragon spear(kp) - 1263, // Dragon spear(p) - 5716, // Dragon spear(p+) - 5730, // Dragon spear(p++) - 1359, // Rune axe - 6739, // Dragon axe - 3054, // Mystic lava staff - 6563, // Mystic mud staff - 1403, // Mystic water staff - 1405, // Mystic air staff - 1407, // Mystic earth staff - 1401, // Mystic fire staff - 861, // Magic shortbow - 859, // Magic longbow - // Armor - 3486, // Gilded full helm - 3488, // Gilded kiteshield - 3481, // Gilded platebody - 3483, // Gilded platelegs - 3485, // Gilded plateskirt - 2627, // Rune full helm (t) - 2629, // Rune kiteshield (t) - 2623, // Rune platebody (t) - 2625, // Rune platelegs (t) - 3477, // Rune plateskirt (t) - 2619, // Rune full helm (g) - 2621, // Rune kiteshield (g) - 2615, // Rune platebody (g) - 2617, // Rune platelegs (g) - 3476, // Rune plateskirt (g) - 7400, // Enchanted hat - 7398, // Enchanted robe - 7399, // Enchanted top - 6920, // Infinity boots - 6924, // Infinity bottoms - 6922, // Infinity gloves - 6918, // Infinity hat - 6916, // Infinity top - 4097, // Mystic boots - 4107, // Mystic boots (dark) - 4117, // Mystic boots (light) - 4095, // Mystic gloves - 4105, // Mystic gloves (dark) - 4115, // Mystic gloves (light) - 4089, // Mystic hat - 4099, // Mystic hat (dark) - 4109, // Mystic hat (light) - 4093, // Mystic robe bottom - 4103, // Mystic robe bottom (dark) - 4113, // Mystic robe bottom (light) - 4091, // Mystic robe top - 4101, // Mystic robe top (dark) - 4111, // Mystic robe top (light) - 7376, // Blue d'hide body (t) - 7384, // Blue d'hide chaps (t) - 7374, // Blue d'hide body (g) - 7382, // Blue d'hide chaps (g) - 2491, // Black d'hide vamb - 2497, // Black d'hide chaps - 2503, // Black d'hide body - 2513, // Dragon chainbody - 1149, // Dragon med helm - 4087, // Dragon platelegs - 4585, // Dragon plateskirt - 1187, // Dragon sq shield - 2414, // Zamorak cape - 2657, // Zamorak full helm - 2659, // Zamorak kiteshield - 2653, // Zamorak platebody - 2655, // Zamorak platelegs - 3478, // Zamorak plateskirt - 2413, // Guthix cape - 2673, // Guthix full helm - 2675, // Guthix kiteshield - 2669, // Guthix platebody - 2671, // Guthix platelegs - 3480, // Guthix plateskirt - 2412, // Saradomin cape - 2665, // Saradomin full helm - 2667, // Saradomin kiteshield - 2661, // Saradomin platebody - 2663, // Saradomin platelegs - 3479, // Saradomin plateskirt - // Jewelery - 1631, // Uncut dragonstone - 1615, // Dragonstone - 1702, // Dragonstone amulet - 1645, // Dragonstone ring - 2572, // Ring of wealth - 2552, // Ring of dueling(8) - 6733, // Archers ring - 6737, // Berserker ring - 6040, // Amulet of nature - 1497, // Amulet of othanian - 1731, // Amulet of power - 6585, // Amulet of fury - // Misc - 7927, // Easter ring - 1050, // Santa hat - 1042, // Blue partyhat - 1044, // Green partyhat - 1046, // Purple partyhat - 1038, // Red partyhat - 1048, // White partyhat - 1040, // Yellow partyhat - }; - - public static int lowLevelStacks[] = { - 995, // Coins - 380, // Lobster - 555, // Water rune - 558, // Mind rune - 556, // Air rune - 559, // Body rune - 557, // Earth rune - 554, // Fire rune - 884, // Iron arrow - 885, // Iron arrow(p) - 5617, // Iron arrow(p+) - 5623, // Iron arrow(p++) - }; - public static int mediumLevelStacks[] = { - 995, // Coins - 374, // Swordfish - 890, // Adamant arrow - 891, // Adamant arrow(p) - 5620, // Adamant arrow(p+) - 5626, // Adamant arrow(p++) - 563, // Law rune - 561, // Nature rune - 562, // Chaos rune - 564, // Cosmic rune - }; - public static int highLevelStacks[] = { - 995, // Coins - 386, // Shark - 892, // Rune arrow - 893, // Rune arrow(p) - 5621, // Rune arrow(p+) - 5627, // Rune arrow(p++) - 4697, // Smoke rune - 566, // Soul rune - 4694, // Steam rune - 4699, // Lava rune - 4695, // Mist rune - 4698, // Mud rune - 565, // Blood rune - 560, // Death rune - 4696, // Dust rune - 535, // Babydragon bones - 537, // Dragon bones - }; - - - public static void addClueReward(Client c, int clueLevel) { - int chanceReward = Misc.random(2); - if (clueLevel == 0) { - switch (chanceReward) { - case 0: - displayReward(c, - Misc.randomArrayItem(lowLevelReward), 1, - Misc.randomArrayItem(lowLevelReward), 1, - Misc.randomArrayItem(lowLevelReward), 1, - Misc.randomArrayItem(lowLevelStacks), Misc.random(50, 150) - ); - break; - case 1: - displayReward(c, - Misc.randomArrayItem(lowLevelReward), 1, - Misc.randomArrayItem(lowLevelReward), 1, - Misc.randomArrayItem(lowLevelStacks), Misc.random(50, 150) - ); - break; - case 2: - displayReward(c, - Misc.randomArrayItem(lowLevelReward), 1, - Misc.randomArrayItem(lowLevelStacks), Misc.random(50, 150) - ); - break; - } - } else if (clueLevel == 1) { - switch (chanceReward) { - case 0: - displayReward(c, - Misc.randomArrayItem(mediumLevelReward), 1, - Misc.randomArrayItem(mediumLevelReward), 1, - Misc.randomArrayItem(mediumLevelReward), 1, - Misc.randomArrayItem(mediumLevelStacks), Misc.random(50, 150) - ); - break; - case 1: - displayReward(c, - Misc.randomArrayItem(mediumLevelReward), 1, - Misc.randomArrayItem(mediumLevelReward), 1, - Misc.randomArrayItem(mediumLevelStacks), Misc.random(50, 150) - ); - break; - case 2: - displayReward(c, - Misc.randomArrayItem(mediumLevelReward), 1, - Misc.randomArrayItem(mediumLevelStacks), Misc.random(50, 150) - ); - break; - } - } else if (clueLevel == 2) { - switch (chanceReward) { - case 0: - displayReward(c, - Misc.randomArrayItem(highLevelReward), 1, - Misc.randomArrayItem(highLevelReward), 1, - Misc.randomArrayItem(highLevelReward), 1, - Misc.randomArrayItem(highLevelStacks), Misc.random(50, 150) - ); - break; - case 1: - displayReward(c, - Misc.randomArrayItem(highLevelReward), 1, - Misc.randomArrayItem(highLevelReward), 1, - Misc.randomArrayItem(highLevelStacks), Misc.random(50, 150) - ); - break; - case 2: - displayReward(c, - Misc.randomArrayItem(highLevelReward), 1, - Misc.randomArrayItem(highLevelStacks), Misc.random(50, 150) - ); - break; - } - } - } - public static void displayReward(Client c, int item, int amount) { - displayReward(c, item, amount, -1, 1); - } - - public static void displayReward(Client c, int item, int amount, int item2, int amount2) { - displayReward(c, item, amount, item2, amount2, -1, 1); - } - - public static void displayReward(Client c, int item, int amount, int item2, int amount2, int item3, int amount3) { - displayReward(c, item, amount, item2, amount2, item3, amount3, -1, 1); - } - - public static void displayReward(Client c, int item, int amount, int item2, int amount2, int item3, int amount3, int item4, int amount4) { - int[] items = { item, item2, item3, item4 }; - int[] amounts = { amount, amount2, amount3, amount4 }; - c.outStream.createFrameVarSizeWord(53); - c.outStream.writeWord(6963); - c.outStream.writeWord(items.length); - for (int i = 0; i < items.length; i++) { - if (c.playerItemsN[i] > 254) { - c.outStream.writeByte(255); - c.outStream.writeDWord_v2(amounts[i]); - } else { - c.outStream.writeByte(amounts[i]); - } - if (items[i] > 0) { - c.outStream.writeWordBigEndianA(items[i] + 1); - } else { - c.outStream.writeWordBigEndianA(0); - } - } - c.outStream.endFrameVarSizeWord(); - c.flushOutStream(); - for (int i = 0; i < items.length; i++) { - if (items[i] > 0) c.getItemAssistant().addOrDropItem(items[i], amounts[i]); - } - c.getPlayerAssistant().showInterface(6960); - } - -} +package com.rebotted.game.content.minigames; + +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +public class TreasureTrails { + + public static int lowLevelReward[] = { + // Weapons + 853, // Maple shortbow + 851, // Maple longbow + 1327, // Black scimitar + 1233, // Black Dagger (p) + 5682, // Black Dagger (p+) + 5700, // Black Dagger (p++) + 6611, // White scimitar + 6591, // White dagger + 6593, // White dagger(p) + 6595, // White dagger(p+) + 6597, // White dagger(p++) + 6599, // White halberd + 6603, // White magic staff + // Armor + 6619, // White boots + 6615, // White chainbody + 6623, // White full helm + 6629, // White gloves + 6633, // White kiteshield + 6617, // White platebody + 6625, // White platelegs + 6627, // White plateskirt + 6631, // White sq shield + 2587, // Black full helm (t) + 2589, // Black kiteshield (t) + 2583, // Black platebody (t) + 2585, // Black platelegs (t) + 3472, // Black plateskirt (t) + 2595, // Black full helm (g) + 2597, // Black kiteshield (g) + 2591, // Black platebody (g) + 2593, // Black platelegs (g) + 3473, // Black plateskirt (g) + 7388, // Blue skirt (t) + 7396, // Blue wizard hat (t) + 7392, // Blue wizard robe (t) + 7386, // Blue skirt (g) + 7394, // Blue wizard hat (g) + 7390, // Blue wizard robe (g) + 7364, // Studded body (t) + 7368, // Studded chaps (t) + 7362, // Studded body (g) + 7366, // Studded chaps (g) + // Jewelery + 1639, // Emerald ring + 1641, // Ruby ring + 1637, // Sapphire ring + // Misc + 2524, // Black toy horsey + 2520, // Brown toy horsey + 2526, // Grey toy horsey + 2522, // White toy horsey + 6541, // Mouse toy + 7771, // Toy cat + 7767, // Toy mouse + 7763, // Toy doll + 3721, // Toy ship + 7759, // Toy soldier + 6856, // Bobble hat + 2978, // Chompy bird hat + 2979, // Chompy bird hat + 2980, // Chompy bird hat + 2981, // Chompy bird hat + 2982, // Chompy bird hat + 2983, // Chompy bird hat + 2984, // Chompy bird hat + 2985, // Chompy bird hat + 2986, // Chompy bird hat + 2987, // Chompy bird hat + 2988, // Chompy bird hat + 2989, // Chompy bird hat + 2990, // Chompy bird hat + 2991, // Chompy bird hat + 2992, // Chompy bird hat + 2993, // Chompy bird hat + 2994, // Chompy bird hat + 2995, // Chompy bird hat + 6345, // Villager hat + 6355, // Villager hat + 6365, // Villager hat + 6375, // Villager hat + 6862, // Woolly hat + 6860, // Tri-jester hat + 6858, // Jester hat + 6182, // Lederhosen hat + 6547, // Doctors hat + 6548, // Nurse hat + 6665, // Mudskipper hat + }; + public static int mediumLevelReward[] = { + // Weapons + 1329, // Mithril scimitar + 1331, // Adamant scimitar + 1397, // Air battlestaff + 1399, // Earth battlestaff + 1393, // Fire battlestaff + 3053, // Lava battlestaff + 6562, // Mud battlestaff + 1395, // Water battlestaff + 857, // Yew shortbow + 855, // Yew longbow + // Armor + 2605, // Adamant full helm (t) + 2603, // Adamant kiteshield (t) + 2599, // Adamant platebody (t) + 2601, // Adamant platelegs (t) + 3474, // Adamant plateskirt (t) + 2613, // Adamant full helm (g) + 2611, // Adamant kiteshield (g) + 2607, // Adamant platebody (g) + 2609, // Adamant platelegs (g) + 3475, // Adamant plateskirt (g) + 7372, // Green d'hide body (t) + 7380, // Green d'hide chaps (t) + 7370, // Green d'hide body (g) + 7378, // Green d'hide chaps (g) + // Jewelery + 2568, // Ring of forging + 2570, // Ring of life + 2550, // Ring of recoil + 1727, // Amulet of magic + 1725, // Amulet of strength + // Misc + 2581, // Robin hood hat + 2577, // Ranger boots + 2651, // Pirate's hat + 2631, //Highwayman mask + }; + public static int highLevelReward[] = { + // Weapons + 1333, // Rune scimitar + 1229, // Rune dagger(p) + 5678, // Rune dagger(p+) + 5696, // Rune dagger(p++) + 1215, // Dragon dagger + 1231, // Dragon dagger(p) + 5680, // Dragon dagger(p+) + 5698, // Dragon dagger(p++) + 1249, // Dragon spear + 3176, // Dragon spear(kp) + 1263, // Dragon spear(p) + 5716, // Dragon spear(p+) + 5730, // Dragon spear(p++) + 1359, // Rune axe + 6739, // Dragon axe + 3054, // Mystic lava staff + 6563, // Mystic mud staff + 1403, // Mystic water staff + 1405, // Mystic air staff + 1407, // Mystic earth staff + 1401, // Mystic fire staff + 861, // Magic shortbow + 859, // Magic longbow + // Armor + 3486, // Gilded full helm + 3488, // Gilded kiteshield + 3481, // Gilded platebody + 3483, // Gilded platelegs + 3485, // Gilded plateskirt + 2627, // Rune full helm (t) + 2629, // Rune kiteshield (t) + 2623, // Rune platebody (t) + 2625, // Rune platelegs (t) + 3477, // Rune plateskirt (t) + 2619, // Rune full helm (g) + 2621, // Rune kiteshield (g) + 2615, // Rune platebody (g) + 2617, // Rune platelegs (g) + 3476, // Rune plateskirt (g) + 7400, // Enchanted hat + 7398, // Enchanted robe + 7399, // Enchanted top + 6920, // Infinity boots + 6924, // Infinity bottoms + 6922, // Infinity gloves + 6918, // Infinity hat + 6916, // Infinity top + 4097, // Mystic boots + 4107, // Mystic boots (dark) + 4117, // Mystic boots (light) + 4095, // Mystic gloves + 4105, // Mystic gloves (dark) + 4115, // Mystic gloves (light) + 4089, // Mystic hat + 4099, // Mystic hat (dark) + 4109, // Mystic hat (light) + 4093, // Mystic robe bottom + 4103, // Mystic robe bottom (dark) + 4113, // Mystic robe bottom (light) + 4091, // Mystic robe top + 4101, // Mystic robe top (dark) + 4111, // Mystic robe top (light) + 7376, // Blue d'hide body (t) + 7384, // Blue d'hide chaps (t) + 7374, // Blue d'hide body (g) + 7382, // Blue d'hide chaps (g) + 2491, // Black d'hide vamb + 2497, // Black d'hide chaps + 2503, // Black d'hide body + 2513, // Dragon chainbody + 1149, // Dragon med helm + 4087, // Dragon platelegs + 4585, // Dragon plateskirt + 1187, // Dragon sq shield + 2414, // Zamorak cape + 2657, // Zamorak full helm + 2659, // Zamorak kiteshield + 2653, // Zamorak platebody + 2655, // Zamorak platelegs + 3478, // Zamorak plateskirt + 2413, // Guthix cape + 2673, // Guthix full helm + 2675, // Guthix kiteshield + 2669, // Guthix platebody + 2671, // Guthix platelegs + 3480, // Guthix plateskirt + 2412, // Saradomin cape + 2665, // Saradomin full helm + 2667, // Saradomin kiteshield + 2661, // Saradomin platebody + 2663, // Saradomin platelegs + 3479, // Saradomin plateskirt + // Jewelery + 1631, // Uncut dragonstone + 1615, // Dragonstone + 1702, // Dragonstone amulet + 1645, // Dragonstone ring + 2572, // Ring of wealth + 2552, // Ring of dueling(8) + 6733, // Archers ring + 6737, // Berserker ring + 6040, // Amulet of nature + 1497, // Amulet of othanian + 1731, // Amulet of power + 6585, // Amulet of fury + // Misc + 7927, // Easter ring + 1050, // Santa hat + 1042, // Blue partyhat + 1044, // Green partyhat + 1046, // Purple partyhat + 1038, // Red partyhat + 1048, // White partyhat + 1040, // Yellow partyhat + }; + + public static int lowLevelStacks[] = { + 995, // Coins + 380, // Lobster + 555, // Water rune + 558, // Mind rune + 556, // Air rune + 559, // Body rune + 557, // Earth rune + 554, // Fire rune + 884, // Iron arrow + 885, // Iron arrow(p) + 5617, // Iron arrow(p+) + 5623, // Iron arrow(p++) + }; + public static int mediumLevelStacks[] = { + 995, // Coins + 374, // Swordfish + 890, // Adamant arrow + 891, // Adamant arrow(p) + 5620, // Adamant arrow(p+) + 5626, // Adamant arrow(p++) + 563, // Law rune + 561, // Nature rune + 562, // Chaos rune + 564, // Cosmic rune + }; + public static int highLevelStacks[] = { + 995, // Coins + 386, // Shark + 892, // Rune arrow + 893, // Rune arrow(p) + 5621, // Rune arrow(p+) + 5627, // Rune arrow(p++) + 4697, // Smoke rune + 566, // Soul rune + 4694, // Steam rune + 4699, // Lava rune + 4695, // Mist rune + 4698, // Mud rune + 565, // Blood rune + 560, // Death rune + 4696, // Dust rune + 535, // Babydragon bones + 537, // Dragon bones + }; + + + public static void addClueReward(Player player, int clueLevel) { + int chanceReward = Misc.random(2); + if (clueLevel == 0) { + switch (chanceReward) { + case 0: + displayReward(player, + Misc.randomArrayItem(lowLevelReward), 1, + Misc.randomArrayItem(lowLevelReward), 1, + Misc.randomArrayItem(lowLevelReward), 1, + Misc.randomArrayItem(lowLevelStacks), Misc.random(50, 150) + ); + break; + case 1: + displayReward(player, + Misc.randomArrayItem(lowLevelReward), 1, + Misc.randomArrayItem(lowLevelReward), 1, + Misc.randomArrayItem(lowLevelStacks), Misc.random(50, 150) + ); + break; + case 2: + displayReward(player, + Misc.randomArrayItem(lowLevelReward), 1, + Misc.randomArrayItem(lowLevelStacks), Misc.random(50, 150) + ); + break; + } + } else if (clueLevel == 1) { + switch (chanceReward) { + case 0: + displayReward(player, + Misc.randomArrayItem(mediumLevelReward), 1, + Misc.randomArrayItem(mediumLevelReward), 1, + Misc.randomArrayItem(mediumLevelReward), 1, + Misc.randomArrayItem(mediumLevelStacks), Misc.random(50, 150) + ); + break; + case 1: + displayReward(player, + Misc.randomArrayItem(mediumLevelReward), 1, + Misc.randomArrayItem(mediumLevelReward), 1, + Misc.randomArrayItem(mediumLevelStacks), Misc.random(50, 150) + ); + break; + case 2: + displayReward(player, + Misc.randomArrayItem(mediumLevelReward), 1, + Misc.randomArrayItem(mediumLevelStacks), Misc.random(50, 150) + ); + break; + } + } else if (clueLevel == 2) { + switch (chanceReward) { + case 0: + displayReward(player, + Misc.randomArrayItem(highLevelReward), 1, + Misc.randomArrayItem(highLevelReward), 1, + Misc.randomArrayItem(highLevelReward), 1, + Misc.randomArrayItem(highLevelStacks), Misc.random(50, 150) + ); + break; + case 1: + displayReward(player, + Misc.randomArrayItem(highLevelReward), 1, + Misc.randomArrayItem(highLevelReward), 1, + Misc.randomArrayItem(highLevelStacks), Misc.random(50, 150) + ); + break; + case 2: + displayReward(player, + Misc.randomArrayItem(highLevelReward), 1, + Misc.randomArrayItem(highLevelStacks), Misc.random(50, 150) + ); + break; + } + } + } + public static void displayReward(Player c, int item, int amount) { + displayReward(c, item, amount, -1, 1); + } + + public static void displayReward(Player c, int item, int amount, int item2, int amount2) { + displayReward(c, item, amount, item2, amount2, -1, 1); + } + + public static void displayReward(Player c, int item, int amount, int item2, int amount2, int item3, int amount3) { + displayReward(c, item, amount, item2, amount2, item3, amount3, -1, 1); + } + + public static void displayReward(Player c, int item, int amount, int item2, int amount2, int item3, int amount3, int item4, int amount4) { + int[] items = { item, item2, item3, item4 }; + int[] amounts = { amount, amount2, amount3, amount4 }; + c.outStream.createFrameVarSizeWord(53); + c.outStream.writeWord(6963); + c.outStream.writeWord(items.length); + for (int i = 0; i < items.length; i++) { + if (c.playerItemsN[i] > 254) { + c.outStream.writeByte(255); + c.outStream.writeDWord_v2(amounts[i]); + } else { + c.outStream.writeByte(amounts[i]); + } + if (items[i] > 0) { + c.outStream.writeWordBigEndianA(items[i] + 1); + } else { + c.outStream.writeWordBigEndianA(0); + } + } + c.outStream.endFrameVarSizeWord(); + c.flushOutStream(); + for (int i = 0; i < items.length; i++) { + if (items[i] > 0) c.getItemAssistant().addOrDropItem(items[i], amounts[i]); + } + c.getPacketSender().showInterface(6960); + } + +} diff --git a/2006Redone Server/src/com/rebotted/game/content/minigames/castlewars/CastleWarObjects.java b/2006Redone Server/src/com/rebotted/game/content/minigames/castlewars/CastleWarObjects.java new file mode 100644 index 00000000..a4a7e5d4 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/minigames/castlewars/CastleWarObjects.java @@ -0,0 +1,280 @@ +package com.rebotted.game.content.minigames.castlewars; + +import com.rebotted.game.players.Player; + +public class CastleWarObjects { + + public static void handleObject(Player player, int id, int x, int y) { + switch (id) { + case 4469: + if (CastleWars.getTeamNumber(player) == 2) { + player.getPacketSender().sendMessage( + "You are not allowed in the other teams spawn point."); + break; + } + if (x == 2426) { + if (player.getY() == 3080) { + player.getPlayerAssistant() + .movePlayer(2426, 3081, player.heightLevel); + } else if (player.getY() == 3081) { + player.getPlayerAssistant() + .movePlayer(2426, 3080, player.heightLevel); + } + } else if (x == 2422) { + if (player.getX() == 2422) { + player.getPlayerAssistant() + .movePlayer(2423, 3076, player.heightLevel); + } else if (player.getX() == 2423) { + player.getPlayerAssistant() + .movePlayer(2422, 3076, player.heightLevel); + } + } + break; + case 4470: + if (CastleWars.getTeamNumber(player) == 1) { + player.getPacketSender().sendMessage( + "You are not allowed in the other teams spawn point."); + break; + } + if (x == 2373 && y == 3126) { + if (player.getY() == 3126) { + player.getPlayerAssistant().movePlayer(2373, 3127, 1); + } else if (player.getY() == 3127) { + player.getPlayerAssistant().movePlayer(2373, 3126, 1); + } + } else if (x == 2377 && y == 3131) { + if (player.getX() == 2376) { + player.getPlayerAssistant().movePlayer(2377, 3131, 1); + } else if (player.getX() == 2377) { + player.getPlayerAssistant().movePlayer(2376, 3131, 1); + } + } + break; + case 4417: + if (x == 2428 && y == 3081 && player.heightLevel == 1) { + player.getPlayerAssistant().movePlayer(2430, 3080, 2); + } + if (x == 2425 && y == 3074 && player.heightLevel == 2) { + player.getPlayerAssistant().movePlayer(2426, 3074, 3); + } + if (x == 2419 && y == 3078 && player.heightLevel == 0) { + player.getPlayerAssistant().movePlayer(2420, 3080, 1); + } + break; + case 4415: + if (x == 2419 && y == 3080 && player.heightLevel == 1) { + player.getPlayerAssistant().movePlayer(2419, 3077, 0); + } + if (x == 2430 && y == 3081 && player.heightLevel == 2) { + player.getPlayerAssistant().movePlayer(2427, 3081, 1); + } + if (x == 2425 && y == 3074 && player.heightLevel == 3) { + player.getPlayerAssistant().movePlayer(2425, 3077, 2); + } + if (x == 2374 && y == 3133 && player.heightLevel == 3) { + player.getPlayerAssistant().movePlayer(2374, 3130, 2); + } + if (x == 2369 && y == 3126 && player.heightLevel == 2) { + player.getPlayerAssistant().movePlayer(2372, 3126, 1); + } + if (x == 2380 && y == 3127 && player.heightLevel == 1) { + player.getPlayerAssistant().movePlayer(2380, 3130, 0); + } + break; + case 4411: // castle wars jumping stones + if (x == player.getX() && y == player.getY()) { + player.getPacketSender().sendMessage("You are standing on the rock you clicked."); + } else if (x > player.getX() && y == player.getY()) { + player.getPlayerAssistant().walkTo(1, 0); + } else if (x < player.getX() && y == player.getY()) { + player.getPlayerAssistant().walkTo(-1, 0); + } else if (y > player.getY() && x == player.getX()) { + player.getPlayerAssistant().walkTo(0, 1); + } else if (y < player.getY() && x == player.getX()) { + player.getPlayerAssistant().walkTo(0, -1); + } else { + player.getPacketSender().sendMessage("Can't reach that."); + } + break; + case 4419: + if (x == 2417 && y == 3074 && player.heightLevel == 0) { + if (player.getX() == 2416) { + player.getPlayerAssistant().movePlayer(2417, 3077, 0); + } else { + player.getPlayerAssistant().movePlayer(2416, 3074, 0); + } + } + break; + + case 4911: + if (x == 2421 && y == 3073 && player.heightLevel == 1) { + player.getPlayerAssistant().movePlayer(2421, 3074, 0); + } + if (x == 2378 && y == 3134 && player.heightLevel == 1) { + player.getPlayerAssistant().movePlayer(2378, 3133, 0); + } + break; + case 1747: + if (x == 2421 && y == 3073 && player.heightLevel == 0) { + player.getPlayerAssistant().movePlayer(2421, 3074, 1); + } + if (x == 2378 && y == 3134 && player.heightLevel == 0) { + player.getPlayerAssistant().movePlayer(2378, 3133, 1); + } + break; + case 4912: + if (x == 2430 && y == 3082 && player.heightLevel == 0) { + player.getPlayerAssistant().movePlayer(player.getX(), player.getY() + 6400, 0); + } + if (x == 2369 && y == 3125 && player.heightLevel == 0) { + player.getPlayerAssistant().movePlayer(player.getX(), player.getY() + 6400, 0); + } + break; + case 1757: + if (x == 2430 && y == 9482) { + player.getPlayerAssistant().movePlayer(2430, 3081, 0); + } else if (player.absX == 2533) { + player.getPlayerAssistant().movePlayer(2532, 3155, 0); + } else { + player.getPlayerAssistant().movePlayer(2369, 3126, 0); + } + break; + + case 4418: + if (x == 2380 && y == 3127 && player.heightLevel == 0) { + player.getPlayerAssistant().movePlayer(2379, 3127, 1); + } + if (x == 2369 && y == 3126 && player.heightLevel == 1) { + player.getPlayerAssistant().movePlayer(2369, 3127, 2); + } + if (x == 2374 && y == 3131 && player.heightLevel == 2) { + player.getPlayerAssistant().movePlayer(2373, 3133, 3); + } + break; + case 4420: + if (x == 2382 && y == 3131 && player.heightLevel == 0) { + if (player.getX() >= 2383 && player.getX() <= 2385) { + player.getPlayerAssistant().movePlayer(2382, 3130, 0); + } else { + player.getPlayerAssistant().movePlayer(2383, 3133, 0); + } + } + break; + case 4437: + if (x == 2400 && y == 9512) { + player.getPlayerAssistant().movePlayer(2400, 9514, 0); + } else if (x == 2391 && y == 9501) { + player.getPlayerAssistant().movePlayer(2393, 9502, 0); + } else if (x == 2409 && y == 9503) { + player.getPlayerAssistant().movePlayer(2411, 9503, 0); + } else if (x == 2401 && y == 9494) { + player.getPlayerAssistant().movePlayer(2401, 9493, 0); + } + break; + case 1568: + if (x == 2399 && y == 3099) { + player.getPlayerAssistant().movePlayer(2399, 9500, 0); + } else { + player.getPlayerAssistant().movePlayer(2400, 9507, 0); + } + case 6281: + player.getPlayerAssistant().movePlayer(2370, 3132, 2); + break; + case 4472: + player.getPlayerAssistant().movePlayer(2370, 3132, 1); + break; + case 6280: + player.getPlayerAssistant().movePlayer(2429, 3075, 2); + break; + case 4471: + player.getPlayerAssistant().movePlayer(2429, 3075, 1); + break; + case 4406: + CastleWars.removePlayerFromCw(player); + break; + case 4407: + CastleWars.removePlayerFromCw(player); + break; + case 4458: + if (System.currentTimeMillis() - player.miscTimer > 1200) { + player.startAnimation(881); + player.getItemAssistant().addItem(4049, 1); + player.getPacketSender().sendMessage("You get some bandages"); + player.miscTimer = System.currentTimeMillis(); + } + break; + case 4902: // sara flag + case 4377: + switch (CastleWars.getTeamNumber(player)) { + case 1: + CastleWars.returnFlag(player, player.playerEquipment[player.playerWeapon]); + break; + case 2: + CastleWars.captureFlag(player); + break; + } + break; + case 4903: // zammy flag + case 4378: + switch (CastleWars.getTeamNumber(player)) { + case 1: + CastleWars.captureFlag(player); + break; + case 2: + CastleWars.returnFlag(player, player.playerEquipment[player.playerWeapon]); + break; + } + break; + case 4461: // barricades + if (System.currentTimeMillis() - player.miscTimer > 1200) { + player.getPacketSender().sendMessage("You get a barricade!"); + player.getItemAssistant().addItem(4053, 1); + player.miscTimer = System.currentTimeMillis(); + } + break; + case 4463: // explosive potion! + if (System.currentTimeMillis() - player.miscTimer > 1200) { + player.getPacketSender().sendMessage( + "You get an explosive potion!"); + player.getItemAssistant().addItem(4045, 1); + player.miscTimer = System.currentTimeMillis(); + } + break; + case 4464: // pickaxe table + if (System.currentTimeMillis() - player.miscTimer > 1200) { + player.getPacketSender().sendMessage( + "You get a bronzen pickaxe for mining."); + player.getItemAssistant().addItem(1265, 1); + player.miscTimer = System.currentTimeMillis(); + } + break; + case 4459: // tinderbox table + if (System.currentTimeMillis() - player.miscTimer > 1200) { + player.getPacketSender().sendMessage("You take a tinderbox!"); + player.getItemAssistant().addItem(590, 1); + player.miscTimer = System.currentTimeMillis(); + } + break; + case 4462: + if (System.currentTimeMillis() - player.miscTimer > 1200) { + player.getPacketSender().sendMessage("You take some rope!"); + player.getItemAssistant().addItem(954, 1); + player.miscTimer = System.currentTimeMillis(); + } + break; + case 4460: + if (System.currentTimeMillis() - player.miscTimer > 1200) { + player.getPacketSender().sendMessage("You take a rock!"); + player.getItemAssistant().addItem(4043, 1); + player.miscTimer = System.currentTimeMillis(); + } + break; + case 4900: + case 4901: + CastleWars.pickupFlag(player); + default: + break; + + } + } +} diff --git a/2006Redone Server/src/redone/game/content/minigames/castlewars/CastleWars.java b/2006Redone Server/src/com/rebotted/game/content/minigames/castlewars/CastleWars.java similarity index 70% rename from 2006Redone Server/src/redone/game/content/minigames/castlewars/CastleWars.java rename to 2006Redone Server/src/com/rebotted/game/content/minigames/castlewars/CastleWars.java index 3a5fccda..e3d601be 100644 --- a/2006Redone Server/src/redone/game/content/minigames/castlewars/CastleWars.java +++ b/2006Redone Server/src/com/rebotted/game/content/minigames/castlewars/CastleWars.java @@ -1,857 +1,828 @@ -package redone.game.content.minigames.castlewars; - -import java.util.HashMap; -import java.util.Iterator; - -import redone.game.items.ItemAssistant; -import redone.game.players.Client; -import redone.game.players.Player; -import redone.util.Misc; - -/** - * @Author Sanity for base - * @Author Satan666 - * @Author Andrew fixing it up - */ - -public class CastleWars { - - /* - * Game timers. - */ - private static final int GAME_TIMER = 200; // 1500 * 600 = 900000ms = 15 - // minutes - private static final int GAME_START_TIMER = 30; - /* - * Hashmap for the waitingroom players - */ - private static HashMap waitingRoom = new HashMap(); - /* - * hashmap for the gameRoom players - */ - private static HashMap gameRoom = new HashMap(); - /* - * The coordinates for the waitingRoom both sara/zammy - */ - private static final int[][] WAIT_ROOM = { { 2377, 9485 }, // sara - { 2421, 9524 } // zammy - }; - /* - * The coordinates for the gameRoom both sara/zammy - */ - private static final int[][] GAME_ROOM = { { 2426, 3076 }, // sara - { 2372, 3131 } // zammy - }; - private static final int[][] FLAG_STANDS = { { 2429, 3074 }, // sara - // {X-Coord, - // Y-Coord) - { 2370, 3133 } // zammy - }; - /* - * Scores for saradomin and zamorak! - */ - private static int[] scores = { 0, 0 }; - /* - * Booleans to check if a team's flag is safe - */ - private static int zammyFlag = 0; - private static int saraFlag = 0; - /* - * Zamorak and saradomin banner/capes item ID's - */ - public static final int SARA_BANNER = 4037; - public static final int ZAMMY_BANNER = 4039; - public static final int SARA_CAPE = 4041; - public static final int ZAMMY_CAPE = 4042; - public static final int SARA_HOOD = 4513; - public static final int ZAMMY_HOOD = 4515; - - public static boolean deleteCastleWarsItems(Client c, int itemId) { - int[] items = { 4049, 4045, 4053, 4042, 4041, 4037, 4039, 4043 }; - for (int item : items) { - int amount = c.getItemAssistant().getItemCount(item); - if (itemId == item && !isInCw(c)) { - c.getItemAssistant().deleteItem(item, amount); - c.getActionSender().sendMessage("You shouldn't have " + ItemAssistant.getItemName(itemId) + " outside of castlewars!"); - return false; - } - } - return true; - } - - - private static final int[][] COLLAPSE_ROCKS = { // collapsing rocks coords - { 2399, 2402, 9511, 9514 }, // north X Y coords sara 0 - { 2390, 2393, 9500, 9503 }, // east X Y coords sara 1 - { 2400, 2403, 9493, 9496 }, // south X Y coords zammy 2 - { 2408, 2411, 9502, 9505 } // west X Y coords zammy 3 - }; - - /* - * - */ - private static int properTimer = 0; - private static int timeRemaining = -1; - private static int gameStartTimer = GAME_START_TIMER; - private static boolean gameStarted = false; - - public static void resetPlayer(Client c) { - c.getPlayerAssistant().movePlayer(2440 + Misc.random(3), 3089 - Misc.random(3), 0); - deleteGameItems(c); - c.getActionSender().sendMessage("Cheating will not be tolerated."); - } - - public static void collapseCave(int cave) { - Iterator iterator = gameRoom.keySet().iterator(); - while (iterator.hasNext()) { - Client teamPlayer = iterator.next(); - if (teamPlayer.absX > COLLAPSE_ROCKS[cave][0] - && teamPlayer.absX < COLLAPSE_ROCKS[cave][1] - && teamPlayer.absY > COLLAPSE_ROCKS[cave][2] - && teamPlayer.absY < COLLAPSE_ROCKS[cave][3]) { - int dmg = teamPlayer.playerLevel[3]; - teamPlayer.handleHitMask(dmg); - teamPlayer.dealDamage(99);// 99 damage? - } - } - } - - /** - * Method we use to add someone to the waitinroom in a different method, - * this will filter out some error messages - * - * @param player - * the player that wants to join - * @param team - * the team! - */ - public static void addToWaitRoom(Client player, int team) { - if (player == null) { - return; - } else if (gameStarted == true) { - player.getActionSender() - .sendMessage( - "There's already a Castle Wars going. Please wait a few minutes before trying again."); - return; - } else if (player.playerEquipment[player.playerHat] > 0 || player.playerEquipment[player.playerCape] > 0 || player.getItemAssistant().playerHasItem(player.playerCape) || player.getItemAssistant().playerHasItem(player.playerHat)) { - player.getActionSender().sendMessage("You may not bring capes or helmets in castle wars."); - return; - } - toWaitingRoom(player, team); - } - - /** - * Method we use to transfer to player from the outside to the waitingroom - * (: - * - * @param player - * the player that wants to join - * @param team - * team he wants to be in - team = 1 (saradomin), team = 2 - * (zamorak), team = 3 (random) - */ - public static void toWaitingRoom(Client player, int team) { - int[] food = { 391, 385, 379, 333, 329, 373, 361, 7946, 397, 1891, 365, - 339, 1942, 6701, 6705, 7056, 7054, 7058, 7060, 315, 347, 325, - 1897, 2289, 2293, 2297, 2301, 2309, 2323, 2325, 2327, 351, - 6703, 1963, 6883, 2108, 2118, 2116, 15272, 1961, 1959, 1989, - 1935, 1915, 1978, 712, 1907, 2120, 2114, 1973, 1993, 355, - 3144, 1917, 1909, 2955, 1969, 6701, 1893, 1895, 1965, 1899, - 1901, 2291, 2295, 2297, 2299, 2301, 2303, 1883, 6883, 2108, 2118, - 2116, 7928, 7929, 7930, 7931, 7932, 7933, 10476, 2130, 2003, 2011, - 4049}; - for (int element : food) { - if (player.getItemAssistant().playerHasItem(element)) { - player.getActionSender().sendMessage("You may not bring your own consumables inside of Castle Wars."); - return; - } - } - if (team == 1) { - if (getSaraPlayers() > getZammyPlayers() && getSaraPlayers() > 0) { - player.getActionSender().sendMessage( - "The saradomin team is full, try again later!"); - return; - } - if (getZammyPlayers() >= getSaraPlayers() || getSaraPlayers() == 0) { - player.getActionSender().sendMessage( - "You have been added to the Saradomin team."); - player.getActionSender().sendMessage( - "Next Game Begins In: " - + (gameStartTimer * 3 + timeRemaining * 3) - + " seconds."); - addCapes(player, SARA_CAPE); - waitingRoom.put(player, team); - player.getPlayerAssistant().movePlayer( - WAIT_ROOM[team - 1][0] + Misc.random(5), - WAIT_ROOM[team - 1][1] + Misc.random(5), 0); - } - } else if (team == 2) { - if (getZammyPlayers() > getSaraPlayers() && getZammyPlayers() > 0) { - player.getActionSender().sendMessage( - "The zamorak team is full, try again later!"); - return; - } - if (getZammyPlayers() <= getSaraPlayers() || getZammyPlayers() == 0) { - player.getActionSender() - .sendMessage( - "Random team: You have been added to the Zamorak team."); - player.getActionSender().sendMessage( - "Next Game Begins In: " - + (gameStartTimer * 3 + timeRemaining * 3) - + " seconds."); - addCapes(player, ZAMMY_CAPE); - waitingRoom.put(player, team); - player.getPlayerAssistant().movePlayer( - WAIT_ROOM[team - 1][0] + Misc.random(5), - WAIT_ROOM[team - 1][1] + Misc.random(5), 0); - } - } else if (team == 3) { - toWaitingRoom(player, getZammyPlayers() > getSaraPlayers() ? 1 : 2); - return; - } - } - - /** - * Method to add score to scoring team - * - * @param player - * the player who scored - * @param banner - * banner id! - */ - public static void returnFlag(Client player, int wearItem) { - if (player == null) { - return; - } - if (wearItem != SARA_BANNER && wearItem != ZAMMY_BANNER) { - return; - } - int team = gameRoom.get(player); - int objectId = -1; - int objectTeam = -1; - switch (team) { - case 1: - if (wearItem == SARA_BANNER) { - setSaraFlag(0); - objectId = 4902; - objectTeam = 0; - player.getActionSender().sendMessage( - "Returned the sara flag!"); - } else { - objectId = 4903; - objectTeam = 1; - setZammyFlag(0); - scores[0]++; // upping the score of a team; team 0 = sara, - // team 1 = zammy - player.getActionSender().sendMessage( - "The team of Saradomin scores 1 point!"); - } - break; - case 2: - if (wearItem == ZAMMY_BANNER) { - setZammyFlag(0); - objectId = 4903; - objectTeam = 1; - player.getActionSender().sendMessage( - "Returned the zammy flag!"); - } else { - objectId = 4902; - objectTeam = 0; - setSaraFlag(0); - scores[1]++; // upping the score of a team; team 0 = sara, - // team 1 = zammy - player.getActionSender().sendMessage( - "The team of Zamorak scores 1 point!"); - zammyFlag = 0; - } - break; - } - changeFlagObject(objectId, objectTeam); - player.getActionSender().createPlayerHints(10, -1); - player.playerEquipment[player.playerWeapon] = -1; - player.playerEquipmentN[player.playerWeapon] = 0; - player.getItemAssistant().updateSlot(3); - player.appearanceUpdateRequired = true; - player.updateRequired = true; - player.getItemAssistant().resetItems(3214); - } - - /** - * Method that will capture a flag when being taken by the enemy team! - * - * @param player - * the player who returned the flag - * @param team - */ - public static void captureFlag(Client player) { - if (player.playerEquipment[player.playerWeapon] > 0) { - player.getActionSender() - .sendMessage( - "Please remove your weapon before attempting to get the flag again!"); - return; - } - int team = gameRoom.get(player); - if (team == 2 && saraFlag == 0) { // sara flag - setSaraFlag(1); - addFlag(player, SARA_BANNER); - createHintIcon(player, 1); - changeFlagObject(4377, 0); - } - if (team == 1 && zammyFlag == 0) { - setZammyFlag(1); - addFlag(player, ZAMMY_BANNER); - createHintIcon(player, 2); - changeFlagObject(4378, 1); - } - } - - /** - * Method that will add the flag to a player's weapon slot - * - * @param player - * the player who's getting the flag - * @param flagId - * the banner id. - */ - public static void addFlag(Client player, int flagId) { - player.playerEquipment[player.playerWeapon] = flagId; - player.playerEquipmentN[player.playerWeapon] = 1; - player.getItemAssistant().updateSlot(player.playerWeapon); - player.appearanceUpdateRequired = true; - player.updateRequired = true; - } - - /** - * Method we use to handle the flag dropping - * - * @param player - * the player who dropped the flag/died - * @param flagId - * the flag item ID - */ - public static void dropFlag(Client player, int flagId) { - int object = -1; - switch (flagId) { - case SARA_BANNER: // sara - setSaraFlag(2); - object = 4900; - createFlagHintIcon(player.getX(), player.getY()); - break; - case ZAMMY_BANNER: // zammy - setZammyFlag(2); - object = 4901; - createFlagHintIcon(player.getX(), player.getY()); - break; - } - - player.playerEquipment[player.playerWeapon] = -1; - player.playerEquipmentN[player.playerWeapon] = 0; - player.getItemAssistant().updateSlot(player.playerWeapon); - player.appearanceUpdateRequired = true; - player.updateRequired = true; - for (Client teamPlayer : gameRoom.keySet()) { - teamPlayer.getActionSender().object(object, player.getX(), - player.getY(), 0, 10); - } - } - - /** - * Method we use to pickup the flag when it was dropped/lost - * - * @param Player - * the player who's picking it up - * @param objectId - * the flag object id. - */ - public static void pickupFlag(Client player) { - switch (player.objectId) { - case 4900: // sara - if (player.playerEquipment[player.playerWeapon] > 0) { - player.getActionSender() - .sendMessage( - "Please remove your weapon before attempting to get the flag again!"); - return; - } - if (saraFlag != 2) { - return; - } - setSaraFlag(1); - addFlag(player, 4037); - break; - case 4901: // zammy - if (player.playerEquipment[player.playerWeapon] > 0) { - player.getActionSender() - .sendMessage( - "Please remove your weapon before attempting to get the flag again!"); - return; - } - if (zammyFlag != 2) { - return; - } - setZammyFlag(1); - addFlag(player, 4039); - break; - } - createHintIcon(player, gameRoom.get(player) == 1 ? 2 : 1); - Iterator iterator = gameRoom.keySet().iterator(); - while (iterator.hasNext()) { - Client teamPlayer = iterator.next(); - teamPlayer.getActionSender().createObjectHints(player.objectX, - player.objectY, 170, -1); - teamPlayer.getActionSender().object(-1, player.objectX, - player.objectY, 0, 10); - } - return; - } - - /** - * Hint icons appear to your team when a enemy steals flag - * - * @param player - * the player who took the flag - * @param t - * team of the opponent team. (: - */ - public static void createHintIcon(Client player, int t) { - Iterator iterator = gameRoom.keySet().iterator(); - while (iterator.hasNext()) { - Client teamPlayer = iterator.next(); - // System.out.println(teamPlayer.playerName + " => Team => " + - // gameRoom.get(teamPlayer)); - // System.out.println("Desired team = " + t); - teamPlayer.getActionSender().createPlayerHints(10, -1); - if (gameRoom.get(teamPlayer) == t) { - // System.out.println("Created hint icons for playername " + - // teamPlayer.playerName + " and team number: " + t); - teamPlayer.getActionSender().createPlayerHints(10, - player.playerId); - teamPlayer.getPlayerAssistant().requestUpdates(); - } - } - } - - /** - * Hint icons appear to your team when a enemy steals flag - * - * @param player - * the player who took the flag - * @param t - * team of the opponent team. (: - */ - public static void createFlagHintIcon(int x, int y) { - Iterator iterator = gameRoom.keySet().iterator(); - while (iterator.hasNext()) { - Client teamPlayer = iterator.next(); - teamPlayer.getActionSender().createObjectHints(x, y, 170, 2); - } - } - - /** - * This method is used to get the teamNumber of a certain player - * - * @param player - * @return - */ - public static int getTeamNumber(Client player) { - if (player == null) { - return -1; - } - if (gameRoom.containsKey(player)) { - return gameRoom.get(player); - } - return -1; - } - - /** - * The leaving method will be used on click object or log out - * - * @param player - * player who wants to leave - */ - public static void leaveWaitingRoom(Client player) { - if (player == null) { - System.out.println("player is null"); - return; - } - if (waitingRoom.containsKey(player)) { - waitingRoom.remove(player); - player.getActionSender().createPlayerHints(10, -1); - player.getActionSender().sendMessage("You left your team!"); - deleteGameItems(player); - player.getPlayerAssistant().movePlayer(2439 + Misc.random(4), - 3085 + Misc.random(5), 0); - return; - } - player.getPlayerAssistant().movePlayer(2439 + Misc.random(4), - 3085 + Misc.random(5), 0); - // System.out.println("Waiting room map does not contain " + - // player.playerName); - } - - public static void process() { - if (properTimer > 0) { - properTimer--; - return; - } else { - properTimer = 4; - } - if (gameStartTimer > 0) { - gameStartTimer--; - updatePlayers(); - } else if (gameStartTimer == 0) { - startGame(); - } - if (timeRemaining > 0) { - timeRemaining--; - updateInGamePlayers(); - } else if (timeRemaining == 0) { - endGame(); - } - } - - /** - * Method we use to update the player's interface in the waiting room - */ - public static void updatePlayers() { - Iterator iterator = waitingRoom.keySet().iterator(); - while (iterator.hasNext()) { - Client player = iterator.next(); - if (player != null) { - player.getPlayerAssistant().sendFrame126( - "Next Game Begins In: " - + (gameStartTimer * 3 + timeRemaining * 3) - + " seconds.", 6570); - player.getPlayerAssistant().sendFrame126( - "Zamorak Players: " + getZammyPlayers() + ".", 6572); - player.getPlayerAssistant().sendFrame126( - "Saradomin Players: " + getSaraPlayers() + ".", 6664); - player.getPlayerAssistant().walkableInterface(6673); - } - } - } - - /** - * Method we use the update the player's interface in the game room - */ - public static void updateInGamePlayers() { - if (getSaraPlayers() > 0 && getZammyPlayers() > 0) { - Iterator iterator = gameRoom.keySet().iterator(); - while (iterator.hasNext()) { - Client player = iterator.next(); - int config; - if (player == null) { - continue; - } - player.getPlayerAssistant().walkableInterface(11146); - player.getPlayerAssistant().sendFrame126( - "Zamorak = " + scores[1], 11147); - player.getPlayerAssistant().sendFrame126( - scores[0] + " = Saradomin", 11148); - player.getPlayerAssistant().sendFrame126( - timeRemaining * 3 + " secs", 11155); - config = 2097152 * saraFlag; - player.getPlayerAssistant().sendFrame87(378, config); - config = 2097152 * zammyFlag; // flags 0 = safe 1 = taken 2 - // = dropped - player.getPlayerAssistant().sendFrame87(377, config); - } - } - } - - /* - * Method that will start the game when there's enough players. - */ - public static void startGame() { - if (getSaraPlayers() < 1 || getZammyPlayers() < 1) { - gameStartTimer = GAME_START_TIMER; - return; - } - gameStartTimer = -1; - System.out.println("Starting Castle Wars game."); - gameStarted = true; - timeRemaining = GAME_TIMER / 2; - Iterator iterator = waitingRoom.keySet().iterator(); - while (iterator.hasNext()) { - Client player = iterator.next(); - int team = waitingRoom.get(player); - if (player == null) { - continue; - } - player.getPlayerAssistant().walkableInterface(-1); - player.getPlayerAssistant().movePlayer( - GAME_ROOM[team - 1][0] + Misc.random(3), - GAME_ROOM[team - 1][1] - Misc.random(3), 1); - player.getPlayerAssistant().movePlayer( - GAME_ROOM[team - 1][0] + Misc.random(3), - GAME_ROOM[team - 1][1] - Misc.random(3), 1); - gameRoom.put(player, team); - } - waitingRoom.clear(); - } - - /* - * Method we use to end an ongoing cw game. - */ - public static void endGame() { - Iterator iterator = gameRoom.keySet().iterator(); - while (iterator.hasNext()) { - Client player = iterator.next(); - int team = gameRoom.get(player); - if (player == null) { - continue; - } - player.cwGames++; - player.getPlayerAssistant().movePlayer(2440 + Misc.random(3), - 3089 - Misc.random(3), 0); - player.getActionSender().sendMessage( - "Castle Wars: The Castle Wars game has ended!"); - player.getActionSender().sendMessage( - "Castle Wars: Kills: " + player.cwKills + " Deaths: " - + player.cwDeaths + " Games Played: " - + player.cwGames + "."); - player.getActionSender().createPlayerHints(10, -1); - deleteGameItems(player); - player.isDead = false; - for (int i = 0; i < 25; i++) { - player.playerLevel[i] = player - .getLevelForXP(player.playerXP[i]); - player.getPlayerAssistant().refreshSkill(i); - } - if (scores[0] == scores[1]) { - player.getItemAssistant().addItem(4067, 1); - player.getActionSender().sendMessage( - "Tie game! You earn 1 ticket!"); - } else if (team == 1) { - if (scores[0] > scores[1]) { - player.getItemAssistant().addItem(4067, 2); - player.getActionSender() - .sendMessage( - "You won the game. You received 2 Castle Wars Tickets!"); - } else if (scores[0] < scores[1]) { - player.getItemAssistant().addItem(4067, 0); - player.getActionSender().sendMessage( - "You lost the game. You received no tickets!"); - } - } else if (team == 2) { - if (scores[1] > scores[0]) { - player.getItemAssistant().addItem(4067, 2); - player.getActionSender() - .sendMessage( - "You won the game. You received 2 Castle Wars Tickets!"); - } else if (scores[1] < scores[0]) { - player.getItemAssistant().addItem(4067, 0); - player.getActionSender().sendMessage( - "You lost the game. You received no tickets!"); - ; - } - } - } - resetGame(); - } - - /** - * reset the game variables - */ - public static void resetGame() { - changeFlagObject(4902, 0); - changeFlagObject(4903, 1); - setSaraFlag(0); - setZammyFlag(0); - timeRemaining = -1; - System.out.println("Ending Castle Wars game."); - gameStartTimer = GAME_START_TIMER; - gameStarted = false; - gameRoom.clear(); - } - - /** - * Method we use to remove a player from the game - * - * @param player - * the player we want to be removed - */ - public static void removePlayerFromCw(Client player) { - if (player == null) { - System.out.println("Error removing player from castle wars [REASON = null]."); - return; - } - if (gameRoom.containsKey(player)) { - /* - * Logging/leaving with flag - */ - if (player.getItemAssistant().playerHasEquipped(SARA_BANNER)) { - player.getItemAssistant().removeItem(player.playerEquipment[3], - 3); - setSaraFlag(0); // safe flag - } else if (player.getItemAssistant() - .playerHasEquipped(ZAMMY_BANNER)) { - player.getItemAssistant().removeItem(player.playerEquipment[3], - 3); - setZammyFlag(0); // safe flag - } - deleteGameItems(player); - player.getPlayerAssistant().movePlayer(2440, 3089, 0); - player.getActionSender().sendMessage( - "The Casle Wars game has ended for you!"); - player.getActionSender().sendMessage( - "Kills: " + player.cwKills + " Deaths: " + player.cwDeaths - + "."); - player.getActionSender().createPlayerHints(10, -1); - gameRoom.remove(player); - } - if (getZammyPlayers() <= 0 || getSaraPlayers() <= 0) { - endGame(); - } - } - - /** - * Will add a cape to a player's equip - * - * @param player - * the player - * @param capeId - * the capeId - */ - public static void addCapes(Client player, int capeId) { - player.playerEquipment[player.playerCape] = capeId; - player.playerEquipmentN[player.playerCape] = 1; - player.getItemAssistant().updateSlot(player.playerCape); - player.appearanceUpdateRequired = true; - player.updateRequired = true; - } - - /** - * This method will delete all items received in game. Easy to add items to - * the array. (: - * - * @param player - * the player who want the game items deleted from. - */ - - public static void deleteGameItems(Client player) { - switch (player.playerEquipment[3]) { - case 4037: - case 4039: - player.playerEquipment[3] = -1; - player.playerEquipmentN[3] = 0; - player.getItemAssistant().updateSlot(player.playerWeapon); - player.appearanceUpdateRequired = true; - player.updateRequired = true; - System.out.println(player.playerName + " removed weapon:" - + player.playerEquipment[3]); - break; - } - switch (player.playerEquipment[1]) { - case 4042: - case 4041: - player.playerEquipment[1] = -1; - player.playerEquipmentN[1] = 0; - player.getItemAssistant().updateSlot(player.playerCape); - player.appearanceUpdateRequired = true; - player.updateRequired = true; - System.out.println(player.playerName + " removed cape: " - + player.playerEquipment[1]); - break; - } - int[] items = { 4049, 1265, 4045, 4053, 4042, 4041, 4037, 4039, 4043 }; - //4049, 4045, 4053, 4042, 4041, 4037, 4039 - for (int item : items) { - if (player.getItemAssistant().playerHasItem(item)) { - player.getItemAssistant().deleteItem(item, - player.getItemAssistant().getItemAmount(item)); - } - } - } - - /** - * Methode we use to get the zamorak players - * - * @return the amount of players in the zamorakian team! - */ - public static int getZammyPlayers() { - int players = 0; - Iterator iterator = !waitingRoom.isEmpty() ? waitingRoom - .values().iterator() : gameRoom.values().iterator(); - while (iterator.hasNext()) { - if (iterator.next() == 2) { - players++; - } - } - return players; - } - - /** - * Method we use to get the saradomin players! - * - * @return the amount of players in the saradomin team! - */ - public static int getSaraPlayers() { - int players = 0; - Iterator iterator = !waitingRoom.isEmpty() ? waitingRoom - .values().iterator() : gameRoom.values().iterator(); - while (iterator.hasNext()) { - if (iterator.next() == 1) { - players++; - } - } - return players; - } - - /** - * Method we use for checking if the player is in the gameRoom - * - * @param player - * player who will be checking - * @return - */ - public static boolean isInCw(Player player) { - return gameRoom.containsKey(player); - } - - /** - * Method we use for checking if the player is in the waitingRoom - * - * @param player - * player who will be checking - * @return - */ - public static boolean isInCwWait(Player player) { - return waitingRoom.containsKey(player); - } - - /** - * Method to make sara flag change status 0 = safe, 1 = taken, 2 = dropped - * - * @param status - */ - public static void setSaraFlag(int status) { - saraFlag = status; - } - - /** - * Method to make zammy flag change status 0 = safe, 1 = taken, 2 = dropped - * - * @param status - */ - public static void setZammyFlag(int status) { - zammyFlag = status; - } - - /** - * Method we use for the changing the object of the flag stands when - * capturing/returning flag - * - * @param objectId - * the object - * @param team - * the team of the player - */ - public static void changeFlagObject(int objectId, int team) { - Iterator iterator = gameRoom.keySet().iterator(); - while (iterator.hasNext()) { - Client teamPlayer = iterator.next(); - teamPlayer.getActionSender().object(objectId, - FLAG_STANDS[team][0], FLAG_STANDS[team][1], 0, 10); - } - } -} +package com.rebotted.game.content.minigames.castlewars; + +import java.util.HashMap; +import java.util.Iterator; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +/** + * @Author Sanity for base + * @Author Satan666 + * @Author Andrew (Mr Extremez) fixing it up + */ + +public class CastleWars { + + /* + * Game timers. + */ + private static final int GAME_TIMER = 200; // 1500 * 600 = 900000ms = 15 + // minutes + private static final int GAME_START_TIMER = 30; + /* + * Hashmap for the waitingroom players + */ + private static HashMap waitingRoom = new HashMap(); + /* + * hashmap for the gameRoom players + */ + private static HashMap gameRoom = new HashMap(); + /* + * The coordinates for the waitingRoom both sara/zammy + */ + private static final int[][] WAIT_ROOM = { { 2377, 9485 }, // sara + { 2421, 9524 } // zammy + }; + /* + * The coordinates for the gameRoom both sara/zammy + */ + private static final int[][] GAME_ROOM = { { 2426, 3076 }, // sara + { 2372, 3131 } // zammy + }; + private static final int[][] FLAG_STANDS = { { 2429, 3074 }, // sara + // {X-Coord, + // Y-Coord) + { 2370, 3133 } // zammy + }; + /* + * Scores for saradomin and zamorak! + */ + private static int[] scores = { 0, 0 }; + /* + * Booleans to check if a team's flag is safe + */ + private static int zammyFlag = 0; + private static int saraFlag = 0; + /* + * Zamorak and saradomin banner/capes item ID's + */ + public static final int SARA_BANNER = 4037; + public static final int ZAMMY_BANNER = 4039; + public static final int SARA_CAPE = 4041; + public static final int ZAMMY_CAPE = 4042; + public static final int SARA_HOOD = 4513; + public static final int ZAMMY_HOOD = 4515; + + public static boolean deleteCastleWarsItems(Player c, int itemId) { + int[] items = { 4049, 4045, 4053, 4042, 4041, 4037, 4039, 4043 }; + for (int item : items) { + int amount = c.getItemAssistant().getItemCount(item); + if (itemId == item && !isInCw(c)) { + c.getItemAssistant().deleteItem(item, amount); + c.getPacketSender().sendMessage("You shouldn't have " + ItemAssistant.getItemName(itemId) + " outside of castlewars!"); + return false; + } + } + return true; + } + + + private static final int[][] COLLAPSE_ROCKS = { // collapsing rocks coords + { 2399, 2402, 9511, 9514 }, // north X Y coords sara 0 + { 2390, 2393, 9500, 9503 }, // east X Y coords sara 1 + { 2400, 2403, 9493, 9496 }, // south X Y coords zammy 2 + { 2408, 2411, 9502, 9505 } // west X Y coords zammy 3 + }; + + /* + * + */ + private static int properTimer = 0; + private static int timeRemaining = -1; + private static int gameStartTimer = GAME_START_TIMER; + private static boolean gameStarted = false; + + public static void resetPlayer(Player player) { + player.getPlayerAssistant().movePlayer(2440 + Misc.random(3), 3089 - Misc.random(3), 0); + deleteGameItems(player); + player.getPacketSender().sendMessage("Cheating will not be tolerated."); + } + + public static void collapseCave(int cave) { + Iterator iterator = gameRoom.keySet().iterator(); + while (iterator.hasNext()) { + Player teamPlayer = iterator.next(); + if (teamPlayer.absX > COLLAPSE_ROCKS[cave][0] + && teamPlayer.absX < COLLAPSE_ROCKS[cave][1] + && teamPlayer.absY > COLLAPSE_ROCKS[cave][2] + && teamPlayer.absY < COLLAPSE_ROCKS[cave][3]) { + int dmg = teamPlayer.playerLevel[3]; + teamPlayer.handleHitMask(dmg); + teamPlayer.dealDamage(99);// 99 damage? + } + } + } + + /** + * Method we use to add someone to the waitinroom in a different method, + * this will filter out some error messages + * + * @param p + * the player that wants to join + * @param team + * the team! + */ + public static void addToWaitRoom(Player p, int team) { + if (p == null) { + return; + } else if (gameStarted == true) { + p.getPacketSender() + .sendMessage( + "There's already a Castle Wars going. Please wait a few minutes before trying again."); + return; + } else if (p.playerEquipment[p.playerHat] > 0 || p.playerEquipment[p.playerCape] > 0 || p.getItemAssistant().playerHasItem(p.playerCape) || p.getItemAssistant().playerHasItem(p.playerHat)) { + p.getPacketSender().sendMessage("You may not bring capes or helmets in castle wars."); + return; + } + toWaitingRoom(p, team); + } + + /** + * Method we use to transfer to player from the outside to the waitingroom + * (: + * + * @param p + * the player that wants to join + * @param team + * team he wants to be in - team = 1 (saradomin), team = 2 + * (zamorak), team = 3 (random) + */ + public static void toWaitingRoom(Player p, int team) { + int[] food = { 391, 385, 379, 333, 329, 373, 361, 7946, 397, 1891, 365, + 339, 1942, 6701, 6705, 7056, 7054, 7058, 7060, 315, 347, 325, + 1897, 2289, 2293, 2297, 2301, 2309, 2323, 2325, 2327, 351, + 6703, 1963, 6883, 2108, 2118, 2116, 15272, 1961, 1959, 1989, + 1935, 1915, 1978, 712, 1907, 2120, 2114, 1973, 1993, 355, + 3144, 1917, 1909, 2955, 1969, 6701, 1893, 1895, 1965, 1899, + 1901, 2291, 2295, 2297, 2299, 2301, 2303, 1883, 6883, 2108, 2118, + 2116, 7928, 7929, 7930, 7931, 7932, 7933, 10476, 2130, 2003, 2011, + 4049}; + for (int element : food) { + if (p.getItemAssistant().playerHasItem(element)) { + p.getPacketSender().sendMessage("You may not bring your own consumables inside of Castle Wars."); + return; + } + } + if (team == 1) { + if (getSaraPlayers() > getZammyPlayers() && getSaraPlayers() > 0) { + p.getPacketSender().sendMessage( + "The saradomin team is full, try again later!"); + return; + } + if (getZammyPlayers() >= getSaraPlayers() || getSaraPlayers() == 0) { + p.getPacketSender().sendMessage( + "You have been added to the Saradomin team."); + p.getPacketSender().sendMessage( + "Next Game Begins In: " + + (gameStartTimer * 3 + timeRemaining * 3) + + " seconds."); + addCapes(p, SARA_CAPE); + waitingRoom.put(p, team); + p.getPlayerAssistant().movePlayer( + WAIT_ROOM[team - 1][0] + Misc.random(5), + WAIT_ROOM[team - 1][1] + Misc.random(5), 0); + } + } else if (team == 2) { + if (getZammyPlayers() > getSaraPlayers() && getZammyPlayers() > 0) { + p.getPacketSender().sendMessage( + "The zamorak team is full, try again later!"); + return; + } + if (getZammyPlayers() <= getSaraPlayers() || getZammyPlayers() == 0) { + p.getPacketSender() + .sendMessage( + "Random team: You have been added to the Zamorak team."); + p.getPacketSender().sendMessage( + "Next Game Begins In: " + + (gameStartTimer * 3 + timeRemaining * 3) + + " seconds."); + addCapes(p, ZAMMY_CAPE); + waitingRoom.put(p, team); + p.getPlayerAssistant().movePlayer( + WAIT_ROOM[team - 1][0] + Misc.random(5), + WAIT_ROOM[team - 1][1] + Misc.random(5), 0); + } + } else if (team == 3) { + toWaitingRoom(p, getZammyPlayers() > getSaraPlayers() ? 1 : 2); + return; + } + } + + /** + * Method to add score to scoring team + * + * @param player + * the player who scored + * @param banner + * banner id! + */ + public static void returnFlag(Player player, int wearItem) { + if (player == null) { + return; + } + if (wearItem != SARA_BANNER && wearItem != ZAMMY_BANNER) { + return; + } + int team = gameRoom.get(player); + int objectId = -1; + int objectTeam = -1; + switch (team) { + case 1: + if (wearItem == SARA_BANNER) { + setSaraFlag(0); + objectId = 4902; + objectTeam = 0; + player.getPacketSender().sendMessage( + "Returned the sara flag!"); + } else { + objectId = 4903; + objectTeam = 1; + setZammyFlag(0); + scores[0]++; // upping the score of a team; team 0 = sara, + // team 1 = zammy + player.getPacketSender().sendMessage( + "The team of Saradomin scores 1 point!"); + } + break; + case 2: + if (wearItem == ZAMMY_BANNER) { + setZammyFlag(0); + objectId = 4903; + objectTeam = 1; + player.getPacketSender().sendMessage( + "Returned the zammy flag!"); + } else { + objectId = 4902; + objectTeam = 0; + setSaraFlag(0); + scores[1]++; // upping the score of a team; team 0 = sara, + // team 1 = zammy + player.getPacketSender().sendMessage( + "The team of Zamorak scores 1 point!"); + zammyFlag = 0; + } + break; + } + changeFlagObject(objectId, objectTeam); + player.getPacketSender().createPlayerHints(10, -1); + player.playerEquipment[player.playerWeapon] = -1; + player.playerEquipmentN[player.playerWeapon] = 0; + player.getItemAssistant().updateSlot(3); + player.appearanceUpdateRequired = true; + player.updateRequired = true; + player.getItemAssistant().resetItems(3214); + } + + /** + * Method that will capture a flag when being taken by the enemy team! + * + * @param player + * the player who returned the flag + * @param team + */ + public static void captureFlag(Player player) { + if (player.playerEquipment[player.playerWeapon] > 0) { + player.getPacketSender() + .sendMessage( + "Please remove your weapon before attempting to get the flag again!"); + return; + } + int team = gameRoom.get(player); + if (team == 2 && saraFlag == 0) { // sara flag + setSaraFlag(1); + addFlag(player, SARA_BANNER); + createHintIcon(player, 1); + changeFlagObject(4377, 0); + } + if (team == 1 && zammyFlag == 0) { + setZammyFlag(1); + addFlag(player, ZAMMY_BANNER); + createHintIcon(player, 2); + changeFlagObject(4378, 1); + } + } + + /** + * Method that will add the flag to a player's weapon slot + * + * @param player + * the player who's getting the flag + * @param flagId + * the banner id. + */ + public static void addFlag(Player player, int flagId) { + player.playerEquipment[player.playerWeapon] = flagId; + player.playerEquipmentN[player.playerWeapon] = 1; + player.getItemAssistant().updateSlot(player.playerWeapon); + player.appearanceUpdateRequired = true; + player.updateRequired = true; + } + + /** + * Method we use to handle the flag dropping + * + * @param player + * the player who dropped the flag/died + * @param flagId + * the flag item ID + */ + public static void dropFlag(Player player, int flagId) { + int object = -1; + switch (flagId) { + case SARA_BANNER: // sara + setSaraFlag(2); + object = 4900; + createFlagHintIcon(player.getX(), player.getY()); + break; + case ZAMMY_BANNER: // zammy + setZammyFlag(2); + object = 4901; + createFlagHintIcon(player.getX(), player.getY()); + break; + } + + player.playerEquipment[player.playerWeapon] = -1; + player.playerEquipmentN[player.playerWeapon] = 0; + player.getItemAssistant().updateSlot(player.playerWeapon); + player.appearanceUpdateRequired = true; + player.updateRequired = true; + for (Player teamPlayer : gameRoom.keySet()) { + teamPlayer.getPacketSender().object(object, player.getX(), player.getY(), 0, 10); + } + } + + /** + * Method we use to pickup the flag when it was dropped/lost + * + * @param Player + * the player who's picking it up + * @param objectId + * the flag object id. + */ + public static void pickupFlag(Player player) { + switch (player.objectId) { + case 4900: // sara + if (player.playerEquipment[player.playerWeapon] > 0) { + player.getPacketSender().sendMessage("Please remove your weapon before attempting to get the flag again!"); + return; + } + if (saraFlag != 2) { + return; + } + setSaraFlag(1); + addFlag(player, 4037); + break; + case 4901: // zammy + if (player.playerEquipment[player.playerWeapon] > 0) { + player.getPacketSender().sendMessage("Please remove your weapon before attempting to get the flag again!"); + return; + } + if (zammyFlag != 2) { + return; + } + setZammyFlag(1); + addFlag(player, 4039); + break; + } + createHintIcon(player, gameRoom.get(player) == 1 ? 2 : 1); + Iterator iterator = gameRoom.keySet().iterator(); + while (iterator.hasNext()) { + Player teamPlayer = iterator.next(); + teamPlayer.getPacketSender().createObjectHints(player.objectX, player.objectY, 170, -1); + teamPlayer.getPacketSender().object(-1, player.objectX, player.objectY, 0, 10); + } + return; + } + + /** + * Hint icons appear to your team when a enemy steals flag + * + * @param player + * the player who took the flag + * @param t + * team of the opponent team. (: + */ + public static void createHintIcon(Player player, int t) { + Iterator iterator = gameRoom.keySet().iterator(); + while (iterator.hasNext()) { + Player teamPlayer = iterator.next(); + teamPlayer.getPacketSender().createPlayerHints(10, -1); + if (gameRoom.get(teamPlayer) == t) { + teamPlayer.getPacketSender().createPlayerHints(10, player.playerId); + teamPlayer.getPlayerAssistant().requestUpdates(); + } + } + } + + /** + * Hint icons appear to your team when a enemy steals flag + * + * @param player + * the player who took the flag + * @param t + * team of the opponent team. (: + */ + public static void createFlagHintIcon(int x, int y) { + Iterator iterator = gameRoom.keySet().iterator(); + while (iterator.hasNext()) { + Player teamPlayer = iterator.next(); + teamPlayer.getPacketSender().createObjectHints(x, y, 170, 2); + } + } + + /** + * This method is used to get the teamNumber of a certain player + * + * @param player + * @return + */ + public static int getTeamNumber(Player player) { + if (player == null) { + return -1; + } + if (gameRoom.containsKey(player)) { + return gameRoom.get(player); + } + return -1; + } + + /** + * The leaving method will be used on click object or log out + * + * @param player + * player who wants to leave + */ + public static void leaveWaitingRoom(Player player) { + if (player == null) { + System.out.println("player is null"); + return; + } + if (waitingRoom.containsKey(player)) { + waitingRoom.remove(player); + player.getPacketSender().createPlayerHints(10, -1); + player.getPacketSender().sendMessage("You left your team!"); + deleteGameItems(player); + player.getPlayerAssistant().movePlayer(2439 + Misc.random(4), + 3085 + Misc.random(5), 0); + return; + } + player.getPlayerAssistant().movePlayer(2439 + Misc.random(4), + 3085 + Misc.random(5), 0); + // System.out.println("Waiting room map does not contain " + + // player.playerName); + } + + public static void process() { + if (properTimer > 0) { + properTimer--; + return; + } else { + properTimer = 4; + } + if (gameStartTimer > 0) { + gameStartTimer--; + updatePlayers(); + } else if (gameStartTimer == 0) { + startGame(); + } + if (timeRemaining > 0) { + timeRemaining--; + updateInGamePlayers(); + } else if (timeRemaining == 0) { + endGame(); + } + } + + /** + * Method we use to update the player's interface in the waiting room + */ + public static void updatePlayers() { + Iterator iterator = waitingRoom.keySet().iterator(); + while (iterator.hasNext()) { + Player player = iterator.next(); + if (player != null) { + player.getPacketSender().sendFrame126("Next Game Begins In: " + (gameStartTimer * 3 + timeRemaining * 3) + " seconds.", 6570); + player.getPacketSender().sendFrame126("Zamorak Players: " + getZammyPlayers() + ".", 6572); + player.getPacketSender().sendFrame126("Saradomin Players: " + getSaraPlayers() + ".", 6664); + player.getPacketSender().walkableInterface(6673); + } + } + } + + /** + * Method we use the update the player's interface in the game room + */ + public static void updateInGamePlayers() { + if (getSaraPlayers() > 0 && getZammyPlayers() > 0) { + Iterator iterator = gameRoom.keySet().iterator(); + while (iterator.hasNext()) { + Player player = iterator.next(); + int config; + if (player == null) { + continue; + } + player.getPacketSender().walkableInterface(11146); + player.getPacketSender().sendFrame126( + "Zamorak = " + scores[1], 11147); + player.getPacketSender().sendFrame126( + scores[0] + " = Saradomin", 11148); + player.getPacketSender().sendFrame126( + timeRemaining * 3 + " secs", 11155); + config = 2097152 * saraFlag; + player.getPacketSender().sendFrame87(378, config); + config = 2097152 * zammyFlag; // flags 0 = safe 1 = taken 2 + // = dropped + player.getPacketSender().sendFrame87(377, config); + } + } + } + + /* + * Method that will start the game when there's enough players. + */ + public static void startGame() { + if (getSaraPlayers() < 1 || getZammyPlayers() < 1) { + gameStartTimer = GAME_START_TIMER; + return; + } + gameStartTimer = -1; + System.out.println("Starting Castle Wars game."); + gameStarted = true; + timeRemaining = GAME_TIMER / 2; + Iterator iterator = waitingRoom.keySet().iterator(); + while (iterator.hasNext()) { + Player player = iterator.next(); + int team = waitingRoom.get(player); + if (player == null) { + continue; + } + player.getPacketSender().walkableInterface(-1); + player.getPlayerAssistant().movePlayer(GAME_ROOM[team - 1][0] + Misc.random(3), GAME_ROOM[team - 1][1] - Misc.random(3), 1); + player.getPlayerAssistant().movePlayer(GAME_ROOM[team - 1][0] + Misc.random(3), GAME_ROOM[team - 1][1] - Misc.random(3), 1); + gameRoom.put(player, team); + } + waitingRoom.clear(); + } + + /* + * Method we use to end an ongoing cw game. + */ + public static void endGame() { + Iterator iterator = gameRoom.keySet().iterator(); + while (iterator.hasNext()) { + Player player = iterator.next(); + int team = gameRoom.get(player); + if (player == null) { + continue; + } + player.cwGames++; + player.getPlayerAssistant().movePlayer(2440 + Misc.random(3), 3089 - Misc.random(3), 0); + player.getPacketSender().sendMessage("Castle Wars: The Castle Wars game has ended!"); + player.getPacketSender().sendMessage("Castle Wars: Kills: " + player.cwKills + " Deaths: " + player.cwDeaths + " Games Played: " + player.cwGames + "."); + player.getPacketSender().createPlayerHints(10, -1); + deleteGameItems(player); + player.isDead = false; + for (int i = 0; i < 25; i++) { + player.playerLevel[i] = player + .getLevelForXP(player.playerXP[i]); + player.getPlayerAssistant().refreshSkill(i); + } + if (scores[0] == scores[1]) { + player.getItemAssistant().addItem(4067, 1); + player.getPacketSender().sendMessage( + "Tie game! You earn 1 ticket!"); + } else if (team == 1) { + if (scores[0] > scores[1]) { + player.getItemAssistant().addItem(4067, 2); + player.getPacketSender() + .sendMessage( + "You won the game. You received 2 Castle Wars Tickets!"); + } else if (scores[0] < scores[1]) { + player.getItemAssistant().addItem(4067, 0); + player.getPacketSender().sendMessage( + "You lost the game. You received no tickets!"); + } + } else if (team == 2) { + if (scores[1] > scores[0]) { + player.getItemAssistant().addItem(4067, 2); + player.getPacketSender() + .sendMessage( + "You won the game. You received 2 Castle Wars Tickets!"); + } else if (scores[1] < scores[0]) { + player.getItemAssistant().addItem(4067, 0); + player.getPacketSender().sendMessage( + "You lost the game. You received no tickets!"); + ; + } + } + } + resetGame(); + } + + /** + * reset the game variables + */ + public static void resetGame() { + changeFlagObject(4902, 0); + changeFlagObject(4903, 1); + setSaraFlag(0); + setZammyFlag(0); + timeRemaining = -1; + System.out.println("Ending Castle Wars game."); + gameStartTimer = GAME_START_TIMER; + gameStarted = false; + gameRoom.clear(); + } + + /** + * Method we use to remove a player from the game + * + * @param player + * the player we want to be removed + */ + public static void removePlayerFromCw(Player player) { + if (player == null) { + System.out.println("Error removing player from castle wars [REASON = null]."); + return; + } + if (gameRoom.containsKey(player)) { + /* + * Logging/leaving with flag + */ + if (player.getItemAssistant().playerHasEquipped(SARA_BANNER)) { + player.getItemAssistant().removeItem(player.playerEquipment[3], + 3); + setSaraFlag(0); // safe flag + } else if (player.getItemAssistant() + .playerHasEquipped(ZAMMY_BANNER)) { + player.getItemAssistant().removeItem(player.playerEquipment[3], + 3); + setZammyFlag(0); // safe flag + } + deleteGameItems(player); + player.getPlayerAssistant().movePlayer(2440, 3089, 0); + player.getPacketSender().sendMessage( + "The Casle Wars game has ended for you!"); + player.getPacketSender().sendMessage( + "Kills: " + player.cwKills + " Deaths: " + player.cwDeaths + + "."); + player.getPacketSender().createPlayerHints(10, -1); + gameRoom.remove(player); + } + if (getZammyPlayers() <= 0 || getSaraPlayers() <= 0) { + endGame(); + } + } + + /** + * Will add a cape to a player's equip + * + * @param p + * the player + * @param capeId + * the capeId + */ + public static void addCapes(Player p, int capeId) { + p.playerEquipment[p.playerCape] = capeId; + p.playerEquipmentN[p.playerCape] = 1; + p.getItemAssistant().updateSlot(p.playerCape); + p.appearanceUpdateRequired = true; + p.updateRequired = true; + } + + /** + * This method will delete all items received in game. Easy to add items to + * the array. (: + * + * @param player + * the player who want the game items deleted from. + */ + + public static void deleteGameItems(Player player) { + switch (player.playerEquipment[3]) { + case 4037: + case 4039: + player.playerEquipment[3] = -1; + player.playerEquipmentN[3] = 0; + player.getItemAssistant().updateSlot(player.playerWeapon); + player.appearanceUpdateRequired = true; + player.updateRequired = true; + System.out.println(player.playerName + " removed weapon:" + + player.playerEquipment[3]); + break; + } + switch (player.playerEquipment[1]) { + case 4042: + case 4041: + player.playerEquipment[1] = -1; + player.playerEquipmentN[1] = 0; + player.getItemAssistant().updateSlot(player.playerCape); + player.appearanceUpdateRequired = true; + player.updateRequired = true; + System.out.println(player.playerName + " removed cape: " + + player.playerEquipment[1]); + break; + } + int[] items = { 4049, 1265, 4045, 4053, 4042, 4041, 4037, 4039, 4043 }; + //4049, 4045, 4053, 4042, 4041, 4037, 4039 + for (int item : items) { + if (player.getItemAssistant().playerHasItem(item)) { + player.getItemAssistant().deleteItem(item, + player.getItemAssistant().getItemAmount(item)); + } + } + } + + /** + * Methode we use to get the zamorak players + * + * @return the amount of players in the zamorakian team! + */ + public static int getZammyPlayers() { + int players = 0; + Iterator iterator = !waitingRoom.isEmpty() ? waitingRoom + .values().iterator() : gameRoom.values().iterator(); + while (iterator.hasNext()) { + if (iterator.next() == 2) { + players++; + } + } + return players; + } + + /** + * Method we use to get the saradomin players! + * + * @return the amount of players in the saradomin team! + */ + public static int getSaraPlayers() { + int players = 0; + Iterator iterator = !waitingRoom.isEmpty() ? waitingRoom + .values().iterator() : gameRoom.values().iterator(); + while (iterator.hasNext()) { + if (iterator.next() == 1) { + players++; + } + } + return players; + } + + /** + * Method we use for checking if the player is in the gameRoom + * + * @param player + * player who will be checking + * @return + */ + public static boolean isInCw(Player player) { + return gameRoom.containsKey(player); + } + + /** + * Method we use for checking if the player is in the waitingRoom + * + * @param player + * player who will be checking + * @return + */ + public static boolean isInCwWait(Player player) { + return waitingRoom.containsKey(player); + } + + /** + * Method to make sara flag change status 0 = safe, 1 = taken, 2 = dropped + * + * @param status + */ + public static void setSaraFlag(int status) { + saraFlag = status; + } + + /** + * Method to make zammy flag change status 0 = safe, 1 = taken, 2 = dropped + * + * @param status + */ + public static void setZammyFlag(int status) { + zammyFlag = status; + } + + /** + * Method we use for the changing the object of the flag stands when + * capturing/returning flag + * + * @param objectId + * the object + * @param team + * the team of the player + */ + public static void changeFlagObject(int objectId, int team) { + Iterator iterator = gameRoom.keySet().iterator(); + while (iterator.hasNext()) { + Player teamPlayer = iterator.next(); + teamPlayer.getPacketSender().object(objectId, + FLAG_STANDS[team][0], FLAG_STANDS[team][1], 0, 10); + } + } +} diff --git a/2006Redone Server/src/redone/game/content/minigames/trawler/GroupMinigame.java b/2006Redone Server/src/com/rebotted/game/content/minigames/trawler/GroupMinigame.java similarity index 75% rename from 2006Redone Server/src/redone/game/content/minigames/trawler/GroupMinigame.java rename to 2006Redone Server/src/com/rebotted/game/content/minigames/trawler/GroupMinigame.java index c4a2cb13..8b4f593c 100644 --- a/2006Redone Server/src/redone/game/content/minigames/trawler/GroupMinigame.java +++ b/2006Redone Server/src/com/rebotted/game/content/minigames/trawler/GroupMinigame.java @@ -1,9 +1,9 @@ -package redone.game.content.minigames.trawler; - -public abstract class GroupMinigame { - - public abstract WaitingRoom getWaitingRoom(); - - public abstract String getWaitingRoomMessage(); - +package com.rebotted.game.content.minigames.trawler; + +public abstract class GroupMinigame { + + public abstract WaitingRoom getWaitingRoom(); + + public abstract String getWaitingRoomMessage(); + } \ No newline at end of file diff --git a/2006Redone Server/src/redone/game/content/minigames/trawler/Trawler.java b/2006Redone Server/src/com/rebotted/game/content/minigames/trawler/Trawler.java similarity index 79% rename from 2006Redone Server/src/redone/game/content/minigames/trawler/Trawler.java rename to 2006Redone Server/src/com/rebotted/game/content/minigames/trawler/Trawler.java index c81ac89e..2c60f03d 100644 --- a/2006Redone Server/src/redone/game/content/minigames/trawler/Trawler.java +++ b/2006Redone Server/src/com/rebotted/game/content/minigames/trawler/Trawler.java @@ -1,879 +1,873 @@ -package redone.game.content.minigames.trawler; - -import java.util.ArrayList; -import java.util.Random; - -import redone.Server; -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.content.skills.SkillHandler; -import redone.game.items.GameItem; -import redone.game.players.Client; -import redone.game.players.Player; - -public class Trawler extends GroupMinigame { - - /* - * - */ - - /* - * The waiting room for the minigame - */ - - public WaitingRoom waiting_room = new TrawlerWaitingRoom(this); - - /* - * The arraylist containing all of the players - */ - - public ArrayList players = new ArrayList(); - - /* - * The arraylist containing all of the players that need to removed Created - * so that an instance wouldn't have to be created every time the updating - * is called simply just call the clear method - */ - - public ArrayList players_to_remove = new ArrayList(); - - /* - * A unique id, which the cycle event handler may use to stop the trawlers - * event - */ - - public static final int CYCLE_ID = 222; - - /* - * Random object - */ - - private final Random random_gen = new Random(); - - /* - * All of the animations needed for the minigame - */ - - final int climb_up = 828; - final int climb_down = 827; - final int swimming_walk = 772; - final int swimming_stand = 773; - final int net_interaction = 832; - final int SWIM_MOVEMENT_ANIMATION = 772; - final int SWIM_STILL_ANIMATION = 773; - - /* - * All of the items needed for the minigame - */ - - final int bailing_bucket_full = 585; - final int bailing_bucket_empty = 583; - final int rope = 954; - final int swamp_paste = 1941; - - /* - * All of the objects needed for the minigame - */ - - final int perfect_wall = 2177; - final int patched_wall = 2168; - final int leaking_wall = 2167; - - /* - * Variables that will be changing as the minigame progresses - */ - - private int water_level = 0; - private boolean net_ripped = false; - public int fish_caught = 0; - private boolean[] wall_status = new boolean[16]; - private boolean isSunk = false; - private int game_time = 10; - private boolean started = false; - boolean in_progress = false; - - /* - * Contains the coordinates for each wall, since all of the objects of the - * same id's and the methods needed to get them - */ - - public enum Wall { - - North_One_Normal(0, 1885, 4826), North_Two_Normal(1, 1886, 4826), North_Three_Normal( - 2, 1887, 4826), North_Four_Normal(3, 1888, 4826), North_Five_Normal( - 4, 1889, 4826), North_Six_Normal(5, 1890, 4826), North_Seven_Normal( - 6, 1891, 4826), North_Eight_Normal(7, 1892, 4826), South_One_Normal( - 8, 1885, 4823), South_Two_Normal(9, 1886, 4823), South_Three_Normal( - 10, 1887, 4823), South_Four_Normal(11, 1888, 4823), South_Five_Normal( - 12, 1889, 4823), South_Six_Normal(13, 1890, 4823), South_Seven_Normal( - 14, 1891, 4823), South_Eight_Normal(15, 1892, 4823), North_One_Sinking( - 0, 2013, 4826), North_Two_Sinking(1, 2014, 4826), North_Three_Sinking( - 2, 2015, 4826), North_Four_Sinking(3, 2016, 4826), North_Five_Sinking( - 4, 2017, 4826), North_Six_Sinking(5, 2018, 4826), North_Seven_Sinking( - 6, 2019, 4826), North_Eight_Sinking(7, 2020, 4826), South_One_Sinking( - 8, 2013, 4823), South_Two_Sinking(9, 2014, 4823), South_Three_Sinking( - 10, 2015, 4823), South_Four_Sinking(11, 2016, 4823), South_Five_Sinking( - 12, 2017, 4823), South_Six_Sinking(13, 2018, 4823), South_Seven_Sinking( - 14, 2019, 4823), South_Eight_Sinking(15, 2020, 4823); - - int index, x, y; - - Wall(int index, int x, int y) { - this.index = index; - this.y = y; - this.x = x; - } - - public static int getIndex(int x, int y) { - for (Wall s : Wall.values()) { - if (s != null) { - if (s.x == x && s.y == y) { - return s.index; - } - } - } - return -1; - } - - public static Wall getWallByIndex(int index, boolean sinking) { - for (Wall w : Wall.values()) { - if (w.index == index) { - if (sinking && w.x < 2000) { - continue; - } else { - return w; - } - } - } - return null; - } - - } - - /* - * Gets the amount of walls that are not broken - */ - - public int getAvaliableWallSize() { - int toReturn = 0; - for (int j = 0; j < wall_status.length; j++) { - if (wall_status[j] == false) { - toReturn++; - } - } - return toReturn; - } - - /* - * Generates the indexes of the walls that are not broken - */ - - public int[] getAvaliableWalls() { - int[] toReturn = new int[getAvaliableWallSize()]; - int index = 0; - for (int j = 0; j < wall_status.length; j++) { - if (wall_status[j] == false) { - toReturn[index] = j; - index++; - } - } - return toReturn; - } - - /* - * Sets a random wall as broken & updates it - */ - - public void breakRandomWall() { - try { - final int[] walls = getAvaliableWalls(); - int random = walls[random_gen.nextInt(walls.length)]; - wall_status[random] = true; - updateWall(random); - } catch (Exception e) {// Exception should never occur - - } - } - - /* - * Removes every wall and resets them back to default - */ - - public void resetWalls() { - for(Wall w : Wall.values()) { - if(w != null) { - Server.objectHandler.removeObject(Server.objectHandler.getObjectByPosition(w.x, w.y)); - Server.objectHandler.createAnObject(perfect_wall, w.x,w.y, w.y == 4826 ? 1 : 3); - } - } - } - - /* - * Updates a wall based on index - */ - - public void updateWall(int index) { - Wall w = Wall.getWallByIndex(index, isSunk); - if (w == null) { - System.out.println("null"); - return; - } - Server.objectHandler.removeObject(Server.objectHandler.getObjectByPosition(w.x, w.y)); - Server.objectHandler.removeObject(Server.objectHandler.getObjectByPosition(w.x + (isSunk ? -128 : 128), w.y)); - if (wall_status[index] == true) { - Server.objectHandler.createAnObject(leaking_wall, w.x, w.y, - w.y == 4826 ? 1 : 3); - if (isSunk) - Server.objectHandler.createAnObject(leaking_wall, w.x - 128, - w.y, w.y == 4826 ? 1 : 3); - else - Server.objectHandler.createAnObject(leaking_wall, w.x + 128, - w.y, w.y == 4826 ? 1 : 3); - } else { - Server.objectHandler.createAnObject(patched_wall, w.x, w.y, - w.y == 4826 ? 1 : 3); - if (isSunk) - Server.objectHandler.createAnObject(patched_wall, w.x - 128, - w.y, w.y == 4826 ? 1 : 3); - else - Server.objectHandler.createAnObject(patched_wall, w.x + 128, - w.y, w.y == 4826 ? 1 : 3); - } - } - - /* - * Updates every play in the game's interface, if the player is null they - * are removed from the game - */ - - public void playerUpdates() { - for (Client p : players) { - if (p != null) { - p.asClient() - .getPlayerAssistant() - .sendFrame126(net_ripped ? "@red@Ripped" : "@gre@Okay", - 11935); - p.getPlayerAssistant().sendFrame126("" + fish_caught, 11937); - p.getPlayerAssistant().sendFrame126(game_time + " mins", 11938); - p.getPlayerAssistant().sendFrame20(391, water_level); - } else { - players_to_remove.add(p); - } - } - if (players_to_remove.size() > 0) { - for (Player p : players_to_remove) { - players.remove(p); - } - players_to_remove.clear(); - } - } - - /* - * Does everything needed when the game starts - */ - - public void onStart() { - resetWalls(); - waiting_room.setActive(false); - water_level = 0; - fish_caught = 0; - net_ripped = false; - isSunk = false; - started = false; - game_time = 10; - in_progress = true; - for (int j = 0; j < wall_status.length; j++) { - wall_status[j] = false; - } - playerUpdates(); - for (Client p : players) { - if (p != null) { - p.getPlayerAssistant().removeAllSidebars(); - p.getPlayerAssistant().sendMapState(2); - p.getPlayerAssistant().showInterface(3281); - p.getPlayerAssistant().sendFrame20(75, 11); - p.getPlayerAssistant().movePlayer(1885, 4825, 1); - p.getPlayerAssistant().sendFrame126("", 11936); - } - } - CycleEventHandler.getSingleton().addEvent(this, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - container.stop(); - } - - @Override - public void stop() { - for (Client p : players) { - if (p != null) { - p.getPlayerAssistant().sendSidebars(); - p.getPlayerAssistant().showInterface(5596); - p.getPlayerAssistant().sendMapState(0); - } - } - started = true; - startGameTimer(); - } - }, 25); - } - - /* - * Does everything needed when the game ends - */ - - public void onEndLose() { - for (Client p : players) { - if (p != null) { - p.getPlayerAssistant().movePlayer(1885, 4825, 1); - } - } - } - - /* - * Essentially starts the game - */ - - public void start() { - - CycleEventHandler.getSingleton().stopEvents(CYCLE_ID);// Stops any other - // events using - // the trawler's - // id - onStart(); - CycleEventHandler.getSingleton().addEvent(this, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (started) { - tick(); - if (end() > 0) { - if (end() == 1) { - setSwimmingAnimations();// Loss - movePlayersLoss(); - players.clear(); - container.stop(); - } else if (end() == 2) { - for (Client p : players) { - if (p != null) { - p.fishingTrawlerReward = playerReward(p); - } - } - movePlayerWin(players); - container.stop(); - } - container.stop(); - } - } - } - - @Override - public void stop() { - waiting_room.reset(); - waiting_room.setActive(true); - in_progress = false; - game_time = 0; - players.clear(); - //System.out.println("should start again now"); - waiting_room.startWaiting(); - } - }, 10); - } - - /* - * Everything that should be done on one tick of the minigame - */ - - public void tick() { - int random; - random = random_gen.nextInt(2) + 1; - for (int j = 0; j < random; j++) { - breakRandomWall(); - } - ripNet(); - increaseWaterLevel(); - switchBoats(); - if (!net_ripped) - increaseFish(); - playerUpdates(); - } - - /* - * Randomly breaks the net - */ - - public void ripNet() { - if (!net_ripped) { - if (random_gen.nextInt(10) > 7) { - net_ripped = true; - } - } - } - - /* - * Adds water depending on the amount of leaks in the ship - */ - - public void increaseWaterLevel() { - int leaks = 16 - getAvaliableWalls().length; - water_level += (leaks / 2) + random_gen.nextInt(leaks * random_gen.nextInt(2) + 1); - } - - /* - * Fixes the holes in the ship - */ - - public void fixHole(Client p, int x, int y) { - if (doAction(p)) { - if (p.getItemAssistant().playerHasItem(swamp_paste)) { - int index = Wall.getIndex(x, y); - if (index >= 0) { - p.getItemAssistant().deleteItem(swamp_paste, 1); - p.startAnimation(832); - wall_status[index] = false; - updateWall(index); - p.turnPlayerTo(x, y + (y == 4826 ? 1 : -1)); - } - } else { - p.getActionSender().sendMessage("You don't have any swamp paste."); - } - } - } - - /* - * Moves the player to the top of the boat - */ - - public void upLadder(Client p, int obX, int obY) { - if (doAction(p)) { - if (!isSunk) { - p.startAnimation(climb_up); - p.getPlayerAssistant() - .movePlayer(obX == 1884 ? 1885 : 1892, obY, 1); - } else { - p.startAnimation(climb_up); - p.getPlayerAssistant().movePlayer(obX == 2021 ? 2020 : 2013, obY, 1); - } - } - } - - /* - * Moves the player to the top of the boat - */ - - public void downLadder(Client p, int obX, int obY) { - if (doAction(p)) { - if (!isSunk) { - p.startAnimation(climb_down); - p.getPlayerAssistant() - .movePlayer(obX == 1884 ? 1885 : 1892, obY, 0); - } else { - p.startAnimation(climb_down); - p.getPlayerAssistant().movePlayer(obX == 2021 ? 2020 : 2013, obY, 0); - } - } - } - - /* - * Fixes the net on the ship - */ - - public void fixNet(Client p) { - if (doAction(p)) { - if (!net_ripped) { - p.getActionSender().sendMessage("The net is not ripped."); - return; - } - if (!p.getItemAssistant().playerHasItem(rope)) { - p.getActionSender().sendMessage( - "You need a rope before attempting to fix the net!"); - return; - } - p.startAnimation(net_interaction); - if (skillCheck(p.playerLevel[p.playerCrafting], 1, 0)) { - p.getItemAssistant().deleteItem(rope, 1); - net_ripped = false; - playerUpdates(); - p.getActionSender().sendMessage("You successfully fix the net!"); - } else { - p.getItemAssistant().deleteItem(rope, 1); - p.getActionSender().sendMessage("You failed to repair the net!"); - } - } - } - - /* - * Returns true if the player can complete the interaction - */ - - public boolean doAction(Player p) { - if (!players.contains(p)) { - return false; - } - if (System.currentTimeMillis() - p.lastFishingTrawlerInteraction >= 1600) { - p.lastFishingTrawlerInteraction = System.currentTimeMillis(); - return true; - } else { - return false; - } - } - - /* - * Bails water out of the boat - */ - - public void bail(Client p) { - if (doAction(p)) { - if (p.getItemAssistant().playerHasItem(bailing_bucket_empty)) { - p.startAnimation(827); - p.getItemAssistant() - .replaceItem(bailing_bucket_empty, bailing_bucket_full); - water_level -= random_gen.nextInt(3) + 1; - } - } - } - - /* - * Bails water out of the boat - */ - - public void emptyBucket(Client p) { - if (doAction(p)) { - if (p.getItemAssistant().playerHasItem(bailing_bucket_full)) { - p.startAnimation(832); - p.getItemAssistant() - .replaceItem(bailing_bucket_full, bailing_bucket_empty); - } - } - } - - /* - * Adds a random amount of fish to the total fish reaward, based off of the - * amount of players in the game - */ - - public void increaseFish() { - fish_caught += random_gen.nextInt(players.size() + 2); - } - - /* - * If it returns true, the minigame will end - */ - - public int end() { - if (players.size() == 0) { - return 1; - } - if (water_level >= 100) { - return 1; - } - if (game_time == 0) { - return 2; - } - return 0; - } - - /* - * Sets the swimming animations - */ - - public void setSwimmingAnimations() { - for(Client p : players) { - if (p != null) { - p.prevplayerWalkIndex = p.playerWalkIndex; - p.prevPlayerStandIndex = p.playerStandIndex; - p.prevPrevPlayerRunIndex = p.playerRunIndex; - p.prevPlayerTurnIndex = p.playerTurnIndex; - p.prevPlayerTurn180Index = p.playerTurn180Index; - p.prevPlayerTurn90CCWIndex = p.playerTurn90CCWIndex; - p.prevPlayerTurn90CWIndex = p.playerTurn90CWIndex; - p.prevRunning2 = p.isRunning2; - p.isRunning2 = false; - p.playerRunIndex = SWIM_MOVEMENT_ANIMATION; - p.playerStandIndex = SWIM_STILL_ANIMATION; - p.playerWalkIndex = SWIM_MOVEMENT_ANIMATION; - p.playerTurnIndex = SWIM_STILL_ANIMATION; - p.playerTurn90CWIndex = SWIM_STILL_ANIMATION; - p.playerTurn90CCWIndex = SWIM_STILL_ANIMATION; - p.playerTurn180Index = SWIM_STILL_ANIMATION; - p.getPlayerAssistant().requestUpdates(); - p.getPlayerAssistant().closeAllWindows(); - } - } - } - - /* - * Switches boats based on the water level - */ - - public void switchBoats() { - if (water_level > 25 && !isSunk) { - isSunk = true; - for (int j = 0; j < players.size(); j++) { - if (players.get(j) != null) { - players.get(j).stopMovement(); - players.get(j).getPlayerAssistant() - .movePlayer(players.get(j).absX + 128, - players.get(j).absY, - players.get(j).heightLevel); - } - } - } - if (water_level <= 25 && isSunk) { - isSunk = false; - for (int j = 0; j < players.size(); j++) { - if (players.get(j) != null) { - players.get(j).stopMovement(); - players.get(j).getPlayerAssistant(). - movePlayer(players.get(j).absX - 128, - players.get(j).absY, - players.get(j).heightLevel); - } - } - } - } - - /* - * Starts the timer for the game - */ - - public void startGameTimer() { - CycleEventHandler.getSingleton().addEvent(this, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (game_time == 0) { - container.stop(); - } else { - game_time--; - waiting_room.messageWaiting("The trawler will return in "+game_time+ (game_time == 1 ? " minute" : " minutes")+"!"); - } - } - - @Override - public void stop() { - waiting_room.reset(); - waiting_room.setActive(true); - in_progress = false; - players.clear(); - waiting_room.startWaiting(); - } - }, 80); - } - - /* - * Slightly increases chance of higher level fish with levels - */ - - public int chanceByLevel(Player p, int fish) { - switch (fish) { - case 381: - if (p.playerLevel[p.playerFishing] >= 81 - && p.playerLevel[p.playerFishing] < 90) { - return 5; - } else if (p.playerLevel[p.playerFishing] >= 90 - && p.playerLevel[p.playerFishing] < 99) { - return 9; - } else if (p.playerLevel[p.playerFishing] == 99) { - return 13; - } - return 0; - case 395: - if (p.playerLevel[p.playerFishing] >= 79 - && p.playerLevel[p.playerFishing] < 85) { - return 8; - } else if (p.playerLevel[p.playerFishing] >= 85 - && p.playerLevel[p.playerFishing] < 95) { - return 13; - } else if (p.playerLevel[p.playerFishing] >= 95) { - return 17; - } - return 0; - } - return 0; - } - - /* - * Loss teleporting - */ - public void movePlayersLoss() { - for (Client p : players) { - if (p != null) { - p.getPlayerAssistant().movePlayer(1952, 4826, 0); - } - } - in_progress = false; - game_time = 0; - players.clear(); - waiting_room.startWaiting(); - } - - /* - * Win teleporting - */ - - public void movePlayerWin(final ArrayList pl) { - for (Client p : pl) { - if (p != null) { - p.getPlayerAssistant().removeAllSidebars(); - p.getPlayerAssistant().sendMapState(2); - p.getPlayerAssistant().showInterface(3281); - p.getPlayerAssistant().sendFrame20(75, 12); - p.getPlayerAssistant().movePlayer(2666, 3161, 0); - //p.getPlayerAssistant().movePlayer(2804, 3421, 0); - } - } - CycleEventHandler.getSingleton().addEvent(this, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - container.stop(); - } - - @Override - public void stop() { - for (Client p : pl) { - if (p != null) { - p.getPlayerAssistant().sendSidebars(); - p.getPlayerAssistant().sendMapState(0); - p.getPlayerAssistant().closeAllWindows(); - } - } - in_progress = false; - game_time = 0; - players.clear(); - waiting_room.startWaiting(); - } - }, 25); - } - - /* - * Adds the rewards to each player - */ - - public ArrayList playerReward(Client p) { - ArrayList toReturn = new ArrayList(); - boolean turtles = true; - boolean mantas = true; - boolean lobsters = true; - boolean swordfish = true; - int turt = 0; - int manta = 0; - int lobs = 0; - int swordFish = 0; - int junk = 0; - int done = 0; - while (done != fish_caught) { - done++; - int random = random_gen.nextInt(100); - if (random >= 85 - chanceByLevel(p, 381)) { - if (mantas) { - manta++; - } - } else if (random >= 70 - chanceByLevel(p, 381)) { - if (turtles) { - turt++; - } - } else if (random >= 40) { - if (swordfish) { - swordFish++; - } - } else if (random >= 5) { - if (lobsters) { - lobs++; - } - } else { - junk++; - } - } - int xpToAdd = 0; - if (manta > 0) { - toReturn.add(new GameItem(389, manta)); - if (p.playerLevel[p.playerFishing] >= 81) { - xpToAdd += (manta * 46 * SkillHandler.FISHING_EXPERIENCE); - } - } - if (turt > 0) { - toReturn.add(new GameItem(395, turt)); - if (p.playerLevel[p.playerFishing] >= 79) { - xpToAdd += (manta * 38 * SkillHandler.FISHING_EXPERIENCE); - } - } - if (lobs > 0) { - toReturn.add(new GameItem(377, lobs)); - if (p.playerLevel[p.playerFishing] >= 40) { - xpToAdd += (manta * 90 * SkillHandler.FISHING_EXPERIENCE); - } - } - if (swordFish > 0) { - toReturn.add(new GameItem(371, swordFish)); - if (p.playerLevel[p.playerFishing] >= 50) { - xpToAdd += (manta * 100 * SkillHandler.FISHING_EXPERIENCE); - } - } - if (junk > 0) - toReturn.add(new GameItem(685, junk)); - p.getPlayerAssistant().addSkillXP(xpToAdd, p.playerFishing); - return toReturn; - } - - /* - * Randomly returns true, players craft level increases chance of returning - * true - */ - - public boolean skillCheck(int level, int levelRequired, int itemBonus) { - double chance = 0.0; - double baseChance = Math.pow(10d - levelRequired / 10d, 2d) / 2d; - chance = baseChance + ((level - levelRequired) / 2d) - + (itemBonus / 10d); - return chance >= (new Random().nextDouble() * 100.0); - } - - @Override - public WaitingRoom getWaitingRoom() { - return waiting_room; - } - - @Override - public String getWaitingRoomMessage() { - return null; - } - - public boolean inProgress() { - return in_progress; - } - - public int getGameTime() { - return game_time; - } - - public void resetRewardsInterface(Client c) { - for(int j = 0; j < 45; j++) { - c.getPlayerAssistant().sendFrame34(-1, j, 4640, -1); - } - } - public void showReward(Client c) { - resetRewardsInterface(c); - c.inFishingTrawlerRewardsInterface = true; - c.getPlayerAssistant().showInterface(4564); - for(int j = 0; j < c.fishingTrawlerReward.size(); j++) { - c.getPlayerAssistant().sendFrame34(c.fishingTrawlerReward.get(j).id, j, 4640, c.fishingTrawlerReward.get(j).amount); - } - } - - public void updateRewardSlot(Client c, int slot) { - c.inFishingTrawlerRewardsInterface = true; - c.getPlayerAssistant().sendFrame34(c.fishingTrawlerReward.get(slot).id, slot, 4640, c.fishingTrawlerReward.get(slot).amount); - if(slot != 4 && c.fishingTrawlerReward.size() == 5) { - c.getPlayerAssistant().sendFrame34(c.fishingTrawlerReward.get(4).id, 4, 4640, c.fishingTrawlerReward.get(4).amount); - } - } - - public int getRewardSlot(int j) { - if(j < 4) { - return j; - } else { - return j+1; - } - } - - +package com.rebotted.game.content.minigames.trawler; + +import java.util.ArrayList; +import java.util.Random; +import com.rebotted.GameEngine; +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.items.GameItem; +import com.rebotted.game.players.Player; + +public class Trawler extends GroupMinigame { + + /* + * + */ + + /* + * The waiting room for the minigame + */ + + public WaitingRoom waiting_room = new TrawlerWaitingRoom(this); + + /* + * The arraylist containing all of the players + */ + + public ArrayList players = new ArrayList(); + + /* + * The arraylist containing all of the players that need to removed Created + * so that an instance wouldn't have to be created every time the updating + * is called simply just call the clear method + */ + + public ArrayList players_to_remove = new ArrayList(); + + /* + * A unique id, which the cycle event handler may use to stop the trawlers + * event + */ + + public static final int CYCLE_ID = 222; + + /* + * Random object + */ + + private final Random random_gen = new Random(); + + /* + * All of the animations needed for the minigame + */ + + final int climb_up = 828; + final int climb_down = 827; + final int swimming_walk = 772; + final int swimming_stand = 773; + final int net_interaction = 832; + final int SWIM_MOVEMENT_ANIMATION = 772; + final int SWIM_STILL_ANIMATION = 773; + + /* + * All of the items needed for the minigame + */ + + final int bailing_bucket_full = 585; + final int bailing_bucket_empty = 583; + final int rope = 954; + final int swamp_paste = 1941; + + /* + * All of the objects needed for the minigame + */ + + final int perfect_wall = 2177; + final int patched_wall = 2168; + final int leaking_wall = 2167; + + /* + * Variables that will be changing as the minigame progresses + */ + + private int water_level = 0; + private boolean net_ripped = false; + public int fish_caught = 0; + private boolean[] wall_status = new boolean[16]; + private boolean isSunk = false; + private int game_time = 10; + private boolean started = false; + boolean in_progress = false; + + /* + * Contains the coordinates for each wall, since all of the objects of the + * same id's and the methods needed to get them + */ + + public enum Wall { + + North_One_Normal(0, 1885, 4826), North_Two_Normal(1, 1886, 4826), North_Three_Normal( + 2, 1887, 4826), North_Four_Normal(3, 1888, 4826), North_Five_Normal( + 4, 1889, 4826), North_Six_Normal(5, 1890, 4826), North_Seven_Normal( + 6, 1891, 4826), North_Eight_Normal(7, 1892, 4826), South_One_Normal( + 8, 1885, 4823), South_Two_Normal(9, 1886, 4823), South_Three_Normal( + 10, 1887, 4823), South_Four_Normal(11, 1888, 4823), South_Five_Normal( + 12, 1889, 4823), South_Six_Normal(13, 1890, 4823), South_Seven_Normal( + 14, 1891, 4823), South_Eight_Normal(15, 1892, 4823), North_One_Sinking( + 0, 2013, 4826), North_Two_Sinking(1, 2014, 4826), North_Three_Sinking( + 2, 2015, 4826), North_Four_Sinking(3, 2016, 4826), North_Five_Sinking( + 4, 2017, 4826), North_Six_Sinking(5, 2018, 4826), North_Seven_Sinking( + 6, 2019, 4826), North_Eight_Sinking(7, 2020, 4826), South_One_Sinking( + 8, 2013, 4823), South_Two_Sinking(9, 2014, 4823), South_Three_Sinking( + 10, 2015, 4823), South_Four_Sinking(11, 2016, 4823), South_Five_Sinking( + 12, 2017, 4823), South_Six_Sinking(13, 2018, 4823), South_Seven_Sinking( + 14, 2019, 4823), South_Eight_Sinking(15, 2020, 4823); + + int index, x, y; + + Wall(int index, int x, int y) { + this.index = index; + this.y = y; + this.x = x; + } + + public static int getIndex(int x, int y) { + for (Wall s : Wall.values()) { + if (s != null) { + if (s.x == x && s.y == y) { + return s.index; + } + } + } + return -1; + } + + public static Wall getWallByIndex(int index, boolean sinking) { + for (Wall w : Wall.values()) { + if (w.index == index) { + if (sinking && w.x < 2000) { + continue; + } else { + return w; + } + } + } + return null; + } + + } + + /* + * Gets the amount of walls that are not broken + */ + + public int getAvaliableWallSize() { + int toReturn = 0; + for (int j = 0; j < wall_status.length; j++) { + if (wall_status[j] == false) { + toReturn++; + } + } + return toReturn; + } + + /* + * Generates the indexes of the walls that are not broken + */ + + public int[] getAvaliableWalls() { + int[] toReturn = new int[getAvaliableWallSize()]; + int index = 0; + for (int j = 0; j < wall_status.length; j++) { + if (wall_status[j] == false) { + toReturn[index] = j; + index++; + } + } + return toReturn; + } + + /* + * Sets a random wall as broken & updates it + */ + + public void breakRandomWall() { + try { + final int[] walls = getAvaliableWalls(); + int random = walls[random_gen.nextInt(walls.length)]; + wall_status[random] = true; + updateWall(random); + } catch (Exception e) {// Exception should never occur + + } + } + + /* + * Removes every wall and resets them back to default + */ + + public void resetWalls() { + for(Wall w : Wall.values()) { + if(w != null) { + GameEngine.objectHandler.removeObject(GameEngine.objectHandler.getObjectByPosition(w.x, w.y)); + GameEngine.objectHandler.createAnObject(perfect_wall, w.x,w.y, w.y == 4826 ? 1 : 3); + } + } + } + + /* + * Updates a wall based on index + */ + + public void updateWall(int index) { + Wall w = Wall.getWallByIndex(index, isSunk); + if (w == null) { + System.out.println("null"); + return; + } + GameEngine.objectHandler.removeObject(GameEngine.objectHandler.getObjectByPosition(w.x, w.y)); + GameEngine.objectHandler.removeObject(GameEngine.objectHandler.getObjectByPosition(w.x + (isSunk ? -128 : 128), w.y)); + if (wall_status[index] == true) { + GameEngine.objectHandler.createAnObject(leaking_wall, w.x, w.y, + w.y == 4826 ? 1 : 3); + if (isSunk) + GameEngine.objectHandler.createAnObject(leaking_wall, w.x - 128, + w.y, w.y == 4826 ? 1 : 3); + else + GameEngine.objectHandler.createAnObject(leaking_wall, w.x + 128, + w.y, w.y == 4826 ? 1 : 3); + } else { + GameEngine.objectHandler.createAnObject(patched_wall, w.x, w.y, + w.y == 4826 ? 1 : 3); + if (isSunk) + GameEngine.objectHandler.createAnObject(patched_wall, w.x - 128, + w.y, w.y == 4826 ? 1 : 3); + else + GameEngine.objectHandler.createAnObject(patched_wall, w.x + 128, + w.y, w.y == 4826 ? 1 : 3); + } + } + + /* + * Updates every play in the game's interface, if the player is null they + * are removed from the game + */ + + public void playerUpdates() { + for (Player p : players) { + if (p != null) { + p.asClient().getPacketSender().sendFrame126(net_ripped ? "@red@Ripped" : "@gre@Okay", 11935); + p.getPacketSender().sendFrame126("" + fish_caught, 11937); + p.getPacketSender().sendFrame126(game_time + " mins", 11938); + p.getPacketSender().sendFrame20(391, water_level); + } else { + players_to_remove.add(p); + } + } + if (players_to_remove.size() > 0) { + for (Player p : players_to_remove) { + players.remove(p); + } + players_to_remove.clear(); + } + } + + /* + * Does everything needed when the game starts + */ + + public void onStart() { + resetWalls(); + waiting_room.setActive(false); + water_level = 0; + fish_caught = 0; + net_ripped = false; + isSunk = false; + started = false; + game_time = 10; + in_progress = true; + for (int j = 0; j < wall_status.length; j++) { + wall_status[j] = false; + } + playerUpdates(); + for (Player p : players) { + if (p != null) { + p.getPlayerAssistant().removeAllSidebars(); + p.getPacketSender().sendMapState(2); + p.getPacketSender().showInterface(3281); + p.getPacketSender().sendFrame20(75, 11); + p.getPlayerAssistant().movePlayer(1885, 4825, 1); + p.getPacketSender().sendFrame126("", 11936); + } + } + CycleEventHandler.getSingleton().addEvent(this, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + container.stop(); + } + + @Override + public void stop() { + for (Player p : players) { + if (p != null) { + p.getPlayerAssistant().sendSidebars(); + p.getPacketSender().showInterface(5596); + p.getPacketSender().sendMapState(0); + } + } + started = true; + startGameTimer(); + } + }, 25); + } + + /* + * Does everything needed when the game ends + */ + + public void onEndLose() { + for (Player p : players) { + if (p != null) { + p.getPlayerAssistant().movePlayer(1885, 4825, 1); + } + } + } + + /* + * Essentially starts the game + */ + + public void start() { + + CycleEventHandler.getSingleton().stopEvents(CYCLE_ID);// Stops any other + // events using + // the trawler's + // id + onStart(); + CycleEventHandler.getSingleton().addEvent(this, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (started) { + tick(); + if (end() > 0) { + if (end() == 1) { + setSwimmingAnimations();// Loss + movePlayersLoss(); + players.clear(); + container.stop(); + } else if (end() == 2) { + for (Player p : players) { + if (p != null) { + p.fishingTrawlerReward = playerReward(p); + } + } + movePlayerWin(players); + container.stop(); + } + container.stop(); + } + } + } + + @Override + public void stop() { + waiting_room.reset(); + waiting_room.setActive(true); + in_progress = false; + game_time = 0; + players.clear(); + //System.out.println("should start again now"); + waiting_room.startWaiting(); + } + }, 10); + } + + /* + * Everything that should be done on one tick of the minigame + */ + + public void tick() { + int random; + random = random_gen.nextInt(2) + 1; + for (int j = 0; j < random; j++) { + breakRandomWall(); + } + ripNet(); + increaseWaterLevel(); + switchBoats(); + if (!net_ripped) + increaseFish(); + playerUpdates(); + } + + /* + * Randomly breaks the net + */ + + public void ripNet() { + if (!net_ripped) { + if (random_gen.nextInt(10) > 7) { + net_ripped = true; + } + } + } + + /* + * Adds water depending on the amount of leaks in the ship + */ + + public void increaseWaterLevel() { + int leaks = 16 - getAvaliableWalls().length; + water_level += (leaks / 2) + random_gen.nextInt(leaks * random_gen.nextInt(2) + 1); + } + + /* + * Fixes the holes in the ship + */ + + public void fixHole(Player player, int x, int y) { + if (doAction(player)) { + if (player.getItemAssistant().playerHasItem(swamp_paste)) { + int index = Wall.getIndex(x, y); + if (index >= 0) { + player.getItemAssistant().deleteItem(swamp_paste, 1); + player.startAnimation(832); + wall_status[index] = false; + updateWall(index); + player.turnPlayerTo(x, y + (y == 4826 ? 1 : -1)); + } + } else { + player.getPacketSender().sendMessage("You don't have any swamp paste."); + } + } + } + + /* + * Moves the player to the top of the boat + */ + + public void upLadder(Player player, int obX, int obY) { + if (doAction(player)) { + if (!isSunk) { + player.startAnimation(climb_up); + player.getPlayerAssistant() + .movePlayer(obX == 1884 ? 1885 : 1892, obY, 1); + } else { + player.startAnimation(climb_up); + player.getPlayerAssistant().movePlayer(obX == 2021 ? 2020 : 2013, obY, 1); + } + } + } + + /* + * Moves the player to the top of the boat + */ + + public void downLadder(Player player, int obX, int obY) { + if (doAction(player)) { + if (!isSunk) { + player.startAnimation(climb_down); + player.getPlayerAssistant() + .movePlayer(obX == 1884 ? 1885 : 1892, obY, 0); + } else { + player.startAnimation(climb_down); + player.getPlayerAssistant().movePlayer(obX == 2021 ? 2020 : 2013, obY, 0); + } + } + } + + /* + * Fixes the net on the ship + */ + + public void fixNet(Player p) { + if (doAction(p)) { + if (!net_ripped) { + p.getPacketSender().sendMessage("The net is not ripped."); + return; + } + if (!p.getItemAssistant().playerHasItem(rope)) { + p.getPacketSender().sendMessage( + "You need a rope before attempting to fix the net!"); + return; + } + p.startAnimation(net_interaction); + if (skillCheck(p.playerLevel[p.playerCrafting], 1, 0)) { + p.getItemAssistant().deleteItem(rope, 1); + net_ripped = false; + playerUpdates(); + p.getPacketSender().sendMessage("You successfully fix the net!"); + } else { + p.getItemAssistant().deleteItem(rope, 1); + p.getPacketSender().sendMessage("You failed to repair the net!"); + } + } + } + + /* + * Returns true if the player can complete the interaction + */ + + public boolean doAction(Player p) { + if (!players.contains(p)) { + return false; + } + if (System.currentTimeMillis() - p.lastFishingTrawlerInteraction >= 1600) { + p.lastFishingTrawlerInteraction = System.currentTimeMillis(); + return true; + } else { + return false; + } + } + + /* + * Bails water out of the boat + */ + + public void bail(Player p) { + if (doAction(p)) { + if (p.getItemAssistant().playerHasItem(bailing_bucket_empty)) { + p.startAnimation(827); + p.getItemAssistant() + .replaceItem(bailing_bucket_empty, bailing_bucket_full); + water_level -= random_gen.nextInt(3) + 1; + } + } + } + + /* + * Bails water out of the boat + */ + + public void emptyBucket(Player p) { + if (doAction(p)) { + if (p.getItemAssistant().playerHasItem(bailing_bucket_full)) { + p.startAnimation(832); + p.getItemAssistant() + .replaceItem(bailing_bucket_full, bailing_bucket_empty); + } + } + } + + /* + * Adds a random amount of fish to the total fish reaward, based off of the + * amount of players in the game + */ + + public void increaseFish() { + fish_caught += random_gen.nextInt(players.size() + 2); + } + + /* + * If it returns true, the minigame will end + */ + + public int end() { + if (players.size() == 0) { + return 1; + } + if (water_level >= 100) { + return 1; + } + if (game_time == 0) { + return 2; + } + return 0; + } + + /* + * Sets the swimming animations + */ + + public void setSwimmingAnimations() { + for(Player p : players) { + if (p != null) { + p.prevplayerWalkIndex = p.playerWalkIndex; + p.prevPlayerStandIndex = p.playerStandIndex; + p.prevPrevPlayerRunIndex = p.playerRunIndex; + p.prevPlayerTurnIndex = p.playerTurnIndex; + p.prevPlayerTurn180Index = p.playerTurn180Index; + p.prevPlayerTurn90CCWIndex = p.playerTurn90CCWIndex; + p.prevPlayerTurn90CWIndex = p.playerTurn90CWIndex; + p.prevRunning2 = p.isRunning2; + p.isRunning2 = false; + p.playerRunIndex = SWIM_MOVEMENT_ANIMATION; + p.playerStandIndex = SWIM_STILL_ANIMATION; + p.playerWalkIndex = SWIM_MOVEMENT_ANIMATION; + p.playerTurnIndex = SWIM_STILL_ANIMATION; + p.playerTurn90CWIndex = SWIM_STILL_ANIMATION; + p.playerTurn90CCWIndex = SWIM_STILL_ANIMATION; + p.playerTurn180Index = SWIM_STILL_ANIMATION; + p.getPlayerAssistant().requestUpdates(); + p.getPacketSender().closeAllWindows(); + } + } + } + + /* + * Switches boats based on the water level + */ + + public void switchBoats() { + if (water_level > 25 && !isSunk) { + isSunk = true; + for (int j = 0; j < players.size(); j++) { + if (players.get(j) != null) { + players.get(j).stopMovement(); + players.get(j).getPlayerAssistant() + .movePlayer(players.get(j).absX + 128, + players.get(j).absY, + players.get(j).heightLevel); + } + } + } + if (water_level <= 25 && isSunk) { + isSunk = false; + for (int j = 0; j < players.size(); j++) { + if (players.get(j) != null) { + players.get(j).stopMovement(); + players.get(j).getPlayerAssistant(). + movePlayer(players.get(j).absX - 128, + players.get(j).absY, + players.get(j).heightLevel); + } + } + } + } + + /* + * Starts the timer for the game + */ + + public void startGameTimer() { + CycleEventHandler.getSingleton().addEvent(this, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (game_time == 0) { + container.stop(); + } else { + game_time--; + waiting_room.messageWaiting("The trawler will return in "+game_time+ (game_time == 1 ? " minute" : " minutes")+"!"); + } + } + + @Override + public void stop() { + waiting_room.reset(); + waiting_room.setActive(true); + in_progress = false; + players.clear(); + waiting_room.startWaiting(); + } + }, 80); + } + + /* + * Slightly increases chance of higher level fish with levels + */ + + public int chanceByLevel(Player p, int fish) { + switch (fish) { + case 381: + if (p.playerLevel[p.playerFishing] >= 81 + && p.playerLevel[p.playerFishing] < 90) { + return 5; + } else if (p.playerLevel[p.playerFishing] >= 90 + && p.playerLevel[p.playerFishing] < 99) { + return 9; + } else if (p.playerLevel[p.playerFishing] == 99) { + return 13; + } + return 0; + case 395: + if (p.playerLevel[p.playerFishing] >= 79 + && p.playerLevel[p.playerFishing] < 85) { + return 8; + } else if (p.playerLevel[p.playerFishing] >= 85 + && p.playerLevel[p.playerFishing] < 95) { + return 13; + } else if (p.playerLevel[p.playerFishing] >= 95) { + return 17; + } + return 0; + } + return 0; + } + + /* + * Loss teleporting + */ + public void movePlayersLoss() { + for (Player p : players) { + if (p != null) { + p.getPlayerAssistant().movePlayer(1952, 4826, 0); + } + } + in_progress = false; + game_time = 0; + players.clear(); + waiting_room.startWaiting(); + } + + /* + * Win teleporting + */ + + public void movePlayerWin(final ArrayList pl) { + for (Player p : pl) { + if (p != null) { + p.getPlayerAssistant().removeAllSidebars(); + p.getPacketSender().sendMapState(2); + p.getPacketSender().showInterface(3281); + p.getPacketSender().sendFrame20(75, 12); + p.getPlayerAssistant().movePlayer(2666, 3161, 0); + //p.getPlayerAssistant().movePlayer(2804, 3421, 0); + } + } + CycleEventHandler.getSingleton().addEvent(this, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + container.stop(); + } + + @Override + public void stop() { + for (Player p : pl) { + if (p != null) { + p.getPlayerAssistant().sendSidebars(); + p.getPacketSender().sendMapState(0); + p.getPacketSender().closeAllWindows(); + } + } + in_progress = false; + game_time = 0; + players.clear(); + waiting_room.startWaiting(); + } + }, 25); + } + + /* + * Adds the rewards to each player + */ + + public ArrayList playerReward(Player p) { + ArrayList toReturn = new ArrayList(); + boolean turtles = true; + boolean mantas = true; + boolean lobsters = true; + boolean swordfish = true; + int turt = 0; + int manta = 0; + int lobs = 0; + int swordFish = 0; + int junk = 0; + int done = 0; + while (done != fish_caught) { + done++; + int random = random_gen.nextInt(100); + if (random >= 85 - chanceByLevel(p, 381)) { + if (mantas) { + manta++; + } + } else if (random >= 70 - chanceByLevel(p, 381)) { + if (turtles) { + turt++; + } + } else if (random >= 40) { + if (swordfish) { + swordFish++; + } + } else if (random >= 5) { + if (lobsters) { + lobs++; + } + } else { + junk++; + } + } + int xpToAdd = 0; + if (manta > 0) { + toReturn.add(new GameItem(389, manta)); + if (p.playerLevel[p.playerFishing] >= 81) { + xpToAdd += (manta * 46); + } + } + if (turt > 0) { + toReturn.add(new GameItem(395, turt)); + if (p.playerLevel[p.playerFishing] >= 79) { + xpToAdd += (manta * 38); + } + } + if (lobs > 0) { + toReturn.add(new GameItem(377, lobs)); + if (p.playerLevel[p.playerFishing] >= 40) { + xpToAdd += (manta * 90); + } + } + if (swordFish > 0) { + toReturn.add(new GameItem(371, swordFish)); + if (p.playerLevel[p.playerFishing] >= 50) { + xpToAdd += (manta * 100); + } + } + if (junk > 0) + toReturn.add(new GameItem(685, junk)); + p.getPlayerAssistant().addSkillXP(xpToAdd, p.playerFishing); + return toReturn; + } + + /* + * Randomly returns true, players craft level increases chance of returning + * true + */ + + public boolean skillCheck(int level, int levelRequired, int itemBonus) { + double chance = 0.0; + double baseChance = Math.pow(10d - levelRequired / 10d, 2d) / 2d; + chance = baseChance + ((level - levelRequired) / 2d) + + (itemBonus / 10d); + return chance >= (new Random().nextDouble() * 100.0); + } + + @Override + public WaitingRoom getWaitingRoom() { + return waiting_room; + } + + @Override + public String getWaitingRoomMessage() { + return null; + } + + public boolean inProgress() { + return in_progress; + } + + public int getGameTime() { + return game_time; + } + + public void resetRewardsInterface(Player player) { + for(int j = 0; j < 45; j++) { + player.getPacketSender().sendFrame34(-1, j, 4640, -1); + } + } + public void showReward(Player player) { + resetRewardsInterface(player); + player.inFishingTrawlerRewardsInterface = true; + player.getPacketSender().showInterface(4564); + for(int j = 0; j < player.fishingTrawlerReward.size(); j++) { + player.getPacketSender().sendFrame34(player.fishingTrawlerReward.get(j).id, j, 4640, player.fishingTrawlerReward.get(j).amount); + } + } + + public void updateRewardSlot(Player player, int slot) { + player.inFishingTrawlerRewardsInterface = true; + player.getPacketSender().sendFrame34(player.fishingTrawlerReward.get(slot).id, slot, 4640, player.fishingTrawlerReward.get(slot).amount); + if(slot != 4 && player.fishingTrawlerReward.size() == 5) { + player.getPacketSender().sendFrame34(player.fishingTrawlerReward.get(4).id, 4, 4640, player.fishingTrawlerReward.get(4).amount); + } + } + + public int getRewardSlot(int j) { + if(j < 4) { + return j; + } else { + return j+1; + } + } + + } \ No newline at end of file diff --git a/2006Redone Server/src/redone/game/content/minigames/trawler/TrawlerWaitingRoom.java b/2006Redone Server/src/com/rebotted/game/content/minigames/trawler/TrawlerWaitingRoom.java similarity index 71% rename from 2006Redone Server/src/redone/game/content/minigames/trawler/TrawlerWaitingRoom.java rename to 2006Redone Server/src/com/rebotted/game/content/minigames/trawler/TrawlerWaitingRoom.java index e4969bc0..2da1f757 100644 --- a/2006Redone Server/src/redone/game/content/minigames/trawler/TrawlerWaitingRoom.java +++ b/2006Redone Server/src/com/rebotted/game/content/minigames/trawler/TrawlerWaitingRoom.java @@ -1,90 +1,82 @@ -package redone.game.content.minigames.trawler; - -import redone.game.players.Client; -import redone.game.players.Location; - -public class TrawlerWaitingRoom extends WaitingRoom { - - private Trawler trawler; - private Location boat = new Location(2668,2674,3165,3185); - //private Location boat = new Location(2808, 2811,3415,3425); - - - public TrawlerWaitingRoom(Trawler trawler) { - super(2, 1); - this.trawler = trawler; - } - - @Override - public boolean startGame() { - if(trawler.inProgress()) { - return false; - } - if(waiting.size() < minimumPlayers) { - return false; - } - return true; - } - - @Override - public void onStart() { - trawler.players.clear(); - /*for(Iterator i = waiting.iterator(); i.hasNext();) { - Player p = i.next(); - if(!boat.playerInArea(p)) { - i.remove(); // Allowed with an iterator - } - }*/ - - for(Client p : waiting) { - trawler.players.add(p); - } - - trawler.start(); - waiting.clear(); - } - - @Override - public void onLeave(Client p) { - //p.asClient().getPA().movePlayer(2804, 3421, 0); - p.asClient().getPlayerAssistant().movePlayer(2676, 3170, 0); - } - - @Override - public void onJoin(Client p) { - //p.asClient().getPA().movePlayer(2808, 3421, 1); - p.getPlayerAssistant().movePlayer(2672, 3170, 1); - if(!isActive()) { - p.getActionSender().sendMessage(trawler.getGameTime() == 0 ? "The trawler will be returning in less than a minute!" : "The trawler will return in "+trawler.getGameTime() + (trawler.getGameTime() == 1 ? " minute" : " minutes")+"!"); - } else { - p.getActionSender().sendMessage(getTimeRemaining() == 0 ? "The trawler will be leaving in less than a minute!" : "The trawler will leave in "+ getTimeRemaining() + (getTimeRemaining() == 1 ? " minute" : " minutes")+"!"); - } - } - - public Location getLocation() { - return boat; - } - - @Override - public void onTimeChange() { - for(Client p : waiting) { - if(!isActive()) { - p.getActionSender().sendMessage(trawler.getGameTime() == 0 ? "The trawler will be returning in less than a minute!" : "The trawler will return in "+trawler.getGameTime() + (trawler.getGameTime() == 1 ? " minute" : " minutes")+"!"); - } else { - p.getActionSender().sendMessage(getTimeRemaining() == 0 ? "The trawler will be leaving in less than a minute!" : "The trawler will leave in "+ getTimeRemaining() + (getTimeRemaining() == 1 ? " minute" : " minutes")+"!"); - } - } - } - - @Override - public boolean canStart() { - if(trawler.inProgress()) { - return false; - } - if(waiting.size() < minimumPlayers) { - return false; - } - return true; - } - +package com.rebotted.game.content.minigames.trawler; + +import com.rebotted.game.players.Location; +import com.rebotted.game.players.Player; + +public class TrawlerWaitingRoom extends WaitingRoom { + + private Trawler trawler; + private Location boat = new Location(2668,2674,3165,3185); + //private Location boat = new Location(2808, 2811,3415,3425); + + + public TrawlerWaitingRoom(Trawler trawler) { + super(2, 1); + this.trawler = trawler; + } + + @Override + public boolean startGame() { + if(trawler.inProgress()) { + return false; + } + if(waiting.size() < minimumPlayers) { + return false; + } + return true; + } + + @Override + public void onStart() { + trawler.players.clear(); + + for(Player p : waiting) { + trawler.players.add(p); + } + + trawler.start(); + waiting.clear(); + } + + @Override + public void onLeave(Player p) { + p.asClient().getPlayerAssistant().movePlayer(2676, 3170, 0); + } + + @Override + public void onJoin(Player p) { + p.getPlayerAssistant().movePlayer(2672, 3170, 1); + if(!isActive()) { + p.getPacketSender().sendMessage(trawler.getGameTime() == 0 ? "The trawler will be returning in less than a minute!" : "The trawler will return in "+trawler.getGameTime() + (trawler.getGameTime() == 1 ? " minute" : " minutes")+"!"); + } else { + p.getPacketSender().sendMessage(getTimeRemaining() == 0 ? "The trawler will be leaving in less than a minute!" : "The trawler will leave in "+ getTimeRemaining() + (getTimeRemaining() == 1 ? " minute" : " minutes")+"!"); + } + } + + public Location getLocation() { + return boat; + } + + @Override + public void onTimeChange() { + for(Player p : waiting) { + if(!isActive()) { + p.getPacketSender().sendMessage(trawler.getGameTime() == 0 ? "The trawler will be returning in less than a minute!" : "The trawler will return in "+trawler.getGameTime() + (trawler.getGameTime() == 1 ? " minute" : " minutes")+"!"); + } else { + p.getPacketSender().sendMessage(getTimeRemaining() == 0 ? "The trawler will be leaving in less than a minute!" : "The trawler will leave in "+ getTimeRemaining() + (getTimeRemaining() == 1 ? " minute" : " minutes")+"!"); + } + } + } + + @Override + public boolean canStart() { + if(trawler.inProgress()) { + return false; + } + if(waiting.size() < minimumPlayers) { + return false; + } + return true; + } + } \ No newline at end of file diff --git a/2006Redone Server/src/redone/game/content/minigames/trawler/WaitingRoom.java b/2006Redone Server/src/com/rebotted/game/content/minigames/trawler/WaitingRoom.java similarity index 76% rename from 2006Redone Server/src/redone/game/content/minigames/trawler/WaitingRoom.java rename to 2006Redone Server/src/com/rebotted/game/content/minigames/trawler/WaitingRoom.java index 5a4bab83..56511875 100644 --- a/2006Redone Server/src/redone/game/content/minigames/trawler/WaitingRoom.java +++ b/2006Redone Server/src/com/rebotted/game/content/minigames/trawler/WaitingRoom.java @@ -1,113 +1,112 @@ -package redone.game.content.minigames.trawler; - -import java.util.ArrayList; - -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.players.Client; -import redone.game.players.Location; - -public abstract class WaitingRoom { - - public int minimumPlayers; - public ArrayList waiting = new ArrayList(); - private int wait_time; - private int minutes_remaining; - private boolean active; - - public abstract Location getLocation(); - public abstract boolean startGame(); - public abstract void onStart(); - public abstract void onLeave(Client p); - public abstract void onJoin(Client p); - public abstract void onTimeChange(); - public abstract boolean canStart(); - - public WaitingRoom(int minutes, int minimum) { - this.wait_time = minutes; - this.minimumPlayers = minimum; - this.minutes_remaining = wait_time; - if(!firstStarted){ - startWaiting(); - } else { - return; - } - } - - public void join(Client p) { - if(!waiting.contains(p)) { - onJoin(p); - waiting.add(p); - } - } - - public void leave(Client p) { - if(waiting.contains(p)) { - onLeave(p); - waiting.remove(p); - } - } - - public void reset() { - minutes_remaining = wait_time; - //startWaiting(); - } - public static boolean firstStarted = false; - - public void startWaiting() { - if(isActive()) { - return; - } - setActive(true); - CycleEventHandler.getSingleton().addEvent(100, this, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - firstStarted = true; - if(minutes_remaining != 0) { - minutes_remaining--; - onTimeChange(); - } else { - if(startGame()) { - onStart(); - reset(); - setActive(false); - container.stop(); - } else { - messageWaiting("A minimum of "+minimumPlayers+" players are needed to start this minigame!"); - reset(); - startWaiting(); - } - } - } - - @Override - public void stop() { - - } - }, 80); - } - - - public void messageWaiting(String message) { - for(Client p : waiting) { - if(p != null) { - p.getActionSender().sendMessage(message); - } - } - } - - public boolean isActive() { - return active; - } - - public void setActive(boolean active) { - this.active = active; - } - - public int getTimeRemaining() { - return minutes_remaining; - } - - +package com.rebotted.game.content.minigames.trawler; + +import java.util.ArrayList; +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.players.Location; +import com.rebotted.game.players.Player; + +public abstract class WaitingRoom { + + public int minimumPlayers; + public ArrayList waiting = new ArrayList(); + private int wait_time; + private int minutes_remaining; + private boolean active; + + public abstract Location getLocation(); + public abstract boolean startGame(); + public abstract void onStart(); + public abstract void onLeave(Player player); + public abstract void onJoin(Player p); + public abstract void onTimeChange(); + public abstract boolean canStart(); + + public WaitingRoom(int minutes, int minimum) { + this.wait_time = minutes; + this.minimumPlayers = minimum; + this.minutes_remaining = wait_time; + if(!firstStarted){ + startWaiting(); + } else { + return; + } + } + + public void join(Player player) { + if(!waiting.contains(player)) { + onJoin(player); + waiting.add(player); + } + } + + public void leave(Player player) { + if(waiting.contains(player)) { + onLeave(player); + waiting.remove(player); + } + } + + public void reset() { + minutes_remaining = wait_time; + //startWaiting(); + } + public static boolean firstStarted = false; + + public void startWaiting() { + if(isActive()) { + return; + } + setActive(true); + CycleEventHandler.getSingleton().addEvent(100, this, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + firstStarted = true; + if(minutes_remaining != 0) { + minutes_remaining--; + onTimeChange(); + } else { + if(startGame()) { + onStart(); + reset(); + setActive(false); + container.stop(); + } else { + messageWaiting("A minimum of "+minimumPlayers+" players are needed to start this minigame!"); + reset(); + startWaiting(); + } + } + } + + @Override + public void stop() { + + } + }, 80); + } + + + public void messageWaiting(String message) { + for(Player p : waiting) { + if(p != null) { + p.getPacketSender().sendMessage(message); + } + } + } + + public boolean isActive() { + return active; + } + + public void setActive(boolean active) { + this.active = active; + } + + public int getTimeRemaining() { + return minutes_remaining; + } + + } \ No newline at end of file diff --git a/2006Redone Server/src/redone/game/content/music/Music.java b/2006Redone Server/src/com/rebotted/game/content/music/Music.java similarity index 87% rename from 2006Redone Server/src/redone/game/content/music/Music.java rename to 2006Redone Server/src/com/rebotted/game/content/music/Music.java index 206f464e..858a008b 100644 --- a/2006Redone Server/src/redone/game/content/music/Music.java +++ b/2006Redone Server/src/com/rebotted/game/content/music/Music.java @@ -1,209 +1,209 @@ -package redone.game.content.music; - -import redone.game.players.Client; -import redone.util.Misc; - -/** - * http://runescape.wikia.com/wiki/Music Good resource song id = 2 absx/64 = 1 - * absy/64 = 0 - */ - -public class Music { - - public static int[][] MUSIC_DATA = { // all the songs added - { 50, 51, 2 }, - { 49, 51, 2 }, // Flour mill place - { 48, 50, 3 }, - { 46, 56, 8 }, - // {51, 60, 9}, - { 46, 50, 12 }, - { 31, 74, 16 },// mime event - // {46, 50, 49}, - { 52, 57, 14 }, { 47, 52, 15 }, { 45, 53, 18 }, { 45, 54, 18 }, - { 47, 50, 35 }, - { 50, 150, 139 },// harmony 2 - { 46, 54, 23 },// goblin village - // {47, 50, 36}, - { 51, 50, 36 }, { 47, 51, 49 }, { 51, 49, 50 }, { 44, 75, 52 }, - { 46, 53, 54 }, { 49, 54, 111 }, { 51, 60, 255 }, // scape sad - { 45, 75, 57 }, { 47, 47, 62 },// Newbie Melody, Tutorial Island - // corrupted - { 47, 48, 62 },// Newbie Melody, Tutorial Island - { 48, 47, 62 },// Newbie Melody, Tutorial Island - { 48, 48, 62 },// Newbie Melody, Tutorial Island - { 48, 148, 144 },// underground, underground - { 49, 48, 62 },// Newbie Melody, Tutorial Island - { 50, 49, 64 }, { 49, 49, 64 }, { 46, 57, 355 }, // troubled - { 43, 75, 52 },// Miracle Dance, Mind Altar - // {51, 48, 69}, // this song is currently corrupt! Do not play! - // {46, 52, 107}, // falador different - { 46, 52, 72 }, // falador - { 50, 50, 76 }, { 48, 49, 358 }, // Vision - wizard's tower - { 46, 49, 92 },// karamja - { 45, 49, 92 },// karamja diff region - { 51, 54, 93 }, // Edgeville - { 46, 55, 96 }, // this song is currently corrupt! Do not play! - // -seems - // fine - // {45, 49, 55}, - { 46, 60, 52 }, { 48, 54, 98 }, { 47, 49, 105 }, // tommorrow - { 50, 52, 106 }, { 51, 51, 123 }, { 50, 53, 125 }, // Varrock But - // Laggyyyy - // {50, 53, 157}, //Varrock - { 46, 51, 127 }, { 48, 53, 141 }, { 41, 75, 52 },// Down to Earth, - // Earth Altar - { 42, 75, 52 },// Zealot, Water Altar - { 48, 51, 151 }, { 51, 52, 157 }, { 51, 53, 157 }, { 52, 50, 47 },// duel - // arena - { 52, 51, 122 }, // Duel Arena Hospital - Shine - { 41, 40, 588 }, // Pest Control - In-game - { 41, 41, 587 }, // Pest Control - Lobby - { 40, 75, 52 },// Quest, Fire Altar - { 55, 51, 380 },// Barrows - { 50, 55, 169 }, { 49, 154, 144 }, // varrock sewers repeated - { 50, 154, 144 }, // Varrock Sewers - { 48, 154, 144 }, // EdgeVille dungeon - { 48, 153, 144 }, // EdgeVilledungeon - { 48, 150, 144 },// draynor sewers - { 48, 151, 144 },// draynor sewers - { 43, 43, 206 }, // monkey madness - { 48, 55, 169 }, // Wilderness North of Edge - { 38, 80, 469 }, // Tzhaar cave - { 49, 57, 43 }, // wilderness 3 carrallanger - { 42, 53, 184 }, { 49, 53, 175 }, { 50, 54, 177 }, { 42, 43, 9 },// anywhere - { 43, 44, 9 },// anywhere again - { 45, 42, 190 },// marooneed - crash island - { 43, 42, 160 },// island life - works - { 44, 49, 172 },// jungle island - { 43, 50, 6 },// jolly r - { 43, 49, 174 },// landlubber - { 43, 50, 327 },// trawler - { 42, 50, 115 },// jungly2 - // {46, 49, 180}, - // {45, 52, 186}, ARRIVAL CORRUPTED - { 42, 54, 7 },// overture - { 54, 54, 357 }, // village canfis center 3496 3489 - // {0, 0, 282}, //Stillness myreque hideout - { 53, 54, 48 }, // morytania path to Paterdomus - { 54, 53, 347 }, // waterlogged south of canfis 3506, 3435 - { 45, 52, 72 }, { 40, 51, 191 },// knightly - { 41, 51, 32 },// baroque - { 40, 52, 152 }, // ballad of enchantment ardounge - { 47, 54, 152 }, // ballad of enchantment edgeville prayer 3051 3490 - { 39, 75, 52 },// Heart and Mind, Body Altar - { 47, 153, 325 },// Cave Background, Dwarven Mines - { 46, 153, 325 },// Cave Background, Dwarven Mines - { 47, 152, 325 },// Cave Background, Dwarven Mines - { 49, 50, 327 }, { 39, 47, 83 },// big chords - { 40, 48, 187 },// magic dance - { 39, 48, 187 },// magic dance watchtower not sure if correct song - { 45, 57, 185 }, // mad eadgar - doesn't play - // {40, 48, 153},//in the manor - { 47, 53, 49 }, // Wander - { 48, 52, 333 }, { 50, 56, 337 }, - // {40, 74, 419}, - { 47, 56, 121 }, { 39, 49, 148 }, // emotion 2524, 3168 - { 39, 50, 17 }, // attack1 2515, 3230 - { 39, 54, 32 }, // voyage 2528, 3497 - { 39, 54, 82 }, // waterfall 2511, 3463 - { 40, 54, 319 }, // theme coal trucks - { 38, 48, 80 }, // Soundscape, Castle Wars - { 37, 148, 28 }, // Attack 5 - Castle Wars, Sara Portal - { 43, 54, 60 }, // Lightwalk - Camelot - { 44, 53, 119 }, // fishing catherby - { 39, 54, 33 }, // gnome village coords = 2478, 3437 - { 38, 53, 329 }, // tree spirits - { 38, 54, 126 }, // Gnome King - { 37, 54, 130 }, // Gnome Ball plays a little bit out of region - // 2402, - // 3488 - { 40, 53, 328 }, // March - // {29, 81, 537},//Dogs of War - Stronghold of Security - Vault of - // War - // {31, 81, 558},//Food for Thought - Stronghold of Security - - // Catacomb - // of Famine - // {33, 82, 559},//Malady - Stronghold of Security - Pit of - // Pestilence - // {36, 81, 560},//Dance of Death - Stronghold of Security - - // Sepulchre - // of Death - { 41, 58, 141 }, // Relleka Rock Crabs - { 41, 53, 60 }, // Lasting - Range guild - { 41, 54, 140 } // Talking forest - }; - - /** - * Checks how many areas we have loaded. - * - * @param c - * Client. - */ - public static void checkMusic(Client c) { - for (int[] aMUSIC_DATA : MUSIC_DATA) { - if (c.getX() / 64 == aMUSIC_DATA[0] - && c.getY() / 64 == aMUSIC_DATA[1]/* - * && player . getPlayList ( - * ) . auto - */) { - if (c.getTemporary("CURRENT_SONG") == null - || (Integer) c.getTemporary("CURRENT_SONG") != aMUSIC_DATA[2]) { - c.getActionSender().sendMessage( - "@gre@Play Music Has Music:@bla@ " + aMUSIC_DATA[0] - + " : " + aMUSIC_DATA[1]); - } - } - } - c.getActionSender().sendMessage( - "@red@Play Music No Music:@bla@ " + c.getX() / 64 + " : " - + c.getY() / 64); - } - - /** - * Checks which song is played in which region. - * - * @param player - * the player. - */ - public static void playMusic(Client player) { - for (int[] aMUSIC_DATA : MUSIC_DATA) { - if (player.getX() / 64 == aMUSIC_DATA[0] - && player.getY() / 64 == aMUSIC_DATA[1]/* - * && player . - * getPlayList ( ) . - * auto - */) { - if (player.getTemporary("CURRENT_SONG") == null - || (Integer) player.getTemporary("CURRENT_SONG") != aMUSIC_DATA[2]) { - player.getPlayList(); - if (player.getPlayList().auto) { - player.addTemporary("CURRENT_SONG", aMUSIC_DATA[2]); - player.getActionSender().sendSong(aMUSIC_DATA[2]); - } - int[] edgeVilleSongs = { 98, 111, 127, 157, 106 }; - int toPlay = Misc.random(4); - if (aMUSIC_DATA[0] == 48 && aMUSIC_DATA[1] == 54) { - aMUSIC_DATA[2] = edgeVilleSongs[toPlay]; - } - int[] karamjaSongs = { 327, 6 }; - int songPlaying = Misc.random(1); - if (aMUSIC_DATA[0] == 43 && aMUSIC_DATA[1] == 50) { - aMUSIC_DATA[2] = karamjaSongs[songPlaying]; - } - int[] waterfall = { 82, 32 }; - int songToPlay = Misc.random(1); - if (aMUSIC_DATA[0] == 39 && aMUSIC_DATA[1] == 54) { - aMUSIC_DATA[2] = waterfall[songToPlay]; - } - /* - * int[] battlefield = {148, 17}; int randomSong = - * Misc.random(1); if (aMUSIC_DATA[0] == 39 && - * aMUSIC_DATA[1] == 50) { aMUSIC_DATA[2] = - * battlefield[randomSong]; } - */ - player.getPlayList().playSong(aMUSIC_DATA[2]); - } - } - } - } -} +package com.rebotted.game.content.music; + +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +/** + * http://runescape.wikia.com/wiki/Music Good resource song id = 2 absx/64 = 1 + * absy/64 = 0 + */ + +public class Music { + + public static int[][] MUSIC_DATA = { // all the songs added + { 50, 51, 2 }, + { 49, 51, 2 }, // Flour mill place + { 48, 50, 3 }, + { 46, 56, 8 }, + // {51, 60, 9}, + { 46, 50, 12 }, + { 31, 74, 16 },// mime event + // {46, 50, 49}, + { 52, 57, 14 }, { 47, 52, 15 }, { 45, 53, 18 }, { 45, 54, 18 }, + { 47, 50, 35 }, + { 50, 150, 139 },// harmony 2 + { 46, 54, 23 },// goblin village + // {47, 50, 36}, + { 51, 50, 36 }, { 47, 51, 49 }, { 51, 49, 50 }, { 44, 75, 52 }, + { 46, 53, 54 }, { 49, 54, 111 }, { 51, 60, 255 }, // scape sad + { 45, 75, 57 }, { 47, 47, 62 },// Newbie Melody, Tutorial Island + // corrupted + { 47, 48, 62 },// Newbie Melody, Tutorial Island + { 48, 47, 62 },// Newbie Melody, Tutorial Island + { 48, 48, 62 },// Newbie Melody, Tutorial Island + { 48, 148, 144 },// underground, underground + { 49, 48, 62 },// Newbie Melody, Tutorial Island + { 50, 49, 64 }, { 49, 49, 64 }, { 46, 57, 355 }, // troubled + { 43, 75, 52 },// Miracle Dance, Mind Altar + // {51, 48, 69}, // this song is currently corrupt! Do not play! + // {46, 52, 107}, // falador different + { 46, 52, 72 }, // falador + { 50, 50, 76 }, { 48, 49, 358 }, // Vision - wizard's tower + { 46, 49, 92 },// karamja + { 45, 49, 92 },// karamja diff region + { 51, 54, 93 }, // Edgeville + { 46, 55, 96 }, // this song is currently corrupt! Do not play! + // -seems + // fine + // {45, 49, 55}, + { 46, 60, 52 }, { 48, 54, 98 }, { 47, 49, 105 }, // tommorrow + { 50, 52, 106 }, { 51, 51, 123 }, { 50, 53, 125 }, // Varrock But + // Laggyyyy + // {50, 53, 157}, //Varrock + { 46, 51, 127 }, { 48, 53, 141 }, { 41, 75, 52 },// Down to Earth, + // Earth Altar + { 42, 75, 52 },// Zealot, Water Altar + { 48, 51, 151 }, { 51, 52, 157 }, { 51, 53, 157 }, { 52, 50, 47 },// duel + // arena + { 52, 51, 122 }, // Duel Arena Hospital - Shine + { 41, 40, 588 }, // Pest Control - In-game + { 41, 41, 587 }, // Pest Control - Lobby + { 40, 75, 52 },// Quest, Fire Altar + { 55, 51, 380 },// Barrows + { 50, 55, 169 }, { 49, 154, 144 }, // varrock sewers repeated + { 50, 154, 144 }, // Varrock Sewers + { 48, 154, 144 }, // EdgeVille dungeon + { 48, 153, 144 }, // EdgeVilledungeon + { 48, 150, 144 },// draynor sewers + { 48, 151, 144 },// draynor sewers + { 43, 43, 206 }, // monkey madness + { 48, 55, 169 }, // Wilderness North of Edge + { 38, 80, 469 }, // Tzhaar cave + { 49, 57, 43 }, // wilderness 3 carrallanger + { 42, 53, 184 }, { 49, 53, 175 }, { 50, 54, 177 }, { 42, 43, 9 },// anywhere + { 43, 44, 9 },// anywhere again + { 45, 42, 190 },// marooneed - crash island + { 43, 42, 160 },// island life - works + { 44, 49, 172 },// jungle island + { 43, 50, 6 },// jolly r + { 43, 49, 174 },// landlubber + { 43, 50, 327 },// trawler + { 42, 50, 115 },// jungly2 + // {46, 49, 180}, + // {45, 52, 186}, ARRIVAL CORRUPTED + { 42, 54, 7 },// overture + { 54, 54, 357 }, // village canfis center 3496 3489 + // {0, 0, 282}, //Stillness myreque hideout + { 53, 54, 48 }, // morytania path to Paterdomus + { 54, 53, 347 }, // waterlogged south of canfis 3506, 3435 + { 45, 52, 72 }, { 40, 51, 191 },// knightly + { 41, 51, 32 },// baroque + { 40, 52, 152 }, // ballad of enchantment ardounge + { 47, 54, 152 }, // ballad of enchantment edgeville prayer 3051 3490 + { 39, 75, 52 },// Heart and Mind, Body Altar + { 47, 153, 325 },// Cave Background, Dwarven Mines + { 46, 153, 325 },// Cave Background, Dwarven Mines + { 47, 152, 325 },// Cave Background, Dwarven Mines + { 49, 50, 327 }, { 39, 47, 83 },// big chords + { 40, 48, 187 },// magic dance + { 39, 48, 187 },// magic dance watchtower not sure if correct song + { 45, 57, 185 }, // mad eadgar - doesn't play + // {40, 48, 153},//in the manor + { 47, 53, 49 }, // Wander + { 48, 52, 333 }, { 50, 56, 337 }, + // {40, 74, 419}, + { 47, 56, 121 }, { 39, 49, 148 }, // emotion 2524, 3168 + { 39, 50, 17 }, // attack1 2515, 3230 + { 39, 54, 32 }, // voyage 2528, 3497 + { 39, 54, 82 }, // waterfall 2511, 3463 + { 40, 54, 319 }, // theme coal trucks + { 38, 48, 80 }, // Soundscape, Castle Wars + { 37, 148, 28 }, // Attack 5 - Castle Wars, Sara Portal + { 43, 54, 60 }, // Lightwalk - Camelot + { 44, 53, 119 }, // fishing catherby + { 39, 54, 33 }, // gnome village coords = 2478, 3437 + { 38, 53, 329 }, // tree spirits + { 38, 54, 126 }, // Gnome King + { 37, 54, 130 }, // Gnome Ball plays a little bit out of region + // 2402, + // 3488 + { 40, 53, 328 }, // March + // {29, 81, 537},//Dogs of War - Stronghold of Security - Vault of + // War + // {31, 81, 558},//Food for Thought - Stronghold of Security - + // Catacomb + // of Famine + // {33, 82, 559},//Malady - Stronghold of Security - Pit of + // Pestilence + // {36, 81, 560},//Dance of Death - Stronghold of Security - + // Sepulchre + // of Death + { 41, 58, 141 }, // Relleka Rock Crabs + { 41, 53, 60 }, // Lasting - Range guild + { 41, 54, 140 } // Talking forest + }; + + /** + * Checks how many areas we have loaded. + * + * @param c + * Client. + */ + public static void checkMusic(Player c) { + for (int[] aMUSIC_DATA : MUSIC_DATA) { + if (c.getX() / 64 == aMUSIC_DATA[0] + && c.getY() / 64 == aMUSIC_DATA[1]/* + * && player . getPlayList ( + * ) . auto + */) { + if (c.getTemporary("CURRENT_SONG") == null + || (Integer) c.getTemporary("CURRENT_SONG") != aMUSIC_DATA[2]) { + c.getPacketSender().sendMessage( + "@gre@Play Music Has Music:@bla@ " + aMUSIC_DATA[0] + + " : " + aMUSIC_DATA[1]); + } + } + } + c.getPacketSender().sendMessage( + "@red@Play Music No Music:@bla@ " + c.getX() / 64 + " : " + + c.getY() / 64); + } + + /** + * Checks which song is played in which region. + * + * @param c + * the player. + */ + public static void playMusic(Player c) { + for (int[] aMUSIC_DATA : MUSIC_DATA) { + if (c.getX() / 64 == aMUSIC_DATA[0] + && c.getY() / 64 == aMUSIC_DATA[1]/* + * && player . + * getPlayList ( ) . + * auto + */) { + if (c.getTemporary("CURRENT_SONG") == null + || (Integer) c.getTemporary("CURRENT_SONG") != aMUSIC_DATA[2]) { + c.getPlayList(); + if (c.getPlayList().auto) { + c.addTemporary("CURRENT_SONG", aMUSIC_DATA[2]); + c.getPacketSender().sendSong(aMUSIC_DATA[2]); + } + int[] edgeVilleSongs = { 98, 111, 127, 157, 106 }; + int toPlay = Misc.random(4); + if (aMUSIC_DATA[0] == 48 && aMUSIC_DATA[1] == 54) { + aMUSIC_DATA[2] = edgeVilleSongs[toPlay]; + } + int[] karamjaSongs = { 327, 6 }; + int songPlaying = Misc.random(1); + if (aMUSIC_DATA[0] == 43 && aMUSIC_DATA[1] == 50) { + aMUSIC_DATA[2] = karamjaSongs[songPlaying]; + } + int[] waterfall = { 82, 32 }; + int songToPlay = Misc.random(1); + if (aMUSIC_DATA[0] == 39 && aMUSIC_DATA[1] == 54) { + aMUSIC_DATA[2] = waterfall[songToPlay]; + } + /* + * int[] battlefield = {148, 17}; int randomSong = + * Misc.random(1); if (aMUSIC_DATA[0] == 39 && + * aMUSIC_DATA[1] == 50) { aMUSIC_DATA[2] = + * battlefield[randomSong]; } + */ + c.getPlayList().playSong(aMUSIC_DATA[2]); + } + } + } + } +} diff --git a/2006Redone Server/src/redone/game/content/music/PlayList.java b/2006Redone Server/src/com/rebotted/game/content/music/PlayList.java similarity index 87% rename from 2006Redone Server/src/redone/game/content/music/PlayList.java rename to 2006Redone Server/src/com/rebotted/game/content/music/PlayList.java index 66acb06d..5775db81 100644 --- a/2006Redone Server/src/redone/game/content/music/PlayList.java +++ b/2006Redone Server/src/com/rebotted/game/content/music/PlayList.java @@ -1,226 +1,225 @@ -package redone.game.content.music; - -import java.util.HashMap; -import java.util.Map; - -import redone.game.players.Client; - -public class PlayList { - - private final Client player; - - @SuppressWarnings("unused") - private final int[] songs = { 2, 3, 12, 14, 9, 157, 76, 57, 419, 15, 18, - 327, 125, 106, 123, 177, 169, 98, 141, 36, 50, 72, 186, 151, 35, - 180, 105, 127, 62, 175, 54, 96, 8, 34, 1, 69, 537, 558, 559, 560, - 93, 143, 337, 64, 85, 65, 158, 190, 325 }; - - @SuppressWarnings("unused") - private final int[] buttons = { 41, 155, 99, 167, 296, 105, 81, 123, 2, - 170, 83, 59, 73, 63, 29, 24, 53, 71, 251, 28, 25, 66, 33, 171, 130, - 40, 187, 113, 112, 135, 183, 86, 248, 168, 84, 61, 435, 436, 437, - 434, 116, 253, 263, 47, 159, 108, 117, 199, 49 }; - - @SuppressWarnings("unused") - private final int[] configs = { 20, 21, 22, 23, 24, 25, 298, 311, 346, 414, - 464, 598, 662, 721, 906, 1009 }; - - @SuppressWarnings("unused") - private final int[] values = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0 }; - - public boolean[] unlocked = { false, false, false, false, false, false, - false, false, false, false, false, false, false, false, false, - false, false, false, false, false, false, false, false, false, - false, false, false, false, true, false, false, false, false, - false, false, false, false, false, false, false, false, false, - false, false, false, false, false, false, false, false }; - - private final String[] names = { "Autumn Voyage", "Unknown Land", - "Long Way Home", "Witching", "Kingdom", "Medieval", "Harmony", - "Rune Essence", "Pheasant Peasant", "Workshop", "Horizon", "Dream", - "Garden", "Expanse", "Arabian 2", "Adventure", "Crystal Sword", - "Forever", "Barbarianism", "Arabian", "Al Kharid", "Fanfare", - "Arrival", "Start", "Sea Shanty 2", "Attention", "Tomorrow", - "Nightfall", "Newbie Melody", "Spirit", "Scape Soft", - "Inspiration", "Wildwood", "Wonder", "Iban", "Egypt", - "Dogs of War", "Food for Thought", "Malady", "Dance of Death", - "Parade", "Down To Earth", "Faithless", "Book Of Spells", "Vision", - "Miracle Dance", "Quest", "Heart and Mind", "Cave Background", - "Talking Forest" }; - - private boolean loop = false; - - public boolean auto = true; - - public PlayList(Client p) { - player = p; - } - - private static enum Songs { - // action id, songid, ?, song number - AUTUMN_VOYAGE(16208, 2, 4304, 0), UNKNOWN_LAND(17066, 3, 4418, 1), LONG_WAY_HOME( - 17010, 12, 4362, 2), WITCHING(17078, 14, 4430, 3), KINGDOM( - 32243, 9, 8435, 4), MEDIEVAL(17016, 157, 4368, 5), HARMONY( - 16248, 76, 4344, 6), RUNE_ESSENCE(17034, 57, 4386, 7), PHEASANT_PEASANT( - 55108, 419, 14188, 8), WORKSHOP(17081, 15, 4433, 9), HORIZON( - 16250, 18, 4346, 10), DREAM(35014, 327, 8974, 11), GARDEN( - 16240, 125, 4336, 12), EXPANSE(16230, 106, 4326, 13), ARABIAN_2( - 16196, 123, 4292, 14), ADVENTURE(16191, 177, 4287, 15), CRYSTAL_SWORD( - 16220, 169, 4316, 16), FOREVER(16238, 98, 4334, 17), BARBARIANISM( - 19000, 141, 4864, 18), ARABIAN(16195, 36, 4291, 19), AL_KHARID( - 16192, 50, 4288, 20), FANFARE(16233, 72, 4329, 21), ARRIVAL( - 16200, 186, 4296, 22), - // START(151, 23, 2097152, 23), - SEA_SHANTY_2(17041, 35, 4393, 24), ATTENTION(16207, 180, 4303, 25), TOMORROW( - 24153, 105, 6297, 26), NIGHTFALL(17024, 127, 4376, 27), NEWBIE_MELODY( - 17023, 62, 4375, 28), SPIRIT(17046, 175, 4398, 29), SCAPE_SOFT( - 23100, 54, 5988, 30), INSPIRATION(16253, 96, 4349, 31), WILDWOOD( - 27071, 278, 6983, 32), WONDER(17079, 34, 4431, 33), IBAN(16251, - 1, 4347, 34), EGYPT(16228, 69, 4324, 35), PARADE(17027, 93, - 4379, 40), DOWN_TO_EARTH(19015, 143, 4879, 41), FAITHLESS( - 39145, 337, 346, 42), BOOK_OF_SPELLS(16214, 64, 4310, 43), VISION( - 17070, 85, 4422, 44), MIRACLE_DANCE(17019, 65, 4371, 45), QUEST( - 17028, 158, 4380, 46), HEART_AND_MIND(27033, 52, 6945, 47), // was - // 190 - // changed - // to - // 52 - CAVE_BACKGROUND(35012, 325, 8972, 48), TALKING_FOREST(17083, 140, 4435, - 49); - - private int songId; - private int buttonId; - private int childId; - private int arraySlot; - - public int songId() { - return songId; - } - - @SuppressWarnings("unused") - public int configId() { - return songId; - } - - @SuppressWarnings("unused") - public int configNumber() { - return songId; - } - - @SuppressWarnings("unused") - public int arraySlot() { - return arraySlot; - } - - Songs(int buttonId, int songId, int childId, int arraySlot) { - this.buttonId = buttonId; - this.songId = songId; - this.childId = childId; - this.arraySlot = arraySlot; - } - - private static Map songs = new HashMap(); - static { - for (Songs songId : Songs.values()) { - songs.put(songId.songId(), songId); - } - } - - public static Songs get(int id) { - return songs.get(id); - } - - } - - public void fixAllColors() { - for (int i = 0; i < 385; i++) { - if (Songs.get(i) != null) { - player.getActionSender().sendColor(Songs.get(i).childId, - 255 << 10 | 0 << 5 | 0); - if (unlocked[Songs.get(i).arraySlot]) { - updateList(Songs.get(i).childId); - } - } - } - } - - public void playSong(int songID) { - // System.out.println("songId = "+songID); - try { - if (Songs.get(songID) == null) { - // player.sendMessage("This song has not yet been added to the playlist. - Song ID = "+songID); - if (auto) { - player.getPlayerAssistant().sendFrame126("Song Unavailable!", - 4439); - updateList(4439); - } - return; - } - if (!unlocked[Songs.get(songID).arraySlot]) { - player.getActionSender().sendMessage( - "You have unlocked the song " - + names[Songs.get(songID).arraySlot] + "."); - // System.out.println("You have unlocked the song " + - // names[Songs.get(songID).arraySlot]); - unlocked[Songs.get(songID).arraySlot] = true; - updateList(Songs.get(songID).childId); - player.getPlayerAssistant().sendFrame126( - names[Songs.get(songID).arraySlot], 4439); - updateList(4439); - } else { - if (auto) { - player.getPlayerAssistant().sendFrame126( - names[Songs.get(songID).arraySlot], 4439); - updateList(4439); - } - } - } catch (Exception e) { - System.out.println("Exception: " + e); - } - } - - public void updateList(int id) { - player.getActionSender().sendColor(id, 0 << 10 | 255 << 5 | 0); - } - - public void handleButton(int button) { - if (button == 17023) { - return; - } - if (button == 9925) { - loop = !loop; - } else if (button == 6269) { - auto = true; - player.getPlayerAssistant().sendConfig(18, 1); - } else if (button == 6270) { - auto = false; - player.getPlayerAssistant().sendConfig(18, 0); - } else { - // System.out.println("button="+button); - int songId = -1; - for (int i = 0; i < 385; i++) { - if (Songs.get(i) != null) { - if (Songs.get(i).buttonId == button) { - songId = Songs.get(i).songId; - } - } - } - if (songId == -1) { - // player.getPacketDispatcher().sendMessage("That song is unavailable at this time."); - } else if (!unlocked[Songs.get(songId).arraySlot]) { - player.getActionSender().sendMessage( - "You have to unlock that song first!"); - } else { - auto = false; - player.getPlayerAssistant().sendConfig(18, 0); - playSong(songId); - // System.out.println("sending music to ActionSender packet - song id = "+songId); - player.getActionSender().sendSong(songId); - player.getPlayerAssistant().sendFrame126( - names[Songs.get(songId).arraySlot], 4439); - updateList(4439); - } - } - } -} +package com.rebotted.game.content.music; + +import java.util.HashMap; +import java.util.Map; +import com.rebotted.game.players.Player; + +public class PlayList { + + private final Player player; + + @SuppressWarnings("unused") + private final int[] songs = { 2, 3, 12, 14, 9, 157, 76, 57, 419, 15, 18, + 327, 125, 106, 123, 177, 169, 98, 141, 36, 50, 72, 186, 151, 35, + 180, 105, 127, 62, 175, 54, 96, 8, 34, 1, 69, 537, 558, 559, 560, + 93, 143, 337, 64, 85, 65, 158, 190, 325 }; + + @SuppressWarnings("unused") + private final int[] buttons = { 41, 155, 99, 167, 296, 105, 81, 123, 2, + 170, 83, 59, 73, 63, 29, 24, 53, 71, 251, 28, 25, 66, 33, 171, 130, + 40, 187, 113, 112, 135, 183, 86, 248, 168, 84, 61, 435, 436, 437, + 434, 116, 253, 263, 47, 159, 108, 117, 199, 49 }; + + @SuppressWarnings("unused") + private final int[] configs = { 20, 21, 22, 23, 24, 25, 298, 311, 346, 414, + 464, 598, 662, 721, 906, 1009 }; + + @SuppressWarnings("unused") + private final int[] values = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0 }; + + public boolean[] unlocked = { false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, + false, false, false, false, true, false, false, false, false, + false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false }; + + private final String[] names = { "Autumn Voyage", "Unknown Land", + "Long Way Home", "Witching", "Kingdom", "Medieval", "Harmony", + "Rune Essence", "Pheasant Peasant", "Workshop", "Horizon", "Dream", + "Garden", "Expanse", "Arabian 2", "Adventure", "Crystal Sword", + "Forever", "Barbarianism", "Arabian", "Al Kharid", "Fanfare", + "Arrival", "Start", "Sea Shanty 2", "Attention", "Tomorrow", + "Nightfall", "Newbie Melody", "Spirit", "Scape Soft", + "Inspiration", "Wildwood", "Wonder", "Iban", "Egypt", + "Dogs of War", "Food for Thought", "Malady", "Dance of Death", + "Parade", "Down To Earth", "Faithless", "Book Of Spells", "Vision", + "Miracle Dance", "Quest", "Heart and Mind", "Cave Background", + "Talking Forest" }; + + private boolean loop = false; + + public boolean auto = true; + + public PlayList(Player player2) { + player = player2; + } + + private static enum Songs { + // action id, songid, ?, song number + AUTUMN_VOYAGE(16208, 2, 4304, 0), UNKNOWN_LAND(17066, 3, 4418, 1), LONG_WAY_HOME( + 17010, 12, 4362, 2), WITCHING(17078, 14, 4430, 3), KINGDOM( + 32243, 9, 8435, 4), MEDIEVAL(17016, 157, 4368, 5), HARMONY( + 16248, 76, 4344, 6), RUNE_ESSENCE(17034, 57, 4386, 7), PHEASANT_PEASANT( + 55108, 419, 14188, 8), WORKSHOP(17081, 15, 4433, 9), HORIZON( + 16250, 18, 4346, 10), DREAM(35014, 327, 8974, 11), GARDEN( + 16240, 125, 4336, 12), EXPANSE(16230, 106, 4326, 13), ARABIAN_2( + 16196, 123, 4292, 14), ADVENTURE(16191, 177, 4287, 15), CRYSTAL_SWORD( + 16220, 169, 4316, 16), FOREVER(16238, 98, 4334, 17), BARBARIANISM( + 19000, 141, 4864, 18), ARABIAN(16195, 36, 4291, 19), AL_KHARID( + 16192, 50, 4288, 20), FANFARE(16233, 72, 4329, 21), ARRIVAL( + 16200, 186, 4296, 22), + // START(151, 23, 2097152, 23), + SEA_SHANTY_2(17041, 35, 4393, 24), ATTENTION(16207, 180, 4303, 25), TOMORROW( + 24153, 105, 6297, 26), NIGHTFALL(17024, 127, 4376, 27), NEWBIE_MELODY( + 17023, 62, 4375, 28), SPIRIT(17046, 175, 4398, 29), SCAPE_SOFT( + 23100, 54, 5988, 30), INSPIRATION(16253, 96, 4349, 31), WILDWOOD( + 27071, 278, 6983, 32), WONDER(17079, 34, 4431, 33), IBAN(16251, + 1, 4347, 34), EGYPT(16228, 69, 4324, 35), PARADE(17027, 93, + 4379, 40), DOWN_TO_EARTH(19015, 143, 4879, 41), FAITHLESS( + 39145, 337, 346, 42), BOOK_OF_SPELLS(16214, 64, 4310, 43), VISION( + 17070, 85, 4422, 44), MIRACLE_DANCE(17019, 65, 4371, 45), QUEST( + 17028, 158, 4380, 46), HEART_AND_MIND(27033, 52, 6945, 47), // was + // 190 + // changed + // to + // 52 + CAVE_BACKGROUND(35012, 325, 8972, 48), TALKING_FOREST(17083, 140, 4435, + 49); + + private int songId; + private int buttonId; + private int childId; + private int arraySlot; + + public int songId() { + return songId; + } + + @SuppressWarnings("unused") + public int configId() { + return songId; + } + + @SuppressWarnings("unused") + public int configNumber() { + return songId; + } + + @SuppressWarnings("unused") + public int arraySlot() { + return arraySlot; + } + + Songs(int buttonId, int songId, int childId, int arraySlot) { + this.buttonId = buttonId; + this.songId = songId; + this.childId = childId; + this.arraySlot = arraySlot; + } + + private static Map songs = new HashMap(); + static { + for (Songs songId : Songs.values()) { + songs.put(songId.songId(), songId); + } + } + + public static Songs get(int id) { + return songs.get(id); + } + + } + + public void fixAllColors() { + for (int i = 0; i < 385; i++) { + if (Songs.get(i) != null) { + player.getPacketSender().sendColor(Songs.get(i).childId, + 255 << 10 | 0 << 5 | 0); + if (unlocked[Songs.get(i).arraySlot]) { + updateList(Songs.get(i).childId); + } + } + } + } + + public void playSong(int songID) { + // System.out.println("songId = "+songID); + try { + if (Songs.get(songID) == null) { + // player.sendMessage("This song has not yet been added to the playlist. - Song ID = "+songID); + if (auto) { + player.getPacketSender().sendFrame126("Song Unavailable!", + 4439); + updateList(4439); + } + return; + } + if (!unlocked[Songs.get(songID).arraySlot]) { + player.getPacketSender().sendMessage( + "You have unlocked the song " + + names[Songs.get(songID).arraySlot] + "."); + // System.out.println("You have unlocked the song " + + // names[Songs.get(songID).arraySlot]); + unlocked[Songs.get(songID).arraySlot] = true; + updateList(Songs.get(songID).childId); + player.getPacketSender().sendFrame126( + names[Songs.get(songID).arraySlot], 4439); + updateList(4439); + } else { + if (auto) { + player.getPacketSender().sendFrame126( + names[Songs.get(songID).arraySlot], 4439); + updateList(4439); + } + } + } catch (Exception e) { + System.out.println("Exception: " + e); + } + } + + public void updateList(int id) { + player.getPacketSender().sendColor(id, 0 << 10 | 255 << 5 | 0); + } + + public void handleButton(int button) { + if (button == 17023) { + return; + } + if (button == 9925) { + loop = !loop; + } else if (button == 6269) { + auto = true; + player.getPacketSender().sendConfig(18, 1); + } else if (button == 6270) { + auto = false; + player.getPacketSender().sendConfig(18, 0); + } else { + // System.out.println("button="+button); + int songId = -1; + for (int i = 0; i < 385; i++) { + if (Songs.get(i) != null) { + if (Songs.get(i).buttonId == button) { + songId = Songs.get(i).songId; + } + } + } + if (songId == -1) { + // player.getPacketDispatcher().sendMessage("That song is unavailable at this time."); + } else if (!unlocked[Songs.get(songId).arraySlot]) { + player.getPacketSender().sendMessage( + "You have to unlock that song first!"); + } else { + auto = false; + player.getPacketSender().sendConfig(18, 0); + playSong(songId); + // System.out.println("sending music to ActionSender packet - song id = "+songId); + player.getPacketSender().sendSong(songId); + player.getPacketSender().sendFrame126( + names[Songs.get(songId).arraySlot], 4439); + updateList(4439); + } + } + } +} diff --git a/2006Redone Server/src/redone/game/content/music/sound/CombatSounds.java b/2006Redone Server/src/com/rebotted/game/content/music/sound/CombatSounds.java similarity index 92% rename from 2006Redone Server/src/redone/game/content/music/sound/CombatSounds.java rename to 2006Redone Server/src/com/rebotted/game/content/music/sound/CombatSounds.java index 202df0bc..8b2057ac 100644 --- a/2006Redone Server/src/redone/game/content/music/sound/CombatSounds.java +++ b/2006Redone Server/src/com/rebotted/game/content/music/sound/CombatSounds.java @@ -1,409 +1,409 @@ -package redone.game.content.music.sound; - -import redone.Server; -import redone.game.content.combat.magic.MagicData; -import redone.game.npcs.NpcHandler; -import redone.game.players.Client; -import redone.util.Misc; - -/** - * CombatSounds - * @author Andrew (I'm A Boss on Rune-Server and Mr Extremez on Mopar & Runelocus) - */ - -public class CombatSounds { - - public static int getNpcAttackSounds(int NPCID) { - String npc = GetNpcName(NPCID).toLowerCase(); - if (npc.contains("bat")) { - return 1; - } - if (npc.contains("cow")) { - return 4; - } - if (npc.contains("imp")) { - return 11; - } - if (npc.contains("rat")) { - return 17; - } - if (npc.contains("duck")) { - return 26; - } - if (npc.contains("wolf") || npc.contains("bear")) { - return 28; - } - if (npc.contains("dragon")) { - return 47; - } - if (npc.contains("ghost")) { - return 57; - } - if (npc.contains("goblin")) { - return 88; - } - if (npc.contains("skeleton") || npc.contains("demon") - || npc.contains("ogre") || npc.contains("giant") - || npc.contains("tz-") || npc.contains("jad")) { - return 48; - } - if (npc.contains("zombie")) { - return 1155; - } - if (npc.contains("man") || npc.contains("woman") - || npc.contains("monk")) { - return 417; - } - return Misc.random(6) > 3 ? 398 : 394; - } - - public static int getNpcBlockSound(int NPCID) { - String npc = GetNpcName(NPCID).toLowerCase(); - if (npc.contains("bat")) { - return 7; - } - if (npc.contains("cow")) { - return 5; - } - if (npc.contains("imp")) { - return 11; - } - if (npc.contains("rat")) { - return 16; - } - if (npc.contains("duck")) { - return 24; - } - if (npc.contains("wolf") || npc.contains("bear")) { - return 34; - } - if (npc.contains("dragon")) { - return 45; - } - if (npc.contains("ghost")) { - return 53; - } - if (npc.contains("goblin")) { - return 87; - } - if (npc.contains("skeleton") || npc.contains("demon") - || npc.contains("ogre") || npc.contains("giant") - || npc.contains("tz-") || npc.contains("jad")) { - return 1154; - } - if (npc.contains("zombie")) { - return 1151; - } - if (npc.contains("man") && !npc.contains("woman")) { - return 816; - } - if (npc.contains("monk")) { - return 816; - } - if (!npc.contains("man") && npc.contains("woman")) { - return 818; - } - return 791; - } - - public static int getNpcDeathSounds(int NPCID) { - String npc = GetNpcName(NPCID).toLowerCase(); - if (npc.contains("bat")) { - return 7; - } - if (npc.contains("cow")) { - return 3; - } - if (npc.contains("imp")) { - return 9; - } - if (npc.contains("rat")) { - return 15; - } - if (npc.contains("duck")) { - return 25; - } - if (npc.contains("wolf") || npc.contains("bear")) { - return 35; - } - if (npc.contains("dragon")) { - return 44; - } - if (npc.contains("ghost")) { - return 60; - } - if (npc.contains("goblin")) { - return 125; - } - if (npc.contains("skeleton") || npc.contains("demon") - || npc.contains("ogre") || npc.contains("giant") - || npc.contains("tz-") || npc.contains("jad")) { - return 70; - } - if (npc.contains("zombie")) { - return 1140; - } - return 70; - - } - - public static String GetNpcName(int NpcID) { - return NpcHandler.NpcList[NpcID].npcName; - } - - public static String getItemName(int ItemID) { - return Server.itemHandler.ItemList[ItemID].itemName; - } - - public static int getMagicSound(Client c, int spellId) { - return MagicData.MAGIC_SPELLS[spellId][16]; - } - - public static int getPlayerBlockSounds(Client c) { - - int blockSound = 511; - - if (c.playerEquipment[c.playerChest] == 2499 - || c.playerEquipment[c.playerChest] == 2501 - || c.playerEquipment[c.playerChest] == 2503 - || c.playerEquipment[c.playerChest] == 4746 - || c.playerEquipment[c.playerChest] == 4757 - || c.playerEquipment[c.playerChest] == 10330) {// Dragonhide - // sound - blockSound = 24; - } else if (c.playerEquipment[c.playerChest] == 10551 || // Torso - c.playerEquipment[c.playerChest] == 10438) {// 3rd age - blockSound = 32;// Weird sound - } else if (c.playerEquipment[c.playerChest] == 10338 || // 3rd age - c.playerEquipment[c.playerChest] == 7399 || // Enchanted - c.playerEquipment[c.playerChest] == 6107 || // Ghostly - c.playerEquipment[c.playerChest] == 4091 || // Mystic - c.playerEquipment[c.playerChest] == 4101 || // Mystic - c.playerEquipment[c.playerChest] == 4111 || // Mystic - c.playerEquipment[c.playerChest] == 1035 || // Zamorak - c.playerEquipment[c.playerChest] == 12971) {// Combat - blockSound = 14;// Robe sound - } else if (c.playerEquipment[c.playerShield] == 4224) {// Crystal Shield - blockSound = 30;// Crystal sound - } else if (c.playerEquipment[c.playerChest] == 1101 - || // Chains - c.playerEquipment[c.playerChest] == 1103 - || c.playerEquipment[c.playerChest] == 1105 - || c.playerEquipment[c.playerChest] == 1107 - || c.playerEquipment[c.playerChest] == 1109 - || c.playerEquipment[c.playerChest] == 1111 - || c.playerEquipment[c.playerChest] == 1113 - || c.playerEquipment[c.playerChest] == 1115 - || // Plates - c.playerEquipment[c.playerChest] == 1117 - || c.playerEquipment[c.playerChest] == 1119 - || c.playerEquipment[c.playerChest] == 1121 - || c.playerEquipment[c.playerChest] == 1123 - || c.playerEquipment[c.playerChest] == 1125 - || c.playerEquipment[c.playerChest] == 1127 - || c.playerEquipment[c.playerChest] == 4720 - || // Barrows armour - c.playerEquipment[c.playerChest] == 4728 - || c.playerEquipment[c.playerChest] == 4749 - || c.playerEquipment[c.playerChest] == 4712 - || c.playerEquipment[c.playerChest] == 11720 - || // Godwars armour - c.playerEquipment[c.playerChest] == 11724 - || c.playerEquipment[c.playerChest] == 3140 - || // Dragon - c.playerEquipment[c.playerChest] == 2615 - || // Fancy - c.playerEquipment[c.playerChest] == 2653 - || c.playerEquipment[c.playerChest] == 2661 - || c.playerEquipment[c.playerChest] == 2669 - || c.playerEquipment[c.playerChest] == 2623 - || c.playerEquipment[c.playerChest] == 3841 - || c.playerEquipment[c.playerChest] == 1127) {// Metal armour - // sound - blockSound = 15; - } else { - blockSound = 511; - } - return blockSound; - } - - public static int getWeaponSounds(Client c) { - if (c.playerEquipment[c.playerWeapon] >= 1) { - String wep = getItemName(c.playerEquipment[c.playerWeapon]) - .toLowerCase(); - if (c.playerEquipment[c.playerWeapon] <= 0) { - switch (c.fightMode) { - case 0: - return 416; - case 2: - return 417; - case 1: - return 418; - } - } - - if (c.playerEquipment[c.playerWeapon] == 4718) {// Dharok's - // Greataxe - return 1320; - } - if (c.playerEquipment[c.playerWeapon] == 4734) {// Karil's Crossbow - return 1081; - } - if (c.playerEquipment[c.playerWeapon] == 4747) {// Torag's Hammers - return 1330; - } - if (c.playerEquipment[c.playerWeapon] == 4710) {// Ahrim's Staff - return 2555; - } - if (c.playerEquipment[c.playerWeapon] == 4755) {// Verac's Flail - return 1323; - } - if (c.playerEquipment[c.playerWeapon] == 4726) {// Guthan's - // Warspear - return 2562; - } - - if (c.playerEquipment[c.playerWeapon] == 772 - || c.playerEquipment[c.playerWeapon] == 1379 - || c.playerEquipment[c.playerWeapon] == 1381 - || c.playerEquipment[c.playerWeapon] == 1383 - || c.playerEquipment[c.playerWeapon] == 1385 - || c.playerEquipment[c.playerWeapon] == 1387 - || c.playerEquipment[c.playerWeapon] == 1389 - || c.playerEquipment[c.playerWeapon] == 1391 - || c.playerEquipment[c.playerWeapon] == 1393 - || c.playerEquipment[c.playerWeapon] == 1395 - || c.playerEquipment[c.playerWeapon] == 1397 - || c.playerEquipment[c.playerWeapon] == 1399 - || c.playerEquipment[c.playerWeapon] == 1401 - || c.playerEquipment[c.playerWeapon] == 1403 - || c.playerEquipment[c.playerWeapon] == 1405 - || c.playerEquipment[c.playerWeapon] == 1407 - || c.playerEquipment[c.playerWeapon] == 1409 - || c.playerEquipment[c.playerWeapon] == 9100) { // Staff - // wack - return 394; - } - if (c.playerEquipment[c.playerWeapon] == 839 - || c.playerEquipment[c.playerWeapon] == 841 - || c.playerEquipment[c.playerWeapon] == 843 - || c.playerEquipment[c.playerWeapon] == 845 - || c.playerEquipment[c.playerWeapon] == 847 - || c.playerEquipment[c.playerWeapon] == 849 - || c.playerEquipment[c.playerWeapon] == 851 - || c.playerEquipment[c.playerWeapon] == 853 - || c.playerEquipment[c.playerWeapon] == 855 - || c.playerEquipment[c.playerWeapon] == 857 - || c.playerEquipment[c.playerWeapon] == 859 - || c.playerEquipment[c.playerWeapon] == 861 - || c.playerEquipment[c.playerWeapon] == 4734 - || c.playerEquipment[c.playerWeapon] == 2023 // RuneC'Bow - || c.playerEquipment[c.playerWeapon] == 4212 - || c.playerEquipment[c.playerWeapon] == 4214 - || c.playerEquipment[c.playerWeapon] == 4934 - || c.playerEquipment[c.playerWeapon] == 9104 - || c.playerEquipment[c.playerWeapon] == 9107) { // Bows/Crossbows - return 370; - } - if (c.playerEquipment[c.playerWeapon] == 1363 - || c.playerEquipment[c.playerWeapon] == 1365 - || c.playerEquipment[c.playerWeapon] == 1367 - || c.playerEquipment[c.playerWeapon] == 1369 - || c.playerEquipment[c.playerWeapon] == 1371 - || c.playerEquipment[c.playerWeapon] == 1373 - || c.playerEquipment[c.playerWeapon] == 1375 - || c.playerEquipment[c.playerWeapon] == 1377 - || c.playerEquipment[c.playerWeapon] == 1349 - || c.playerEquipment[c.playerWeapon] == 1351 - || c.playerEquipment[c.playerWeapon] == 1353 - || c.playerEquipment[c.playerWeapon] == 1355 - || c.playerEquipment[c.playerWeapon] == 1357 - || c.playerEquipment[c.playerWeapon] == 1359 - || c.playerEquipment[c.playerWeapon] == 1361 - || c.playerEquipment[c.playerWeapon] == 9109) { // BattleAxes/Axes - return 399; - } - if (c.playerEquipment[c.playerWeapon] == 4718 - || c.playerEquipment[c.playerWeapon] == 7808) { // Dharok - // GreatAxe - return 400; - } - if (c.playerEquipment[c.playerWeapon] == 6609 - || c.playerEquipment[c.playerWeapon] == 1307 - || c.playerEquipment[c.playerWeapon] == 1309 - || c.playerEquipment[c.playerWeapon] == 1311 - || c.playerEquipment[c.playerWeapon] == 1313 - || c.playerEquipment[c.playerWeapon] == 1315 - || c.playerEquipment[c.playerWeapon] == 1317 - || c.playerEquipment[c.playerWeapon] == 1319) { // 2h - return 425; - } - if (wep.contains("scimitar") || wep.contains("longsword")) { - return 396; - } - if (wep.contains("halberd")) { - return 420; - } - if (wep.contains("long")) { - return 396; - } - if (wep.contains("knife")) { - return 368; - } - if (wep.contains("javelin")) { - return 364; - } - - if (c.playerEquipment[c.playerWeapon] == 9110) { - return 401; - } - if (c.playerEquipment[c.playerWeapon] == 4755) { - return 1059; - } - if (c.playerEquipment[c.playerWeapon] == 4153) { - return 1079; - } - if (c.playerEquipment[c.playerWeapon] == 9103) { - return 385; - } - if (c.playerEquipment[c.playerWeapon] == -1) { // fists - return 417; - } - if (c.playerEquipment[c.playerWeapon] == 2745 - || c.playerEquipment[c.playerWeapon] == 2746 - || c.playerEquipment[c.playerWeapon] == 2747 - || c.playerEquipment[c.playerWeapon] == 2748) { // Godswords - return 390; - } - if (c.playerEquipment[c.playerWeapon] == 4151) { - return 1080; - } - } - return 398; - } - - public static int specialSounds(int id) { - if (id == 4151) {// whip - return 1081; - } else if (id == 5698 || id == 1231 || id == 1215) {// dds - return 793; - } else if (id == 1434) {// Mace - return 387; - } else if (id == 3204) {// halberd - return 420; - } else if (id == 4153) { // gmaul - return 1082; - } else if (id == 7158) { // d2h - return 426; - } else if (id == 4587) { // dscim - return 1305; - } else if (id == 1305) { // D Long - return 390; - } else if (id == 861 || id == 11235) { // MSB, Darkbow - return 386; - } else if (id == 1377) { // DBAxe - return 389; - } - return -1; - } -} +package com.rebotted.game.content.music.sound; + +import com.rebotted.GameEngine; +import com.rebotted.game.content.combat.magic.MagicData; +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +/** + * CombatSounds + * @author Andrew (Mr Extremez) + */ + +public class CombatSounds { + + public static int getNpcAttackSounds(int NPCID) { + String npc = GetNpcName(NPCID).toLowerCase(); + if (npc.contains("bat")) { + return 1; + } + if (npc.contains("cow")) { + return 4; + } + if (npc.contains("imp")) { + return 11; + } + if (npc.contains("rat")) { + return 17; + } + if (npc.contains("duck")) { + return 26; + } + if (npc.contains("wolf") || npc.contains("bear")) { + return 28; + } + if (npc.contains("dragon")) { + return 47; + } + if (npc.contains("ghost")) { + return 57; + } + if (npc.contains("goblin")) { + return 88; + } + if (npc.contains("skeleton") || npc.contains("demon") + || npc.contains("ogre") || npc.contains("giant") + || npc.contains("tz-") || npc.contains("jad")) { + return 48; + } + if (npc.contains("zombie")) { + return 1155; + } + if (npc.contains("man") || npc.contains("woman") + || npc.contains("monk")) { + return 417; + } + return Misc.random(6) > 3 ? 398 : 394; + } + + public static int getNpcBlockSound(int NPCID) { + String npc = GetNpcName(NPCID).toLowerCase(); + if (npc.contains("bat")) { + return 7; + } + if (npc.contains("cow")) { + return 5; + } + if (npc.contains("imp")) { + return 11; + } + if (npc.contains("rat")) { + return 16; + } + if (npc.contains("duck")) { + return 24; + } + if (npc.contains("wolf") || npc.contains("bear")) { + return 34; + } + if (npc.contains("dragon")) { + return 45; + } + if (npc.contains("ghost")) { + return 53; + } + if (npc.contains("goblin")) { + return 87; + } + if (npc.contains("skeleton") || npc.contains("demon") + || npc.contains("ogre") || npc.contains("giant") + || npc.contains("tz-") || npc.contains("jad")) { + return 1154; + } + if (npc.contains("zombie")) { + return 1151; + } + if (npc.contains("man") && !npc.contains("woman")) { + return 816; + } + if (npc.contains("monk")) { + return 816; + } + if (!npc.contains("man") && npc.contains("woman")) { + return 818; + } + return 791; + } + + public static int getNpcDeathSounds(int NPCID) { + String npc = GetNpcName(NPCID).toLowerCase(); + if (npc.contains("bat")) { + return 7; + } + if (npc.contains("cow")) { + return 3; + } + if (npc.contains("imp")) { + return 9; + } + if (npc.contains("rat")) { + return 15; + } + if (npc.contains("duck")) { + return 25; + } + if (npc.contains("wolf") || npc.contains("bear")) { + return 35; + } + if (npc.contains("dragon")) { + return 44; + } + if (npc.contains("ghost")) { + return 60; + } + if (npc.contains("goblin")) { + return 125; + } + if (npc.contains("skeleton") || npc.contains("demon") + || npc.contains("ogre") || npc.contains("giant") + || npc.contains("tz-") || npc.contains("jad")) { + return 70; + } + if (npc.contains("zombie")) { + return 1140; + } + return 70; + + } + + public static String GetNpcName(int NpcID) { + return NpcHandler.NpcList[NpcID].npcName; + } + + public static String getItemName(int ItemID) { + return GameEngine.itemHandler.ItemList[ItemID].itemName; + } + + public static int getMagicSound(Player c, int spellId) { + return MagicData.MAGIC_SPELLS[spellId][16]; + } + + public static int getPlayerBlockSounds(Player c) { + + int blockSound = 511; + + if (c.playerEquipment[c.playerChest] == 2499 + || c.playerEquipment[c.playerChest] == 2501 + || c.playerEquipment[c.playerChest] == 2503 + || c.playerEquipment[c.playerChest] == 4746 + || c.playerEquipment[c.playerChest] == 4757 + || c.playerEquipment[c.playerChest] == 10330) {// Dragonhide + // sound + blockSound = 24; + } else if (c.playerEquipment[c.playerChest] == 10551 || // Torso + c.playerEquipment[c.playerChest] == 10438) {// 3rd age + blockSound = 32;// Weird sound + } else if (c.playerEquipment[c.playerChest] == 10338 || // 3rd age + c.playerEquipment[c.playerChest] == 7399 || // Enchanted + c.playerEquipment[c.playerChest] == 6107 || // Ghostly + c.playerEquipment[c.playerChest] == 4091 || // Mystic + c.playerEquipment[c.playerChest] == 4101 || // Mystic + c.playerEquipment[c.playerChest] == 4111 || // Mystic + c.playerEquipment[c.playerChest] == 1035 || // Zamorak + c.playerEquipment[c.playerChest] == 12971) {// Combat + blockSound = 14;// Robe sound + } else if (c.playerEquipment[c.playerShield] == 4224) {// Crystal Shield + blockSound = 30;// Crystal sound + } else if (c.playerEquipment[c.playerChest] == 1101 + || // Chains + c.playerEquipment[c.playerChest] == 1103 + || c.playerEquipment[c.playerChest] == 1105 + || c.playerEquipment[c.playerChest] == 1107 + || c.playerEquipment[c.playerChest] == 1109 + || c.playerEquipment[c.playerChest] == 1111 + || c.playerEquipment[c.playerChest] == 1113 + || c.playerEquipment[c.playerChest] == 1115 + || // Plates + c.playerEquipment[c.playerChest] == 1117 + || c.playerEquipment[c.playerChest] == 1119 + || c.playerEquipment[c.playerChest] == 1121 + || c.playerEquipment[c.playerChest] == 1123 + || c.playerEquipment[c.playerChest] == 1125 + || c.playerEquipment[c.playerChest] == 1127 + || c.playerEquipment[c.playerChest] == 4720 + || // Barrows armour + c.playerEquipment[c.playerChest] == 4728 + || c.playerEquipment[c.playerChest] == 4749 + || c.playerEquipment[c.playerChest] == 4712 + || c.playerEquipment[c.playerChest] == 11720 + || // Godwars armour + c.playerEquipment[c.playerChest] == 11724 + || c.playerEquipment[c.playerChest] == 3140 + || // Dragon + c.playerEquipment[c.playerChest] == 2615 + || // Fancy + c.playerEquipment[c.playerChest] == 2653 + || c.playerEquipment[c.playerChest] == 2661 + || c.playerEquipment[c.playerChest] == 2669 + || c.playerEquipment[c.playerChest] == 2623 + || c.playerEquipment[c.playerChest] == 3841 + || c.playerEquipment[c.playerChest] == 1127) {// Metal armour + // sound + blockSound = 15; + } else { + blockSound = 511; + } + return blockSound; + } + + public static int getWeaponSounds(Player c) { + if (c.playerEquipment[c.playerWeapon] >= 1) { + String wep = getItemName(c.playerEquipment[c.playerWeapon]) + .toLowerCase(); + if (c.playerEquipment[c.playerWeapon] <= 0) { + switch (c.fightMode) { + case 0: + return 416; + case 2: + return 417; + case 1: + return 418; + } + } + + if (c.playerEquipment[c.playerWeapon] == 4718) {// Dharok's + // Greataxe + return 1320; + } + if (c.playerEquipment[c.playerWeapon] == 4734) {// Karil's Crossbow + return 1081; + } + if (c.playerEquipment[c.playerWeapon] == 4747) {// Torag's Hammers + return 1330; + } + if (c.playerEquipment[c.playerWeapon] == 4710) {// Ahrim's Staff + return 2555; + } + if (c.playerEquipment[c.playerWeapon] == 4755) {// Verac's Flail + return 1323; + } + if (c.playerEquipment[c.playerWeapon] == 4726) {// Guthan's + // Warspear + return 2562; + } + + if (c.playerEquipment[c.playerWeapon] == 772 + || c.playerEquipment[c.playerWeapon] == 1379 + || c.playerEquipment[c.playerWeapon] == 1381 + || c.playerEquipment[c.playerWeapon] == 1383 + || c.playerEquipment[c.playerWeapon] == 1385 + || c.playerEquipment[c.playerWeapon] == 1387 + || c.playerEquipment[c.playerWeapon] == 1389 + || c.playerEquipment[c.playerWeapon] == 1391 + || c.playerEquipment[c.playerWeapon] == 1393 + || c.playerEquipment[c.playerWeapon] == 1395 + || c.playerEquipment[c.playerWeapon] == 1397 + || c.playerEquipment[c.playerWeapon] == 1399 + || c.playerEquipment[c.playerWeapon] == 1401 + || c.playerEquipment[c.playerWeapon] == 1403 + || c.playerEquipment[c.playerWeapon] == 1405 + || c.playerEquipment[c.playerWeapon] == 1407 + || c.playerEquipment[c.playerWeapon] == 1409 + || c.playerEquipment[c.playerWeapon] == 9100) { // Staff + // wack + return 394; + } + if (c.playerEquipment[c.playerWeapon] == 839 + || c.playerEquipment[c.playerWeapon] == 841 + || c.playerEquipment[c.playerWeapon] == 843 + || c.playerEquipment[c.playerWeapon] == 845 + || c.playerEquipment[c.playerWeapon] == 847 + || c.playerEquipment[c.playerWeapon] == 849 + || c.playerEquipment[c.playerWeapon] == 851 + || c.playerEquipment[c.playerWeapon] == 853 + || c.playerEquipment[c.playerWeapon] == 855 + || c.playerEquipment[c.playerWeapon] == 857 + || c.playerEquipment[c.playerWeapon] == 859 + || c.playerEquipment[c.playerWeapon] == 861 + || c.playerEquipment[c.playerWeapon] == 4734 + || c.playerEquipment[c.playerWeapon] == 2023 // RuneC'Bow + || c.playerEquipment[c.playerWeapon] == 4212 + || c.playerEquipment[c.playerWeapon] == 4214 + || c.playerEquipment[c.playerWeapon] == 4934 + || c.playerEquipment[c.playerWeapon] == 9104 + || c.playerEquipment[c.playerWeapon] == 9107) { // Bows/Crossbows + return 370; + } + if (c.playerEquipment[c.playerWeapon] == 1363 + || c.playerEquipment[c.playerWeapon] == 1365 + || c.playerEquipment[c.playerWeapon] == 1367 + || c.playerEquipment[c.playerWeapon] == 1369 + || c.playerEquipment[c.playerWeapon] == 1371 + || c.playerEquipment[c.playerWeapon] == 1373 + || c.playerEquipment[c.playerWeapon] == 1375 + || c.playerEquipment[c.playerWeapon] == 1377 + || c.playerEquipment[c.playerWeapon] == 1349 + || c.playerEquipment[c.playerWeapon] == 1351 + || c.playerEquipment[c.playerWeapon] == 1353 + || c.playerEquipment[c.playerWeapon] == 1355 + || c.playerEquipment[c.playerWeapon] == 1357 + || c.playerEquipment[c.playerWeapon] == 1359 + || c.playerEquipment[c.playerWeapon] == 1361 + || c.playerEquipment[c.playerWeapon] == 9109) { // BattleAxes/Axes + return 399; + } + if (c.playerEquipment[c.playerWeapon] == 4718 + || c.playerEquipment[c.playerWeapon] == 7808) { // Dharok + // GreatAxe + return 400; + } + if (c.playerEquipment[c.playerWeapon] == 6609 + || c.playerEquipment[c.playerWeapon] == 1307 + || c.playerEquipment[c.playerWeapon] == 1309 + || c.playerEquipment[c.playerWeapon] == 1311 + || c.playerEquipment[c.playerWeapon] == 1313 + || c.playerEquipment[c.playerWeapon] == 1315 + || c.playerEquipment[c.playerWeapon] == 1317 + || c.playerEquipment[c.playerWeapon] == 1319) { // 2h + return 425; + } + if (wep.contains("scimitar") || wep.contains("longsword")) { + return 396; + } + if (wep.contains("halberd")) { + return 420; + } + if (wep.contains("long")) { + return 396; + } + if (wep.contains("knife")) { + return 368; + } + if (wep.contains("javelin")) { + return 364; + } + + if (c.playerEquipment[c.playerWeapon] == 9110) { + return 401; + } + if (c.playerEquipment[c.playerWeapon] == 4755) { + return 1059; + } + if (c.playerEquipment[c.playerWeapon] == 4153) { + return 1079; + } + if (c.playerEquipment[c.playerWeapon] == 9103) { + return 385; + } + if (c.playerEquipment[c.playerWeapon] == -1) { // fists + return 417; + } + if (c.playerEquipment[c.playerWeapon] == 2745 + || c.playerEquipment[c.playerWeapon] == 2746 + || c.playerEquipment[c.playerWeapon] == 2747 + || c.playerEquipment[c.playerWeapon] == 2748) { // Godswords + return 390; + } + if (c.playerEquipment[c.playerWeapon] == 4151) { + return 1080; + } + } + return 398; + } + + public static int specialSounds(int id) { + if (id == 4151) {// whip + return 1081; + } else if (id == 5698 || id == 1231 || id == 1215) {// dds + return 793; + } else if (id == 1434) {// Mace + return 387; + } else if (id == 3204) {// halberd + return 420; + } else if (id == 4153) { // gmaul + return 1082; + } else if (id == 7158) { // d2h + return 426; + } else if (id == 4587) { // dscim + return 1305; + } else if (id == 1305) { // D Long + return 390; + } else if (id == 861 || id == 11235) { // MSB, Darkbow + return 386; + } else if (id == 1377) { // DBAxe + return 389; + } + return -1; + } +} diff --git a/2006Redone Server/src/redone/game/content/music/sound/SoundList.java b/2006Redone Server/src/com/rebotted/game/content/music/sound/SoundList.java similarity index 92% rename from 2006Redone Server/src/redone/game/content/music/sound/SoundList.java rename to 2006Redone Server/src/com/rebotted/game/content/music/sound/SoundList.java index 06ac0c38..9217e7d1 100644 --- a/2006Redone Server/src/redone/game/content/music/sound/SoundList.java +++ b/2006Redone Server/src/com/rebotted/game/content/music/sound/SoundList.java @@ -1,111 +1,111 @@ -package redone.game.content.music.sound; - -import redone.game.players.Client; - -/** - * Sounds - * @author Andrew - */ - -public class SoundList { - - Client c; - - public SoundList(Client c) { - this.c = c; - } - - /** - * Skilling - */ - - public static final int COOK_ITEM = 357; - public static final int MINING_ORE = 1331; - public static final int ANVIL = 468; - public static final int BONE_BURY = 380; - public static final int FIRE_LIGHT = 375, FIRE_SUCCESSFUL = 608, FIRST_ATTEMPT = 2584; - public static final int TREE_CUT_BEGIN = 471, TREE_CUTTING = 472, TREE_EMPTY = 473; - public static final int LEVEL_UP = 67; - public static final int FISHING = 289;// Cast out Net/Cage/Harpoon - public static final int START_FLY_FISHING = 377, FLY_FISHING = 378; - public static final int RUNECRAFTING = 481; - public static final int RAKE_WEEDS = 1323;// farming - public static final int SMELTING_ORE = 469;// smelting ore in furnace - public static final int SMITHING_ANVIL = 468; - public static final int STUNNED = 458;// stunned from thieving - public static final int PESTLE_MOTAR = 373; - public static final int PROSPECTING = 431; - public static final int CUT_GEM = 464; - - /** - * Prayer - */ - - // public static final int RECHARGE_PRAYER = 442; - // public static final int PROTECT_PRAYER = 444; - public static final int PROTECT_MELEE = 433; - public static final int PROTECT_MAGIC = 438; - public static final int PROTECT_RANGE = 444; - public static final int PROT_MAGE = 438; - public static final int NO_PRAY = 435; - public static final int PRAYER_TO_LOW = 447; - - /** - * Magic - */ - - public static final int MAGE_SPLASH = 193, MAGE_FAIL = 941; - public static final int TELEBLOCK_CAST = 1185, TELEBLOCK_HIT = 1183; - public static final int LOW_ALCHEMY = 224, HIGH_ALCHEMY = 223; - public static final int ICE_BLITZ = 1110; - public static final int TELEPORT = 202; - public static final int BLOOD_RUSH = 984, BLOOD_BITZ = 985; - public static final int ANCIENT_BLOOD = 986; - public static final int BLOOD_RUSH_SPLASH = 991; - public static final int WIND_STRIKE = 992; - public static final int SUPERHEAT = 217, SUPERHEAT_FAIL = 218; - public static final int BONES_TO_BANNAS = 227; - - /** - * Combat - */ - - public static final int SHOOT_ARROW = 370; - - /** - * Click item - */ - - public static final int FOOD_EAT = 317, DRINK = 334; - public static final int ITEM_PICKUP = 356, ITEM_DROP = 376; - - /** - * Random Event - */ - - public static final int EXPLODING_ROCK = 429, EXPLODING_ROCK_2 = 432; - public static final int KISS_FROG = 652; - - /** - * Minigame - */ - - public static final int DUEL_WON = 77, DUEL_LOST = 76; - - /** - * Objects - */ - - public static final int DITCH = 2462; - public static final int JUMPING_STONES = 455; - public static final int PICKABLE = 358; - public static final int SLASH_WEB = 237; - public static final int OPEN_DOOR = 326; - public static final int OPEN_GATE = 1328; - - /** - * Items - */ - - public static final int EMPTY = 334; -} +package com.rebotted.game.content.music.sound; + +import com.rebotted.game.players.Player; + +/** + * Sounds + * @author Andrew + */ + +public class SoundList { + + Player c; + + public SoundList(Player player) { + this.c = player; + } + + /** + * Skilling + */ + + public static final int COOK_ITEM = 357; + public static final int MINING_ORE = 1331; + public static final int ANVIL = 468; + public static final int BONE_BURY = 380; + public static final int FIRE_LIGHT = 375, FIRE_SUCCESSFUL = 608, FIRST_ATTEMPT = 2584; + public static final int TREE_CUT_BEGIN = 471, TREE_CUTTING = 472, TREE_EMPTY = 473; + public static final int LEVEL_UP = 67; + public static final int FISHING = 289;// Cast out Net/Cage/Harpoon + public static final int START_FLY_FISHING = 377, FLY_FISHING = 378; + public static final int RUNECRAFTING = 481; + public static final int RAKE_WEEDS = 1323;// farming + public static final int SMELTING_ORE = 469;// smelting ore in furnace + public static final int SMITHING_ANVIL = 468; + public static final int STUNNED = 458;// stunned from thieving + public static final int PESTLE_MOTAR = 373; + public static final int PROSPECTING = 431; + public static final int CUT_GEM = 464; + + /** + * Prayer + */ + + // public static final int RECHARGE_PRAYER = 442; + // public static final int PROTECT_PRAYER = 444; + public static final int PROTECT_MELEE = 433; + public static final int PROTECT_MAGIC = 438; + public static final int PROTECT_RANGE = 444; + public static final int PROT_MAGE = 438; + public static final int NO_PRAY = 435; + public static final int PRAYER_TO_LOW = 447; + + /** + * Magic + */ + + public static final int MAGE_SPLASH = 193, MAGE_FAIL = 941; + public static final int TELEBLOCK_CAST = 1185, TELEBLOCK_HIT = 1183; + public static final int LOW_ALCHEMY = 224, HIGH_ALCHEMY = 223; + public static final int ICE_BLITZ = 1110; + public static final int TELEPORT = 202; + public static final int BLOOD_RUSH = 984, BLOOD_BITZ = 985; + public static final int ANCIENT_BLOOD = 986; + public static final int BLOOD_RUSH_SPLASH = 991; + public static final int WIND_STRIKE = 992; + public static final int SUPERHEAT = 217, SUPERHEAT_FAIL = 218; + public static final int BONES_TO_BANNAS = 227; + + /** + * Combat + */ + + public static final int SHOOT_ARROW = 370; + + /** + * Click item + */ + + public static final int FOOD_EAT = 317, DRINK = 334; + public static final int ITEM_PICKUP = 356, ITEM_DROP = 376; + + /** + * Random Event + */ + + public static final int EXPLODING_ROCK = 429, EXPLODING_ROCK_2 = 432; + public static final int KISS_FROG = 652; + + /** + * Minigame + */ + + public static final int DUEL_WON = 77, DUEL_LOST = 76; + + /** + * Objects + */ + + public static final int DITCH = 2462; + public static final int JUMPING_STONES = 455; + public static final int PICKABLE = 358; + public static final int SLASH_WEB = 237; + public static final int OPEN_DOOR = 326; + public static final int OPEN_GATE = 1328; + + /** + * Items + */ + + public static final int EMPTY = 334; +} diff --git a/2006Redone Server/src/redone/game/content/quests/QuestAssistant.java b/2006Redone Server/src/com/rebotted/game/content/quests/QuestAssistant.java similarity index 55% rename from 2006Redone Server/src/redone/game/content/quests/QuestAssistant.java rename to 2006Redone Server/src/com/rebotted/game/content/quests/QuestAssistant.java index bce501cf..c559b09d 100644 --- a/2006Redone Server/src/redone/game/content/quests/QuestAssistant.java +++ b/2006Redone Server/src/com/rebotted/game/content/quests/QuestAssistant.java @@ -1,321 +1,333 @@ -package redone.game.content.quests; - -import redone.game.content.quests.impl.KnightsSword; -import redone.game.content.quests.impl.ShieldArrav; -import redone.game.players.Client; - -/** - * Quest Assistant - * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) - */ - -public class QuestAssistant { - - public static final int MAXIMUM_QUESTPOINTS = 23; - - public static void sendStages(Client client) { - client.getPlayerAssistant().sendFrame126("QP: " + client.questPoints + " ", 3985); - for (Quests quests : Quests.values()) { - if (!quests.questStatus() && quests.getStringId() > 0) { - client.getPlayerAssistant().sendFrame126("", quests.getStringId()); - } - } - if (client.pirateTreasure == 0) { - client.getPlayerAssistant().sendFrame126("Pirate's Treasure", 7341); - } else if (client.pirateTreasure == 6) { - client.getPlayerAssistant().sendFrame126("@gre@Pirate's Treasure", 7341); - } else { - client.getPlayerAssistant().sendFrame126("@yel@Pirate's Treasure", 7341); - } - if (client.witchspot == 0) { - client.getPlayerAssistant().sendFrame126("Witch's Potion", 7348); - } else if (client.witchspot == 3) { - client.getPlayerAssistant().sendFrame126("@gre@Witch's Potion", 7348); - } else { - client.getPlayerAssistant().sendFrame126("@yel@Witch's Potion", 7348); - } - if (client.romeojuliet == 0) { - client.getPlayerAssistant().sendFrame126("Romeo and Juliet", 7343); - } else if (client.romeojuliet < 9) { - client.getPlayerAssistant().sendFrame126("@yel@Romeo and Juliet", - 7343); - } else if (client.romeojuliet >= 9) { - client.getPlayerAssistant().sendFrame126("@gre@Romeo and Juliet", - 7343); - } - if (client.vampSlayer == 0) { - client.getPlayerAssistant().sendFrame126("Vampyre Slayer", 7347); - } else if (client.vampSlayer == 5) { - client.getPlayerAssistant().sendFrame126("@gre@Vampyre Slayer", 7347); - } else { - client.getPlayerAssistant().sendFrame126("@yel@Vampyre Slayer", 7347); - } - if (client.doricQuest == 0) { - client.getPlayerAssistant().sendFrame126("Doric's Quest", 7336); - } else if (client.doricQuest == 3) { - client.getPlayerAssistant().sendFrame126("@gre@Doric's Quest", 7336); - } else { - client.getPlayerAssistant().sendFrame126("@yel@Doric's Quest", 7336); - } - if (client.restGhost == 0) { - client.getPlayerAssistant().sendFrame126("Restless Ghost", 7337); - } else if (client.restGhost == 5) { - client.getPlayerAssistant().sendFrame126("@gre@Restless Ghost", 7337); - } else { - client.getPlayerAssistant().sendFrame126("@yel@Restless Ghost", 7337); - } - if (client.impsC == 0) { - client.getPlayerAssistant().sendFrame126("Imp Catcher", 7340); - } else if (client.impsC == 1) { - client.getPlayerAssistant().sendFrame126("@yel@Imp Catcher", 7340); - } else if (client.impsC == 2) { - client.getPlayerAssistant().sendFrame126("@gre@Imp Catcher", 7340); - } - if (client.gertCat == 0) { - client.getPlayerAssistant().sendFrame126("Gertrudes Cat", 7360); - } else if (client.gertCat == 7) { - client.getPlayerAssistant().sendFrame126("@gre@Gertrudes Cat", 7360); - } else { - client.getPlayerAssistant().sendFrame126("@yel@Gertrudes Cat", 7360); - } - if (client.sheepShear == 0) { - client.getPlayerAssistant().sendFrame126("Sheep Shearer", 7344); - } else if (client.sheepShear == 2) { - client.getPlayerAssistant().sendFrame126("@gre@Sheep Shearer", 7344); - } else { - client.getPlayerAssistant().sendFrame126("@yel@Sheep Shearer", 7344); - } - if (client.runeMist == 0) { - client.getPlayerAssistant().sendFrame126("Rune Mysteries", 7335); - } else if (client.runeMist == 4) { - client.getPlayerAssistant().sendFrame126("@gre@Rune Mysteries", 7335); - } else { - client.getPlayerAssistant().sendFrame126("@yel@Rune Mysteries", 7335); - } - if (client.knightS == 0) { - client.getPlayerAssistant().sendFrame126("The Knight's Sword", 7346); - } else if (client.knightS < 9) { - client.getPlayerAssistant().sendFrame126("@yel@The Knight's Sword", 7346); - } else if (client.knightS == 9) { - client.getPlayerAssistant().sendFrame126("@gre@The Knight's Sword", 7346); - } - if (client.cookAss == 0) { - client.getPlayerAssistant().sendFrame126("Cook's Assistant", 7333); - } else if (client.cookAss == 3) { - client.getPlayerAssistant().sendFrame126("@gre@Cook's Assistant", 7333); - } else if (client.cookAss > 0 && client.cookAss < 3) { - client.getPlayerAssistant().sendFrame126("@yel@Cook's Assistant", 7333); - } - if (client.blackKnight == 0) { - client.getPlayerAssistant().sendFrame126("Black Knights' Fortress", 7332); - } else if (client.blackKnight == 3) { - client.getPlayerAssistant().sendFrame126("@gre@Black Knights' Fortress", 7332); - } else { - client.getPlayerAssistant().sendFrame126("@yel@Black Knights' Fortress", 7332); - } - if (client.shieldArrav == 0) { - client.getPlayerAssistant().sendFrame126("Shield of Arrav", 7345); - } else if (client.shieldArrav == 8) { - client.getPlayerAssistant().sendFrame126("@gre@Shield of Arrav", 7345); - } else { - client.getPlayerAssistant().sendFrame126("@yel@Shield of Arrav", 7345); - } - } - - public enum Quests { - BLACK_KNIGHT(28164, 7332, "Black Knights' Fortress", true), - COOKS_ASSISTANT(28165, 7333, "Cook's Assistant", true), - DEMON_SLAYER(28166, 7334, "Demon Slayer", false), - DORICS_QUEST(28168, 7336, "Doric's Quest", true), - DRAGON_SLAYER(28215, 7383, "Dragon Slayer", false), - ERNEST(28171, 7339, "Ernest the Chicken", false), - GOBLIN(28170, 7338, "Goblin Diplomacy", false), - IMP_CATCHER(28172, 7340, "Imp Catcher", true), - KNIGHTS_SWORD(28178, 7346, "The Knight's Sword", true), - PIRATES_TREASURE(28173, 7341, "Pirates Treasure", true), - PRINCE_RESCUE(28174, 7342, "Prince Ali Rescue", false), - RESTLESS_GHOST(28169, 7337, "Restless Ghost", true), - ROMEO_JULIET(28175, 7343, "Romeo Juliet", false), - RUNE_MYSTERIES(28167, 7335, "Rune Mysteries", true), - SHEEP_SHEARER(28176, 7344, "Sheep Shearer", true), - SHIELD_OF_ARRAV(28177, 7345, "Shield of Arrav", true), - VAMPYRE_SLAYER(28179, 7347, "Vampyre Slayer", true), - WITCHS_POTION(28180, 7348, "Witchs Potion", true), - BETWEEN_A_ROCK(49228, 12772, "Between A Rock", false), - CHOMPY(2161, 673, "Big Chompy Bird Hunting", false), - BIOHAZARD(28124, 7352, "Biohazard", false), - CABIN(68102, 17510, "Cabin Fever", false), - CLOCK(28185, 7353, "Clock Tower", false), - DEATH(32246, 8438, "Death Plateau", false), - CREATURE(47097, 12129, "Creature of Fenkenstrain", false), - DESERT_TREASURE(50052, 12852, "Desert Treasure", false), - DRUDIC_RITUAL(28187, 7355, "Drudic Ritual", false), - DWARF_CANNON(28188, 7356, "Dwarf Cannon", false), - EADGARS_RUSE(33231, 8679, "Eadgars Ruse", false), - DEVIOUS(61225, 15841, "Devious Minds", false), - DIGSITE(28186, 7354, "Digsite Quest", false), - ELEMENTAL(29035, 7459, "Elemental Workshop", false), - ENAKHRA(63021, 16149, "Enakhra's Lamet", false), - FAIRY1(27075, 6987, "A Fairy Tale Pt. 1", false), - FAMILYCREST(28189, 7357, "Family Crest", false), - FEUD(50036, 12836, "The Feud", false), - FIGHT_ARENA(28190, 7358, "Fight Arena", false), - FISHING_CONTEST(28191, 7359, "Fishing Contest", false), - FORGETTABLE_TABLE(50089, 14169, "Forgettable Tale...", false), - FREMMY_TRIALS(39131, 10115, "The Fremennik Trials", false), - GARDEN(57012, 14604, "Garden of Tranquillity", false), - GERTRUDES_CAT(28192, 7360, "Gertrude's Cat", true), - GHOSTS(47250, 12282, "Ghosts Ahoy", false), - GIANT_DWARF(53009, 13577, "The Giant Dwarf", false), - GOLEM(50039, 12839, "The Golem", false), - GRAND_TREE(28193, 7361, "The Grand Tree", false), - HAND_IN_THE_SAND(63000, 16128, "The Hand in the Sand", false), - HAUNTED_MINE(46081, 11857, "Haunted Mine", false), - HAZEEL(28194, 7362, "Hazeel Cult", false), - HEROES(28195, 7363, "Heroes Quest", false), - HOLY(28196, 7364, "Holy Grail", false), - HORROR(39151, 10135, "Horror from the Deep", false), - ITCHLARIN(17156, 4508, "Itchlarin's Little Helper", false), - AID_OF_MYREQUE(72085, 18517, "In Aid of the Myreque", false), - SEARCH_OF_MYREQUE(46131, 11907, "In Search of the Myreque", false), - JUNGLE_POTION(28197, 7365, "Jungle Potion", false), - LEGENDS_QUEST(28198, 7366, "Legends Quest", false), - LOST_CITY(28199, 7367, "Lost City", false), - LOST_TRIBE(52077, 13389, "The Lost Tribe", false), - MAKING_HISTORY(60127, 15487, "Making History", false), - MONKEY_MADNESS(43124, 11132, "Monkey Madness", false), - MERLINS_CRYSTAL(28200, 7368, "Merlins Crystal", false), - MONKS_FRIEND(28201, 7369, "Monks Friend", false), - MOUNTAIN_DAUGHTER(48101, 12389, "Mountain Daughter", false), - MOURNINGS_END_1(54150, 13974, "Mourning's Ends Part 1", false), - MOURNINGS_END_2(23139, 6027, "Mourning's Ends Part 2", false), - MURDER_MYSTERY(28202, 7370, "Murder Mystery", false), - NATURE_SPIRIT(31201, 8137, "Nature Spirit", false), - OBSERVATORY(28203, 7371, "Observatory Quest", false), - ONE_SMALL_FAVOUR(48057, 12345, "One Small Favour", false), - PLAGUE_CITY(28204, 7372, "Plague City", false), - PRIEST_IN_PERIL(31179, 8115, "Priest in Peril", false), - RAG_AND_BONE_MAN(72252, 18684, "Rag and Bone Man", false), - RAT_CATCHERS(60139, 15499, "Rat Catchers", false), - RECIPE(71130, 18306, "Recipe for Disaster", false), - RECRUITMENT_DRIVE(2156, 668, "Recruitment Drive", false), - REGICIDE(33128, 8576, "Regicide", false), - ROVING_ELVES(47017, 12139, "Roving Elves", false), - RUM_DEAL(58064, 14912, "Rum Deal", false), - SCORPION_CATCHER(28205, 7373, "Scorpion Catcher", false), - SEA_SLUG(28206, 7374, "Sea Slug Quest", false), - SHADES_OF_MORTON(35009, 8969, "Shades of Mort'ton", false), - SHADOW_OF_THE_STORM(59248, 15352, "Shadow of the Storm", false), - SHEEP_HERDER(28207, 7375, "Sheep Herder", false), - SHILO_VILLAGE(28208, 7376, "Shilo Village", false), - SOULS_BANE(28250, 15098, "A Soul's Bane", false), - SPIRITS_OF_THE_ELID(60232, 15592, "Spirits of The Elid", false), - SWAN_SONG(249, 249, "Swan Song", false), - TAI_BWO(6204, 1740, "Tai Bwo Wannai Trio", false), - TWO_CATS(59131, 15235, "A Tail of Two Cats", false), - TEARS_OF_GUTHIX(12206, 3278, "Tears of Guthix", false), - TEMPLE_OF_IKOV(28210, 7378, "Temple of Ikov", false), - THRONE_OF_MISCELLANIA(25118, 6518, "Throne of Miscellania", false), - TOURIST_TRAP(28211, 7379, "The Tourist Trap", false), - TREE_GNOME_VILLAGE(28212, 7380, "Tree Gnome Village", false), - TRIBAL_TOTEM(28213, 7381, "Tribal Totem", false), - TROLL_ROMANCE(46082, 11858, "Troll Romance", false), - TROLL_STRONGHOLD(191, 191, "Troll Stronghold", false), - UNDERGROUND_PASS(38199, 9927, "Underground Pass", false), - WANTED(23136, 6024, "Wanted", false), - WATCHTOWER(28181, 7349, "Watch Tower", false), - WATERFALL(28182, 7350, "Waterfall Quest", false), - WITCH(28183, 7351, "Witch's House", false), - ZOGRE(52044, 13356, "Zogre Flesh Eaters", false); - - private final int button, string; - private final String name; - private final boolean questStatus; - - private Quests(final int button, final int string, final String name, final boolean questStatus) { - this.button = button; - this.name = name; - this.string = string; - this.questStatus = questStatus; - } - - public int getStringId() { - return string; - } - - public boolean questStatus() { - return questStatus; - } - - public int getButton() { - return button; - } - - public String getName() { - return name; - } - - public static Quests forButton(int button) { - for (Quests q : Quests.values()) { - if (q.getButton() == button) { - return q; - } - } - return null; - } - } - - public static void questButtons(Client client, int buttonId) { - switch (buttonId) { - - case 28165: - client.getCooksAssistant().showInformation(); - break; - case 28167: - client.getRuneMysteries().showInformation(); - break; - case 28168: - client.getDoricsQuest().showInformation(); - break; - case 28169: - client.getRestlessGhost().showInformation(); - break; - case 28172: - client.getImpCatcher().showInformation(); - break; - case 28173: - client.getPiratesTreasure().showInformation(); - break; - case 28175: - client.getRomeoJuliet().showInformation(); - break; - case 28176: - client.getSheepShearer().showInformation(); - break; - case 28177: - ShieldArrav.showInformation(client); - break; - case 28178: - KnightsSword.showInformation(client); - break; - case 28179: - client.getVampyreSlayer().showInformation(); - break; - case 28180: - client.getWitchesPotion().showInformation(); - break; - case 28192: - client.getGertrudesCat().showInformation(); - break; - case 28164: - client.getBlackKnightsFortress().showInformation(); - break; - - default: - if (Quests.forButton(buttonId) != null) { - client.getActionSender().sendMessage("The quest " + Quests.forButton(buttonId).getName() + " is currently disabled."); - } - break; - } - } -} +package com.rebotted.game.content.quests; + +import com.rebotted.game.content.quests.impl.BlackKnightsFortress; +import com.rebotted.game.content.quests.impl.CooksAssistant; +import com.rebotted.game.content.quests.impl.DoricsQuest; +import com.rebotted.game.content.quests.impl.GertrudesCat; +import com.rebotted.game.content.quests.impl.ImpCatcher; +import com.rebotted.game.content.quests.impl.KnightsSword; +import com.rebotted.game.content.quests.impl.PiratesTreasure; +import com.rebotted.game.content.quests.impl.RestlessGhost; +import com.rebotted.game.content.quests.impl.RomeoJuliet; +import com.rebotted.game.content.quests.impl.RuneMysteries; +import com.rebotted.game.content.quests.impl.SheepShearer; +import com.rebotted.game.content.quests.impl.ShieldArrav; +import com.rebotted.game.content.quests.impl.VampyreSlayer; +import com.rebotted.game.content.quests.impl.WitchsPotion; +import com.rebotted.game.players.Player; + +/** + * Quest Assistant + * @author Andrew (Mr Extremez) + */ + +public class QuestAssistant { + + public static final int MAXIMUM_QUESTPOINTS = 23; + + public static void sendStages(Player player) { + player.getPacketSender().sendFrame126("QP: " + player.questPoints + " ", 3985); + for (Quests quests : Quests.values()) { + if (!quests.questStatus() && quests.getStringId() > 0) { + player.getPacketSender().sendFrame126("", quests.getStringId()); + } + } + if (player.pirateTreasure == 0) { + player.getPacketSender().sendFrame126("Pirate's Treasure", 7341); + } else if (player.pirateTreasure == 6) { + player.getPacketSender().sendFrame126("@gre@Pirate's Treasure", 7341); + } else { + player.getPacketSender().sendFrame126("@yel@Pirate's Treasure", 7341); + } + if (player.witchspot == 0) { + player.getPacketSender().sendFrame126("Witch's Potion", 7348); + } else if (player.witchspot == 3) { + player.getPacketSender().sendFrame126("@gre@Witch's Potion", 7348); + } else { + player.getPacketSender().sendFrame126("@yel@Witch's Potion", 7348); + } + if (player.romeojuliet == 0) { + player.getPacketSender().sendFrame126("Romeo and Juliet", 7343); + } else if (player.romeojuliet < 9) { + player.getPacketSender().sendFrame126("@yel@Romeo and Juliet", + 7343); + } else if (player.romeojuliet >= 9) { + player.getPacketSender().sendFrame126("@gre@Romeo and Juliet", + 7343); + } + if (player.vampSlayer == 0) { + player.getPacketSender().sendFrame126("Vampyre Slayer", 7347); + } else if (player.vampSlayer == 5) { + player.getPacketSender().sendFrame126("@gre@Vampyre Slayer", 7347); + } else { + player.getPacketSender().sendFrame126("@yel@Vampyre Slayer", 7347); + } + if (player.doricQuest == 0) { + player.getPacketSender().sendFrame126("Doric's Quest", 7336); + } else if (player.doricQuest == 3) { + player.getPacketSender().sendFrame126("@gre@Doric's Quest", 7336); + } else { + player.getPacketSender().sendFrame126("@yel@Doric's Quest", 7336); + } + if (player.restGhost == 0) { + player.getPacketSender().sendFrame126("Restless Ghost", 7337); + } else if (player.restGhost == 5) { + player.getPacketSender().sendFrame126("@gre@Restless Ghost", 7337); + } else { + player.getPacketSender().sendFrame126("@yel@Restless Ghost", 7337); + } + if (player.impsC == 0) { + player.getPacketSender().sendFrame126("Imp Catcher", 7340); + } else if (player.impsC == 1) { + player.getPacketSender().sendFrame126("@yel@Imp Catcher", 7340); + } else if (player.impsC == 2) { + player.getPacketSender().sendFrame126("@gre@Imp Catcher", 7340); + } + if (player.gertCat == 0) { + player.getPacketSender().sendFrame126("Gertrudes Cat", 7360); + } else if (player.gertCat == 7) { + player.getPacketSender().sendFrame126("@gre@Gertrudes Cat", 7360); + } else { + player.getPacketSender().sendFrame126("@yel@Gertrudes Cat", 7360); + } + if (player.sheepShear == 0) { + player.getPacketSender().sendFrame126("Sheep Shearer", 7344); + } else if (player.sheepShear == 2) { + player.getPacketSender().sendFrame126("@gre@Sheep Shearer", 7344); + } else { + player.getPacketSender().sendFrame126("@yel@Sheep Shearer", 7344); + } + if (player.runeMist == 0) { + player.getPacketSender().sendFrame126("Rune Mysteries", 7335); + } else if (player.runeMist == 4) { + player.getPacketSender().sendFrame126("@gre@Rune Mysteries", 7335); + } else { + player.getPacketSender().sendFrame126("@yel@Rune Mysteries", 7335); + } + if (player.knightS == 0) { + player.getPacketSender().sendFrame126("The Knight's Sword", 7346); + } else if (player.knightS < 9) { + player.getPacketSender().sendFrame126("@yel@The Knight's Sword", 7346); + } else if (player.knightS == 9) { + player.getPacketSender().sendFrame126("@gre@The Knight's Sword", 7346); + } + if (player.cookAss == 0) { + player.getPacketSender().sendFrame126("Cook's Assistant", 7333); + } else if (player.cookAss == 3) { + player.getPacketSender().sendFrame126("@gre@Cook's Assistant", 7333); + } else if (player.cookAss > 0 && player.cookAss < 3) { + player.getPacketSender().sendFrame126("@yel@Cook's Assistant", 7333); + } + if (player.blackKnight == 0) { + player.getPacketSender().sendFrame126("Black Knights' Fortress", 7332); + } else if (player.blackKnight == 3) { + player.getPacketSender().sendFrame126("@gre@Black Knights' Fortress", 7332); + } else { + player.getPacketSender().sendFrame126("@yel@Black Knights' Fortress", 7332); + } + if (player.shieldArrav == 0) { + player.getPacketSender().sendFrame126("Shield of Arrav", 7345); + } else if (player.shieldArrav == 8) { + player.getPacketSender().sendFrame126("@gre@Shield of Arrav", 7345); + } else { + player.getPacketSender().sendFrame126("@yel@Shield of Arrav", 7345); + } + } + + public enum Quests { + BLACK_KNIGHT(28164, 7332, "Black Knights' Fortress", true), + COOKS_ASSISTANT(28165, 7333, "Cook's Assistant", true), + DEMON_SLAYER(28166, 7334, "Demon Slayer", false), + DORICS_QUEST(28168, 7336, "Doric's Quest", true), + DRAGON_SLAYER(28215, 7383, "Dragon Slayer", false), + ERNEST(28171, 7339, "Ernest the Chicken", false), + GOBLIN(28170, 7338, "Goblin Diplomacy", false), + IMP_CATCHER(28172, 7340, "Imp Catcher", true), + KNIGHTS_SWORD(28178, 7346, "The Knight's Sword", true), + PIRATES_TREASURE(28173, 7341, "Pirates Treasure", true), + PRINCE_RESCUE(28174, 7342, "Prince Ali Rescue", false), + RESTLESS_GHOST(28169, 7337, "Restless Ghost", true), + ROMEO_JULIET(28175, 7343, "Romeo Juliet", false), + RUNE_MYSTERIES(28167, 7335, "Rune Mysteries", true), + SHEEP_SHEARER(28176, 7344, "Sheep Shearer", true), + SHIELD_OF_ARRAV(28177, 7345, "Shield of Arrav", true), + VAMPYRE_SLAYER(28179, 7347, "Vampyre Slayer", true), + WITCHS_POTION(28180, 7348, "Witchs Potion", true), + BETWEEN_A_ROCK(49228, 12772, "Between A Rock", false), + CHOMPY(2161, 673, "Big Chompy Bird Hunting", false), + BIOHAZARD(28124, 7352, "Biohazard", false), + CABIN(68102, 17510, "Cabin Fever", false), + CLOCK(28185, 7353, "Clock Tower", false), + DEATH(32246, 8438, "Death Plateau", false), + CREATURE(47097, 12129, "Creature of Fenkenstrain", false), + DESERT_TREASURE(50052, 12852, "Desert Treasure", false), + DRUDIC_RITUAL(28187, 7355, "Drudic Ritual", false), + DWARF_CANNON(28188, 7356, "Dwarf Cannon", false), + EADGARS_RUSE(33231, 8679, "Eadgars Ruse", false), + DEVIOUS(61225, 15841, "Devious Minds", false), + DIGSITE(28186, 7354, "Digsite Quest", false), + ELEMENTAL(29035, 7459, "Elemental Workshop", false), + ENAKHRA(63021, 16149, "Enakhra's Lamet", false), + FAIRY1(27075, 6987, "A Fairy Tale Pt. 1", false), + FAMILYCREST(28189, 7357, "Family Crest", false), + FEUD(50036, 12836, "The Feud", false), + FIGHT_ARENA(28190, 7358, "Fight Arena", false), + FISHING_CONTEST(28191, 7359, "Fishing Contest", false), + FORGETTABLE_TABLE(50089, 14169, "Forgettable Tale...", false), + FREMMY_TRIALS(39131, 10115, "The Fremennik Trials", false), + GARDEN(57012, 14604, "Garden of Tranquillity", false), + GERTRUDES_CAT(28192, 7360, "Gertrude's Cat", true), + GHOSTS(47250, 12282, "Ghosts Ahoy", false), + GIANT_DWARF(53009, 13577, "The Giant Dwarf", false), + GOLEM(50039, 12839, "The Golem", false), + GRAND_TREE(28193, 7361, "The Grand Tree", false), + HAND_IN_THE_SAND(63000, 16128, "The Hand in the Sand", false), + HAUNTED_MINE(46081, 11857, "Haunted Mine", false), + HAZEEL(28194, 7362, "Hazeel Cult", false), + HEROES(28195, 7363, "Heroes Quest", false), + HOLY(28196, 7364, "Holy Grail", false), + HORROR(39151, 10135, "Horror from the Deep", false), + ITCHLARIN(17156, 4508, "Itchlarin's Little Helper", false), + AID_OF_MYREQUE(72085, 18517, "In Aid of the Myreque", false), + SEARCH_OF_MYREQUE(46131, 11907, "In Search of the Myreque", false), + JUNGLE_POTION(28197, 7365, "Jungle Potion", false), + LEGENDS_QUEST(28198, 7366, "Legends Quest", false), + LOST_CITY(28199, 7367, "Lost City", false), + LOST_TRIBE(52077, 13389, "The Lost Tribe", false), + MAKING_HISTORY(60127, 15487, "Making History", false), + MONKEY_MADNESS(43124, 11132, "Monkey Madness", false), + MERLINS_CRYSTAL(28200, 7368, "Merlins Crystal", false), + MONKS_FRIEND(28201, 7369, "Monks Friend", false), + MOUNTAIN_DAUGHTER(48101, 12389, "Mountain Daughter", false), + MOURNINGS_END_1(54150, 13974, "Mourning's Ends Part 1", false), + MOURNINGS_END_2(23139, 6027, "Mourning's Ends Part 2", false), + MURDER_MYSTERY(28202, 7370, "Murder Mystery", false), + NATURE_SPIRIT(31201, 8137, "Nature Spirit", false), + OBSERVATORY(28203, 7371, "Observatory Quest", false), + ONE_SMALL_FAVOUR(48057, 12345, "One Small Favour", false), + PLAGUE_CITY(28204, 7372, "Plague City", false), + PRIEST_IN_PERIL(31179, 8115, "Priest in Peril", false), + RAG_AND_BONE_MAN(72252, 18684, "Rag and Bone Man", false), + RAT_CATCHERS(60139, 15499, "Rat Catchers", false), + RECIPE(71130, 18306, "Recipe for Disaster", false), + RECRUITMENT_DRIVE(2156, 668, "Recruitment Drive", false), + REGICIDE(33128, 8576, "Regicide", false), + ROVING_ELVES(47017, 12139, "Roving Elves", false), + RUM_DEAL(58064, 14912, "Rum Deal", false), + SCORPION_CATCHER(28205, 7373, "Scorpion Catcher", false), + SEA_SLUG(28206, 7374, "Sea Slug Quest", false), + SHADES_OF_MORTON(35009, 8969, "Shades of Mort'ton", false), + SHADOW_OF_THE_STORM(59248, 15352, "Shadow of the Storm", false), + SHEEP_HERDER(28207, 7375, "Sheep Herder", false), + SHILO_VILLAGE(28208, 7376, "Shilo Village", false), + SOULS_BANE(28250, 15098, "A Soul's Bane", false), + SPIRITS_OF_THE_ELID(60232, 15592, "Spirits of The Elid", false), + SWAN_SONG(249, 249, "Swan Song", false), + TAI_BWO(6204, 1740, "Tai Bwo Wannai Trio", false), + TWO_CATS(59131, 15235, "A Tail of Two Cats", false), + TEARS_OF_GUTHIX(12206, 3278, "Tears of Guthix", false), + TEMPLE_OF_IKOV(28210, 7378, "Temple of Ikov", false), + THRONE_OF_MISCELLANIA(25118, 6518, "Throne of Miscellania", false), + TOURIST_TRAP(28211, 7379, "The Tourist Trap", false), + TREE_GNOME_VILLAGE(28212, 7380, "Tree Gnome Village", false), + TRIBAL_TOTEM(28213, 7381, "Tribal Totem", false), + TROLL_ROMANCE(46082, 11858, "Troll Romance", false), + TROLL_STRONGHOLD(191, 191, "Troll Stronghold", false), + UNDERGROUND_PASS(38199, 9927, "Underground Pass", false), + WANTED(23136, 6024, "Wanted", false), + WATCHTOWER(28181, 7349, "Watch Tower", false), + WATERFALL(28182, 7350, "Waterfall Quest", false), + WITCH(28183, 7351, "Witch's House", false), + ZOGRE(52044, 13356, "Zogre Flesh Eaters", false); + + private final int button, string; + private final String name; + private final boolean questStatus; + + private Quests(final int button, final int string, final String name, final boolean questStatus) { + this.button = button; + this.name = name; + this.string = string; + this.questStatus = questStatus; + } + + public int getStringId() { + return string; + } + + public boolean questStatus() { + return questStatus; + } + + public int getButton() { + return button; + } + + public String getName() { + return name; + } + + public static Quests forButton(int button) { + for (Quests q : Quests.values()) { + if (q.getButton() == button) { + return q; + } + } + return null; + } + } + + public static void questButtons(Player player, int buttonId) { + switch (buttonId) { + + case 28165: + CooksAssistant.showInformation(player); + break; + case 28167: + RuneMysteries.showInformation(player); + break; + case 28168: + DoricsQuest.showInformation(player); + break; + case 28169: + RestlessGhost.showInformation(player); + break; + case 28172: + ImpCatcher.showInformation(player); + break; + case 28173: + PiratesTreasure.showInformation(player); + break; + case 28175: + RomeoJuliet.showInformation(player); + break; + case 28176: + SheepShearer.showInformation(player); + break; + case 28177: + ShieldArrav.showInformation(player); + break; + case 28178: + KnightsSword.showInformation(player); + break; + case 28179: + VampyreSlayer.showInformation(player); + break; + case 28180: + WitchsPotion.showInformation(player); + break; + case 28192: + GertrudesCat.showInformation(player); + break; + case 28164: + BlackKnightsFortress.showInformation(player); + break; + + default: + if (Quests.forButton(buttonId) != null) { + player.getPacketSender().sendMessage("The quest " + Quests.forButton(buttonId).getName() + " is currently disabled."); + } + break; + } + } +} diff --git a/2006Redone Server/src/com/rebotted/game/content/quests/QuestRewards.java b/2006Redone Server/src/com/rebotted/game/content/quests/QuestRewards.java new file mode 100644 index 00000000..37a3403c --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/quests/QuestRewards.java @@ -0,0 +1,163 @@ +package com.rebotted.game.content.quests; + +import com.rebotted.game.players.Player; + +/** + * Quest Rewards + * @author Andrew (Mr Extremez) + */ + +public class QuestRewards { + + public static String QUEST_NAME; + + public static void questReward(Player player, String questName, String Line1, String Line2, String Line3, String Line4, String Line5, String Line6, int itemID) { + player.getPacketSender().sendFrame126("You have completed " + questName + "!", 12144); + player.getPacketSender().sendFrame126("" + player.questPoints, 12147); + player.getPacketSender().sendFrame126(Line1, 12150); + player.getPacketSender().sendFrame126(Line2, 12151); + player.getPacketSender().sendFrame126(Line3, 12152); + player.getPacketSender().sendFrame126(Line4, 12153); + player.getPacketSender().sendFrame126(Line5, 12154); + player.getPacketSender().sendFrame126(Line6, 12155); + if (itemID > 0) { + player.getPacketSender().sendFrame246(12145, 250, itemID); + } + player.getPacketSender().showInterface(12140); + player.getPacketSender().sendMessage("You completed " + questName + "!"); + QuestAssistant.sendStages(player); + player.getPacketSender().sendQuickSong(93, 0); + } + + public static void knightsReward(Player player) { + questReward(player, "Knight's Sword Quest", "1 Quest Point", "12,725 Smithing XP", "", "", "", "", 0); + QUEST_NAME = "The Knight's Sword"; + player.getPacketSender().sendFrame126("@gre@" + QUEST_NAME + "", 7346); + player.getPlayerAssistant().addSkillXP(12725, player.playerSmithing); + player.questPoints ++; + player.knightS = 9; + } + + public static void gertFinish(Player player) { + questReward(player, "Gertrude's Cat", "1 Quest Point", "1,525 Cooking XP", "A kitten!", "Ability to raise cats", "A chocolate cake", "A bowl of stew", 1897); + QUEST_NAME = "Gertrude's Cat"; + player.getPacketSender().sendFrame126("@gre@" + QUEST_NAME + "", 7360); + player.getItemAssistant().addItem(1897, 1); + player.getItemAssistant().addItem(2003, 1); + player.getItemAssistant().addItem(1560, 1); + player.getPlayerAssistant().addSkillXP(1525, player.playerCooking); + player.questPoints++; + player.gertCat = 7; + } + + public static void pirateFinish(Player c) { + questReward(c, "Pirate's Treasure", "2 Quest Points", "One-Eyed Hector's Treasure", "", "", "", "", 2714); + QUEST_NAME = "Pirate's Treasure"; + c.getPacketSender().sendFrame126("@gre@" + QUEST_NAME + "", 7341); + c.getItemAssistant().addItem(2714, 1); + c.questPoints += 2; + c.pirateTreasure = 6; + } + + public static void witchFinish(Player client) { + questReward(client, "Witch's Potion", "1 Quest Point", "325 Magic XP", "", "", "", "", 325); + QUEST_NAME = "Witch's Potion"; + client.getPacketSender().sendFrame126("@gre@" + QUEST_NAME + "", 7348); + client.getPlayerAssistant().addSkillXP(325, client.playerMagic); + client.questPoints++; + client.witchspot = 3; + } + + public static void julietFinish(Player player) { + questReward(player, "Romeo and Juliet", "5 Quest Points", "", "", "", "", "", 0); + QUEST_NAME = "Romeo and Juliet"; + player.getPacketSender().sendFrame126("@gre@" + QUEST_NAME + "", 7343); + player.questPoints += 5; + player.romeojuliet = 9; + } + + public static void restFinish(Player client) { + questReward(client, "Restless Ghost", "1 Quest Point", "125 Prayer XP", "", "", "", "", 0); + QUEST_NAME = "Restless Ghost"; + client.getPacketSender().sendFrame126("@gre@" + QUEST_NAME + "", 7337); + client.getPlayerAssistant().addSkillXP(125, client.playerPrayer); + client.questPoints++; + client.restGhost = 5; + } + + public static void vampFinish(Player player) { + questReward(player, "Vampyre Slayer", "3 Quest Points", "4,825 Attack XP", "", "", "", "", 0); + QUEST_NAME = "Vampyre Slayer"; + player.getPacketSender().sendFrame126("@gre@" + QUEST_NAME + "", 7347); + player.getPlayerAssistant().addSkillXP(4825, player.playerAttack); + player.questPoints += 3; + player.vampSlayer = 5; + } + + public static void runeFinish(Player player) { + questReward(player, "Rune Mysteries", "1 Quest Point", "Air Talisman", "", "", "", "", 1438); + QUEST_NAME = "Rune Mysteries"; + player.getPacketSender().sendFrame126("@gre@" + QUEST_NAME + "", 7335); + player.getItemAssistant().addItem(1438, 1); + player.questPoints++; + player.runeMist = 4; + } + + public static void sheepFinish(Player player) { + questReward(player, "Sheep Shearer", "1 Quest Point", "150 Crafting Exp", "60 Coins", "", "", "", 995); + QUEST_NAME = "Sheep Shearer"; + player.getPacketSender().sendFrame126("@gre@" + QUEST_NAME + "", 7344); + player.getItemAssistant().addItem(995, 60); + player.getPlayerAssistant().addSkillXP(150, player.playerCrafting); + player.questPoints++; + player.sheepShear = 2; + } + + public static void doricFinish(Player player) { + questReward(player, "Doric's Quest", "1 Quest Point", "1,300 Mining XP", "180 Coins", "", "", "", 995); + QUEST_NAME = "Doric's Quest"; + player.getPacketSender().sendFrame126("@gre@" + QUEST_NAME + "", 7336); + player.getItemAssistant().addItem(995, 180); + player.getPlayerAssistant().addSkillXP(1300, player.playerMining); + player.questPoints++; + player.doricQuest = 3; + } + + public static void impFinish(Player player) { + questReward(player, "Imp Catcher", "1 Quest Point", "875 Magic XP", "Amulet of Accuracy", "", "", "", 1478); + QUEST_NAME = "Imp Catcher"; + player.getPacketSender().sendFrame126("@gre@" + QUEST_NAME + "", 7340); + player.getItemAssistant().addItem(1478, 1); + player.getPlayerAssistant().addSkillXP(875, player.playerMagic); + player.questPoints++; + player.impsC = 2; + } + + public static void cookReward(Player player) { + questReward(player, "Cook's Assistant", "1 Quest Point", "500 Coins", "300 Cooking XP", "", "", "", 326); + QUEST_NAME = "Cook's Assistant"; + player.getPacketSender().sendFrame126("@gre@" + QUEST_NAME + "", 7333); + player.getItemAssistant().addItem(995, 500); + player.getPlayerAssistant().addSkillXP(300, player.playerCooking); + player.questPoints++; + player.cookAss = 3; + } + + public static void blackKnightReward(Player player) { + questReward(player, "Black Knights' Fortress", "3 Quest Points", "2,500 Coins", "", "", "", "", 0); + QUEST_NAME = "Black Knights' Fortress"; + player.getPacketSender().sendFrame126("@gre@" + QUEST_NAME + "", 7332); + player.getItemAssistant().addItem(995, 2500); + player.questPoints += 3; + player.blackKnight = 3; + } + + public static void shieldArravReward(Player player) { + questReward(player, "Shield of Arrav", "1 Quest Point", "1,200 Coins", "", "", "", "", 767); + QUEST_NAME = "Shield of Arrav"; + player.getPacketSender().sendFrame126("@gre@" + QUEST_NAME + "", 7345); + player.getItemAssistant().addItem(995, 1200); + player.questPoints++; + player.shieldArrav = 8; + } +} diff --git a/2006Redone Server/src/com/rebotted/game/content/quests/impl/BlackKnightsFortress.java b/2006Redone Server/src/com/rebotted/game/content/quests/impl/BlackKnightsFortress.java new file mode 100644 index 00000000..cfca7e34 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/quests/impl/BlackKnightsFortress.java @@ -0,0 +1,44 @@ +package com.rebotted.game.content.quests.impl; + +import com.rebotted.game.players.Player; + +public class BlackKnightsFortress { + + public static void showInformation(Player client) { + for (int i = 8144; i < 8195; i++) { + client.getPacketSender().sendFrame126("", i); + } + client.getPacketSender().sendFrame126("Black Knights' Fortress", 8144); + if (client.blackKnight == 0) { + client.getPacketSender().sendFrame126("I can start this quest by speaking to Sir Amik Varze in", 8147); + client.getPacketSender().sendFrame126("Falador Castle.", 8148); + client.getPacketSender().sendFrame126("", 8149); + client.getPacketSender().sendFrame126("QUEST REQUIREMENTS:", 8150); + client.getPacketSender().sendFrame126("12 Quest Points", 8151); + } else if (client.blackKnight == 1) { + client.getPacketSender().sendFrame126("@str@I've Talked with Sir Amik Varze", 8147); + client.getPacketSender().sendFrame126("He wants me to kill 30 Black Knights and", 8148); + client.getPacketSender().sendFrame126("collect their notes.", 8149); + client.getPacketSender().sendFrame126("", 8150); + client.getPacketSender().sendFrame126("@red@30 Black Knight notes", 8151); + + } else if (client.blackKnight == 2) { + client.getPacketSender().sendFrame126("@str@I talked to Sir Amik Varze.", 8147); + client.getPacketSender().sendFrame126("@str@I've killed 30 Black Knights", 8148); + client.getPacketSender().sendFrame126("@str@and given Sir Amik Varze his items.", 8149); + client.getPacketSender().sendFrame126("I should go speak to Sir Amik Varze.", 8150); + } else if (client.blackKnight == 3) { + client.getPacketSender().sendFrame126("@str@I talked to Sir Amik Varze.", 8147); + client.getPacketSender().sendFrame126("@str@I've killed 30 Black Knights", 8148); + client.getPacketSender().sendFrame126("@str@and given Sir Amik Varze his items.", 8149); + client.getPacketSender().sendFrame126("", 8150); + client.getPacketSender().sendFrame126("@red@QUEST COMPLETE", 8151); + client.getPacketSender().sendFrame126("", 8152); + client.getPacketSender().sendFrame126("REWARDS:", 8153); + client.getPacketSender().sendFrame126("2,500 coins", 8154); + client.getPacketSender().sendFrame126("3 Quest Points", 8155); + } + client.getPacketSender().showInterface(8134); + } + +} diff --git a/2006Redone Server/src/com/rebotted/game/content/quests/impl/CooksAssistant.java b/2006Redone Server/src/com/rebotted/game/content/quests/impl/CooksAssistant.java new file mode 100644 index 00000000..b476cbb3 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/quests/impl/CooksAssistant.java @@ -0,0 +1,62 @@ +package com.rebotted.game.content.quests.impl; + +import com.rebotted.game.players.Player; + +/** + * @author Andrew (Mr Extremez) + * Cooks Assistant + */ + +public class CooksAssistant { + + private static final int EGG = 1944; + private static final int MILK = 1927; + private static final int FLOUR = 1933; + + public static void showInformation(Player client) { + for (int i = 8144; i < 8195; i++) { + client.getPacketSender().sendFrame126("", i); + } + client.getPacketSender().sendFrame126("@dre@Cook's Assistant", 8144); + client.getPacketSender().sendFrame126("", 8145); + if (client.cookAss == 0) { + client.getPacketSender().sendFrame126("Cook's Assistant", 8144); + client.getPacketSender().sendFrame126("I can start this quest by speaking to the Cook in the", 8147); + client.getPacketSender().sendFrame126("Lumbridge Castle kitchen.", 8148); + client.getPacketSender().sendFrame126("", 8149); + client.getPacketSender().sendFrame126("There are no minimum requirements.", 8150); + } else if (client.cookAss == 1) { + client.getPacketSender().sendFrame126("Cook's Assistant", 8144); + client.getPacketSender().sendFrame126("@str@I've talked to the cook.", 8147); + client.getPacketSender().sendFrame126("He wants me to gather the following materials:", 8148); + if (client.getItemAssistant().playerHasItem(EGG, 1)) { + client.getPacketSender().sendFrame126("@str@1 egg", 8149); + } else { + client.getPacketSender().sendFrame126("@red@1 egg", 8149); + } + if (client.getItemAssistant().playerHasItem(MILK, 1)) { + client.getPacketSender().sendFrame126("@str@1 bucket of milk", 8150); + } else { + client.getPacketSender().sendFrame126("@red@1 bucket of milk", 8150); + } + if (client.getItemAssistant().playerHasItem(FLOUR, 1)) { + client.getPacketSender().sendFrame126("@str@1 heap of flour", 8151); + } else { + client.getPacketSender().sendFrame126("@red@1 pot of flour", 8151); + } + } else if (client.cookAss == 2) { + client.getPacketSender().sendFrame126("Cook's Assistant", 8144); + client.getPacketSender().sendFrame126("@str@I talked to the cook.", 8147); + client.getPacketSender().sendFrame126("@str@I gave the cook his items.", 8148); + client.getPacketSender().sendFrame126("I should go speak to the cook.", 8149); + } else if (client.cookAss == 3) { + client.getPacketSender().sendFrame126("Cook's Assistant", 8144); + client.getPacketSender().sendFrame126("@str@I talked to the cook.", 8147); + client.getPacketSender().sendFrame126("@str@I gave him his items.", 8148); + client.getPacketSender().sendFrame126("@red@ QUEST COMPLETE", 8150); + client.getPacketSender().sendFrame126("As a reward, I gained 150 Cooking Experience.", 8151); + } + client.getPacketSender().showInterface(8134); + } + +} diff --git a/2006Redone Server/src/com/rebotted/game/content/quests/impl/DoricsQuest.java b/2006Redone Server/src/com/rebotted/game/content/quests/impl/DoricsQuest.java new file mode 100644 index 00000000..5bd7514c --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/quests/impl/DoricsQuest.java @@ -0,0 +1,72 @@ +package com.rebotted.game.content.quests.impl; + +import com.rebotted.game.players.Player; + +/** + * Doric's Quest + * @author Andrew (Mr Extremez) + */ + +public class DoricsQuest { + + public static void showInformation(Player client) { + for (int i = 8144; i < 8195; i++) { + client.getPacketSender().sendFrame126("", i); + } + client.getPacketSender().sendFrame126("@dre@Dorics Quest", 8144); + client.getPacketSender().sendFrame126("", 8145); + if (client.doricQuest == 0) { + client.getPacketSender().sendFrame126("Dorics Quest", 8144); + client.getPacketSender().sendFrame126( + "I can start this quest by speaking to doric", 8147); + client.getPacketSender().sendFrame126("Northwest of falador.", + 8148); + client.getPacketSender().sendFrame126("", 8149); + client.getPacketSender().sendFrame126( + "Recommended Levels: 15 Mining", 8150); + } else if (client.doricQuest == 1) { + client.getPacketSender().sendFrame126("Dorics Quest", 8144); + client.getPacketSender().sendFrame126( + "@str@I've talked to the doric.", 8147); + client.getPacketSender().sendFrame126( + "He wants me to gather the following materials:", 8148); + if (client.getItemAssistant().playerHasItem(434, 6)) { + client.getPacketSender().sendFrame126("@str@6 Clay", 8149); + } else { + client.getPacketSender().sendFrame126("@red@6 Clay", 8149); + } + if (client.getItemAssistant().playerHasItem(436, 4)) { + client.getPacketSender().sendFrame126("@str@4 Copper", 8150); + } else { + client.getPacketSender().sendFrame126("@red@4 Copper", 8150); + } + if (client.getItemAssistant().playerHasItem(440, 2)) { + client.getPacketSender().sendFrame126("@str@2 Iron ore", 8151); + } else { + client.getPacketSender().sendFrame126("@red@2 Iron ore", 8151); + } + } else if (client.doricQuest == 2) { + client.getPacketSender().sendFrame126("Dorics Quest", 8144); + client.getPacketSender().sendFrame126( + "@str@I talked to the doric.", 8147); + client.getPacketSender().sendFrame126( + "@str@I gave the doric his items.", 8148); + client.getPacketSender().sendFrame126( + "I should go speak to the doric.", 8149); + } else if (client.doricQuest == 3) { + client.getPacketSender().sendFrame126("Dorics Quest", 8144); + client.getPacketSender().sendFrame126( + "@str@I talked to the doric.", 8147); + client.getPacketSender().sendFrame126( + "@str@I gave him his items.", 8148); + client.getPacketSender().sendFrame126("@red@ QUEST COMPLETE", + 8150); + client.getPacketSender().sendFrame126( + "As a reward, I gained 26000 Mining Exp", 8151); + client.getPacketSender().sendFrame126("180 Coins", 8152); + client.getPacketSender().sendFrame126("And 1 Quest Point.", 8152); + } + client.getPacketSender().showInterface(8134); + } + +} diff --git a/2006Redone Server/src/com/rebotted/game/content/quests/impl/GertrudesCat.java b/2006Redone Server/src/com/rebotted/game/content/quests/impl/GertrudesCat.java new file mode 100644 index 00000000..6f723d13 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/quests/impl/GertrudesCat.java @@ -0,0 +1,92 @@ +package com.rebotted.game.content.quests.impl; + +import com.rebotted.game.players.Player; + +/** + * Gertrudes Cat + * @author Andrew (Mr Extremez) + */ + +public class GertrudesCat { + + public static void showInformation(Player client) { + for (int i = 8144; i < 8195; i++) { + client.getPacketSender().sendFrame126("", i); + } + client.getPacketSender().sendFrame126("@dre@Gertrudes Cat", 8144); + client.getPacketSender().sendFrame126("", 8145); + if (client.gertCat == 0) { + client.getPacketSender().sendFrame126("Gertrudes Cat", 8144); + client.getPacketSender().sendFrame126( + "I can start this quest by speaking to Gertrude in", 8147); + client.getPacketSender().sendFrame126("Varrock.", 8148); + client.getPacketSender().sendFrame126("Minimum Requirments:", 8149); + client.getPacketSender().sendFrame126("5 Fishing.", 8150); + } else if (client.gertCat == 1) { + client.getPacketSender().sendFrame126("Gertrudes Cat", 8144); + client.getPacketSender().sendFrame126( + "@str@I've talked to Gertrude", 8147); + client.getPacketSender().sendFrame126( + "I should speak to Wilough and Shilop.", 8148); + client.getPacketSender().sendFrame126("They are in the varrock square.", 8149); + } else if (client.gertCat == 2) { + client.getPacketSender().sendFrame126("Gertrudes Cat", 8144); + client.getPacketSender().sendFrame126( + "@str@I've talked to Wilough and Shilop", 8147); + client.getPacketSender().sendFrame126("@str@I gave them 100 coins", + 8148); + client.getPacketSender().sendFrame126( + "I should try to find Gertrudes Cat.", 8149); + } else if (client.gertCat == 3) { + client.getPacketSender().sendFrame126("Gertrudes Cat", 8144); + client.getPacketSender().sendFrame126( + "@str@I've talked to the Gertrudes Cat", 8147); + client.getPacketSender().sendFrame126( + "@str@She seemed mad so I gave her", 8148); + client.getPacketSender().sendFrame126("@str@a bucket of milk", + 8149); + client.getPacketSender().sendFrame126("The cat still seems mad you should give her some,", 8150); + client.getPacketSender().sendFrame126("seasoned salmon.", 8151); + } else if (client.gertCat == 4) { + client.getPacketSender().sendFrame126("Gertrudes Cat", 8144); + client.getPacketSender().sendFrame126("@str@The cat is still mad", + 8147); + client.getPacketSender().sendFrame126("@str@So i gave her some", + 8148); + client.getPacketSender().sendFrame126("@str@seasoned samon.", 8149); + client.getPacketSender().sendFrame126("I should talk to Gertrudes cat to see how she feels.", 8150); + } else if (client.gertCat == 5) { + client.getPacketSender().sendFrame126("Gertrudes Cat", 8144); + client.getPacketSender().sendFrame126( + "@str@The cat seems to be mad", 8147); + client.getPacketSender().sendFrame126( + "@str@because she can't find her kittens.", 8148); + client.getPacketSender().sendFrame126("I should go in the lumberyard and", 8149); + client.getPacketSender().sendFrame126("check it out.", 8150); + } else if (client.gertCat == 6) { + client.getPacketSender().sendFrame126("Gertrudes Cat", 8144); + client.getPacketSender().sendFrame126("@str@I gave gertrudes cat", + 8147); + client.getPacketSender().sendFrame126("@str@her kittens", 8148); + client.getPacketSender().sendFrame126( + "@str@and she now seems happy.", 8149); + client.getPacketSender().sendFrame126("I should head back to Gertrude.", 8150); + } else if (client.gertCat == 7) { + client.getPacketSender().sendFrame126("Gertrudes Cat", 8144); + client.getPacketSender().sendFrame126( + "@str@I helped gertrude with her", 8147); + client.getPacketSender().sendFrame126( + "@str@Cat so she awarded me.", 8148); + client.getPacketSender().sendFrame126("@red@ QUEST COMPLETE", + 8149); + client.getPacketSender().sendFrame126( + "As a reward, I gained 1525 Cooking exp.", 8150); + client.getPacketSender().sendFrame126( + "A kitten! And the ability to raise cats.", 8150); + client.getPacketSender().sendFrame126("And 1 Quest Point", 8151); + client.getPacketSender().sendFrame126("", 8152); + } + client.getPacketSender().showInterface(8134); + } + +} diff --git a/2006Redone Server/src/com/rebotted/game/content/quests/impl/ImpCatcher.java b/2006Redone Server/src/com/rebotted/game/content/quests/impl/ImpCatcher.java new file mode 100644 index 00000000..a70c5d9c --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/quests/impl/ImpCatcher.java @@ -0,0 +1,46 @@ +package com.rebotted.game.content.quests.impl; + +import com.rebotted.game.players.Player; + +/** + * Imp Catcher + * @author Andrew (Mr Extremez) + */ + +public class ImpCatcher { + + + public static void showInformation(Player client) { + for (int i = 8144; i < 8295; i++) { + client.getPacketSender().sendFrame126("", i); + } + client.getPacketSender().sendFrame126("@dre@Imp Catcher", 8144); + client.getPacketSender().sendFrame126("", 8145); + if (client.impsC == 0) { + client.getPacketSender().sendFrame126( "I can start this quest by speaking to Wizard Mizgog who is", 8147); + client.getPacketSender().sendFrame126("in the Wizard's Tower.", 8148); + } else if (client.impsC == 1) { + client.getPacketSender().sendFrame126("@str@I can start this quest by speaking to Wizard Mizgog who is", 8147); + client.getPacketSender().sendFrame126("@str@in the Wizard's Tower.", 8148); + client.getPacketSender().sendFrame126("", 8149); + client.getPacketSender().sendFrame126("Wizard Mizgog have asked you to get the following items:", 8150); + client.getPacketSender().sendFrame126("Red bead", 8151); + client.getPacketSender().sendFrame126("Yellow bead", 8152); + client.getPacketSender().sendFrame126("Black bead", 8153); + client.getPacketSender().sendFrame126("White bead", 8154); + } else if (client.impsC == 2) { + client.getPacketSender().sendFrame126("@str@I can start this quest by speaking to Wizard Mizgog who is", 8147); + client.getPacketSender().sendFrame126("@str@in the Wizard's Tower.", 8148); + client.getPacketSender().sendFrame126("", 8149); + client.getPacketSender().sendFrame126("@str@Wizard Mizgog have asked you to get the following items:", 8150); + client.getPacketSender().sendFrame126("@str@Red bead", 8151); + client.getPacketSender().sendFrame126("@str@Yellow bead", 8152); + client.getPacketSender().sendFrame126("@str@Black bead", 8153); + client.getPacketSender().sendFrame126("@str@White bead", 8154); + client.getPacketSender().sendFrame126("", 8155); + client.getPacketSender().sendFrame126("You have completed this quest!", 8156); + } + client.getPacketSender().showInterface(8134); + } + +} diff --git a/2006Redone Server/src/com/rebotted/game/content/quests/impl/KnightsSword.java b/2006Redone Server/src/com/rebotted/game/content/quests/impl/KnightsSword.java new file mode 100644 index 00000000..5e2ddf31 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/quests/impl/KnightsSword.java @@ -0,0 +1,193 @@ +package com.rebotted.game.content.quests.impl; + +import com.rebotted.game.players.Player; + +public class KnightsSword { + + public static void showInformation(Player player) { + for(int i = 8144; i < 8195; i++) { + player.getPacketSender().sendFrame126("", i); + } + player.getPacketSender().sendFrame126("@dre@The Knight's Sword", 8144); + player.getPacketSender().sendFrame126("", 8145); + if(player.knightS == 0) { + player.getPacketSender().sendFrame126("I can start this quest by speaking to the squire", 8147); + player.getPacketSender().sendFrame126("who is in the courtyard of the White Knight's castle", 8148); + player.getPacketSender().sendFrame126("", 8149); + player.getPacketSender().sendFrame126("I will need at least 10 mining to complete this quest", 8150); + } else if(player.knightS == 1) { + player.getPacketSender().sendFrame126("The squire has lost Sir Vyvin's sword and asked me", 8147); + player.getPacketSender().sendFrame126("to find a replacement. He suggested that I start", 8148); + player.getPacketSender().sendFrame126("by speaking to Reldo, the librarian in the Varrock Castle", 8149); + } else if (player.knightS == 2) { + player.getPacketSender().sendFrame126("@str@The squire has lost Sir Vyvin's sword and asked me", 8147); + player.getPacketSender().sendFrame126("@str@to find a replacement. He suggested that I start", 8148); + player.getPacketSender().sendFrame126("@str@by speaking to Reldo, the librarian in the Varrock Castle", 8149); + player.getPacketSender().sendFrame126("", 8150); + player.getPacketSender().sendFrame126("Reldo told me there may be an Imcando dwarf living near the", 8151); + player.getPacketSender().sendFrame126("Asgarnian peninsula. He said I should bring him some", 8152); + player.getPacketSender().sendFrame126("Red Berry Pie to get him to be willing to talk to me", 8153); + } else if(player.knightS == 3) { + player.getPacketSender().sendFrame126("@str@The squire has lost Sir Vyvin's sword and asked me", 8147); + player.getPacketSender().sendFrame126("@str@to find a replacement. He suggested that I start", 8148); + player.getPacketSender().sendFrame126("@str@by speaking to Reldo, the librarian in the Varrock Castle", 8149); + player.getPacketSender().sendFrame126("", 8150); + player.getPacketSender().sendFrame126("@str@Reldo told me there may be an Imcando dwarf living near the", 8151); + player.getPacketSender().sendFrame126("@str@Asgarnian peninsula. He said I should bring him some", 8152); + player.getPacketSender().sendFrame126("@str@Red Berry Pie to get him to be willing to talk to me", 8153); + player.getPacketSender().sendFrame126("", 8154); + player.getPacketSender().sendFrame126("I found the Imcando dwarf named Thurgo and gave him some", 8155); + player.getPacketSender().sendFrame126("Red berry pie. Now that he likes me I should talk to him", 8156); + player.getPacketSender().sendFrame126("and find out if he'll make the sword for me.", 8157); + } else if(player.knightS == 4) { + player.getPacketSender().sendFrame126("@str@The squire has lost Sir Vyvin's sword and asked me", 8147); + player.getPacketSender().sendFrame126("@str@to find a replacement. He suggested that I start", 8148); + player.getPacketSender().sendFrame126("@str@by speaking to Reldo, the librarian in the Varrock Castle", 8149); + player.getPacketSender().sendFrame126("", 8150); + player.getPacketSender().sendFrame126("@str@Reldo told me there may be an Imcando dwarf living near the", 8151); + player.getPacketSender().sendFrame126("@str@Asgarnian peninsula. He said I should bring him some", 8152); + player.getPacketSender().sendFrame126("@str@Red Berry Pie to get him to be willing to talk to me", 8153); + player.getPacketSender().sendFrame126("", 8154); + player.getPacketSender().sendFrame126("@str@I found the Imcando dwarf named Thurgo and gave him some", 8155); + player.getPacketSender().sendFrame126("@str@Red berry pie. Now that he likes me I should talk to him", 8156); + player.getPacketSender().sendFrame126("@str@and find out if he'll make the sword for me.", 8157); + player.getPacketSender().sendFrame126("", 8158); + player.getPacketSender().sendFrame126("Thurgo says he needs a picture of the sword.", 8159); + player.getPacketSender().sendFrame126("Maybe the squire will have one?", 8160); + player.getPacketSender().sendFrame126("", 8161); + } else if(player.knightS == 5) { + player.getPacketSender().sendFrame126("@str@The squire has lost Sir Vyvin's sword and asked me", 8147); + player.getPacketSender().sendFrame126("@str@to find a replacement. He suggested that I start", 8148); + player.getPacketSender().sendFrame126("@str@by speaking to Reldo, the librarian in the Varrock Castle", 8149); + player.getPacketSender().sendFrame126("", 8150); + player.getPacketSender().sendFrame126("@str@Reldo told me there may be an Imcando dwarf living near the", 8151); + player.getPacketSender().sendFrame126("@str@Asgarnian peninsula. He said I should bring him some", 8152); + player.getPacketSender().sendFrame126("@str@Red Berry Pie to get him to be willing to talk to me.", 8153); + player.getPacketSender().sendFrame126("", 8154); + player.getPacketSender().sendFrame126("@str@I found the Imcando dwarf named Thurgo and gave him some", 8155); + player.getPacketSender().sendFrame126("@str@Red berry pie. Now that he likes me I should talk to him", 8156); + player.getPacketSender().sendFrame126("@str@and find out if he'll make the sword for me.", 8157); + player.getPacketSender().sendFrame126("", 8158); + player.getPacketSender().sendFrame126("Thurgo says he needs a picture of the sword.", 8159); + player.getPacketSender().sendFrame126("@str@Maybe the squire will have one?", 8160); + player.getPacketSender().sendFrame126("", 8161); + player.getPacketSender().sendFrame126("The squire thinks Sir Vyvin keeps a picture of the sword in", 8162); + player.getPacketSender().sendFrame126("a cupboard in his room, but I must be very careful not to", 8163); + player.getPacketSender().sendFrame126("get caught.", 8164); + player.getPacketSender().sendFrame126("", 8165); + player.getPacketSender().sendFrame126("", 8166); + player.getPacketSender().sendFrame126("", 8167); + player.getPacketSender().sendFrame126("", 8168); + player.getPacketSender().sendFrame126("", 8169); + } else if(player.knightS == 6) { + player.getPacketSender().sendFrame126("@str@The squire has lost Sir Vyvin's sword and asked me", 8147); + player.getPacketSender().sendFrame126("@str@to find a replacement. He suggested that I start", 8148); + player.getPacketSender().sendFrame126("@str@by speaking to Reldo, the librarian in the Varrock Castle", 8149); + player.getPacketSender().sendFrame126("", 8150); + player.getPacketSender().sendFrame126("@str@Reldo told me there may be an Imcando dwarf living near the", 8151); + player.getPacketSender().sendFrame126("@str@Asgarnian peninsula. He said I should bring him some", 8152); + player.getPacketSender().sendFrame126("@str@Red Berry Pie to get him to be willing to talk to me.", 8153); + player.getPacketSender().sendFrame126("", 8154); + player.getPacketSender().sendFrame126("@str@I found the Imcando dwarf named Thurgo and gave him some", 8155); + player.getPacketSender().sendFrame126("@str@Red berry pie. Now that he likes me I should talk to him", 8156); + player.getPacketSender().sendFrame126("@str@and find out if he'll make the sword for me.", 8157); + player.getPacketSender().sendFrame126("", 8158); + player.getPacketSender().sendFrame126("Thurgo says he needs a picture of the sword.", 8159); + player.getPacketSender().sendFrame126("@str@Maybe the squire will have one?", 8160); + player.getPacketSender().sendFrame126("", 8161); + player.getPacketSender().sendFrame126("@str@The squire thinks Sir Vyvin keeps a picture of the sword in", 8162); + player.getPacketSender().sendFrame126("@str@a cupboard in his room, but I must be very careful not to", 8163); + player.getPacketSender().sendFrame126("@str@get caught.", 8164); + player.getPacketSender().sendFrame126("I should bring the picture to Thurgo", 8165); + player.getPacketSender().sendFrame126("", 8166); + player.getPacketSender().sendFrame126("", 8167); + player.getPacketSender().sendFrame126("", 8168); + player.getPacketSender().sendFrame126("", 8169); + } else if(player.knightS == 7) { + player.getPacketSender().sendFrame126("The squire has lost Sir Vyvin's sword and asked me", 8147); + player.getPacketSender().sendFrame126("to find a replacement.@str@ He suggested that I start", 8148); + player.getPacketSender().sendFrame126("@str@by speaking to Reldo, the librarian in the Varrock Castle", 8149); + player.getPacketSender().sendFrame126("", 8150); + player.getPacketSender().sendFrame126("@str@Reldo told me there may be an Imcando dwarf living near the", 8151); + player.getPacketSender().sendFrame126("@str@Asgarnian peninsula. He said I should bring him some", 8152); + player.getPacketSender().sendFrame126("@str@Red Berry Pie to get him to be willing to talk to me.", 8153); + player.getPacketSender().sendFrame126("", 8154); + player.getPacketSender().sendFrame126("@str@I found the Imcando dwarf named Thurgo and gave him some", 8155); + player.getPacketSender().sendFrame126("@str@Red berry Pie. Now that he likes me I should talk to him", 8156); + player.getPacketSender().sendFrame126("@str@and find out if he'll make the sword for me.", 8157); + player.getPacketSender().sendFrame126("", 8158); + player.getPacketSender().sendFrame126("@str@Thurgo says he needs a picture of the sword.", 8159); + player.getPacketSender().sendFrame126("@str@Maybe the squire will have one?", 8160); + player.getPacketSender().sendFrame126("", 8161); + player.getPacketSender().sendFrame126("@str@The squire thinks Sir Vyvin keeps a picture of the sword in", 8162); + player.getPacketSender().sendFrame126("@str@cupboard in his room, but I must be very careful not to", 8163); + player.getPacketSender().sendFrame126("@str@get caught.", 8164); + player.getPacketSender().sendFrame126("@str@I should bring the picture to Thurgo", 8165); + player.getPacketSender().sendFrame126("", 8166); + player.getPacketSender().sendFrame126("Thurgo has asked me to bring him 2 iron bars and 1 blurite", 8167); + player.getPacketSender().sendFrame126("ore for him to make the sword with. He says blurite can be", 8168); + player.getPacketSender().sendFrame126("mined in the cave by his home, but it is guarded by", 8169); + player.getPacketSender().sendFrame126("dangerous monsters. So I should be very careful.", 8170); + } else if(player.knightS == 8) { + player.getPacketSender().sendFrame126("The squire has lost Sir Vyvin's sword and asked me", 8147); + player.getPacketSender().sendFrame126("to find a replacement.@str@ He suggested that I start", 8148); + player.getPacketSender().sendFrame126("@str@by speaking to Reldo, the librarian in the Varrock Castle", 8149); + player.getPacketSender().sendFrame126("", 8150); + player.getPacketSender().sendFrame126("@str@Reldo told me there may be an Imcando dwarf living near the", 8151); + player.getPacketSender().sendFrame126("@str@Asgarnian peninsula. He said I should bring him some", 8152); + player.getPacketSender().sendFrame126("@str@Red Berry Pie to get him to be willing to talk to me.", 8153); + player.getPacketSender().sendFrame126("", 8154); + player.getPacketSender().sendFrame126("@str@I found the Imcando dwarf named Thurgo and gave him some", 8155); + player.getPacketSender().sendFrame126("@str@Red berry pie. Now that he likes me I should talk to him", 8156); + player.getPacketSender().sendFrame126("@str@and find out if he'll make the sword for me.", 8157); + player.getPacketSender().sendFrame126("", 8158); + player.getPacketSender().sendFrame126("@str@Thurgo says he needs a picture of the sword.", 8159); + player.getPacketSender().sendFrame126("@str@Maybe the squire will have one?", 8160); + player.getPacketSender().sendFrame126("", 8161); + player.getPacketSender().sendFrame126("@str@The squire thinks Sir Vyvin keeps a picture of the sword in", 8162); + player.getPacketSender().sendFrame126("@str@cupboard in his room, but I must be very careful not to", 8163); + player.getPacketSender().sendFrame126("@str@get caught.", 8164); + player.getPacketSender().sendFrame126("@str@I should bring the picture to Thurgo", 8165); + player.getPacketSender().sendFrame126("", 8166); + player.getPacketSender().sendFrame126("@str@Thurgo has asked me to bring him 2 iron bars and 1 blurite", 8167); + player.getPacketSender().sendFrame126("@str@ore for him to make the sword with. He says blurite can be", 8168); + player.getPacketSender().sendFrame126("@str@mined in the cave by his home, but it is guarded by", 8169); + player.getPacketSender().sendFrame126("@str@dangerous monsters. So I should be very careful.", 8170); + player.getPacketSender().sendFrame126("", 8171); + player.getPacketSender().sendFrame126("Thurgo made me the sword, I should bring it back to the", 8172); + player.getPacketSender().sendFrame126("knight to get my reward!", 8173); + player.getPacketSender().sendFrame126("", 8174); + } else if(player.knightS == 9) { + player.getPacketSender().sendFrame126("@str@The squire has lost Sir Vyvin's sword and asked me", 8147); + player.getPacketSender().sendFrame126("@str@to find a replacement. He suggested that I start", 8148); + player.getPacketSender().sendFrame126("@str@by speaking to Reldo, the librarian in the Varrock Castle", 8149); + player.getPacketSender().sendFrame126("", 8150); + player.getPacketSender().sendFrame126("@str@Reldo told me there may be an Imcando dwarf living near the", 8151); + player.getPacketSender().sendFrame126("@str@Asgarnian peninsula. He said I should bring him some", 8152); + player.getPacketSender().sendFrame126("@str@Red Berry Pie to get him to be willing to talk to me.", 8153); + player.getPacketSender().sendFrame126("", 8154); + player.getPacketSender().sendFrame126("@str@I found the Imcando dwarf named Thurgo and gave him some", 8155); + player.getPacketSender().sendFrame126("@str@Red berry pie. Now that he likes me I should talk to him", 8156); + player.getPacketSender().sendFrame126("@str@and find out if he'll make the sword for me.", 8157); + player.getPacketSender().sendFrame126("", 8158); + player.getPacketSender().sendFrame126("@str@Thurgo says he needs a picture of the sword.", 8159); + player.getPacketSender().sendFrame126("@str@Maybe the squire will have one?", 8160); + player.getPacketSender().sendFrame126("", 8161); + player.getPacketSender().sendFrame126("@str@The squire thinks Sir Vyvin keeps a picture of the sword in", 8162); + player.getPacketSender().sendFrame126("@str@a cupboard in his room, but I must be very careful not to", 8163); + player.getPacketSender().sendFrame126("@str@get caught.", 8164); + player.getPacketSender().sendFrame126("@str@I should bring the picture to Thurgo", 8165); + player.getPacketSender().sendFrame126("", 8166); + player.getPacketSender().sendFrame126("@str@Thurgo has asked me to bring him 2 iron bars and 1 blurite", 8167); + player.getPacketSender().sendFrame126("@str@ore for him to make the sword with. He says blurite can be", 8168); + player.getPacketSender().sendFrame126("@str@mined in the cave by his home, but it is guarded by", 8169); + player.getPacketSender().sendFrame126("@str@dangerous monsters. So I should be very careful.", 8170); + player.getPacketSender().sendFrame126("@str@Thurgo made me the sword, I should bring it back to the", 8172); + player.getPacketSender().sendFrame126("@str@knight to get my reward!", 8173); + player.getPacketSender().sendFrame126("", 8173); + player.getPacketSender().sendFrame126("@red@Quest Complete!", 8174); + } + player.getPacketSender().showInterface(8134); + } + +} diff --git a/2006Redone Server/src/com/rebotted/game/content/quests/impl/PiratesTreasure.java b/2006Redone Server/src/com/rebotted/game/content/quests/impl/PiratesTreasure.java new file mode 100644 index 00000000..d15b70e1 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/quests/impl/PiratesTreasure.java @@ -0,0 +1,100 @@ +package com.rebotted.game.content.quests.impl; + +import com.rebotted.game.players.Player; + +/** + * Pirates Treasure + * @author Andrew (Mr Extremez) + */ + +public class PiratesTreasure { + + + public static void showInformation(Player client) { + for (int i = 8144; i < 8195; i++) { + client.getPacketSender().sendFrame126("", i); + } + client.getPacketSender().sendFrame126("@dre@Pirate's Treasure", 8144); + client.getPacketSender().sendFrame126("", 8145); + if (client.pirateTreasure == 0) { + client.getPacketSender().sendFrame126("Pirate's Treasure", 8144); + client.getPacketSender().sendFrame126( + "I can start this quest by speaking to Redbeard Frank in", + 8147); + client.getPacketSender().sendFrame126("Port Sarim", 8148); + client.getPacketSender().sendFrame126("", 8149); + client.getPacketSender().sendFrame126( + "There are no minimum requirments.", 8150); + } else if (client.pirateTreasure == 1) { + client.getPacketSender().sendFrame126("Pirate's Treasure", 8144); + client.getPacketSender().sendFrame126( + "@str@I've talked to Redbeard.", 8147); + client.getPacketSender().sendFrame126( + "He wants me to get him some rum", 8148); + } else if (client.pirateTreasure == 2) { + client.getPacketSender().sendFrame126("Pirate's Treasure", 8144); + client.getPacketSender().sendFrame126( + "@str@I talked to Redbeard.", 8147); + client.getPacketSender().sendFrame126( + "@str@I found a way to get the rum", 8148); + client.getPacketSender().sendFrame126( + "I should get the rum and return to Redbeard.", 8149); + } else if (client.pirateTreasure == 3) { + client.getPacketSender().sendFrame126("Pirate's Treasure", 8144); + client.getPacketSender().sendFrame126( + "@str@I talked to Redbeard.", 8147); + client.getPacketSender().sendFrame126( + "@str@I found a way to get the rum", 8148); + client.getPacketSender().sendFrame126("@str@I gave him the rum", + 8149); + client.getPacketSender().sendFrame126( + "He told me I need to look at the chest in", 8149); + client.getPacketSender().sendFrame126("The blue moon inn", 8150); + } else if (client.pirateTreasure == 4) { + client.getPacketSender().sendFrame126("Pirate's Treasure", 8144); + client.getPacketSender().sendFrame126( + "@str@I talked to Redbeard.", 8147); + client.getPacketSender().sendFrame126( + "@str@I found a way to get the rum", 8148); + client.getPacketSender().sendFrame126("@str@I gave him the rum", + 8149); + client.getPacketSender().sendFrame126( + "@str@I looked in the chest", 8149); + client.getPacketSender().sendFrame126( + "I need to go to falador and kill the gardener", 8150); + } else if (client.pirateTreasure == 5) { + client.getPacketSender().sendFrame126( + "@str@I talked to Redbeard.", 8147); + client.getPacketSender().sendFrame126( + "@str@I found a way to get the rum", 8148); + client.getPacketSender().sendFrame126("@str@I gave him the rum", + 8149); + client.getPacketSender().sendFrame126( + "@str@I looked in the chest", 8149); + client.getPacketSender().sendFrame126( + "@str@I went to falador and killed the gardener", 8150); + client.getPacketSender().sendFrame126( + "I should find the casket now", 8151); + } else if (client.pirateTreasure == 6) { + client.getPacketSender().sendFrame126( + "@str@I talked to Redbeard.", 8147); + client.getPacketSender().sendFrame126( + "@str@I found a way to get the rum", 8148); + client.getPacketSender().sendFrame126("@str@I gave him the rum", + 8149); + client.getPacketSender().sendFrame126( + "@str@I looked in the chest", 8149); + client.getPacketSender().sendFrame126( + "@str@I went to falador and killed the gardener", 8150); + client.getPacketSender().sendFrame126("@str@I found the casket ", + 8181); + client.getPacketSender().sendFrame126("@red@QUEST COMPLETE", + 8152); + client.getPacketSender().sendFrame126( + "As a reward, I gained a casket.", 8153); + client.getPacketSender().sendFrame126("2 Quest Points.", 8153); + } + client.getPacketSender().showInterface(8134); + } + +} diff --git a/2006Redone Server/src/com/rebotted/game/content/quests/impl/RestlessGhost.java b/2006Redone Server/src/com/rebotted/game/content/quests/impl/RestlessGhost.java new file mode 100644 index 00000000..6ee82f5c --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/quests/impl/RestlessGhost.java @@ -0,0 +1,70 @@ +package com.rebotted.game.content.quests.impl; + +import com.rebotted.game.players.Player; + +/** + * Restless Ghost + * @author Andrew (Mr Extremez) + */ + +public class RestlessGhost { + + + public static void showInformation(Player client) { + for (int i = 8144; i < 8195; i++) { + client.getPacketSender().sendFrame126("", i); + } + client.getPacketSender().sendFrame126("@dre@Restless Ghost", 8144); + client.getPacketSender().sendFrame126("", 8145); + if (client.restGhost == 0) { + client.getPacketSender().sendFrame126("Restless Ghost", 8144); + client.getPacketSender().sendFrame126("I can start this quest by speaking to Father Aereck in", 8147); + client.getPacketSender().sendFrame126("Lumbridge", 8148); + client.getPacketSender().sendFrame126("Minimum Requirments:", 8149); + client.getPacketSender().sendFrame126("None.", 8150); + } else if (client.restGhost == 1) { + client.getPacketSender().sendFrame126("Restless Ghost", 8144); + client.getPacketSender().sendFrame126( + "@str@I've talked to Father Aereck", 8147); + client.getPacketSender().sendFrame126( + "I should speak to Father Urhey", 8148); + } else if (client.restGhost == 2) { + client.getPacketSender().sendFrame126("Restless Ghost", 8144); + client.getPacketSender().sendFrame126( + "@str@I've talked Father Urhey", 8147); + client.getPacketSender().sendFrame126("@str@He gave me a amulet", + 8148); + client.getPacketSender().sendFrame126( + "I should speak to the ghost", 8149); + } else if (client.restGhost == 3) { + client.getPacketSender().sendFrame126("Restless Ghost", 8144); + client.getPacketSender().sendFrame126( + "@str@I've talked to the Ghost", 8147); + client.getPacketSender().sendFrame126("I should travel to the wizards tower and kill the skeleton", 8148); + client.getPacketSender().sendFrame126( + "I should find the ghosts skull", 8149); + } else if (client.restGhost == 4) { + client.getPacketSender().sendFrame126("Restless Ghost", 8144); + client.getPacketSender().sendFrame126("@str@I've found the skull", + 8147); + client.getPacketSender().sendFrame126( + "@str@I killed the skeleton", 8148); + client.getPacketSender().sendFrame126( + "I should travel back to the ghost", 8149); + } else if (client.restGhost == 5) { + client.getPacketSender().sendFrame126("Restless Ghost", 8144); + client.getPacketSender().sendFrame126( + "@str@I've set the skull in the coffin", 8147); + client.getPacketSender().sendFrame126( + "@str@I've freed the ghost.", 8148); + client.getPacketSender().sendFrame126("@red@ QUEST COMPLETE", + 8150); + client.getPacketSender().sendFrame126( + "As a reward, I gained 125 Prayer Exp.", 8151); + client.getPacketSender().sendFrame126("And 1 Quest Point", 8152); + client.getPacketSender().sendFrame126("", 8152); + } + client.getPacketSender().showInterface(8134); + } + +} diff --git a/2006Redone Server/src/com/rebotted/game/content/quests/impl/RomeoJuliet.java b/2006Redone Server/src/com/rebotted/game/content/quests/impl/RomeoJuliet.java new file mode 100644 index 00000000..a912ea60 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/quests/impl/RomeoJuliet.java @@ -0,0 +1,355 @@ +package com.rebotted.game.content.quests.impl; + +import com.rebotted.game.players.Player; + +/** + * Romeo and Juliet + * @author Andrew (Mr Extremez) + */ + +public class RomeoJuliet { + + public static void showInformation(Player client) { + for (int i = 8144; i < 8195; i++) { + client.getPacketSender().sendFrame126("", i); + } + client.getPacketSender().sendFrame126("@dre@Romeo & Juliet", 8144); + client.getPacketSender().sendFrame126("", 8145); + if (client.romeojuliet == 0) { + client.getPacketSender().sendFrame126( + "To start the quest, you should talk with Romeo", 8147); + client.getPacketSender().sendFrame126("found in Varrock Square.", + 8148); + } else if (client.romeojuliet == 1) { + client.getPacketSender() + .sendFrame126( + "@str@To start the quest, you should talk with Romeo", + 8147); + client.getPacketSender().sendFrame126( + "@str@found in Varrock Square.", 8148); + client.getPacketSender().sendFrame126("", 8149); + client.getPacketSender().sendFrame126( + "Romeo has asked you to speak to Juliet for him", 8150); + client.getPacketSender().sendFrame126( + "and return to him, as she hasn't been responding to any", + 8151); + client.getPacketSender().sendFrame126("his letters lately.", 8152); + } else if (client.romeojuliet == 2) { + client.getPacketSender() + .sendFrame126( + "@str@To start the quest, you should talk with Romeo", + 8147); + client.getPacketSender().sendFrame126( + "@str@found in Varrock Square.", 8148); + client.getPacketSender().sendFrame126("", 8149); + client.getPacketSender() + .sendFrame126( + "@str@Romeo has asked you to speak to Juliet for him", + 8150); + client.getPacketSender() + .sendFrame126( + "@str@and return to him, as she hasn't been responding to any", + 8151); + client.getPacketSender().sendFrame126("@str@his letters lately.", + 8152); + client.getPacketSender().sendFrame126("", 8153); + client.getPacketSender() + .sendFrame126( + "You have spoken to Juliet who's been acting strange", + 8154); + client.getPacketSender().sendFrame126( + "she gave you a message and asked you to leave", 8155); + client.getPacketSender().sendFrame126("Could this be for Romeo?", + 8156); + } else if (client.romeojuliet == 4) { + client.getPacketSender() + .sendFrame126( + "@str@To start the quest, you should talk with Romeo", + 8147); + client.getPacketSender().sendFrame126( + "@str@found in Varrock Square.", 8148); + client.getPacketSender().sendFrame126("", 8149); + client.getPacketSender() + .sendFrame126( + "@str@Romeo has asked you to speak to Juliet for him", + 8150); + client.getPacketSender() + .sendFrame126( + "@str@and return to him, as she hasn't been responding to any", + 8151); + client.getPacketSender().sendFrame126("@str@his letters lately.", + 8152); + client.getPacketSender().sendFrame126("", 8153); + client.getPacketSender().sendFrame126( + "@str@You have spoken to Juliet who's been acting strange", + 8154); + client.getPacketSender().sendFrame126( + "@str@she gave you a message and asked you to leave", 8155); + client.getPacketSender().sendFrame126( + "@str@could this be for Romeo?", 8156); + client.getPacketSender().sendFrame126("", 8157); + client.getPacketSender().sendFrame126( + "You have spoken to Romeo and given him the message", 8158); + client.getPacketSender().sendFrame126( + "You should try to talk to him again", 8159); + } else if (client.romeojuliet == 5) { + client.getPacketSender() + .sendFrame126( + "@str@To start the quest, you should talk with Romeo", + 8147); + client.getPacketSender().sendFrame126( + "@str@found in Varrock Square.", 8148); + client.getPacketSender().sendFrame126("", 8149); + client.getPacketSender() + .sendFrame126( + "@str@Romeo has asked you to speak to Juliet for him", + 8150); + client.getPacketSender() + .sendFrame126( + "@str@and return to him, as she hasn't been responding to any", + 8151); + client.getPacketSender().sendFrame126("@str@his letters lately.", + 8152); + client.getPacketSender().sendFrame126("", 8153); + client.getPacketSender().sendFrame126( + "@str@You have spoken to Juliet who's been acting strange", + 8154); + client.getPacketSender().sendFrame126( + "@str@she gave you a message and asked you to leave", 8155); + client.getPacketSender().sendFrame126( + "@str@could this be for Romeo?", 8156); + client.getPacketSender().sendFrame126( + "@str@You have spoken to Juliet who's been acting strange", + 8154); + client.getPacketSender().sendFrame126( + "@str@she gave you a message and asked you to leave", 8155); + client.getPacketSender().sendFrame126( + "@str@could this be for Romeo?", 8156); + client.getPacketSender().sendFrame126("", 8157); + client.getPacketSender().sendFrame126( + "@str@You have spoken to Romeo and given him the message", + 8158); + client.getPacketSender().sendFrame126( + "@str@You should try to talk to him again", 8159); + client.getPacketSender().sendFrame126( + "Romeo says you should see a witch called Winelda", 8160); + } else if (client.romeojuliet == 6) { + client.getPacketSender() + .sendFrame126( + "@str@To start the quest, you should talk with Romeo", + 8147); + client.getPacketSender().sendFrame126( + "@str@found in Varrock Square.", 8148); + client.getPacketSender().sendFrame126("", 8149); + client.getPacketSender() + .sendFrame126( + "@str@Romeo has asked you to speak to Juliet for him", + 8150); + client.getPacketSender() + .sendFrame126( + "@str@and return to him, as she hasn't been responding to any", + 8151); + client.getPacketSender().sendFrame126("@str@his letters lately.", + 8152); + client.getPacketSender().sendFrame126("", 8153); + client.getPacketSender().sendFrame126( + "@str@You have spoken to Juliet who's been acting strange", + 8154); + client.getPacketSender().sendFrame126( + "@str@she gave you a message and asked you to leave", 8155); + client.getPacketSender().sendFrame126( + "@str@could this be for Romeo?", 8156); + client.getPacketSender().sendFrame126( + "@str@You have spoken to Juliet who's been acting strange", + 8154); + client.getPacketSender().sendFrame126( + "@str@she gave you a message and asked you to leave", 8155); + client.getPacketSender().sendFrame126( + "@str@could this be for Romeo?", 8156); + client.getPacketSender().sendFrame126("", 8157); + client.getPacketSender().sendFrame126( + "@str@You have spoken to Romeo and given him the message", + 8158); + client.getPacketSender().sendFrame126( + "@str@You should try to talk to him again", 8159); + client.getPacketSender().sendFrame126( + "@str@Romeo says you should see a witch called Winelda", + 8160); + client.getPacketSender().sendFrame126("", 8161); + client.getPacketSender().sendFrame126( + "Winelda needs me to bring her 1 rats tail, 1 bone, and 1", + 8162); + client.getPacketSender().sendFrame126("vial of water", 8163); + } else if (client.romeojuliet == 7) { + client.getPacketSender() + .sendFrame126( + "@str@To start the quest, you should talk with Romeo", + 8147); + client.getPacketSender().sendFrame126( + "@str@found in Varrock Square.", 8148); + client.getPacketSender().sendFrame126("", 8149); + client.getPacketSender() + .sendFrame126( + "@str@Romeo has asked you to speak to Juliet for him", + 8150); + client.getPacketSender() + .sendFrame126( + "@str@and return to him, as she hasn't been responding to any", + 8151); + client.getPacketSender().sendFrame126("@str@his letters lately.", + 8152); + client.getPacketSender().sendFrame126("", 8153); + client.getPacketSender().sendFrame126( + "@str@You have spoken to Juliet who's been acting strange", + 8154); + client.getPacketSender().sendFrame126( + "@str@she gave you a message and asked you to leave", 8155); + client.getPacketSender().sendFrame126( + "@str@could this be for Romeo?", 8156); + client.getPacketSender().sendFrame126( + "@str@You have spoken to Juliet who's been acting strange", + 8154); + client.getPacketSender().sendFrame126( + "@str@she gave you a message and asked you to leave", 8155); + client.getPacketSender().sendFrame126( + "@str@could this be for Romeo?", 8156); + client.getPacketSender().sendFrame126("", 8157); + client.getPacketSender().sendFrame126( + "@str@You have spoken to Romeo and given him the message", + 8158); + client.getPacketSender().sendFrame126( + "@str@You should try to talk to him again", 8159); + client.getPacketSender().sendFrame126( + "@str@Romeo says you should see a witch called Winelda", + 8160); + client.getPacketSender().sendFrame126("", 8161); + client.getPacketSender().sendFrame126( + "@str@Winelda needs me to bring her 1 rats tail, 1 bone", + 8162); + client.getPacketSender().sendFrame126("@str@and 1 vial of water", + 8163); + client.getPacketSender().sendFrame126("", 8164); + client.getPacketSender() + .sendFrame126( + "I brought Winelda 1 rats tail, 1 bone, and 1 vail of water", + 8162); + client.getPacketSender().sendFrame126( + "I should go speak to Juliet", 8163); + } else if (client.romeojuliet == 8) { + client.getPacketSender() + .sendFrame126( + "@str@To start the quest, you should talk with Romeo", + 8147); + client.getPacketSender().sendFrame126( + "@str@found in Varrock Square.", 8148); + client.getPacketSender().sendFrame126("", 8149); + client.getPacketSender() + .sendFrame126( + "@str@Romeo has asked you to speak to Juliet for him", + 8150); + client.getPacketSender() + .sendFrame126( + "@str@and return to him, as she hasn't been responding to any", + 8151); + client.getPacketSender().sendFrame126("@str@his letters lately.", + 8152); + client.getPacketSender().sendFrame126("", 8153); + client.getPacketSender().sendFrame126( + "@str@You have spoken to Juliet who's been acting strange", + 8154); + client.getPacketSender().sendFrame126( + "@str@she gave you a message and asked you to leave", 8155); + client.getPacketSender().sendFrame126( + "@str@could this be for Romeo?", 8156); + client.getPacketSender().sendFrame126( + "@str@You have spoken to Juliet who's been acting strange", + 8154); + client.getPacketSender().sendFrame126( + "@str@she gave you a message and asked you to leave", 8155); + client.getPacketSender().sendFrame126( + "@str@could this be for Romeo?", 8156); + client.getPacketSender().sendFrame126("", 8157); + client.getPacketSender().sendFrame126( + "@str@You have spoken to Romeo and given him the message", + 8158); + client.getPacketSender().sendFrame126( + "@str@You should try to talk to him again", 8159); + client.getPacketSender().sendFrame126( + "@str@Romeo says you should see a witch called Winelda", + 8160); + client.getPacketSender().sendFrame126("", 8161); + client.getPacketSender().sendFrame126( + "@str@Winelda needs me to bring her 1 rats tail, 1 bone", + 8162); + client.getPacketSender().sendFrame126("@str@and 1 vial of water", + 8163); + client.getPacketSender().sendFrame126("", 8164); + client.getPacketSender() + .sendFrame126( + "@str@I brought Winelda 1 rats tail, 1 bone, and 1 vail of water", + 8165); + client.getPacketSender().sendFrame126( + "@str@I should go speak to Juliet and give her the potion", + 8166); + client.getPacketSender().sendFrame126("", 8167); + client.getPacketSender().sendFrame126( + "I should speak to juliet and give her the potion", 8168); + client.getPacketSender().sendFrame126( + "I should go speak to Romeo", 8169); + } else if (client.romeojuliet == 9) { + client.getPacketSender() + .sendFrame126( + "@str@To start the quest, you should talk with Romeo", + 8147); + client.getPacketSender().sendFrame126( + "@str@found in Varrock Square.", 8148); + client.getPacketSender().sendFrame126("", 8149); + client.getPacketSender() + .sendFrame126( + "@str@Romeo has asked you to speak to Juliet for him", + 8150); + client.getPacketSender() + .sendFrame126( + "@str@and return to him, as she hasn't been responding to any", + 8151); + client.getPacketSender().sendFrame126("@str@his letters lately.", + 8152); + client.getPacketSender().sendFrame126("", 8153); + client.getPacketSender().sendFrame126( + "@str@You have spoken to Juliet who's been acting strange", + 8154); + client.getPacketSender().sendFrame126( + "@str@she gave you a message and asked you to leave", 8155); + client.getPacketSender().sendFrame126( + "@str@could this be for Romeo?", 8156); + client.getPacketSender().sendFrame126( + "@str@You have spoken to Juliet who's been acting strange", + 8154); + client.getPacketSender().sendFrame126( + "@str@she gave you a message and asked you to leave", 8155); + client.getPacketSender().sendFrame126( + "@str@could this be for Romeo?", 8156); + client.getPacketSender().sendFrame126("", 8157); + client.getPacketSender().sendFrame126( + "@str@You have spoken to Romeo and given him the message", + 8158); + client.getPacketSender().sendFrame126("@str@You should try to talk to him again", 8159); + client.getPacketSender().sendFrame126("@str@Romeo says you should see a witch called Winelda", 8160); + client.getPacketSender().sendFrame126("", 8161); + client.getPacketSender().sendFrame126("@str@Winelda needs me to bring her 1 rats tail, 1 bone", 8162); + client.getPacketSender().sendFrame126("@str@and 1 vial of water",8163); + client.getPacketSender().sendFrame126("", 8164); + client.getPacketSender().sendFrame126("@str@I brought Winelda 1 rats tail, 1 bone, and 1 vail of water",8165); + client.getPacketSender().sendFrame126("@str@I should go speak to Juliet and give her the potion", 8166); + client.getPacketSender().sendFrame126("", 8167); + client.getPacketSender().sendFrame126("@str@I have spoken to Juliet, she drank the potion", 8168); + client.getPacketSender().sendFrame126("@str@I should go speak to Romeo", 8169); + client.getPacketSender().sendFrame126("", 8168); + client.getPacketSender().sendFrame126("I have spoken to Romeo, he's thankful for all of our help", 8169); + client.getPacketSender().sendFrame126("@red@ QUEST COMPLETE", 8170); + client.getPacketSender().sendFrame126("As a reward, I gained 5 quest points.", 8171); + } + client.getPacketSender().showInterface(8134); + } + +} diff --git a/2006Redone Server/src/com/rebotted/game/content/quests/impl/RuneMysteries.java b/2006Redone Server/src/com/rebotted/game/content/quests/impl/RuneMysteries.java new file mode 100644 index 00000000..e545d7e3 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/quests/impl/RuneMysteries.java @@ -0,0 +1,65 @@ +package com.rebotted.game.content.quests.impl; + +import com.rebotted.game.players.Player; + +/** + * Rune Mysteries + * @author Andrew (Mr Extremez) + */ + +public class RuneMysteries { + + public static void showInformation(Player client) { + for (int i = 8144; i < 8195; i++) { + client.getPacketSender().sendFrame126("", i); + } + client.getPacketSender().sendFrame126("@dre@Rune Mysteries", 8144); + client.getPacketSender().sendFrame126("", 8145); + if (client.runeMist == 0) { + client.getPacketSender().sendFrame126("Rune Mysteries", 8144); + client.getPacketSender().sendFrame126( + "I can start this quest by speaking to Duke Horiaco", 8147); + client.getPacketSender().sendFrame126( + "who is located on the 2nd floor of the Lumbridge Castle.", + 8148); + client.getPacketSender().sendFrame126("", 8149); + client.getPacketSender().sendFrame126( + "There are no minimum requirments.", 8150); + } else if (client.runeMist == 1) { + client.getPacketSender().sendFrame126("Rune Mysteries", 8144); + client.getPacketSender().sendFrame126( + "@str@I've talked to the duke", 8147); + client.getPacketSender().sendFrame126( + "I should take the talisman to the Head Wizard.", 8148); + } else if (client.runeMist == 2) { + client.getPacketSender().sendFrame126("Rune Mysteries", 8144); + client.getPacketSender().sendFrame126( + "@str@I've talked to Sedridor", 8147); + client.getPacketSender().sendFrame126( + "@str@I gave him the talisman", 8148); + client.getPacketSender().sendFrame126( + "I should bring the notes to Aubury.", 8149); + } else if (client.runeMist == 3) { + client.getPacketSender().sendFrame126("Rune Mysteries", 8144); + client.getPacketSender().sendFrame126( + "@str@I've talked to Aubury.", 8147); + client.getPacketSender().sendFrame126("@str@I gave him the notes", + 8148); + client.getPacketSender().sendFrame126( + "I should go back to the wizard tower", 8149); + } else if (client.runeMist == 4) { + client.getPacketSender().sendFrame126("Rune Mysteries", 8144); + client.getPacketSender().sendFrame126("@str@I talked to Sedridor", + 8147); + client.getPacketSender().sendFrame126( + "@str@I gave him his items.", 8148); + client.getPacketSender().sendFrame126("@red@ QUEST COMPLETE", + 8150); + client.getPacketSender().sendFrame126( + "As a reward, I gained 1 Quest point", 8151); + client.getPacketSender().sendFrame126("And an air talisman.", 8152); + } + client.getPacketSender().showInterface(8134); + } + +} diff --git a/2006Redone Server/src/com/rebotted/game/content/quests/impl/SheepShearer.java b/2006Redone Server/src/com/rebotted/game/content/quests/impl/SheepShearer.java new file mode 100644 index 00000000..1a0617a7 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/quests/impl/SheepShearer.java @@ -0,0 +1,54 @@ +package com.rebotted.game.content.quests.impl; + +import com.rebotted.game.players.Player; + +/** + * Sheep Shearer + * @author Andrew (Mr Extremez) + */ + +public class SheepShearer { + + public static void showInformation(Player client) { + for (int i = 8144; i < 8195; i++) { + client.getPacketSender().sendFrame126("", i); + } + client.getPacketSender().sendFrame126("@dre@Sheep Shearer", 8144); + client.getPacketSender().sendFrame126("", 8145); + if (client.sheepShear == 0) { + client.getPacketSender().sendFrame126("Sheep Shearer", 8144); + client.getPacketSender().sendFrame126( + "I can start this quest by speaking to Fred in", 8147); + client.getPacketSender().sendFrame126("Lumbridge.", 8148); + client.getPacketSender().sendFrame126("Minimum Requirments:", 8149); + client.getPacketSender().sendFrame126("None.", 8150); + } else if (client.sheepShear == 1) { + client.getPacketSender().sendFrame126("Sheep Shearer", 8144); + client.getPacketSender().sendFrame126("@str@I've talked to fred", + 8147); + client.getPacketSender().sendFrame126( + "I've agreed to get him some wool.", 8148); + if (client.getItemAssistant().playerHasItem(1759, 20)) { + client.getPacketSender().sendFrame126("@str@Ball of Wool", 8149); + } else { + client.getPacketSender().sendFrame126("@red@Ball of Wool", + 8149); + } + } else if (client.sheepShear == 2) { + client.getPacketSender().sendFrame126("Sheep Shearer", 8144); + client.getPacketSender().sendFrame126("@str@I gave fred his wool", + 8147); + client.getPacketSender().sendFrame126("@str@So he awarded me.", + 8148); + client.getPacketSender().sendFrame126("@red@ QUEST COMPLETE", + 8149); + client.getPacketSender().sendFrame126("As a reward, 60 coins.", + 8150); + client.getPacketSender().sendFrame126("150 crating exp", 8150); + client.getPacketSender().sendFrame126("And 1 Quest Point", 8151); + client.getPacketSender().sendFrame126("", 8152); + } + client.getPacketSender().showInterface(8134); + } + +} diff --git a/2006Redone Server/src/redone/game/content/quests/impl/ShieldArrav.java b/2006Redone Server/src/com/rebotted/game/content/quests/impl/ShieldArrav.java similarity index 77% rename from 2006Redone Server/src/redone/game/content/quests/impl/ShieldArrav.java rename to 2006Redone Server/src/com/rebotted/game/content/quests/impl/ShieldArrav.java index 390a3873..0e7bd93e 100644 --- a/2006Redone Server/src/redone/game/content/quests/impl/ShieldArrav.java +++ b/2006Redone Server/src/com/rebotted/game/content/quests/impl/ShieldArrav.java @@ -1,6 +1,7 @@ -package redone.game.content.quests.impl; +package com.rebotted.game.content.quests.impl; -import redone.game.players.Client; +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; /** * Shield of Arrav @@ -17,13 +18,13 @@ public class ShieldArrav { this.client = client; } - public static void showInformation(Client client) { + public static void showInformation(Player player) { // Clear all lines - for (int i = 8144; i < 8195; i++) client.getPlayerAssistant().sendFrame126("", i); + for (int i = 8144; i < 8195; i++) player.getPacketSender().sendFrame126("", i); // Set the title - client.getPlayerAssistant().sendFrame126("Shield of Arrav", 8144); + player.getPacketSender().sendFrame126("Shield of Arrav", 8144); // Add content - if (client.shieldArrav == 0) { + if (player.shieldArrav == 0) { lines = new String[]{ "I can start this quest by speaking to @red@Reldo @bla@in @red@Varrock's", "@red@Palace Library@bla@, or by speaking to @red@Charlie the Tramp @bla@near", @@ -31,23 +32,23 @@ public class ShieldArrav { "I will need a friend to help me and some combat experience", "may be an advantage.", }; - } else if (client.shieldArrav == 1) { + } else if (player.shieldArrav == 1) { lines = new String[]{ "I need to find @red@'The Shield of Arrav' @bla@book", "in @red@Varrock's Palace Library", }; - } else if (client.shieldArrav == 2) { + } else if (player.shieldArrav == 2) { lines = new String[]{ "@str@I found 'The Shield of Arrav' book", "I should speak to @red@Reldo", }; - } else if (client.shieldArrav == 3) { + } else if (player.shieldArrav == 3) { lines = new String[]{ "@str@I found 'The Shield of Arrav' book", "@str@I've spoken with Raldo", "Lets go speak with @red@Baraek", }; - } else if (client.shieldArrav == 4) { + } else if (player.shieldArrav == 4) { lines = new String[]{ "@str@I found 'The Shield of Arrav' book", "@str@I've spoken with Raldo", @@ -56,7 +57,7 @@ public class ShieldArrav { "He said it was located in the South Eastern side of Varrock,", "I should check it out.", }; - } else if (client.shieldArrav == 5) { + } else if (player.shieldArrav == 5) { lines = new String[]{ "@str@I found 'The Shield of Arrav' book", "@str@I've spoken with Raldo", @@ -65,7 +66,7 @@ public class ShieldArrav { "I need to goto the @red@Blue Moon Inn", "and obtain the intelligence report.", }; - } else if (client.shieldArrav == 6) { + } else if (player.shieldArrav == 6) { lines = new String[]{ "@str@I found 'The Shield of Arrav' book", "@str@I've spoken with Raldo", @@ -76,7 +77,7 @@ public class ShieldArrav { "and take it to @red@Curator Haig Halen", "he should be at @red@Varrock Museum" }; - } else if (client.shieldArrav == 7) { + } else if (player.shieldArrav == 7) { lines = new String[]{ "@str@I found 'The Shield of Arrav' book", "@str@I've spoken with Raldo", @@ -87,7 +88,7 @@ public class ShieldArrav { "I need to take this certificate", "to @red@King Roald @bla@for my reward", }; - } else if (client.shieldArrav == 8) { + } else if (player.shieldArrav == 8) { lines = new String[]{ "@str@I found 'The Shield of Arrav' book", "@str@I've spoken with Raldo", @@ -107,7 +108,7 @@ public class ShieldArrav { } // Send the lines to the client int lineNumber = 8147; - for (String line : lines) client.getPlayerAssistant().sendFrame126(line, lineNumber++); - client.getPlayerAssistant().showInterface(8134); + for (String line : lines) player.getPacketSender().sendFrame126(line, lineNumber++); + player.getPacketSender().showInterface(8134); } } diff --git a/2006Redone Server/src/redone/game/content/quests/impl/VampyreSlayer.java b/2006Redone Server/src/com/rebotted/game/content/quests/impl/VampyreSlayer.java similarity index 68% rename from 2006Redone Server/src/redone/game/content/quests/impl/VampyreSlayer.java rename to 2006Redone Server/src/com/rebotted/game/content/quests/impl/VampyreSlayer.java index 1f4e4ec0..5b5b4da6 100644 --- a/2006Redone Server/src/redone/game/content/quests/impl/VampyreSlayer.java +++ b/2006Redone Server/src/com/rebotted/game/content/quests/impl/VampyreSlayer.java @@ -1,75 +1,70 @@ -package redone.game.content.quests.impl; - -import redone.game.players.Client; - -/** - * Vampyre Slayer - * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) - */ - -public class VampyreSlayer { - - Client client; - - public String[] lines = new String[]{}; - - public VampyreSlayer(Client client) { - this.client = client; - } - - public void showInformation() { - // Clear all lines - for (int i = 8144; i < 8195; i++) client.getPlayerAssistant().sendFrame126("", i); - // Set the title - client.getPlayerAssistant().sendFrame126("Vampyre Slayer", 8144); - // Add content - if (client.vampSlayer == 0) { - lines = new String[]{ - "I can start this quest by speaking to Morgan in", - "Draynor Village.", - "Minimum Requirements:", - "Be able to kill a level 37 monster.", - }; - } else if (client.vampSlayer == 1) { - lines = new String[]{ - "@str@I've talked to Morgan", - "I should speak to Doctor Harlow", - }; - } else if (client.vampSlayer == 2) { - lines = new String[]{ - "@str@I've talked to Doctor Harlow", - "I need to bring him a beer.", - "I should speak to the bartender", - }; - } else if (client.vampSlayer == 3) { - lines = new String[]{ - "@str@I've talked to the bartender", - "@str@I gave Doctor Harlow the beer", - "@str@Doctor Harlow talked to me and", - "@str@Gave me a stake and hammer.", - "Get everything you need and go to Draynor Village.", - "Begin your battle.", - }; - } else if (client.vampSlayer == 4) { - lines = new String[]{ - "@str@I've killed the Vampire", - "I need to talk to Morgan to complete the quest.", - }; - } else if (client.vampSlayer == 5) { - lines = new String[]{ - "@str@I've killed the Vampire", - "@str@I've Talked to Morgan", - "", - "@red@QUEST COMPLETE", - "", - "REWARDS:", - "4,825 Attack Exp.", - "1 Quest Point", - }; - } - // Send the lines to the client - int lineNumber = 8147; - for (String line : lines) client.getPlayerAssistant().sendFrame126(line, lineNumber++); - client.getPlayerAssistant().showInterface(8134); - } -} +package com.rebotted.game.content.quests.impl; + +import com.rebotted.game.players.Player; + +/** + * Vampyre Slayer + * @author Andrew (Mr Extremez) + */ + +public class VampyreSlayer { + + private static String[] lines = new String[]{}; + + + public static void showInformation(Player client) { + // Clear all lines + for (int i = 8144; i < 8195; i++) client.getPacketSender().sendFrame126("", i); + // Set the title + client.getPacketSender().sendFrame126("Vampyre Slayer", 8144); + // Add content + if (client.vampSlayer == 0) { + lines = new String[]{ + "I can start this quest by speaking to Morgan in", + "Draynor Village.", + "Minimum Requirements:", + "Be able to kill a level 37 monster.", + }; + } else if (client.vampSlayer == 1) { + lines = new String[]{ + "@str@I've talked to Morgan", + "I should speak to Doctor Harlow", + }; + } else if (client.vampSlayer == 2) { + lines = new String[]{ + "@str@I've talked to Doctor Harlow", + "I need to bring him a beer.", + "I should speak to the bartender", + }; + } else if (client.vampSlayer == 3) { + lines = new String[]{ + "@str@I've talked to the bartender", + "@str@I gave Doctor Harlow the beer", + "@str@Doctor Harlow talked to me and", + "@str@Gave me a stake and hammer.", + "Get everything you need and go to Draynor Village.", + "Begin your battle.", + }; + } else if (client.vampSlayer == 4) { + lines = new String[]{ + "@str@I've killed the Vampire", + "I need to talk to Morgan to complete the quest.", + }; + } else if (client.vampSlayer == 5) { + lines = new String[]{ + "@str@I've killed the Vampire", + "@str@I've Talked to Morgan", + "", + "@red@QUEST COMPLETE", + "", + "REWARDS:", + "4,825 Attack Exp.", + "1 Quest Point", + }; + } + // Send the lines to the client + int lineNumber = 8147; + for (String line : lines) client.getPacketSender().sendFrame126(line, lineNumber++); + client.getPacketSender().showInterface(8134); + } +} diff --git a/2006Redone Server/src/com/rebotted/game/content/quests/impl/WitchsPotion.java b/2006Redone Server/src/com/rebotted/game/content/quests/impl/WitchsPotion.java new file mode 100644 index 00000000..f756150c --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/quests/impl/WitchsPotion.java @@ -0,0 +1,54 @@ +package com.rebotted.game.content.quests.impl; + +import com.rebotted.game.players.Player; + +/** + * Witchs Potion + * @author Andrew (Mr Extremez) + */ + +public class WitchsPotion { + + public static void showInformation(Player client) { + for (int i = 8144; i < 8195; i++) { + client.getPacketSender().sendFrame126("", i); + } + client.getPacketSender().sendFrame126("@dre@Witch's Potion", 8144); + client.getPacketSender().sendFrame126("", 8145); + if (client.witchspot == 0) { + client.getPacketSender().sendFrame126("Witch's Potion", 8144); + client.getPacketSender().sendFrame126( + "I can start this quest by speaking to Hetty", 8147); + client.getPacketSender().sendFrame126("Rimmington.", 8148); + client.getPacketSender().sendFrame126("Minimum Requirments:", 8149); + client.getPacketSender().sendFrame126("None.", 8150); + } else if (client.witchspot == 1) { + client.getPacketSender().sendFrame126("Witch's Potion", 8144); + client.getPacketSender().sendFrame126( + "@str@I've talked to the Hetty", 8147); + client.getPacketSender().sendFrame126( + "I've agreed to get her the ingredients", 8148); + } else if (client.witchspot == 2) { + client.getPacketSender().sendFrame126("Witch's Potion", 8144); + client.getPacketSender().sendFrame126( + "@str@I have all the ingredients", 8147); + client.getPacketSender().sendFrame126("I should talk to hetty.", + 8148); + client.getPacketSender().sendFrame126("", 8149); + } else if (client.witchspot == 3) { + client.getPacketSender().sendFrame126("Witch's Potion", 8144); + client.getPacketSender().sendFrame126("@str@I've Talked to Hetty", + 8147); + client.getPacketSender().sendFrame126( + "@str@I drank from the Cauldron", 8148); + client.getPacketSender().sendFrame126("@red@ QUEST COMPLETE", + 8150); + client.getPacketSender().sendFrame126( + "As a reward, I gained 325 Magic Exp.", 8151); + client.getPacketSender().sendFrame126("And 1 Quest Point", 8152); + client.getPacketSender().sendFrame126("", 8152); + } + client.getPacketSender().showInterface(8134); + } + +} diff --git a/2006Redone Server/src/redone/game/content/random/Balloons.java b/2006Redone Server/src/com/rebotted/game/content/random/Balloons.java similarity index 71% rename from 2006Redone Server/src/redone/game/content/random/Balloons.java rename to 2006Redone Server/src/com/rebotted/game/content/random/Balloons.java index e180c35d..e05b5745 100644 --- a/2006Redone Server/src/redone/game/content/random/Balloons.java +++ b/2006Redone Server/src/com/rebotted/game/content/random/Balloons.java @@ -1,54 +1,53 @@ -package redone.game.content.random; - -import java.awt.Point; -import java.util.Random; - -import redone.Server; -import redone.game.objects.Objects; -import redone.game.players.Client; - -public class Balloons extends Objects { - - static Random r = new Random(); - public static int item, amount; - public static int x, y; - - @SuppressWarnings("static-access") - public Balloons(int id, int x, int y, int height, int face, int type, - int ticks, int item, int amount) { - super(id, x, y, height, face, type, ticks); - this.x = x; - this.y = y; - this.item = item; - this.amount = amount; - } - - public static void popBalloon(Client c, int x, int y) { - PartyRoom.coords.remove(getCoords()); - Balloons empty = remove(x, y); - Server.itemHandler.createGroundItem(c, item, x, y, amount, c.playerId); - item = 0; - amount = 0; - Server.objectHandler.addObject(empty); - Server.objectHandler.placeObject(empty); - c.startAnimation(794); - } - - public static Point getCoords() { - return new Point(x, y); - } - - public static Balloons getBalloon(int item, int amount) { - return new Balloons(115 + r.nextInt(5), 2730 + r.nextInt(13), - 3462 + r.nextInt(13), 0, 0, 10, 0, item, amount); - } - - public static Balloons getEmpty() { - return new Balloons(115 + r.nextInt(5), 2730 + r.nextInt(13), - 3462 + r.nextInt(13), 0, 0, 10, 0, 0, 0); - } - - public static Balloons remove(int x, int y) { - return new Balloons(-1, x, y, 0, 0, 10, 0, 0, 0); - } -} +package com.rebotted.game.content.random; + +import java.awt.Point; +import java.util.Random; +import com.rebotted.GameEngine; +import com.rebotted.game.objects.Objects; +import com.rebotted.game.players.Player; + +public class Balloons extends Objects { + + static Random r = new Random(); + public static int item, amount; + public static int x, y; + + @SuppressWarnings("static-access") + public Balloons(int id, int x, int y, int height, int face, int type, + int ticks, int item, int amount) { + super(id, x, y, height, face, type, ticks); + this.x = x; + this.y = y; + this.item = item; + this.amount = amount; + } + + public static void popBalloon(Player player, int x, int y) { + PartyRoom.coords.remove(getCoords()); + Balloons empty = remove(x, y); + GameEngine.itemHandler.createGroundItem(player, item, x, y, amount, player.playerId); + item = 0; + amount = 0; + GameEngine.objectHandler.addObject(empty); + GameEngine.objectHandler.placeObject(empty); + player.startAnimation(794); + } + + public static Point getCoords() { + return new Point(x, y); + } + + public static Balloons getBalloon(int item, int amount) { + return new Balloons(115 + r.nextInt(5), 2730 + r.nextInt(13), + 3462 + r.nextInt(13), 0, 0, 10, 0, item, amount); + } + + public static Balloons getEmpty() { + return new Balloons(115 + r.nextInt(5), 2730 + r.nextInt(13), + 3462 + r.nextInt(13), 0, 0, 10, 0, 0, 0); + } + + public static Balloons remove(int x, int y) { + return new Balloons(-1, x, y, 0, 0, 10, 0, 0, 0); + } +} diff --git a/2006Redone Server/src/redone/game/content/random/HolidayDrops.java b/2006Redone Server/src/com/rebotted/game/content/random/HolidayDrops.java similarity index 65% rename from 2006Redone Server/src/redone/game/content/random/HolidayDrops.java rename to 2006Redone Server/src/com/rebotted/game/content/random/HolidayDrops.java index 82e7b3ce..cd6aa8cf 100644 --- a/2006Redone Server/src/redone/game/content/random/HolidayDrops.java +++ b/2006Redone Server/src/com/rebotted/game/content/random/HolidayDrops.java @@ -1,70 +1,58 @@ -package redone.game.content.random; - -import redone.Constants; -import redone.game.players.PlayerHandler; - -/** - * Holiday Drops - * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) - */ - -public enum HolidayDrops { - EASTER(1961, "Easter", false), HALLOWEEN(1053, "Halloween", true), CHRISTMAS(962, "Christmas", false); - - private final int item;// holiday item - private final String name;// holiday name - private final boolean whichHoliday;// if true, this holiday will be dropped - public final int DROP_DISTANCE = 40;// distance of drops - public int count = 0;// count starts at 0 and ends at 400 can be changed - public final int drops = 7;// this is just for random number of the drops - public static int DROP_AMOUNT = PlayerHandler.playerCount * 5;// players - // online * - // 5 = drop - // amount - public static int dropAmount() { - int amount = DROP_AMOUNT; - if (Constants.SERVER_DEBUG) { - return amount * 60; - } - return amount; - } - - private HolidayDrops(int item, String name, boolean whichHoliday) { - this.item = item; - this.name = name; - this.whichHoliday = whichHoliday; - } - - public int getItem() { - return item; - } - - public String getName() { - return name; - } - - public boolean getHoliday() { - return whichHoliday; - } - - /*private static int addItem() { - int random = 2; - if (Misc.random(random) == 0) { - return 1053; - } else if (Misc.random(random) == 1) { - return 1055; - } else if (Misc.random(random) == 2) { - return 1057; - } - return -1; - }*/ - - public final int[][] COORDS = { { 3214, 3424 }, // Varrock - { 3222, 3218 }, // Lumbridge - { 2964, 3378 }, // Falador - { 3082, 3419 }, // Barb - { 3082, 3249 }, // Draynor - { 3293, 3180 }, // Al Kharid - { 3034, 3246 }, // Rimmington - }; -} +package com.rebotted.game.content.random; + +import com.rebotted.GameConstants; +import com.rebotted.game.players.PlayerHandler; + +/** + * Holiday Drops + * @author Andrew (Mr Extremez) + */ + +public enum HolidayDrops { + EASTER(1961, "Easter", false), HALLOWEEN(1053, "Halloween", false), CHRISTMAS(962, "Christmas", false); + + private final int item;// holiday item + private final String name;// holiday name + private final boolean whichHoliday;// if true, this holiday will be dropped + public final int DROP_DISTANCE = 40;// distance of drops + public int count = 0;// count starts at 0 and ends at 400 can be changed + public final int drops = 7;// this is just for random number of the drops + public static int DROP_AMOUNT = PlayerHandler.playerCount * 5;// players + // online * + // 5 = drop + // amount + public static int dropAmount() { + int amount = DROP_AMOUNT; + if (GameConstants.SERVER_DEBUG) { + return amount * 60; + } + return amount; + } + + private HolidayDrops(int item, String name, boolean whichHoliday) { + this.item = item; + this.name = name; + this.whichHoliday = whichHoliday; + } + + public int getItem() { + return item; + } + + public String getName() { + return name; + } + + public boolean getHoliday() { + return whichHoliday; + } + + public final int[][] COORDS = { { 3214, 3424 }, // Varrock + { 3222, 3218 }, // Lumbridge + { 2964, 3378 }, // Falador + { 3082, 3419 }, // Barb + { 3082, 3249 }, // Draynor + { 3293, 3180 }, // Al Kharid + { 3034, 3246 }, // Rimmington + }; +} diff --git a/2006Redone Server/src/redone/game/content/random/Holidays.java b/2006Redone Server/src/com/rebotted/game/content/random/Holidays.java similarity index 52% rename from 2006Redone Server/src/redone/game/content/random/Holidays.java rename to 2006Redone Server/src/com/rebotted/game/content/random/Holidays.java index 7e91b08e..b0b8881a 100644 --- a/2006Redone Server/src/redone/game/content/random/Holidays.java +++ b/2006Redone Server/src/com/rebotted/game/content/random/Holidays.java @@ -1,90 +1,90 @@ -package redone.game.content.random; - -import redone.Server; -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.players.Client; -import redone.game.players.Player; -import redone.game.players.PlayerHandler; -import redone.util.Misc; - -/** - * Holiday Drops - * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) - */ - -public class Holidays { - - public static void startDropping(Client c) { - for (final HolidayDrops holiday : HolidayDrops.values()) { - for (Player player : PlayerHandler.players) { - if (player != null) { - Client p1 = (Client) player; - if (holiday.getHoliday()) { - if (p1.playerRights > 2) { - p1.getActionSender().sendMessage("Currently dropping " + HolidayDrops.dropAmount() + " items."); - } - p1.getActionSender().sendMessage("The " + holiday.getName() + " event has started, goodluck!"); - dropItems(c); - } - } - } - } - } - - public static void dropItems(Client client) { - CycleEventHandler.getSingleton().addEvent(client, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - for (int j = 0; j < PlayerHandler.players.length; j++) { - if (PlayerHandler.players[j] != null) { - Client p1 = (Client) PlayerHandler.players[j]; - for (HolidayDrops holiday : HolidayDrops.values()) { - if (holiday.count >= HolidayDrops.dropAmount() && holiday.getHoliday()) { - stop(); - p1.getActionSender().sendMessage("The " + holiday.getName() + " event has ended, good luck finding the rest of the items!"); - } else if (holiday.count < HolidayDrops.dropAmount() && holiday.getHoliday()) { - switch (Misc.random(holiday.drops)) { - case 0:// Varrock - Server.itemHandler.createGroundItem(p1, holiday.getItem(), 3214 + Misc.random(holiday.DROP_DISTANCE), 3424 - Misc.random(holiday.DROP_DISTANCE), 1, j); - holiday.count++; - break; - case 1:// Lumbridge - Server.itemHandler.createGroundItem(p1, holiday.getItem(), 3222 + Misc.random(holiday.DROP_DISTANCE), 3218 - Misc.random(holiday.DROP_DISTANCE), 1, j); - holiday.count++; - break; - case 2:// Falador - Server.itemHandler.createGroundItem(p1, holiday.getItem(), 2964 + Misc.random(holiday.DROP_DISTANCE), 3378 - Misc.random(holiday.DROP_DISTANCE), 1, j); - holiday.count++; - break; - case 3:// Barb Village - Server.itemHandler.createGroundItem(p1, holiday.getItem(), 3082 + Misc.random(holiday.DROP_DISTANCE), 3419 - Misc.random(holiday.DROP_DISTANCE), 1, j); - holiday.count++; - break; - case 4:// Draynor - Server.itemHandler.createGroundItem(p1, holiday.getItem(), 3082 + Misc.random(holiday.DROP_DISTANCE), 3249 - Misc.random(holiday.DROP_DISTANCE), 1, j); - holiday.count++; - break; - case 5:// Al Kharid - Server.itemHandler.createGroundItem(p1, holiday.getItem(), 3293 + Misc.random(holiday.DROP_DISTANCE), 3180 - Misc.random(holiday.DROP_DISTANCE), 1, j); - holiday.count++; - break; - case 6:// Rimmington - Server.itemHandler.createGroundItem(p1, holiday.getItem(), 3034 + Misc.random(holiday.DROP_DISTANCE), 3246 - Misc.random(holiday.DROP_DISTANCE), 1, j); - holiday.count++; - break; - } - } - } - } - } - } - @Override - public void stop() { - // TODO Auto-generated method stub - - } - }, 2); - } -} +package com.rebotted.game.content.random; + +import com.rebotted.GameEngine; +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerHandler; +import com.rebotted.util.Misc; + +/** + * Holiday Drops + * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) + */ + +public class Holidays { + + public static void startDropping(Client c) { + for (final HolidayDrops holiday : HolidayDrops.values()) { + for (Player player : PlayerHandler.players) { + if (player != null) { + Client p1 = (Client) player; + if (holiday.getHoliday()) { + if (p1.playerRights > 2) { + p1.getPacketSender().sendMessage("Currently dropping " + HolidayDrops.dropAmount() + " items."); + } + p1.getPacketSender().sendMessage("The " + holiday.getName() + " event has started, goodluck!"); + dropItems(c); + } + } + } + } + } + + public static void dropItems(Client client) { + CycleEventHandler.getSingleton().addEvent(client, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + for (int j = 0; j < PlayerHandler.players.length; j++) { + if (PlayerHandler.players[j] != null) { + Client p1 = (Client) PlayerHandler.players[j]; + for (HolidayDrops holiday : HolidayDrops.values()) { + if (holiday.count >= HolidayDrops.dropAmount() && holiday.getHoliday()) { + stop(); + p1.getPacketSender().sendMessage("The " + holiday.getName() + " event has ended, good luck finding the rest of the items!"); + } else if (holiday.count < HolidayDrops.dropAmount() && holiday.getHoliday()) { + switch (Misc.random(holiday.drops)) { + case 0:// Varrock + GameEngine.itemHandler.createGroundItem(p1, holiday.getItem(), 3214 + Misc.random(holiday.DROP_DISTANCE), 3424 - Misc.random(holiday.DROP_DISTANCE), 1, j); + holiday.count++; + break; + case 1:// Lumbridge + GameEngine.itemHandler.createGroundItem(p1, holiday.getItem(), 3222 + Misc.random(holiday.DROP_DISTANCE), 3218 - Misc.random(holiday.DROP_DISTANCE), 1, j); + holiday.count++; + break; + case 2:// Falador + GameEngine.itemHandler.createGroundItem(p1, holiday.getItem(), 2964 + Misc.random(holiday.DROP_DISTANCE), 3378 - Misc.random(holiday.DROP_DISTANCE), 1, j); + holiday.count++; + break; + case 3:// Barb Village + GameEngine.itemHandler.createGroundItem(p1, holiday.getItem(), 3082 + Misc.random(holiday.DROP_DISTANCE), 3419 - Misc.random(holiday.DROP_DISTANCE), 1, j); + holiday.count++; + break; + case 4:// Draynor + GameEngine.itemHandler.createGroundItem(p1, holiday.getItem(), 3082 + Misc.random(holiday.DROP_DISTANCE), 3249 - Misc.random(holiday.DROP_DISTANCE), 1, j); + holiday.count++; + break; + case 5:// Al Kharid + GameEngine.itemHandler.createGroundItem(p1, holiday.getItem(), 3293 + Misc.random(holiday.DROP_DISTANCE), 3180 - Misc.random(holiday.DROP_DISTANCE), 1, j); + holiday.count++; + break; + case 6:// Rimmington + GameEngine.itemHandler.createGroundItem(p1, holiday.getItem(), 3034 + Misc.random(holiday.DROP_DISTANCE), 3246 - Misc.random(holiday.DROP_DISTANCE), 1, j); + holiday.count++; + break; + } + } + } + } + } + } + @Override + public void stop() { + // TODO Auto-generated method stub + + } + }, 2); + } +} diff --git a/2006Redone Server/src/redone/game/content/random/PartyRoom.java b/2006Redone Server/src/com/rebotted/game/content/random/PartyRoom.java similarity index 58% rename from 2006Redone Server/src/redone/game/content/random/PartyRoom.java rename to 2006Redone Server/src/com/rebotted/game/content/random/PartyRoom.java index f8c2c98d..92f680b2 100644 --- a/2006Redone Server/src/redone/game/content/random/PartyRoom.java +++ b/2006Redone Server/src/com/rebotted/game/content/random/PartyRoom.java @@ -1,237 +1,233 @@ -package redone.game.content.random; - -import java.awt.Point; -import java.util.ArrayList; -import java.util.Random; - -import redone.Constants; -import redone.Server; -import redone.game.items.Item; -import redone.game.objects.Objects; -import redone.game.players.Client; - -public class PartyRoom { - - static Random r = new Random(); - static int[] roomItems = new int[50]; - static int[] roomItemsN = new int[50]; - static long lastAnnouncment; - static int announcmentFrequency = 1; // announcment frequency in mins - static ArrayList coords = new ArrayList(); - - public static int getAmount() { - int amount = 0; - for (int roomItem : roomItems) { - if (roomItem > 0) { - amount++; - } - } - return amount; - } - - public static void startTimer(Client c) { - if (System.currentTimeMillis() - lastAnnouncment > 1000 * 60 * announcmentFrequency) { - dropAll(); - lastAnnouncment = System.currentTimeMillis(); - } - } - - public static void dropAll() { - int trys = 0; - int amount = getAmount(); - if (amount < 1) { - return; - } - for (int x = 0; x < roomItems.length; x++) { - if (roomItemsN[x] > 0) { - Balloons b = null; - do { - b = Balloons.getBalloon(roomItems[x], roomItemsN[x]); - trys++; - } while (coords.contains(Balloons.getCoords()) && trys < 100); - Server.objectHandler.addObject(b); - Server.objectHandler.placeObject(b); - } - if (trys > 100) { - break; - } - roomItems[x] = 0; - roomItemsN[x] = 0; - } - trys = 0; - for (int x = 0; x < amount * 2; x++) { - Objects o; - do { - o = Balloons.getEmpty(); - } while (coords.contains(new Point(o.objectX, o.objectY)) - && trys < 100); - if (trys > 100) { - break; - } - Server.objectHandler.addObject(o); - Server.objectHandler.placeObject(o); - } - coords.clear(); - } - - public static int arraySlot(int[] array, int target) { - int spare = -1; - for (int x = 0; x < array.length; x++) { - if (array[x] == target) { - return x; - } else if (spare == -1 && array[x] <= 0) { - spare = x; - } - } - return spare; - } - - public static void open(Client c) { - if (!Constants.PARTY_ROOM_DISABLED) { - updateGlobal(c); - updateDeposit(c); - c.getItemAssistant().resetItems(5064); - c.getPlayerAssistant().sendFrame248(2156, 5063); - } else { - c.getActionSender().sendMessage( - "The partyroom has been disabled."); - } - } - - public static void accept(Client c) { - for (int x = 0; x < c.party.length; x++) { - if (c.partyN[x] > 0) { - if (Item.itemStackable[c.party[x]]) { - int slot = arraySlot(roomItems, c.party[x]); - if (slot < 0) { - c.getActionSender().sendMessage( - "Theres not enough space left in the chest."); - break; - } - if (roomItems[slot] != c.party[x]) { - roomItems[slot] = c.party[x]; - roomItemsN[slot] = c.partyN[x]; - } else { - roomItemsN[slot] += c.partyN[x]; - } - c.party[x] = -1; - c.partyN[x] = 0; - } else { - int left = c.partyN[x]; - for (int y = 0; y < left; y++) { - int slot = arraySlot(roomItems, -2); - if (slot < 0) { - c.getActionSender() - .sendMessage( - "Theres not enough space left in the chest."); - break; - } - roomItems[slot] = c.party[x]; - roomItemsN[slot] = 1; - c.partyN[x]--; - } - if (c.partyN[x] <= 0) { - c.party[x] = -1; - } - } - } - } - updateDeposit(c); - updateGlobal(c); - } - - // public static void updateAll() { - // for (int x = 0; x < PlayerHandler.getPlayers().length; x++) { - // updateGlobal((Client) PlayerHandler.getPlayers()[x]); - // } - // } - - public static void fix(Client c) { - for (int x = 0; x < 8; x++) { - if (c.party[x] < 0) { - c.partyN[x] = 0; - } else if (c.partyN[x] <= 0) { - c.party[x] = 0; - } - } - } - - public static void depositItem(Client c, int id, int amount) { - int slot = arraySlot(c.party, id); - for (int i : Constants.ITEM_TRADEABLE) { - if (i == id) { - c.getActionSender().sendMessage( - "You can't deposit this item."); - return; - } - if (id == 995) { - c.getActionSender().sendMessage("You can't deposit coins!"); - return; - } - } - if (c.getItemAssistant().getItemAmount(id) < amount) { - amount = c.getItemAssistant().getItemAmount(id); - } - if (!c.getItemAssistant().playerHasItem(id, amount)) { - c.getActionSender().sendMessage( - "You don't have that many items!"); - return; - } - if (slot == -1) { - c.getActionSender().sendMessage( - "You cant deposit more than 8 items at once."); - return; - } - c.getItemAssistant().deleteItem(id, amount); - if (c.party[slot] != id) { - c.party[slot] = id; - c.partyN[slot] = amount; - } else { - c.party[slot] = id; - c.partyN[slot] += amount; - } - updateDeposit(c); - } - - public static void withdrawItem(Client c, int slot) { - if (c.party[slot] >= 0 && c.getItemAssistant().freeSlots() > 0) { - c.getItemAssistant().addItem(c.party[slot], c.partyN[slot]); - c.party[slot] = 0; - c.partyN[slot] = 0; - } - updateDeposit(c); - updateGlobal(c); - } - - public static void updateDeposit(Client c) { - c.getItemAssistant().resetItems(5064); - for (int x = 0; x < 8; x++) { - if (c.partyN[x] <= 0) { - itemOnInterface(c, 2274, x, -1, 0); - } else { - itemOnInterface(c, 2274, x, c.party[x], c.partyN[x]); - } - } - } - - public static void updateGlobal(Client c) { - for (int x = 0; x < roomItems.length; x++) { - if (roomItemsN[x] <= 0) { - itemOnInterface(c, 2273, x, -1, 0); - } else { - itemOnInterface(c, 2273, x, roomItems[x], roomItemsN[x]); - } - } - } - - public static void itemOnInterface(Client c, int frame, int slot, int id, - int amount) { - c.outStream.createFrameVarSizeWord(34); - c.outStream.writeWord(frame); - c.outStream.writeByte(slot); - c.outStream.writeWord(id + 1); - c.outStream.writeByte(255); - c.outStream.writeDWord(amount); - c.outStream.endFrameVarSizeWord(); - } -} +package com.rebotted.game.content.random; + +import java.awt.Point; +import java.util.ArrayList; +import java.util.Random; +import com.rebotted.GameConstants; +import com.rebotted.GameEngine; +import com.rebotted.game.items.Item; +import com.rebotted.game.objects.Objects; +import com.rebotted.game.players.Player; + +public class PartyRoom { + + static Random r = new Random(); + static int[] roomItems = new int[50]; + static int[] roomItemsN = new int[50]; + static long lastAnnouncment; + static int announcmentFrequency = 1; // announcment frequency in mins + static ArrayList coords = new ArrayList(); + + public static int getAmount() { + int amount = 0; + for (int roomItem : roomItems) { + if (roomItem > 0) { + amount++; + } + } + return amount; + } + + public static void startTimer(Player c) { + if (System.currentTimeMillis() - lastAnnouncment > 1000 * 60 * announcmentFrequency) { + dropAll(); + lastAnnouncment = System.currentTimeMillis(); + } + } + + public static void dropAll() { + int trys = 0; + int amount = getAmount(); + if (amount < 1) { + return; + } + for (int x = 0; x < roomItems.length; x++) { + if (roomItemsN[x] > 0) { + Balloons b = null; + do { + b = Balloons.getBalloon(roomItems[x], roomItemsN[x]); + trys++; + } while (coords.contains(Balloons.getCoords()) && trys < 100); + GameEngine.objectHandler.addObject(b); + GameEngine.objectHandler.placeObject(b); + } + if (trys > 100) { + break; + } + roomItems[x] = 0; + roomItemsN[x] = 0; + } + trys = 0; + for (int x = 0; x < amount * 2; x++) { + Objects o; + do { + o = Balloons.getEmpty(); + } while (coords.contains(new Point(o.objectX, o.objectY)) + && trys < 100); + if (trys > 100) { + break; + } + GameEngine.objectHandler.addObject(o); + GameEngine.objectHandler.placeObject(o); + } + coords.clear(); + } + + public static int arraySlot(int[] array, int target) { + int spare = -1; + for (int x = 0; x < array.length; x++) { + if (array[x] == target) { + return x; + } else if (spare == -1 && array[x] <= 0) { + spare = x; + } + } + return spare; + } + + public static void open(Player player) { + if (!GameConstants.PARTY_ROOM_DISABLED) { + updateGlobal(player); + updateDeposit(player); + player.getItemAssistant().resetItems(5064); + player.getPacketSender().sendFrame248(2156, 5063); + } else { + player.getPacketSender().sendMessage("The partyroom has been disabled."); + } + } + + public static void accept(Player c) { + for (int x = 0; x < c.party.length; x++) { + if (c.partyN[x] > 0) { + if (Item.itemStackable[c.party[x]]) { + int slot = arraySlot(roomItems, c.party[x]); + if (slot < 0) { + c.getPacketSender().sendMessage( + "Theres not enough space left in the chest."); + break; + } + if (roomItems[slot] != c.party[x]) { + roomItems[slot] = c.party[x]; + roomItemsN[slot] = c.partyN[x]; + } else { + roomItemsN[slot] += c.partyN[x]; + } + c.party[x] = -1; + c.partyN[x] = 0; + } else { + int left = c.partyN[x]; + for (int y = 0; y < left; y++) { + int slot = arraySlot(roomItems, -2); + if (slot < 0) { + c.getPacketSender() + .sendMessage( + "Theres not enough space left in the chest."); + break; + } + roomItems[slot] = c.party[x]; + roomItemsN[slot] = 1; + c.partyN[x]--; + } + if (c.partyN[x] <= 0) { + c.party[x] = -1; + } + } + } + } + updateDeposit(c); + updateGlobal(c); + } + + // public static void updateAll() { + // for (int x = 0; x < PlayerHandler.getPlayers().length; x++) { + // updateGlobal((Client) PlayerHandler.getPlayers()[x]); + // } + // } + + public static void fix(Player c) { + for (int x = 0; x < 8; x++) { + if (c.party[x] < 0) { + c.partyN[x] = 0; + } else if (c.partyN[x] <= 0) { + c.party[x] = 0; + } + } + } + + public static void depositItem(Player player, int id, int amount) { + int slot = arraySlot(player.party, id); + for (int i : GameConstants.ITEM_TRADEABLE) { + if (i == id) { + player.getPacketSender().sendMessage("You can't deposit this item."); + return; + } + if (id == 995) { + player.getPacketSender().sendMessage("You can't deposit coins!"); + return; + } + } + if (player.getItemAssistant().getItemAmount(id) < amount) { + amount = player.getItemAssistant().getItemAmount(id); + } + if (!player.getItemAssistant().playerHasItem(id, amount)) { + player.getPacketSender().sendMessage( + "You don't have that many items!"); + return; + } + if (slot == -1) { + player.getPacketSender().sendMessage( + "You cant deposit more than 8 items at once."); + return; + } + player.getItemAssistant().deleteItem(id, amount); + if (player.party[slot] != id) { + player.party[slot] = id; + player.partyN[slot] = amount; + } else { + player.party[slot] = id; + player.partyN[slot] += amount; + } + updateDeposit(player); + } + + public static void withdrawItem(Player c, int slot) { + if (c.party[slot] >= 0 && c.getItemAssistant().freeSlots() > 0) { + c.getItemAssistant().addItem(c.party[slot], c.partyN[slot]); + c.party[slot] = 0; + c.partyN[slot] = 0; + } + updateDeposit(c); + updateGlobal(c); + } + + public static void updateDeposit(Player player) { + player.getItemAssistant().resetItems(5064); + for (int x = 0; x < 8; x++) { + if (player.partyN[x] <= 0) { + itemOnInterface(player, 2274, x, -1, 0); + } else { + itemOnInterface(player, 2274, x, player.party[x], player.partyN[x]); + } + } + } + + public static void updateGlobal(Player player) { + for (int x = 0; x < roomItems.length; x++) { + if (roomItemsN[x] <= 0) { + itemOnInterface(player, 2273, x, -1, 0); + } else { + itemOnInterface(player, 2273, x, roomItems[x], roomItemsN[x]); + } + } + } + + public static void itemOnInterface(Player player, int frame, int slot, int id, int amount) { + player.outStream.createFrameVarSizeWord(34); + player.outStream.writeWord(frame); + player.outStream.writeByte(slot); + player.outStream.writeWord(id + 1); + player.outStream.writeByte(255); + player.outStream.writeDWord(amount); + player.outStream.endFrameVarSizeWord(); + } +} diff --git a/2006Redone Server/src/com/rebotted/game/content/randomevents/EvilChicken.java b/2006Redone Server/src/com/rebotted/game/content/randomevents/EvilChicken.java new file mode 100644 index 00000000..1f311a40 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/randomevents/EvilChicken.java @@ -0,0 +1,27 @@ +package com.rebotted.game.content.randomevents; + +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +public class EvilChicken { + + // min cmb, maxcmb, npcid, maxhit, attack, defence + private static int[][] chicken = { { 3, 10, 2463, 19, 1, 10, 10 }, + { 11, 20, 2464, 40, 1, 30, 30 }, { 21, 40, 2465, 60, 2, 60, 60 }, + { 41, 60, 2466, 80, 3, 80, 80 }, + { 61, 90, 2467, 105, 4, 100, 100 }, + { 91, 138, 2468, 120, 5, 120, 120 }, }; + + public static void spawnChicken(Player c) { + for (int[] aChicken : chicken) { + if (c.chickenSpawned == false) { + if (c.combatLevel >= aChicken[0] && c.combatLevel <= aChicken[1]) { + NpcHandler.spawnNpc(c, aChicken[2], c.absX + Misc.random(1), c.absY + Misc.random(1), c.heightLevel, 0, aChicken[3], aChicken[4], aChicken[5], aChicken[6], true, false); + c.chickenSpawned = true; + c.randomActions = 0; + } + } + } + } +} \ No newline at end of file diff --git a/2006Redone Server/src/redone/game/content/randomevents/FreakyForester.java b/2006Redone Server/src/com/rebotted/game/content/randomevents/FreakyForester.java similarity index 59% rename from 2006Redone Server/src/redone/game/content/randomevents/FreakyForester.java rename to 2006Redone Server/src/com/rebotted/game/content/randomevents/FreakyForester.java index 4a1dfa9c..0322e546 100644 --- a/2006Redone Server/src/redone/game/content/randomevents/FreakyForester.java +++ b/2006Redone Server/src/com/rebotted/game/content/randomevents/FreakyForester.java @@ -1,71 +1,71 @@ -package redone.game.content.randomevents; - -import redone.game.players.Client; -import redone.util.Misc; - -public class FreakyForester { - - public static void teleportToLocation(Client client) { - client.lastX = client.absX; - client.lastY = client.absY; - client.lastH = client.heightLevel; - client.teleportToX = 2602; - client.teleportToY = 4775; - client.heightLevel = 0; - client.getActionSender().sendMessage("Talk to the freaky forester to get out."); - } - - private static String[] pheasant = { "one", "two", "three", "four", }; - - public static String getPheasant(Client client) { - if (client.getPheasent < 0) { - client.getPheasent = Misc.random(3); - } - return pheasant[client.getPheasent] + " tailed"; - } - - public static void leaveArea(Client client) { - if (client.killedPheasant[client.getPheasent]) { - client.getPlayerAssistant().movePlayer(client.lastX, client.lastY, client.lastH); - client.canLeaveArea = true; - client.getActionSender().sendMessage("Congratulations, you've completed the freaky forester event!"); - if (client.recievedReward == false) { - client.getItemAssistant().addItem(6180, 1); - client.getItemAssistant().addItem(6181, 1); - client.getItemAssistant().addItem(6182, 1); - client.recievedReward = true; - } else { - client.getItemAssistant().addItem(995, 500); - client.getActionSender().sendMessage("You have already beat the freaky forester event so you get 500 coins."); - } - int delete = client.getItemAssistant().getItemCount(6178); - client.getItemAssistant().deleteItem(6178, delete); - client.randomActions = 0; - } else { - RandomEventHandler.failEvent(client); - } - for (int i = 0; i < 4; i++) { - client.killedPheasant[i] = false; - } - client.getPheasent = -1; - client.canLeaveArea = false; - } - - public static void killedPheasant(Client client, int p) { - for (int i = 0; i < 4; i++) { - client.killedPheasant[i] = false; - } - client.killedPheasant[p] = true; - } - - public static boolean hasKilledPheasant(Client client) { - for (int i = 0; i < 4; i++) { - if (client.killedPheasant[i]) { - client.canLeaveArea = true; - return true; - } - } - client.canLeaveArea = false; - return false; - } -} +package com.rebotted.game.content.randomevents; + +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +public class FreakyForester { + + public static void teleportToLocation(Player c) { + c.lastX = c.absX; + c.lastY = c.absY; + c.lastH = c.heightLevel; + c.teleportToX = 2602; + c.teleportToY = 4775; + c.heightLevel = 0; + c.getPacketSender().sendMessage("Talk to the freaky forester to get out."); + } + + private static String[] pheasant = { "one", "two", "three", "four", }; + + public static String getPheasant(Player client) { + if (client.getPheasent < 0) { + client.getPheasent = Misc.random(3); + } + return pheasant[client.getPheasent] + " tailed"; + } + + public static void leaveArea(Player client) { + if (client.killedPheasant[client.getPheasent]) { + client.getPlayerAssistant().movePlayer(client.lastX, client.lastY, client.lastH); + client.canLeaveArea = true; + client.getPacketSender().sendMessage("Congratulations, you've completed the freaky forester event!"); + if (client.recievedReward == false) { + client.getItemAssistant().addItem(6180, 1); + client.getItemAssistant().addItem(6181, 1); + client.getItemAssistant().addItem(6182, 1); + client.recievedReward = true; + } else { + client.getItemAssistant().addItem(995, 500); + client.getPacketSender().sendMessage("You have already beat the freaky forester event so you get 500 coins."); + } + int delete = client.getItemAssistant().getItemCount(6178); + client.getItemAssistant().deleteItem(6178, delete); + client.randomActions = 0; + } else { + RandomEventHandler.failEvent(client); + } + for (int i = 0; i < 4; i++) { + client.killedPheasant[i] = false; + } + client.getPheasent = -1; + client.canLeaveArea = false; + } + + public static void killedPheasant(Player c, int p) { + for (int i = 0; i < 4; i++) { + c.killedPheasant[i] = false; + } + c.killedPheasant[p] = true; + } + + public static boolean hasKilledPheasant(Player client) { + for (int i = 0; i < 4; i++) { + if (client.killedPheasant[i]) { + client.canLeaveArea = true; + return true; + } + } + client.canLeaveArea = false; + return false; + } +} diff --git a/2006Redone Server/src/redone/game/content/randomevents/Frog.java b/2006Redone Server/src/com/rebotted/game/content/randomevents/Frog.java similarity index 88% rename from 2006Redone Server/src/redone/game/content/randomevents/Frog.java rename to 2006Redone Server/src/com/rebotted/game/content/randomevents/Frog.java index d075064e..a86f134e 100644 --- a/2006Redone Server/src/redone/game/content/randomevents/Frog.java +++ b/2006Redone Server/src/com/rebotted/game/content/randomevents/Frog.java @@ -1,50 +1,50 @@ -package redone.game.content.randomevents; - -import redone.game.npcs.NpcHandler; -import redone.game.players.Client; -import redone.util.Misc; - -/** - * Frog Event - * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) - */ - -public final class Frog { - - private static final int[][] FROG_DATA = { { 2469, 2470, 2471, 2472, 2473 } }; - - public static void startEvent(Client client) { - spawnFrogs(client); - spawnBasedOnGender(client); - client.ignoreFrog = false; - } - - public static void finishEvent(Client client) {// breaks - if (client.ignoreFrog) { - client.getPlayerAssistant().movePlayer(client.lastX, client.lastY, client.lastH); - } - giveReward(client); - } - - public static void spawnBasedOnGender(Client client) {// ternary - NpcHandler.spawnNpc(client, client.playerAppearance[0] == 1 ? 2474 : 2475, client.absX + Misc.random(1), client.absY + Misc.random(1), 0, 0, 0, 0, 0, 0, false, false); - } - - public static void ignoreFrogs(Client client) { - String type = client.playerMagicBook == 0 ? "modern" : "ancient"; - client.getPlayerAssistant().startTeleport(6861, 5834, 0, type); - spawnFrogs(client); - spawnBasedOnGender(client); - client.ignoreFrog = true; - } - - public static void giveReward(Client client) { - client.getItemAssistant().addItem(6183, 1); - } - - public static void spawnFrogs(Client client) { - for (int[] element : FROG_DATA) { - NpcHandler.spawnNpc(client, element[0], client.absX + Misc.random(1), client.absY + Misc.random(1), 0, 0, 0, 0, 0, 0, false, false); - } - } -} +package com.rebotted.game.content.randomevents; + +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.game.players.Client; +import com.rebotted.util.Misc; + +/** + * Frog Event + * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) + */ + +public final class Frog { + + private static final int[][] FROG_DATA = { { 2469, 2470, 2471, 2472, 2473 } }; + + public static void startEvent(Client client) { + spawnFrogs(client); + spawnBasedOnGender(client); + client.ignoreFrog = false; + } + + public static void finishEvent(Client client) {// breaks + if (client.ignoreFrog) { + client.getPlayerAssistant().movePlayer(client.lastX, client.lastY, client.lastH); + } + giveReward(client); + } + + public static void spawnBasedOnGender(Client client) {// ternary + NpcHandler.spawnNpc(client, client.playerAppearance[0] == 1 ? 2474 : 2475, client.absX + Misc.random(1), client.absY + Misc.random(1), 0, 0, 0, 0, 0, 0, false, false); + } + + public static void ignoreFrogs(Client client) { + String type = client.playerMagicBook == 0 ? "modern" : "ancient"; + client.getPlayerAssistant().startTeleport(6861, 5834, 0, type); + spawnFrogs(client); + spawnBasedOnGender(client); + client.ignoreFrog = true; + } + + public static void giveReward(Client client) { + client.getItemAssistant().addItem(6183, 1); + } + + public static void spawnFrogs(Client client) { + for (int[] element : FROG_DATA) { + NpcHandler.spawnNpc(client, element[0], client.absX + Misc.random(1), client.absY + Misc.random(1), 0, 0, 0, 0, 0, 0, false, false); + } + } +} diff --git a/2006Redone Server/src/redone/game/content/randomevents/GenieLamp.java b/2006Redone Server/src/com/rebotted/game/content/randomevents/GenieLamp.java similarity index 88% rename from 2006Redone Server/src/redone/game/content/randomevents/GenieLamp.java rename to 2006Redone Server/src/com/rebotted/game/content/randomevents/GenieLamp.java index e93c9727..723de766 100644 --- a/2006Redone Server/src/redone/game/content/randomevents/GenieLamp.java +++ b/2006Redone Server/src/com/rebotted/game/content/randomevents/GenieLamp.java @@ -1,105 +1,105 @@ -package redone.game.content.randomevents; - -import redone.game.npcs.NpcHandler; -import redone.game.players.Client; -import redone.util.Misc; - -/** - * @author Aintaro - */ - -public class GenieLamp { - - private static final int GENIE_LAMP1 = 7498;// , GENIE_LAMP2 = 6543; - - private static int expAmount; - - public static boolean spawnGenieNpc(Client c) { - if (Misc.random(100) == 1 && !c.inWild()) { - NpcHandler.spawnNpc(c, 409, c.absX, c.absY + 1, 0, 0, 0, 0, 0, 0, - false, false); - return true; - } - return false; - } - - public static void removeGenieNpc(Client c) { - NpcHandler.npcs[c.lastNpcClickIndex].absX = 0; - NpcHandler.npcs[c.lastNpcClickIndex].absY = 0; - } - - public static void rubGenieLamp(Client c, int itemId) { - if (itemId == GENIE_LAMP1) {// || itemId == GENIE_LAMP2) { - c.getActionSender().sendMessage("You rub the lamp..."); - c.getPlayerAssistant().showInterface(2808); - } - } - - private static int[][] genieData = { { 10252, 0 }, { 11000, 1 }, - { 10253, 2 }, { 11001, 3 }, { 10254, 4 }, { 11002, 5 }, - { 10255, 6 }, { 11011, 7 }, { 11013, 8 }, { 11014, 9 }, - { 11010, 10 }, { 11012, 11 }, { 11006, 12 }, { 11009, 13 }, - { 11008, 14 }, { 11004, 15 }, { 11003, 16 }, { 11005, 17 }, - { 47002, 18 }, { 54090, 19 }, { 11007, 20 }, }; - public String statName[] = { "attack", "defence", "strength", "hitpoints", - "range", "prayer", "magic", "cooking", "woodcutting", "fletching", - "fishing", "firemaking", "crafting", "smithing", "mining", - "herblore", "agility", "thieving", "slayer", "farming", - "runecrafting" }; - - private static void whatSkillAreWeLookingFor(Client c, int actionButtonId) { - for (int[] genie : genieData) { - if (genie[0] == actionButtonId) { - if (c.getItemAssistant().playerHasItem(GENIE_LAMP1, 1)) { - c.getItemAssistant().deleteItem(GENIE_LAMP1, 1); - expAmount = 10 * c.playerLevel[genie[1]]; - c.getPlayerAssistant().addSkillXP(expAmount, genie[1]); - // c.getDH().sendStatement( - // "You gained " + expAmount * Config.SERVER_EXP_BONUS - // + " experience."); - c.nextChat = 0; - break; - /* - * } else if - * (c.getItemAssistant().playerHasItem(GENIE_LAMP2, 1)) { - * c.getItemAssistant().deleteItem(GENIE_LAMP2, 1); - * expAmount = 10 * c.playerLevel[genie[1]]; - * c.getPlayerAssistant().addSkillXP(expAmount, genie[1]); - * //c.getDH().sendStatement( //"You gained " + expAmount * - * Config.SERVER_EXP_BONUS // + " experience."); c.nextChat - * = 0; break; - */ - } - } - } - } - - public static boolean genieInterfaceButtons(Client c, int actionButtonId) { - switch (actionButtonId) { - case 10252: - case 10253: - case 10254: - case 10255: - case 11000: - case 11001: - case 11002: - case 11003: - case 11004: - case 11005: - case 11006: - case 11007: - case 47002: - case 54090: - case 11008: - case 11009: - case 11010: - case 11011: - case 11012: - case 11013: - case 11014: - whatSkillAreWeLookingFor(c, actionButtonId); - return true; - } - return false; - } -} +package com.rebotted.game.content.randomevents; + +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.game.players.Client; +import com.rebotted.util.Misc; + +/** + * @author Aintaro + */ + +public class GenieLamp { + + private static final int GENIE_LAMP1 = 7498;// , GENIE_LAMP2 = 6543; + + private static int expAmount; + + public static boolean spawnGenieNpc(Client c) { + if (Misc.random(100) == 1 && !c.inWild()) { + NpcHandler.spawnNpc(c, 409, c.absX, c.absY + 1, 0, 0, 0, 0, 0, 0, + false, false); + return true; + } + return false; + } + + public static void removeGenieNpc(Client c) { + NpcHandler.npcs[c.lastNpcClickIndex].absX = 0; + NpcHandler.npcs[c.lastNpcClickIndex].absY = 0; + } + + public static void rubGenieLamp(Client c, int itemId) { + if (itemId == GENIE_LAMP1) {// || itemId == GENIE_LAMP2) { + c.getPacketSender().sendMessage("You rub the lamp..."); + c.getPacketSender().showInterface(2808); + } + } + + private static int[][] genieData = { { 10252, 0 }, { 11000, 1 }, + { 10253, 2 }, { 11001, 3 }, { 10254, 4 }, { 11002, 5 }, + { 10255, 6 }, { 11011, 7 }, { 11013, 8 }, { 11014, 9 }, + { 11010, 10 }, { 11012, 11 }, { 11006, 12 }, { 11009, 13 }, + { 11008, 14 }, { 11004, 15 }, { 11003, 16 }, { 11005, 17 }, + { 47002, 18 }, { 54090, 19 }, { 11007, 20 }, }; + public String statName[] = { "attack", "defence", "strength", "hitpoints", + "range", "prayer", "magic", "cooking", "woodcutting", "fletching", + "fishing", "firemaking", "crafting", "smithing", "mining", + "herblore", "agility", "thieving", "slayer", "farming", + "runecrafting" }; + + private static void whatSkillAreWeLookingFor(Client c, int actionButtonId) { + for (int[] genie : genieData) { + if (genie[0] == actionButtonId) { + if (c.getItemAssistant().playerHasItem(GENIE_LAMP1, 1)) { + c.getItemAssistant().deleteItem(GENIE_LAMP1, 1); + expAmount = 10 * c.playerLevel[genie[1]]; + c.getPlayerAssistant().addSkillXP(expAmount, genie[1]); + // c.getDH().sendStatement( + // "You gained " + expAmount * Config.SERVER_EXP_BONUS + // + " experience."); + c.nextChat = 0; + break; + /* + * } else if + * (c.getItemAssistant().playerHasItem(GENIE_LAMP2, 1)) { + * c.getItemAssistant().deleteItem(GENIE_LAMP2, 1); + * expAmount = 10 * c.playerLevel[genie[1]]; + * c.getPlayerAssistant().addSkillXP(expAmount, genie[1]); + * //c.getDH().sendStatement( //"You gained " + expAmount * + * Config.SERVER_EXP_BONUS // + " experience."); c.nextChat + * = 0; break; + */ + } + } + } + } + + public static boolean genieInterfaceButtons(Client c, int actionButtonId) { + switch (actionButtonId) { + case 10252: + case 10253: + case 10254: + case 10255: + case 11000: + case 11001: + case 11002: + case 11003: + case 11004: + case 11005: + case 11006: + case 11007: + case 47002: + case 54090: + case 11008: + case 11009: + case 11010: + case 11011: + case 11012: + case 11013: + case 11014: + whatSkillAreWeLookingFor(c, actionButtonId); + return true; + } + return false; + } +} diff --git a/2006Redone Server/src/com/rebotted/game/content/randomevents/RandomEventHandler.java b/2006Redone Server/src/com/rebotted/game/content/randomevents/RandomEventHandler.java new file mode 100644 index 00000000..91ae15d6 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/randomevents/RandomEventHandler.java @@ -0,0 +1,80 @@ +package com.rebotted.game.content.randomevents; + +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +/** + * Eventhandler class + * @author Andrew (Mr Extremez) + */ + +public class RandomEventHandler { + + public static int CALL_RANDOM = 350 + Misc.random(100); + + public static void resetEvent(Player c) { + c.randomActions = 0; + } + + private static int[][] FAIL_COORDS = { { 3333, 3333 }, { 3196, 3193 }, + { 3084, 3549 }, { 2974, 3346 }, { 2781, 3506 }, { 2810, 3508 }, }; + + public static void failEvent(Player client) { + int loc = Misc.random(FAIL_COORDS.length - 1); + client.teleportToX = FAIL_COORDS[loc][0]; + client.teleportToY = FAIL_COORDS[loc][1]; + client.heightLevel = 0; + client.getPacketSender().sendMessage("You wake up in a strange location..."); + resetEvent(client); + client.getPacketSender().closeAllWindows(); + } + + public static void callRandom(Player c) { // add all random events here + if (c.inFightCaves() || c.playerEquipment[c.playerWeapon] == 4024 || c.tutorialProgress < 36) { + return; + } + int randomEvent = Misc.random(3); + switch (randomEvent) { + case 0: + SandwhichLady.openSandwhichLady(c); + resetEvent(c); + break; + case 1: + if (c.chickenSpawned == false) { + EvilChicken.spawnChicken(c); + resetEvent(c); + } + break; + case 2: + FreakyForester.teleportToLocation(c); + resetEvent(c); + break; + case 3: + Swarm.spawnSwarm(c); + resetEvent(c); + break; + default: + System.out.println("Error no random event called for " + c.playerName + "."); + break; + } + } + + public static void addRandom(Player c) { + if (c.randomEventsEnabled) + { + if (c.randomActions >= CALL_RANDOM) { + callRandom(c); + if (c.playerIsBusy() && !c.hasSandwhichLady) { + c.getPacketSender().closeAllWindows(); + } + } else { + int nextRandom = CALL_RANDOM - c.randomActions; + if (c.playerRights == 3) { + c.getPacketSender().sendMessage("Next random will be in " + nextRandom + " more random actions."); + } + c.randomActions += 1; + } + } + } +} diff --git a/2006Redone Server/src/com/rebotted/game/content/randomevents/RiverTroll.java b/2006Redone Server/src/com/rebotted/game/content/randomevents/RiverTroll.java new file mode 100644 index 00000000..90e04318 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/randomevents/RiverTroll.java @@ -0,0 +1,28 @@ +package com.rebotted.game.content.randomevents; + +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +public class RiverTroll { + + public static boolean hasRiverTroll = false; + + private static int[][] riverTroll = { { 3, 10, 391, 19, 1 }, + { 11, 20, 392, 40, 1 }, { 21, 40, 393, 80, 3 }, + { 61, 90, 394, 105, 4 }, { 91, 110, 395, 120, 5 }, + { 111, 138, 396, 150, 7 }, }; + + public static void spawnRiverTroll(Player client) { + for (int[] element : riverTroll) { + if (hasRiverTroll == false) { + if (client.combatLevel >= element[0] && client.combatLevel <= element[1] && hasRiverTroll == false) { + NpcHandler.spawnNpc(client, element[2], client.absX + Misc.random(1), client.absY + Misc.random(1), client.heightLevel, 0, element[3], element[4], client.playerLevel[client.playerAttack] * 2, client.playerLevel[client.playerDefence] * 2, true, false); + client.randomActions = 0; + hasRiverTroll = true; + NpcHandler.npcs[element[2]].forceChat("Fishies be mine! Leave dem fishies!"); + } + } + } + } +} \ No newline at end of file diff --git a/2006Redone Server/src/redone/game/content/randomevents/RockGolem.java b/2006Redone Server/src/com/rebotted/game/content/randomevents/RockGolem.java similarity index 81% rename from 2006Redone Server/src/redone/game/content/randomevents/RockGolem.java rename to 2006Redone Server/src/com/rebotted/game/content/randomevents/RockGolem.java index d0bf02ac..9ce11b70 100644 --- a/2006Redone Server/src/redone/game/content/randomevents/RockGolem.java +++ b/2006Redone Server/src/com/rebotted/game/content/randomevents/RockGolem.java @@ -1,30 +1,30 @@ -package redone.game.content.randomevents; - -import redone.game.npcs.NpcHandler; -import redone.game.players.Client; -import redone.util.Misc; - -public class RockGolem { - - public static int[][] rockGolem = { - {3, 10, 413, 19, 1}, - {11, 20, 414, 40, 1}, - {21, 40, 415, 80, 3}, - {61, 90, 416, 105, 4}, - {91, 110, 417, 120, 5}, - {111, 138, 418, 150, 7}, - }; - - public static void spawnRockGolem(Client c) { - for (int[] aRockGolem : rockGolem) { - if(!c.golemSpawned) { - if (c.combatLevel >= aRockGolem[0] && c.combatLevel <= aRockGolem[1]) { - NpcHandler.spawnNpc(c, aRockGolem[2], c.getX() + Misc.random(1), c.getY() + Misc.random(1), c.heightLevel, 0, aRockGolem[3], aRockGolem[4], aRockGolem[4] * 10, aRockGolem[4] * 10, true, false); - c.golemSpawned = true; - NpcHandler.npcs[aRockGolem[2]].forceChat("Raarrrgghh! Flee human!"); - } - } - } - } - -} +package com.rebotted.game.content.randomevents; + +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.game.players.Client; +import com.rebotted.util.Misc; + +public class RockGolem { + + public static int[][] rockGolem = { + {3, 10, 413, 19, 1}, + {11, 20, 414, 40, 1}, + {21, 40, 415, 80, 3}, + {61, 90, 416, 105, 4}, + {91, 110, 417, 120, 5}, + {111, 138, 418, 150, 7}, + }; + + public static void spawnRockGolem(Client c) { + for (int[] aRockGolem : rockGolem) { + if(!c.golemSpawned) { + if (c.combatLevel >= aRockGolem[0] && c.combatLevel <= aRockGolem[1]) { + NpcHandler.spawnNpc(c, aRockGolem[2], c.getX() + Misc.random(1), c.getY() + Misc.random(1), c.heightLevel, 0, aRockGolem[3], aRockGolem[4], aRockGolem[4] * 10, aRockGolem[4] * 10, true, false); + c.golemSpawned = true; + NpcHandler.npcs[aRockGolem[2]].forceChat("Raarrrgghh! Flee human!"); + } + } + } + } + +} diff --git a/2006Redone Server/src/redone/game/content/randomevents/SandwhichLady.java b/2006Redone Server/src/com/rebotted/game/content/randomevents/SandwhichLady.java similarity index 59% rename from 2006Redone Server/src/redone/game/content/randomevents/SandwhichLady.java rename to 2006Redone Server/src/com/rebotted/game/content/randomevents/SandwhichLady.java index aaed48c3..965804b6 100644 --- a/2006Redone Server/src/redone/game/content/randomevents/SandwhichLady.java +++ b/2006Redone Server/src/com/rebotted/game/content/randomevents/SandwhichLady.java @@ -1,160 +1,160 @@ -package redone.game.content.randomevents; - -import redone.game.players.Client; -import redone.util.Misc; - -public class SandwhichLady { - - private static int itemType; - - public static void handleOptions(Client player, int actionbuttonId) { - if (player.hasSandwhichLady) { - switch (actionbuttonId) { - case 63013: - if (itemType == 0) { - player.getPlayerAssistant().closeAllWindows(); - player.getItemAssistant().addItem(2323, 1); - player.getActionSender() - .sendMessage( - "Congratulations, you have completed the random event!"); - } else { - player.getActionSender().sendMessage( - "You have chosen the wrong item!"); - RandomEventHandler.failEvent(player); - } - player.hasSandwhichLady = false; - break; - - case 63014: - if (itemType == 1) { - player.getPlayerAssistant().closeAllWindows(); - player.getItemAssistant().addItem(1971, 1); - player.getActionSender() - .sendMessage( - "Congratulations, you have completed the random event!"); - } else { - player.getActionSender().sendMessage( - "You have chosen the wrong item!"); - RandomEventHandler.failEvent(player); - } - player.hasSandwhichLady = false; - break; - - case 63015: - if (itemType == 2) { - player.getPlayerAssistant().closeAllWindows(); - player.getItemAssistant().addItem(1973, 1); - player.getActionSender() - .sendMessage( - "Congratulations, you have completed the random event!"); - } else { - player.getActionSender().sendMessage( - "You have chosen the wrong item!"); - RandomEventHandler.failEvent(player); - } - player.hasSandwhichLady = false; - break; - - case 63009: - if (itemType == 3) { - player.getPlayerAssistant().closeAllWindows(); - player.getItemAssistant().addItem(6961, 10); - player.getActionSender() - .sendMessage( - "Congratulations, you have completed the random event!"); - } else { - player.getActionSender().sendMessage( - "You have chosen the wrong item!"); - RandomEventHandler.failEvent(player); - } - player.hasSandwhichLady = false; - break; - - case 63010: - if (itemType == 4) { - player.getPlayerAssistant().closeAllWindows(); - player.getItemAssistant().addItem(6962, 1); - player.getActionSender() - .sendMessage( - "Congratulations, you have completed the random event!"); - } else { - player.getActionSender().sendMessage( - "You have chosen the wrong item!"); - RandomEventHandler.failEvent(player); - } - player.hasSandwhichLady = false; - break; - - case 63011: - if (itemType == 5) { - player.getPlayerAssistant().closeAllWindows(); - player.getItemAssistant().addItem(6965, 1); - player.getActionSender().sendMessage("Congratulations, you have completed the random event!"); - } else { - player.getActionSender().sendMessage("You have chosen the wrong item!"); - RandomEventHandler.failEvent(player); - } - player.hasSandwhichLady = false; - break; - - case 63012: - if (itemType == 6) { - player.getPlayerAssistant().closeAllWindows(); - player.getItemAssistant().addItem(2309, 1); - player.getActionSender().sendMessage("Congratulations, you have completed the random event!"); - } else { - player.getActionSender().sendMessage("You have chosen the wrong item!"); - RandomEventHandler.failEvent(player); - } - player.hasSandwhichLady = false; - break; - } - } else if (player.hasSandwhichLady == false && actionbuttonId > 63008 && actionbuttonId < 63116) { - player.getActionSender().sendMessage("You have improperly opened the sandwhich lady interface."); - } - } - - public static void openSandwhichLady(Client player) { - player.hasSandwhichLady = true; - player.getPlayerAssistant().sendFrame126(" ", 16131); - player.getPlayerAssistant().showInterface(16135); - int randomMessage = Misc.random(6); - switch (randomMessage) { - case 0: - player.getPlayerAssistant().sendFrame126("Please select the pie.", - 16145); - itemType = 0; - break; - case 1: - player.getPlayerAssistant().sendFrame126("Please select the kebab.", - 16145); - itemType = 1; - break; - case 2: - player.getPlayerAssistant().sendFrame126( - "Please select the chocolate.", 16145); - itemType = 2; - break; - case 3: - player.getPlayerAssistant().sendFrame126("Please select the bagel.", - 16145); - itemType = 3; - break; - case 4: - player.getPlayerAssistant().sendFrame126( - "Please select the triangle sandwich.", 16145); - itemType = 4; - break; - case 5: - player.getPlayerAssistant().sendFrame126( - "Please select the square sandwich.", 16145); - itemType = 5; - break; - case 6: - player.getPlayerAssistant().sendFrame126("Please select the bread.", - 16145); - itemType = 6; - break; - } - } -} +package com.rebotted.game.content.randomevents; + +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +public class SandwhichLady { + + private static int itemType; + + public static void handleOptions(Player player, int actionbuttonId) { + if (player.hasSandwhichLady) { + switch (actionbuttonId) { + case 63013: + if (itemType == 0) { + player.getPacketSender().closeAllWindows(); + player.getItemAssistant().addItem(2323, 1); + player.getPacketSender() + .sendMessage( + "Congratulations, you have completed the random event!"); + } else { + player.getPacketSender().sendMessage( + "You have chosen the wrong item!"); + RandomEventHandler.failEvent(player); + } + player.hasSandwhichLady = false; + break; + + case 63014: + if (itemType == 1) { + player.getPacketSender().closeAllWindows(); + player.getItemAssistant().addItem(1971, 1); + player.getPacketSender() + .sendMessage( + "Congratulations, you have completed the random event!"); + } else { + player.getPacketSender().sendMessage( + "You have chosen the wrong item!"); + RandomEventHandler.failEvent(player); + } + player.hasSandwhichLady = false; + break; + + case 63015: + if (itemType == 2) { + player.getPacketSender().closeAllWindows(); + player.getItemAssistant().addItem(1973, 1); + player.getPacketSender() + .sendMessage( + "Congratulations, you have completed the random event!"); + } else { + player.getPacketSender().sendMessage( + "You have chosen the wrong item!"); + RandomEventHandler.failEvent(player); + } + player.hasSandwhichLady = false; + break; + + case 63009: + if (itemType == 3) { + player.getPacketSender().closeAllWindows(); + player.getItemAssistant().addItem(6961, 10); + player.getPacketSender() + .sendMessage( + "Congratulations, you have completed the random event!"); + } else { + player.getPacketSender().sendMessage( + "You have chosen the wrong item!"); + RandomEventHandler.failEvent(player); + } + player.hasSandwhichLady = false; + break; + + case 63010: + if (itemType == 4) { + player.getPacketSender().closeAllWindows(); + player.getItemAssistant().addItem(6962, 1); + player.getPacketSender() + .sendMessage( + "Congratulations, you have completed the random event!"); + } else { + player.getPacketSender().sendMessage( + "You have chosen the wrong item!"); + RandomEventHandler.failEvent(player); + } + player.hasSandwhichLady = false; + break; + + case 63011: + if (itemType == 5) { + player.getPacketSender().closeAllWindows(); + player.getItemAssistant().addItem(6965, 1); + player.getPacketSender().sendMessage("Congratulations, you have completed the random event!"); + } else { + player.getPacketSender().sendMessage("You have chosen the wrong item!"); + RandomEventHandler.failEvent(player); + } + player.hasSandwhichLady = false; + break; + + case 63012: + if (itemType == 6) { + player.getPacketSender().closeAllWindows(); + player.getItemAssistant().addItem(2309, 1); + player.getPacketSender().sendMessage("Congratulations, you have completed the random event!"); + } else { + player.getPacketSender().sendMessage("You have chosen the wrong item!"); + RandomEventHandler.failEvent(player); + } + player.hasSandwhichLady = false; + break; + } + } else if (player.hasSandwhichLady == false && actionbuttonId > 63008 && actionbuttonId < 63116) { + player.getPacketSender().sendMessage("You have improperly opened the sandwhich lady interface."); + } + } + + public static void openSandwhichLady(Player c) { + c.hasSandwhichLady = true; + c.getPacketSender().sendFrame126(" ", 16131); + c.getPacketSender().showInterface(16135); + int randomMessage = Misc.random(6); + switch (randomMessage) { + case 0: + c.getPacketSender().sendFrame126("Please select the pie.", + 16145); + itemType = 0; + break; + case 1: + c.getPacketSender().sendFrame126("Please select the kebab.", + 16145); + itemType = 1; + break; + case 2: + c.getPacketSender().sendFrame126( + "Please select the chocolate.", 16145); + itemType = 2; + break; + case 3: + c.getPacketSender().sendFrame126("Please select the bagel.", + 16145); + itemType = 3; + break; + case 4: + c.getPacketSender().sendFrame126( + "Please select the triangle sandwich.", 16145); + itemType = 4; + break; + case 5: + c.getPacketSender().sendFrame126( + "Please select the square sandwich.", 16145); + itemType = 5; + break; + case 6: + c.getPacketSender().sendFrame126("Please select the bread.", + 16145); + itemType = 6; + break; + } + } +} diff --git a/2006Redone Server/src/com/rebotted/game/content/randomevents/Shade.java b/2006Redone Server/src/com/rebotted/game/content/randomevents/Shade.java new file mode 100644 index 00000000..95588a55 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/randomevents/Shade.java @@ -0,0 +1,35 @@ +package com.rebotted.game.content.randomevents; + +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +public class Shade { + + private static int[][] shade = { { 3, 10, 425, 19, 1 }, + { 11, 20, 426, 40, 3 }, { 21, 40, 427, 60, 5 }, + { 41, 60, 428, 80, 8 }, { 61, 90, 429, 105, 11 }, + { 91, 138, 430, 120, 13 }, }; + + public static void spawnShade(Player c) { + for (int[] element : shade) { + if (c.shadeSpawned == false) { + if (c.combatLevel >= element[0] + && c.combatLevel <= element[1]) { + NpcHandler + .spawnNpc(c, element[2], + c.absX + Misc.random(1), c.absY + + Misc.random(1), c.heightLevel, + 0, + element[3], // HP + element[4], // maxhit + (int) (NpcHandler.getNpcListCombat(element[3]) * 1.5), // defence + (int) (NpcHandler.getNpcListCombat(element[3]) * 1.5), + true, false); // attack + c.randomActions = 0; + c.shadeSpawned = true; + } + } + } + } +} \ No newline at end of file diff --git a/2006Redone Server/src/redone/game/content/randomevents/Swarm.java b/2006Redone Server/src/com/rebotted/game/content/randomevents/Swarm.java similarity index 54% rename from 2006Redone Server/src/redone/game/content/randomevents/Swarm.java rename to 2006Redone Server/src/com/rebotted/game/content/randomevents/Swarm.java index 67115cdd..372890a7 100644 --- a/2006Redone Server/src/redone/game/content/randomevents/Swarm.java +++ b/2006Redone Server/src/com/rebotted/game/content/randomevents/Swarm.java @@ -1,65 +1,65 @@ -package -redone.game.content.randomevents; - -import redone.game.npcs.NpcHandler; -import redone.game.players.Client; -import redone.util.Misc; - -/** - * Swarm Event - * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) - */ - -public class Swarm { - - private static int checkStats(Client client, boolean bot) { - if (bot) { - return client.getPlayerAssistant().getLevelForXP(client.playerXP[client.playerHitpoints]) * 3; - } else { - return client.getPlayerAssistant().getLevelForXP(client.playerXP[client.playerHitpoints]) * 2; - } - } - - /** - * Spawns the swarm. - * - * @param c - */ - public static void spawnSwarm(Client client) { - NpcHandler.spawnNpc(client, // param - 411, // npctype - client.absX + Misc.random(1), // posX - client.absY + Misc.random(1), // posY - client.heightLevel, // height - 0, // walkingtype - 1, // HP - 2, // maxhit - checkStats(client, false), - 3 * client.combatLevel, // defence - true, // attackplayer - false); // headicon - client.autoRet = 0; - } - - /** - * Spawns the swarm. If suspect a botter ... this one is stronger, botter - * has to react faster to survive. - * - * @param c - */ - public static void checkBot(Client client) { - NpcHandler.spawnNpc(client, // param - 411, // npctype - client.absX + Misc.random(1), // posX - client.absY + Misc.random(1), // posY - client.heightLevel, // height - 0, // walkingtype - 1, // HP - 6, // maxhit - checkStats(client, true), // attack - 4 * client.combatLevel, // defence - true, // attackplayer - false); // headicon - client.autoRet = 0; - } -} +package com.rebotted.game.content.randomevents; + +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +/** + * Swarm Event + * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) + */ + +public class Swarm { + + private static int checkStats(Player c, boolean bot) { + if (bot) { + return c.getPlayerAssistant().getLevelForXP(c.playerXP[c.playerHitpoints]) * 3; + } else { + return c.getPlayerAssistant().getLevelForXP(c.playerXP[c.playerHitpoints]) * 2; + } + } + + /** + * Spawns the swarm. + * + * @param c + */ + public static void spawnSwarm(Player c) { + NpcHandler.spawnNpc(c, // param + 411, // npctype + c.absX + Misc.random(1), // posX + c.absY + Misc.random(1), // posY + c.heightLevel, // height + 0, // walkingtype + 1, // HP + 2, // maxhit + checkStats(c, false), + 3 * c.combatLevel, // defence + true, // attackplayer + false); // headicon + c.autoRet = 0; + } + + /** + * Spawns the swarm. If suspect a botter ... this one is stronger, botter + * has to react faster to survive. + * + * @param c + */ + public static void checkBot(Client client) { + NpcHandler.spawnNpc(client, // param + 411, // npctype + client.absX + Misc.random(1), // posX + client.absY + Misc.random(1), // posY + client.heightLevel, // height + 0, // walkingtype + 1, // HP + 6, // maxhit + checkStats(client, true), // attack + 4 * client.combatLevel, // defence + true, // attackplayer + false); // headicon + client.autoRet = 0; + } +} diff --git a/2006Redone Server/src/com/rebotted/game/content/randomevents/TreeSpirit.java b/2006Redone Server/src/com/rebotted/game/content/randomevents/TreeSpirit.java new file mode 100644 index 00000000..d5c81de8 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/randomevents/TreeSpirit.java @@ -0,0 +1,35 @@ +package com.rebotted.game.content.randomevents; + +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +public class TreeSpirit { + + private static int[][] treeSpirit = { + // combat, combat 2, npcid, hitpoints, levels + { 3, 10, 438, 28, 1 }, { 11, 20, 439, 36, 1 }, + { 21, 40, 440, 57, 3 }, { 61, 90, 441, 90, 4 }, + { 91, 110, 442, 130, 5 }, { 111, 138, 443, 160, 7 }, }; + + private static int checkStats(Player p) { + return p.getPlayerAssistant().getLevelForXP(p.playerXP[p.playerHitpoints]) * 2; + } + + public static void spawnTreeSpirit(Player p) { + for (int[] element : treeSpirit) { + if (p.treeSpiritSpawned == false) { + if (p.combatLevel >= element[0] && p.combatLevel <= element[1]) { + NpcHandler.spawnNpc(p, element[2], p.absX + Misc.random(1), + p.absY + Misc.random(1), p.heightLevel, 0, element[3], + element[4], checkStats(p), p.playerLevel[p.playerDefence] * 2, true, + false); + NpcHandler.npcs[element[2]] + .forceChat("Leave these woods and never return!"); + p.treeSpiritSpawned = true; + p.randomActions = 0; + } + } + } + } +} \ No newline at end of file diff --git a/2006Redone Server/src/redone/game/content/randomevents/Zombie.java b/2006Redone Server/src/com/rebotted/game/content/randomevents/Zombie.java similarity index 77% rename from 2006Redone Server/src/redone/game/content/randomevents/Zombie.java rename to 2006Redone Server/src/com/rebotted/game/content/randomevents/Zombie.java index ddebad19..3aa39fde 100644 --- a/2006Redone Server/src/redone/game/content/randomevents/Zombie.java +++ b/2006Redone Server/src/com/rebotted/game/content/randomevents/Zombie.java @@ -1,28 +1,28 @@ -package redone.game.content.randomevents; - -import redone.game.npcs.NpcHandler; -import redone.game.players.Client; -import redone.util.Misc; - -public class Zombie { - - private static int[][] zombie = { { 3, 10, 419, 28, 2, 10, 10 }, - { 11, 20, 420, 36, 4, 20, 20 }, { 21, 40, 421, 57, 6, 30, 30 }, - { 61, 90, 422, 90, 8, 40, 40 }, { 91, 110, 423, 130, 10, 50, 50 }, - { 111, 138, 424, 160, 12, 60, 60 } }; - - public static void spawnZombie(Client c) { - for (int[] element : zombie) { - if (c.zombieSpawned == false) { - if (c.combatLevel >= element[0] && c.combatLevel <= element[1]) { - NpcHandler.spawnNpc(c, element[2], c.absX + Misc.random(1), - c.absY + Misc.random(1), c.heightLevel, 0, element[3], - element[4], element[5], element[6], true, false); - c.randomActions = 0; - c.zombieSpawned = true; - NpcHandler.npcs[element[2]].forceChat("Braaaainssss!"); - } - } - } - } +package com.rebotted.game.content.randomevents; + +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +public class Zombie { + + private static int[][] zombie = { { 3, 10, 419, 28, 2, 10, 10 }, + { 11, 20, 420, 36, 4, 20, 20 }, { 21, 40, 421, 57, 6, 30, 30 }, + { 61, 90, 422, 90, 8, 40, 40 }, { 91, 110, 423, 130, 10, 50, 50 }, + { 111, 138, 424, 160, 12, 60, 60 } }; + + public static void spawnZombie(Player c) { + for (int[] element : zombie) { + if (c.zombieSpawned == false) { + if (c.combatLevel >= element[0] && c.combatLevel <= element[1]) { + NpcHandler.spawnNpc(c, element[2], c.absX + Misc.random(1), + c.absY + Misc.random(1), c.heightLevel, 0, element[3], + element[4], element[5], element[6], true, false); + c.randomActions = 0; + c.zombieSpawned = true; + NpcHandler.npcs[element[2]].forceChat("Braaaainssss!"); + } + } + } + } } \ No newline at end of file diff --git a/2006Redone Server/src/redone/game/content/skills/Menus.java b/2006Redone Server/src/com/rebotted/game/content/skills/Menus.java similarity index 56% rename from 2006Redone Server/src/redone/game/content/skills/Menus.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/Menus.java index aa309b4c..1efe4bb7 100644 --- a/2006Redone Server/src/redone/game/content/skills/Menus.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/Menus.java @@ -1,6 +1,6 @@ -package redone.game.content.skills; +package com.rebotted.game.content.skills; -import redone.game.players.Client; +import com.rebotted.game.players.Client; /** * Created by IntelliJ IDEA. User: vayken Date: 21/12/11 Time: 13:55 To change @@ -16,15 +16,15 @@ public class Menus { } public static void display4Item(Client player, int i1, int i2, int i3, int i4, String s1, String s2, String s3, String s4) { - player.getPlayerAssistant().sendItemOnInterface(8902, 250, i1); - player.getPlayerAssistant().sendItemOnInterface(8903, 150, i2); - player.getPlayerAssistant().sendItemOnInterface(8904, 200, i3); - player.getPlayerAssistant().sendItemOnInterface(8905, 250, i4); - player.getPlayerAssistant().sendFrame126(s1, 8909); - player.getPlayerAssistant().sendFrame126(s2, 8913); - player.getPlayerAssistant().sendFrame126(s3, 8917); - player.getPlayerAssistant().sendFrame126(s4, 8921); - player.getPlayerAssistant().sendChatInterface(8899); + player.getPacketSender().sendItemOnInterface(8902, 250, i1); + player.getPacketSender().sendItemOnInterface(8903, 150, i2); + player.getPacketSender().sendItemOnInterface(8904, 200, i3); + player.getPacketSender().sendItemOnInterface(8905, 250, i4); + player.getPacketSender().sendFrame126(s1, 8909); + player.getPacketSender().sendFrame126(s2, 8913); + player.getPacketSender().sendFrame126(s3, 8917); + player.getPacketSender().sendFrame126(s4, 8921); + player.getPacketSender().sendChatInterface(8899); } public static String determineAorAn(String nextWord) { diff --git a/2006Redone Server/src/com/rebotted/game/content/skills/SkillHandler.java b/2006Redone Server/src/com/rebotted/game/content/skills/SkillHandler.java new file mode 100644 index 00000000..cc53a3ed --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/skills/SkillHandler.java @@ -0,0 +1,187 @@ +package com.rebotted.game.content.skills; + +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.content.skills.cooking.Cooking; +import com.rebotted.game.content.skills.core.Fishing; +import com.rebotted.game.content.skills.core.Mining; +import com.rebotted.game.content.skills.core.Woodcutting; +import com.rebotted.game.content.skills.herblore.Herblore; +import com.rebotted.game.content.skills.smithing.Smelting; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Player; + +/** + * Skillhandler + * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) + */ + +public class SkillHandler { + + public static final int SKILLING_EXP = 1; + public static boolean view190 = false; + private static long lastAction = 0; + public static boolean[] isSkilling = new boolean[25]; + public static long lastSkillingAction; + + public static boolean FISHING = true, AGILITY = true, COOKING = true, + FIREMAKING = true, HERBLORE = true, MINING = true, + RUNECRAFTING = true, THIEVING = true, WOODCUTTING = true, + PRAYER = true, FLETCHING = true, CRAFTING = true, MAGIC = true, + FARMING = false, SLAYER = true, SMITHING = true; + + public static boolean isSkilling(Player player) { + if (player.playerSkilling[10] || player.playerStun || player.playerSkilling[12] + || player.playerIsFletching || player.isFletching || player.playerIsCooking + || player.isMining || player.isWoodcutting || player.isSmithing + || player.isSmelting || player.isSpinning || player.isPotionMaking + || player.isPotCrafting || player.isFiremaking + || player.playerSkilling[player.playerHerblore] == true + || player.playerSkilling[13]) { + return true; + } + return false; + } + + + public static void resetItemOnNpc(Player player) { + if (player.isMining) {// mining + Mining.resetMining(player); + } else if (player.playerIsFletching == true) {// fletching + player.playerIsFletching = false; + } else if (player.playerIsCooking) {// cooking + Cooking.resetCooking(player); + } else if (player.isSmithing) {// smithing + player.isSmithing = false; + } else if (isSkilling[12]) {// crafting + isSkilling[12] = false; + } else if (player.isSmelting) { + player.isSmelting = false; + } else if (player.isCrafting == true) { + player.isCrafting = false; + } else if (player.isPotionMaking) {// herblore + Herblore.resetHerblore(player); + } else if (player.isWoodcutting) {// woodcutting + Woodcutting.stopWoodcutting(player); + } else if (player.isSpinning) {// spinning + player.isSpinning = false; + } else if (player.isPotCrafting == true) {// pot crafting + player.isPotCrafting = false; + } else if (player.playerIsCooking) {// cooking + Cooking.resetCooking(player); + } else if (player.playerSkilling[13]) {// smelting + Smelting.resetSmelting(player); + } + } + + public static void resetSkills(Player player) {// call when walking, dropping, + // picking up, leveling up + if (player.playerSkilling[10]) {// fishing + Fishing.resetFishing(player); + } else if (player.isMining) {// mining + Mining.resetMining(player); + } else if (player.playerIsFletching == true) {// fletching + player.playerIsFletching = false; + } else if (player.playerIsCooking) {// cooking + Cooking.resetCooking(player); + } else if (player.isSmithing) {// smithing + player.isSmithing = false; + } else if (isSkilling[12]) {// crafting + isSkilling[12] = false; + } else if (player.isSmelting) { + player.isSmelting = false; + } else if (player.isCrafting == true) { + player.isCrafting = false; + } else if (player.isPotionMaking) {// herblore + Herblore.resetHerblore(player); + } else if (player.isWoodcutting) {// woodcutting + Woodcutting.stopWoodcutting(player); + } else if (player.isSpinning) {// spinning + player.isSpinning = false; + } else if (player.isPotCrafting == true) {// pot crafting + player.isPotCrafting = false; + } + } + + public static boolean canDoAction(int timer) { + if (System.currentTimeMillis() >= lastAction) { + lastAction = System.currentTimeMillis() + timer; + return true; + } + return false; + } + + public static boolean membersOnly(Player c) { + if (c.membership == false) { + c.getPacketSender() + .sendMessage("This is a members only skill."); + return false; + } + return true; + } + + public static boolean noInventorySpace(Player c, String skill) { + if (c.getItemAssistant().freeSlots() == 0) { + c.getPacketSender().sendMessage( + "You don't have enough inventory space to continue " + + skill + "!"); + return false; + } + return true; + } + + public static void deleteTime(Player c) { + c.doAmount--; + } + + public static void stopEvents(Player player, int eventId) { + CycleEventHandler.getSingleton().stopEvents(player, eventId); + } + + public static void send1Item(Player c, int itemId) { + c.getPacketSender().sendFrame246(1746, view190 ? 190 : 150, itemId); + c.getPacketSender().sendFrame126( + getLine(c) + "" + ItemAssistant.getItemName(itemId) + "", 2799); + c.getPacketSender().sendChatInterface(4429); + } + + public static boolean playerHasItem(Player c, String itemName, + String skill, int itemID) { + if (!c.getItemAssistant().playerHasItem(itemID, 1)) { + c.getPacketSender().sendMessage( + "You dont have any " + itemName + " to continue " + skill + + "!"); + c.getDialogueHandler().sendStatement( + "You dont have any " + itemID + " to continue " + skill + + "!"); + return false; + } + return true; + } + + public static void resetPlayerSkillVariables(Player c) { + for (int i = 0; i < 20; i++) { + if (c.playerSkilling[i]) { + for (int l = 0; l < 15; l++) { + c.playerSkillProp[i][l] = -1; + } + } + } + } + + public static boolean hasRequiredLevel(final Player c, int id, int lvlReq, + String skill, String event) { + if (c.playerLevel[id] < lvlReq) { + c.getPacketSender().sendMessage( + "You don't have a high enough " + skill + " level to " + + event + "."); + return false; + } + return true; + } + + public static String getLine(Player c) { + return c.below459 ? "\\n\\n\\n\\n" : "\\n\\n\\n\\n\\n"; + } + + +} diff --git a/2006Redone Server/src/redone/game/content/skills/SkillInterfaces.java b/2006Redone Server/src/com/rebotted/game/content/skills/SkillInterfaces.java similarity index 96% rename from 2006Redone Server/src/redone/game/content/skills/SkillInterfaces.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/SkillInterfaces.java index f1464d68..e1afe116 100644 --- a/2006Redone Server/src/redone/game/content/skills/SkillInterfaces.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/SkillInterfaces.java @@ -1,2411 +1,2411 @@ -package redone.game.content.skills; - -import redone.game.players.Client; - -public class SkillInterfaces { - - private final Client c; - - public int selected; - - private final int item[] = new int[40]; - - public SkillInterfaces(Client client) { - c = client; - } - - /* - * @param screen - * - * @return Used to call all of the menus, redundant No change needed to the - * method no matter How many menus added - */ - public void menuCompilation(int screen) { - if (selected == 0) { - attackComplex(screen); - } else if (selected == 1) { - strengthComplex(screen); - } else if (selected == 2) { - defenceComplex(screen); - } else if (selected == 3) { - rangedComplex(screen); - } else if (selected == 4) { - prayerComplex(screen); - } else if (selected == 5) { - magicComplex(screen); - } else if (selected == 6) { - runecraftingComplex(screen); - } else if (selected == 7) { - hitpointsComplex(screen); - } else if (selected == 8) { - agilityComplex(screen); - } else if (selected == 9) { - herbloreComplex(screen); - } else if (selected == 10) { - thievingComplex(screen); - } else if (selected == 11) { - craftingComplex(screen); - } else if (selected == 12) { - fletchingComplex(screen); - } else if (selected == 13) { - slayerComplex(screen); - } else if (selected == 14) { - miningComplex(screen); - } else if (selected == 15) { - smithingComplex(screen); - } else if (selected == 16) { - fishingComplex(screen); - } else if (selected == 17) { - cookingComplex(screen); - } else if (selected == 18) { - firemakingComplex(screen); - } else if (selected == 19) { - woodcuttingComplex(screen); - } else if (selected == 20) { - farmingComplex(screen); - } - } - - /** - * @param title - * @param currentTab - * @param write - * [] - * @return Used to shorten the sidebar tab texts, shortens by up to 12x, - * Also includes the title of the menu and the current tab - */ - private void optionTab(String title, String currentTab, String op1, - String op2, String op3, String op4, String op5, String op6, - String op7, String op8, String op9, String op10, String op11, - String op12, String op13) { - if (SkillHandler.isSkilling(c)) { - c.getActionSender().sendMessage( - "You can't open this while skilling!"); - return; - } - c.getPlayerAssistant().sendFrame126(title, 8716); - c.getPlayerAssistant().sendFrame126(currentTab, 8849); - c.getPlayerAssistant().sendFrame126(op1, 8846); - c.getPlayerAssistant().sendFrame126(op2, 8823); - c.getPlayerAssistant().sendFrame126(op3, 8824); - c.getPlayerAssistant().sendFrame126(op4, 8827); - c.getPlayerAssistant().sendFrame126(op5, 8837); - c.getPlayerAssistant().sendFrame126(op6, 8840); - c.getPlayerAssistant().sendFrame126(op7, 8843); - c.getPlayerAssistant().sendFrame126(op8, 8859); - c.getPlayerAssistant().sendFrame126(op9, 8862); - c.getPlayerAssistant().sendFrame126(op10, 8865); - c.getPlayerAssistant().sendFrame126(op11, 15303); - c.getPlayerAssistant().sendFrame126(op12, 15306); - c.getPlayerAssistant().sendFrame126(op13, 15309); - c.getPlayerAssistant().showInterface(8714); - } - - /** - * @param levels - * @param lines - * @param ids - * @param lineCounter - * @return Used to reduce code by 3x. Contains the item on interface, Level - * text, and the item description, along with the line Counter to - * ensure it is placed in the right spot - */ - private void menuLine(final String levels, final String lines, - final int ids, final int lineCounter) { - if (SkillHandler.isSkilling(c)) { - return; - } - c.getPlayerAssistant().sendFrame126(lines, 8760 + lineCounter); - c.getPlayerAssistant().sendFrame126(levels, 8720 + lineCounter); - item[0 + lineCounter] = ids; - writeInterfaceItem(item); - } - - /** - * Clears the menus - */ - private void clearMenu() { - for (int i = 0; i < 39; i++) { - item[i] = 0; - } - for (int i = 8720; i < 8799; i++) { - c.getPlayerAssistant().sendFrame126("", i); - } - } - - /** - * @param id - * [] - * @return Used to place the item on the interface - */ - private void writeInterfaceItem(int id[]) { - synchronized (c) { - c.outStream.createFrameVarSizeWord(53); - c.outStream.writeWord(8847); // 8847 - c.outStream.writeWord(id.length); - for (int element : id) { - c.outStream.writeByte(1); - if (element > 0) { - c.outStream.writeWordBigEndianA(element + 1); - } else { - c.outStream.writeWordBigEndianA(0); - } - } - c.outStream.endFrameVarSizeWord(); - c.flushOutStream(); - } - } - - /** - * Skill ID: 0 - * - * @param screen - * @return - */ - public void attackComplex(int screen) { - if (screen == 1) { - clearMenu(); - String level = "1"; - String type = "Bronze"; - menuLine(level, type + " Dagger", 1205, 0); - menuLine(level, type + " Axe", 1351, 1); - menuLine(level, type + " Mace", 1422, 2); - menuLine(level, type + " Claws", 3095, 3); - menuLine(level, type + " Sword", 1277, 4); - menuLine(level, type + " Longsword", 1291, 5); - menuLine(level, type + " Scimitar", 1321, 6); - menuLine(level, type + " Spear", 1237, 7); - menuLine(level, type + " Warhammer", 1337, 8); - menuLine(level, type + " Battleaxe", 1375, 9); - menuLine(level, type + " Two-Handed Sword", 1307, 10); - menuLine(level, type + " Halberd", 3190, 11); - optionTab("Attack", type, "Bronze", "Iron", "Steel", "Black", - "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", - "Special", "", ""); - } else if (screen == 2) { - clearMenu(); - String level = "1"; - String type = "Iron"; - menuLine(level, type + " Dagger", 1203, 0); - menuLine(level, type + " Axe", 1349, 1); - menuLine(level, type + " Mace", 1420, 2); - menuLine(level, type + " Claws", 3096, 3); - menuLine(level, type + " Sword", 1279, 4); - menuLine(level, type + " Longsword", 1293, 5); - menuLine(level, type + " Scimitar", 1323, 6); - menuLine(level, type + " Spear", 1239, 7); - menuLine(level, type + " Warhammer", 1335, 8); - menuLine(level, type + " Battleaxe", 1363, 9); - menuLine(level, type + " Two-Handed Sword", 1309, 10); - menuLine(level, type + " Halberd", 3192, 11); - optionTab("Attack", type + "", "Bronze", "Iron", "Steel", "Black", - "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", - "Special", "", ""); - } else if (screen == 3) { - clearMenu(); - String level = "5"; - String type = "Steel"; - menuLine(level, type + " Dagger", 1207, 0); - menuLine(level, type + " Axe", 1353, 1); - menuLine(level, type + " Mace", 1424, 2); - menuLine(level, type + " Claws", 3097, 3); - menuLine(level, type + " Sword", 1281, 4); - menuLine(level, type + " Longsword", 1295, 5); - menuLine(level, type + " Scimitar", 1325, 6); - menuLine(level, type + " Spear", 1241, 7); - menuLine(level, type + " Warhammer", 1339, 8); - menuLine(level, type + " Battleaxe", 1365, 9); - menuLine(level, type + " Two-Handed Sword", 1311, 10); - menuLine(level, type + " Halberd", 3194, 11); - optionTab("Attack", type, "Bronze", "Iron", "Steel", "Black", - "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", - "Special", "", ""); - } else if (screen == 4) { - clearMenu(); - String level = "10"; - String type = "Black"; - menuLine(level, type + " Dagger", 1217, 0); - menuLine(level, type + " Axe", 1361, 1); - menuLine(level, type + " Mace", 1426, 2); - menuLine(level, type + " Claws", 3098, 3); - menuLine(level, type + " Sword", 1283, 4); - menuLine(level, type + " Longsword", 1297, 5); - menuLine(level, type + " Scimitar", 1327, 6); - menuLine(level, type + " Spear", 4580, 7); - menuLine(level, type + " Warhammer", 1341, 8); - menuLine(level, type + " Battleaxe", 1367, 9); - menuLine(level, type + " Two-Handed Sword", 1313, 10); - menuLine(level, type + " Halberd", 3196, 11); - optionTab("Attack", type, "Bronze", "Iron", "Steel", "Black", - "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", - "Special", "", ""); - } else if (screen == 5) { - clearMenu(); - String level = "10"; - String type = "White"; - menuLine(level, type + " Dagger", 6591, 0); - menuLine(level, type + " Mace", 6601, 1); - menuLine(level, type + " Claws", 6587, 2); - menuLine(level, type + " Sword", 6605, 3); - menuLine(level, type + " Longsword", 6607, 4); - menuLine(level, type + " Scimitar", 6611, 5); - menuLine(level, type + " Warhammer", 6613, 6); - menuLine(level, type + " Battleaxe", 6589, 7); - menuLine(level, type + " Two-Handed Sword", 6609, 8); - menuLine(level, type + " Halberd", 6599, 9); - optionTab("Attack", type, "Bronze", "Iron", "Steel", "Black", - "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", - "Special", "", ""); - } else if (screen == 6) { - clearMenu(); - String level = "20"; - String type = "Mithril"; - menuLine(level, type + " Dagger", 1209, 0); - menuLine(level, type + " Axe", 1355, 1); - menuLine(level, type + " Mace", 1428, 2); - menuLine(level, type + " Claws", 3099, 3); - menuLine(level, type + " Sword", 1285, 4); - menuLine(level, type + " Longsword", 1299, 5); - menuLine(level, type + " Scimitar", 1329, 6); - menuLine(level, type + " Spear", 1243, 7); - menuLine(level, type + " Warhammer", 1343, 8); - menuLine(level, type + " Battleaxe", 1369, 9); - menuLine(level, type + " Two-Handed Sword", 1315, 10); - menuLine(level, type + " Halberd", 3198, 11); - optionTab("Attack", type, "Bronze", "Iron", "Steel", "Black", - "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", - "Special", "", ""); - } else if (screen == 7) { - clearMenu(); - String level = "30"; - String type = "Adamant"; - menuLine(level, type + " Dagger", 1211, 0); - menuLine(level, type + " Axe", 1357, 1); - menuLine(level, type + " Mace", 1430, 2); - menuLine(level, type + " Claws", 3100, 3); - menuLine(level, type + " Sword", 1287, 4); - menuLine(level, type + " Longsword", 1301, 5); - menuLine(level, type + " Scimitar", 1331, 6); - menuLine(level, type + " Spear", 1245, 7); - menuLine(level, type + " Warhammer", 1345, 8); - menuLine(level, type + " Battleaxe", 1371, 9); - menuLine(level, type + " Two-Handed Sword", 1317, 10); - menuLine(level, type + " Halberd", 3200, 11); - optionTab("Attack", type, "Bronze", "Iron", "Steel", "Black", - "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", - "Special", "", ""); - } else if (screen == 8) { - clearMenu(); - String level = "40"; - String type = "Rune"; - menuLine(level, type + " Dagger", 1213, 0); - menuLine(level, type + " Axe", 1359, 1); - menuLine(level, type + " Mace", 1432, 2); - menuLine(level, type + " Claws", 3101, 3); - menuLine(level, type + " Sword", 1289, 4); - menuLine(level, type + " Longsword", 1303, 5); - menuLine(level, type + " Scimitar", 1333, 6); - menuLine(level, type + " Spear", 1247, 7); - menuLine(level, type + " Warhammer", 1347, 8); - menuLine(level, type + " Battleaxe", 1373, 9); - menuLine(level, type + " Two-Handed Sword", 1319, 10); - menuLine(level, type + " Halberd", 3202, 11); - optionTab("Attack", type, "Bronze", "Iron", "Steel", "Black", - "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", - "Special", "", ""); - } else if (screen == 9) { - clearMenu(); - String level = "60"; - String type = "Dragon"; - menuLine(level, type + " Dagger", 1215, 0); - menuLine(level, type + " Axe", 6739, 1); - menuLine(level, type + " Mace", 1434, 2); - menuLine(level, type + " Longsword", 1305, 3); - menuLine(level, type + " Scimitar", 4587, 4); - menuLine(level, type + " Spear", 1249, 5); - menuLine(level, type + " Battleaxe", 1377, 6); - menuLine(level, type + " Two-Handed Sword", 7158, 7); - menuLine(level, type + " Halberd", 3204, 8); - optionTab("Attack", type, "Bronze", "Iron", "Steel", "Black", - "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", - "Special", "", ""); - } else if (screen == 10) { - clearMenu(); - String level = "70"; - String type = "Barrows"; - menuLine(level, "Ahrim's Staff(With 70 Magic)", 4710, 0); - menuLine(level, "Dharok's Greataxe(With 70 Strength)", 4718, 1); - menuLine(level, "Guthan's Spear", 4726, 2); - menuLine(level, "Torag's Hammers(With 70 Strength", 4747, 3); - menuLine(level, "Verac's Flail", 4755, 4); - optionTab("Attack", type, "Bronze", "Iron", "Steel", "Black", - "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", - "Special", "", ""); - } else if (screen == 11) { - clearMenu(); - menuLine("50", "Leaf-Bladed Spear(With 55 Slayer)", 4158, 0); - menuLine("50", "Ancient Staff(With 50 Magic)", 4675, 1); - menuLine("60", "TokTz-Xil-Ak(Obsidian Sword)", 6523, 2); - menuLine("60", "TzHaar-Ket-Om(Obsidian Maul)", 6528, 3); - menuLine("60", "TokTz-Xil-Ek(Obsidian Knife)", 6525, 4); - menuLine("60", "TokTz-Mej-Tal(Obsidian Staff)", 6526, 5); - menuLine("60", "TokTz-Ket-Em(Obsidian Mace)", 6527, 6); - menuLine("70", "Abyssal Whip", 4151, 7); - optionTab("Attack", "Special", "Bronze", "Iron", "Steel", "Black", - "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", - "Special", "", ""); - } - } - - /* - * Skill ID: 1 - * - * @param screen - * - * @return - */ - public void strengthComplex(int screen) { - if (screen == 1) { - clearMenu(); - menuLine("5", "Black Halberd(With 10 Attack)", 3196, 0); - menuLine("5", "White Halberd(With 10 Attack)", 6599, 1); - menuLine("10", "Mithril Halberd(With 20 Attack)", 3198, 2); - menuLine("15", "Adamant Halberd(With 30 Attack)", 3200, 3); - menuLine("20", "Rune Halberd(With 40 Attack)", 3202, 4); - menuLine("30", "Dragon Halberd(With 60 Attack)", 3204, 5); - menuLine("50", "Granite Maul(With 50 Attack)", 4153, 6); - menuLine("60", "TzHaar-Ket-Om(Obsidian Maul)", 6528, 7); - menuLine("70", "Dharok's Greataxe(With 70 Attack)", 4718, 8); - menuLine("70", "Torag's Hammers(With 70 Attack)", 4747, 9); - optionTab("Strength", "Weaponry", "Weaponry", "Armor", - "", "", "", "", "", "", "", "", "", "", ""); - } - - else if (screen == 2) { - clearMenu(); - menuLine("50", "Granite Shield(With 50 Defence)", 3122, 0); - optionTab("Strength", "Armor", "Weaponry", "Armor", "", - "", "", "", "", "", "", "", "", "", ""); - } - } - - /* - * Skill ID: 2 - * - * @param screen - * - * @return - */ - public void defenceComplex(int screen) { - if (screen == 1) { - clearMenu(); - String level = "1"; - String type = "Bronze"; - menuLine(level, type + " Square Shield", 1173, 0); - menuLine(level, type + " Kiteshield", 1189, 1); - menuLine(level, type + " Medium Helm", 1139, 2); - menuLine(level, type + " Full Helm", 1155, 3); - menuLine(level, type + " Chainbody", 1103, 4); - menuLine(level, type + " Platebody", 1117, 5); - menuLine(level, type + " Plateskirt", 1087, 6); - menuLine(level, type + " Platelegs", 1075, 7); - menuLine(level, type + " Boots", 4119, 8); - optionTab("Defence", type, "Bronze", "Iron", "Steel", "Black", - "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", - "Magic", "Equipment", ""); - } - - else if (screen == 2) { - clearMenu(); - String level = "1"; - String type = "Iron"; - menuLine(level, type + " Square Shield", 1175, 0); - menuLine(level, type + " Kiteshield", 1191, 1); - menuLine(level, type + " Medium Helm", 1137, 2); - menuLine(level, type + " Full Helm", 1153, 3); - menuLine(level, type + " Chainbody", 1101, 4); - menuLine(level, type + " Platebody", 1115, 5); - menuLine(level, type + " Plateskirt", 1081, 6); - menuLine(level, type + " Platelegs", 1067, 7); - menuLine(level, type + " Boots", 4121, 8); - optionTab("Defence", type, "Bronze", "Iron", "Steel", "Black", - "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", - "Magic", "Equipment", ""); - } - - else if (screen == 3) { - clearMenu(); - String level = "5"; - String type = "Steel"; - menuLine(level, type + " Square Shield", 1177, 0); - menuLine(level, type + " Kiteshield", 1193, 1); - menuLine(level, type + " Medium Helm", 1141, 2); - menuLine(level, type + " Full Helm", 1157, 3); - menuLine(level, type + " Chainbody", 1105, 4); - menuLine(level, type + " Platebody", 1119, 5); - menuLine(level, type + " Plateskirt", 1083, 6); - menuLine(level, type + " Platelegs", 1069, 7); - menuLine(level, type + " Boots", 4123, 8); - optionTab("Defence", type, "Bronze", "Iron", "Steel", "Black", - "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", - "Magic", "Equipment", ""); - } - - else if (screen == 4) { - clearMenu(); - String level = "10"; - String type = "Black"; - menuLine(level, type + " Square Shield", 1179, 0); - menuLine(level, type + " Kiteshield", 1195, 1); - menuLine(level, type + " Medium Helm", 1151, 2); - menuLine(level, type + " Full Helm", 1165, 3); - menuLine(level, type + " Chainbody", 1107, 4); - menuLine(level, type + " Platebody", 1125, 5); - menuLine(level, type + " Plateskirt", 1089, 6); - menuLine(level, type + " Platelegs", 1077, 7); - menuLine(level, type + " Boots", 4125, 8); - optionTab("Defence", type, "Bronze", "Iron", "Steel", "Black", - "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", - "Magic", "Equipment", ""); - } - - else if (screen == 5) { - clearMenu(); - String level = "10"; - String type = "White"; - menuLine(level, type + " Square Shield", 6631, 0); - menuLine(level, type + " Kiteshield", 6633, 1); - menuLine(level, type + " Medium Helm", 6621, 2); - menuLine(level, type + " Full Helm", 6623, 3); - menuLine(level, type + " Chainbody", 6615, 4); - menuLine(level, type + " Platebody", 6617, 5); - menuLine(level, type + " Plateskirt", 6627, 6); - menuLine(level, type + " Platelegs", 6625, 7); - menuLine(level, type + " Boots", 6619, 8); - optionTab("Defence", type, "Bronze", "Iron", "Steel", "Black", - "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", - "Magic", "Equipment", ""); - } - - else if (screen == 6) { - clearMenu(); - String level = "20"; - String type = "Mithril"; - menuLine(level, type + " Square Shield", 1181, 0); - menuLine(level, type + " Kiteshield", 1197, 1); - menuLine(level, type + " Medium Helm", 1143, 2); - menuLine(level, type + " Full Helm", 1159, 3); - menuLine(level, type + " Chainbody", 1109, 4); - menuLine(level, type + " Platebody", 1121, 5); - menuLine(level, type + " Plateskirt", 1085, 6); - menuLine(level, type + " Platelegs", 1071, 7); - menuLine(level, type + " Boots", 4127, 8); - optionTab("Defence", type, "Bronze", "Iron", "Steel", "Black", - "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", - "Magic", "Equipment", ""); - } - - else if (screen == 7) { - clearMenu(); - String level = "30"; - String type = "Adamant"; - menuLine(level, type + " Square Shield", 1183, 0); - menuLine(level, type + " Kiteshield", 1199, 1); - menuLine(level, type + " Medium Helm", 1145, 2); - menuLine(level, type + " Full Helm", 1161, 3); - menuLine(level, type + " Chainbody", 1111, 4); - menuLine(level, type + " Platebody", 1123, 5); - menuLine(level, type + " Plateskirt", 1091, 6); - menuLine(level, type + " Platelegs", 1073, 7); - menuLine(level, type + " Boots", 4129, 8); - optionTab("Defence", type, "Bronze", "Iron", "Steel", "Black", - "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", - "Magic", "Equipment", ""); - } - - else if (screen == 8) { - clearMenu(); - String level = "40"; - String type = "Rune"; - menuLine(level, type + " Square Shield", 1185, 0); - menuLine(level, type + " Kiteshield", 1201, 1); - menuLine(level, type + " Medium Helm", 1147, 2); - menuLine(level, type + " Full Helm", 1163, 3); - menuLine(level, type + " Chainbody", 1113, 4); - menuLine(level, type + " Platebody", 1127, 5); - menuLine(level, type + " Plateskirt", 1093, 6); - menuLine(level, type + " Platelegs", 1079, 7); - menuLine(level, type + " Boots", 4131, 8); - optionTab("Defence", type, "Bronze", "Iron", "Steel", "Black", - "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", - "Magic", "Equipment", ""); - } - - else if (screen == 9) { - clearMenu(); - String level = "60"; - String type = "Dragon"; - menuLine(level, type + " Square Shield", 1187, 0); - menuLine(level, type + " Medium Helm", 1149, 1); - menuLine(level, type + " Chainbody", 3140, 2); - menuLine(level, type + " Plateskirt", 4585, 3); - menuLine(level, type + " Platelegs", 4087, 4); - optionTab("Defence", type, "Bronze", "Iron", "Steel", "Black", - "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", - "Magic", "Equipment", ""); - } - - else if (screen == 10) { - clearMenu(); - String level = "70"; - menuLine(level, "Ahrim's Hood(With 70 Magic)", 4708, 0); - menuLine(level, "Ahrim's Robe Top(With 70 Magic)", 4712, 1); - menuLine(level, "Ahrim's Robeskirt(With 70 Magic)", 4714, 2); - menuLine(level, "Dharok's Helm", 4716, 3); - menuLine(level, "Dharok's Platebody", 4720, 4); - menuLine(level, "Dharok's Platelegs", 4722, 5); - menuLine(level, "Guthan's Helm", 4724, 6); - menuLine(level, "Guthan's Platebody", 4728, 7); - menuLine(level, "Guthan's Chainskirt", 4730, 8); - menuLine(level, "Karil's Coif(With 70 Ranged)", 4732, 9); - menuLine(level, "Karil's Leather Top(With 70 Ranged)", 4736, 10); - menuLine(level, "Karil's Leather Skirt(With 70 Ranged)", 4738, 11); - menuLine(level, "Torag's Helm", 4745, 12); - menuLine(level, "Torag's Platebody", 4749, 13); - menuLine(level, "Torag's Platelegs", 4751, 14); - menuLine(level, "Verac's Helm", 4753, 15); - menuLine(level, "Verac's Brassard", 4757, 16); - menuLine(level, "Verac's Plateskirt", 4759, 17); - optionTab("Defence", "Barrows", "Bronze", "Iron", "Steel", "Black", - "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", - "Magic", "Equipment", ""); - } - - else if (screen == 11) { - clearMenu(); - menuLine("1", "Skeletal Gloves", 6153, 0); - menuLine("1", "Skeletal Boots", 6147, 1); - menuLine("1", "Elemental Shield", 2890, 2); - menuLine("20", "Enchanted Hat(With 40 Magic)", 7400, 3); - menuLine("20", "Enchanted Robe Top(With 40 Magic)", 7399, 4); - menuLine("20", "Enchanted Robe(With 40 Magic)", 7398, 5); - menuLine("20", "Mystic Hat(With 40 Magic)", 4099, 6); - menuLine("20", "Mystic Robe Top(With 40 Magic)", 4101, 7); - menuLine("20", "Mystic Robe(With 40 Magic)", 4103, 8); - menuLine("20", "Mystic Gloves(With 40 Magic)", 4105, 9); - menuLine("20", "Mystic Boots(With 40 Magic)", 4107, 10); - menuLine("25", "Infinity Hat(With 50 Magic)", 6918, 11); - menuLine("25", "Infinity Ttop(With 50 Magic)", 6916, 12); - menuLine("25", "Infinity Bottom(With 50 Magic)", 6924, 13); - menuLine("25", "Infinity Gloves(With 50 Magic)", 6922, 14); - menuLine("25", "Infinity Boots(With 50 Magic)", 6920, 15); - menuLine("40", "Splitbark Helm(With 40 Magic)", 3385, 16); - menuLine("40", "Splitbark Body(With 40 Magic)", 3387, 17); - menuLine("40", "Splitbark Legs(With 40 Magic)", 3389, 18); - menuLine("40", "Splitbark Gauntlets(With 40 Magic)", 3391, 19); - menuLine("40", "Splitbark Boots(With 40 Magic)", 3393, 20); - menuLine("40", "Skeletal Helm(With 40 Magic)", 6137, 21); - menuLine("40", "Skeletal Top(With 40 Magic)", 6139, 22); - menuLine("40", "Skeletal Bottoms(With 40 Magic)", 6141, 23); - menuLine("44", "Farseer Helm", 3755, 24); - optionTab("Defence", "Magic", "Bronze", "Iron", "Steel", "Black", - "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", - "Magic", "Equipment", ""); - } - - else if (screen == 12) { - clearMenu(); - menuLine("1", "Khazard Helmet", 74, 0); - menuLine("1", "Khazard Armour", 75, 1); - menuLine("1", "Anti-Dragonbreath Shield", 1540, 2); - menuLine("1", "Spined Gloves", 6149, 3); - menuLine("1", "Spined Boots", 6143, 4); - menuLine("1", "Rock-Shell Gloves", 6151, 5); - menuLine("1", "Rock-Shell Boots", 6145, 6); - menuLine("5", "Spiny Helmet", 4551, 7); - menuLine("10", "Hard Leather Body", 1131, 8); - menuLine("20", "Studded Body(With 20 Ranged)", 1133, 9); - menuLine("20", "Initiate Helm(With 10 Prayer)", 5574, 10); - menuLine("20", "Initiate Platemail(With 10 Prayer)", 5575, 11); - menuLine("20", "Initiate Platelegs(With 10 Prayer)", 5576, 12); - menuLine("20", "Mirror Shield(with 20 Slayer)", 4156, 13); - menuLine("30", "Snakeskin armour(With 30 Ranged)", 6322, 14); - menuLine("40", "Green Dragonhide Body(With 40 Ranged)", 1135, 15); - menuLine("50", "Blue Dragonhide Body(With 50 Ranged)", 2499, 16); - menuLine("60", "Red Dragonhide Body(With 60 Ranged)", 2501, 17); - menuLine("70", "Black Dragonhide Body(With 70 Ranged)", 2503, 18); - menuLine("40", "Spined Armour(With 40 Ranged)", 6133, 19); - menuLine("40", "Rock-shell Armour", 6129, 20); - menuLine("45", "Berserker Helm", 3751, 21); - menuLine("45", "Warrior Helm", 3753, 22); - menuLine("45", "Archer Helm", 3749, 23); - menuLine("45", "Farseer Helm", 3755, 24); - menuLine("50", "Granite Shield(With 50 Strength)", 3122, 25); - menuLine("60", "TokTz-Ket-Xil(Obsidian Shield)", 6524, 26); - menuLine("70", "Crystal Shield(With 50 Agility)", 4224, 27); - optionTab("Defence", "Equipment", "Bronze", "Iron", "Steel", - "Black", "White", "Mithril", "Adamant", "Rune", "Dragon", - "Barrows", "Magic", "Equipment", ""); - } - } - - /* - * Skill ID: 3 - * - * @param screen - * - * @return - */ - public void rangedComplex(int screen) { - if (screen == 1) { - clearMenu(); - menuLine("1", "Standard Bow", 839, 0); - menuLine("5", "Oak Bow", 845, 1); - menuLine("20", "Willow Bow", 847, 2); - menuLine("30", "Maple Bow", 851, 3); - menuLine("30", "Ogre Bow", 2883, 4); - menuLine("30", "Ogre Composite Bow", 4827, 5); - menuLine("40", "Yew Bow", 855, 6); - menuLine("50", "Magic Bow", 859, 7); - menuLine("50", "Seercull", 6724, 8); - menuLine("70", "Crystal Bow(With 50 Agility)", 4212, 9); - optionTab("Ranged", "Bows", "Bows", "Thrown", "Armour", - "Crossbows", "Other", "", "", "", "", "", "", "", - ""); - } - - else if (screen == 2) { - clearMenu(); - menuLine("1", "Bronze Dart", 806, 0); - menuLine("1", "Bronze Javelin", 825, 1); - menuLine("1", "Bronze Throwing Axe", 800, 2); - menuLine("1", "Bronze Throwing Knife", 864, 3); - menuLine("1", "Iron Dart", 807, 4); - menuLine("1", "Iron Javelin", 826, 5); - menuLine("1", "Iron Throwing Axe", 801, 6); - menuLine("1", "Iron Throwing Knife", 863, 7); - menuLine("5", "Steel Dart", 808, 8); - menuLine("5", "Steel Davelin", 827, 9); - menuLine("5", "Steel Throwing Axe", 802, 10); - menuLine("5", "Steel Throwing Knife", 865, 11); - menuLine("10", "Black Dart", 3093, 12); - menuLine("10", "Black Throwing Knife", 869, 13); - menuLine("20", "Mithril Dart", 809, 14); - menuLine("20", "Mithril Javelin", 828, 15); - menuLine("20", "Mithril Throwing Axe", 803, 16); - menuLine("20", "Mithril Throwing Knife", 866, 17); - menuLine("30", "Adamant Dart", 810, 18); - menuLine("30", "Adamant Javelin", 829, 19); - menuLine("30", "Adamant Throwing Axe", 804, 20); - menuLine("30", "Adamant Throwing Knife", 867, 21); - menuLine("40", "Rune Dart", 811, 22); - menuLine("40", "Rune Javelin", 830, 23); - menuLine("40", "Rune Throwing Axe", 805, 24); - menuLine("40", "Rune Throwing Knife", 868, 25); - menuLine("60", "TokTz-Xil-Ul(Obsidian Rings)", 6522, 26); - optionTab("Ranged", "Thrown", "Bows", "Thrown", "Armour", - "Crossbows", "Other", "", "", "", "", "", "", "", - ""); - } - - else if (screen == 3) { - clearMenu(); - menuLine("1", "Leather Items", 1129, 0); - menuLine("1", "Hardleather Body(With 10 Defence)", 1131, 1); - menuLine("1", "Spined Boots", 6143, 2); - menuLine("1", "Spined Gloves", 6149, 3); - menuLine("1", "Archer Helm(With 45 Defence)", 3749, 4); - menuLine("20", "Studded Leather Body(With 20 Defence)", 1133, 5); - menuLine("20", "Studded Leather Chaps", 1097, 6); - menuLine("20", "Coif", 1169, 7); - menuLine("30", "Snakeskin Body(With 30 Defence)", 6322, 8); - menuLine("30", "Snakeskin Chaps(With 30 Defence)", 6324, 9); - menuLine("30", "Snakeskin Vambraces(With 30 Defence)", 6330, 10); - menuLine("30", "Snakeskin Bandana(With 30 Defence)", 6326, 11); - menuLine("30", "Snakeskin Boots(With 30 Defence)", 6328, 12); - menuLine("40", "Ranger Boots", 2577, 13); - menuLine("40", "Robin Hood Hat", 2581, 14); - menuLine("40", "Green Dragonhide Vambraces", 1065, 15); - menuLine("40", "Green Dragonhide Chaps", 1099, 16); - menuLine("40", "Green Dragonhide Body(With 40 Defence)", 1135, 17); - menuLine("40", "Spined Body(With 40 Defence)", 6133, 18); - menuLine("40", "Spined Chaps(With 40 Defence)", 6135, 19); - menuLine("40", "Spined Helm(With 40 Defence)", 6131, 20); - menuLine("50", "Blue Dragonhide Vambraces", 2487, 21); - menuLine("50", "Blue Dragonhide Chaps", 2493, 22); - menuLine("50", "Blue Dragonhide Body(With 40 Defence)", 2499, 23); - menuLine("60", "Red Dragonhide Vambraces", 2489, 24); - menuLine("60", "Red Dragonhide Chaps", 2495, 25); - menuLine("60", "Red Dragonhide Body(With 40 Defence)", 2501, 26); - menuLine("70", "Black Dragonhdie Vambraces", 2491, 27); - menuLine("70", "Black Dragonhdie Chaps", 2497, 28); - menuLine("70", "Black Dragonhdie Body(With 40 Defence)", 2503, 29); - menuLine("70", "Karil's Coif(With 70 Defence)", 4732, 30); - menuLine("70", "Karil's Leathertop(With 70 Defence)", 4736, 31); - menuLine("70", "Karil's Leatherskirt(With 70 Defence)", 4738, 32); - optionTab("Ranged", "Armour", "Bows", "Thrown", "Armour", - "Crossbows", "Other", "", "", "", "", "", "", "", - ""); - } - - else if (screen == 4) { - clearMenu(); - menuLine("1", "Crossbow", 837, 0); - menuLine("1", "Pheonix Crossbow", 767, 1); - menuLine("70", "Karil's Crossbow", 4734, 2); - optionTab("Ranged", "Crossbows", "Bows", "Thrown", "Armour", - "Crossbows", "Other", "", "", "", "", "", "", "", - ""); - } - - else if (screen == 5) { - clearMenu(); - menuLine("50", "Broad Arrow(With 55 Slayer)", 4150, 0); - optionTab("Ranged", "Other", "Bows", "Thrown", "Armour", - "Crossbows", "Other", "", "", "", "", "", "", "", - ""); - } - } - - /* - * Skill ID: 4 - * - * @param screen - * - * @return - */ - public void prayerComplex(int screen) { - if (screen == 1) { - clearMenu(); - menuLine("", "You can see what each of these prayers", 3840, 0); - menuLine("", "does by selecting the Prayer icon on", 0, 1); - menuLine("", "your side interface. Move your mouse", 3844, 2); - menuLine("", "over the icon of the prayer you want", 0, 3); - menuLine("", "and a description will be available", 3842, 4); - menuLine("", "", 0, 5); - menuLine("1", "Thick Skin", 1714, 6); - menuLine("4", "Burst of Strength", 1714, 7); - menuLine("7", "Clarity of Thought", 1714, 8); - menuLine("10", "Rock Skin", 1714, 9); - menuLine("13", "Superhuman Strength", 1714, 10); - menuLine("16", "Improved Reflexes", 1714, 11); - menuLine("19", "Rapid Restore", 1714, 12); - menuLine("22", "Rapid Heal", 1714, 13); - menuLine("25", "Protect Item", 1714, 14); - menuLine("28", "Steel Skin", 1714, 15); - menuLine("31", "Ultimate Strength", 1714, 16); - menuLine("34", "Incredible Reflexes", 1714, 17); - menuLine("37", "Protect from Magic", 1714, 18); - menuLine("40", "Protect from Missles", 1714, 19); - menuLine("43", "Protect from Melee", 1714, 20); - menuLine("46", "Retribution", 1714, 21); - menuLine("49", "Redemption", 1714, 22); - menuLine("52", "Smite", 1714, 23); - optionTab("Prayer", "Prayers", "Prayers", "Equipment", - "", "", "", "", "", "", "", "", "", "", ""); - } - - else if (screen == 2) { - clearMenu(); - menuLine("10", "Initiate Helm(With 20 Defence)", 5574, 0); - menuLine("10", "Initiate Platemail(With 20 Defence)", 5575, 1); - menuLine("10", "Initiate Platelegs(With 20 Defence)", 5576, 2); - menuLine("50", "Enchant Unholy And Holy Symbols", 1724, 3); - optionTab("Prayer", "Equipment", "Prayers", "Equipment", - "", "", "", "", "", "", "", "", "", "", ""); - } - } - - /* - * Skill ID: 5 - * - * @param screen - * - * @return - */ - public void magicComplex(int screen) { - if (screen == 1) { - clearMenu(); - menuLine("", "You can see what each of the spells", 6949, 0); - menuLine("", "does by selecting the spellbook icon on", 0, 1); - menuLine("", "your side interface. To switch to ancient", 0, 2); - menuLine("", "magicks, visit the Dark Mage near the bank", 0, 3); - menuLine("", "in Camelot.", 0, 4); - optionTab("Magic", "Spells", "Spells", "Ancients", "Armour", - "Weapons", "Special", "", "", "", "", "", "", "", - ""); - } - - else if (screen == 2) { - clearMenu(); - menuLine("", "@cr1@Must have completed Desert Treasure", 6949, 0); - menuLine("", "", 0, 1); - menuLine("50", "Smoke Rush", 0, 2); - menuLine("52", "Shadow Rush", 0, 3); - menuLine("54", "Teleport to Paddewwa", 0, 4); - menuLine("56", "Blood Rush", 0, 5); - menuLine("58", "Ice Rush", 0, 6); - menuLine("60", "Teleport to Senntisten", 0, 7); - menuLine("62", "Smoke Burst", 0, 8); - menuLine("64", "Shadow Burst", 0, 9); - menuLine("66", "Teleport to Kharyrll", 0, 10); - menuLine("68", "Blood Burst", 0, 11); - menuLine("70", "Ice Burst", 0, 12); - menuLine("72", "Teleport to Lassar", 0, 13); - menuLine("74", "Smoke Blitz", 0, 14); - menuLine("76", "Shadow Blitz", 0, 15); - menuLine("78", "Teleport Dareeyak", 0, 16); - menuLine("80", "Blood Blitz", 0, 17); - menuLine("82", "Ice Blitz", 0, 18); - menuLine("84", "Teleport to Carrallangar", 0, 19); - menuLine("86", "Smoke Barrage", 0, 20); - menuLine("88", "Shadow Barrage", 0, 21); - menuLine("90", "Teleport to Annakarl", 0, 22); - menuLine("92", "Blood Barrage", 0, 23); - menuLine("94", "Ice Barrage", 0, 24); - menuLine("96", "Teleport to Ghorrock", 0, 25); - optionTab("Magic", "Ancients", "Spells", "Ancients", "Armour", - "Weapons", "Special", "", "", "", "", "", "", "", - ""); - } - - else if (screen == 3) { - clearMenu(); - menuLine("1", "Farseer Helm(With 45 Defence)", 3755, 0); - menuLine("1", "Elemental Shield", 2890, 1); - menuLine("1", "Skeletal Gloves", 6153, 2); - menuLine("1", "Skeletal Boots", 6147, 3); - menuLine("20", "Wizard Boots", 2579, 4); - menuLine("40", "Mystic Hat(With 20 Defence)", 4099, 5); - menuLine("40", "Mystic Robe Top(With 20 Defence)", 4101, 6); - menuLine("40", "Mystic Robe Bottom(With 20 Defence)", 4103, 7); - menuLine("40", "Mystic Gloves(With 20 Defence)", 4105, 8); - menuLine("40", "Mystic Boots(With 20 Defence)", 4107, 9); - menuLine("40", "Enchanted Hat(With 20 Defence)", 7400, 10); - menuLine("40", "Enchanted Top(With 20 Defence)", 7399, 11); - menuLine("40", "Enchanted Robe(With 20 Defence)", 7398, 12); - menuLine("40", "Splitbark Helm(With 40 Defence)", 3385, 13); - menuLine("40", "Splitbark Body(With 40 Defence)", 3387, 14); - menuLine("40", "Splitbark Legs(With 40 Defence)", 3389, 15); - menuLine("40", "Splitbark Gauntlets(With 40 Defence)", 3391, 16); - menuLine("40", "Splitbark Boots(With 40 Defence)", 3393, 17); - menuLine("40", "Skeletal Helmet(With 40 Defence)", 6137, 18); - menuLine("40", "Skeletal Top(With 40 Defence)", 6139, 19); - menuLine("40", "Skeletal Bottoms(With 40 Defence)", 6141, 20); - menuLine("50", "Infinity Hat(With 25 Defence)", 6918, 21); - menuLine("50", "Infinity Top(With 25 Defence)", 6916, 22); - menuLine("50", "Infinity Bottom(With 25 Defence)", 6924, 23); - menuLine("50", "Infinity Boots(With 25 Defence)", 6920, 24); - menuLine("50", "Infinity Gloves(with 25 Defence)", 6922, 25); - menuLine("70", "Ahrim's Hood(With 70 Defence)", 4708, 26); - menuLine("70", "Ahrim's Robe Top(With 70 Defence)", 4712, 27); - menuLine("70", "Ahrim's Robeskirt(With 70 Defence)", 4714, 28); - optionTab("Magic", "Armour", "Spells", "Ancients", "Armour", - "Weapons", "Special", "", "", "", "", "", "", "", - ""); - } - - else if (screen == 4) { - clearMenu(); - menuLine("1", "Staff", 1379, 0); - menuLine("1", "Magic staff", 1389, 1); - menuLine("1", "Staff of Air", 1381, 2); - menuLine("1", "Staff of Earth", 1385, 3); - menuLine("1", "Staff of Fire", 1387, 4); - menuLine("1", "Staff of Water", 1383, 5); - menuLine("30", "Air Battlestaff(With 30 Attack)", 1397, 6); - menuLine("30", "Earth Battlestaff(With 30 Attack)", 1399, 7); - menuLine("30", "Fire Battlestaff(With 30 Attack)", 1393, 8); - menuLine("30", "Water Battlestaff(With 30 Attack)", 1395, 9); - menuLine("30", "Lava Battlestaff(With 30 Attack)", 3053, 10); - menuLine("30", "Mud Battlestaff(With 30 Attack)", 6562, 11); - menuLine("40", "Mystic Air Staff(With 40 Attack)", 1405, 12); - menuLine("40", "Mystic Earth Staff(With 40 Attack)", 1407, 13); - menuLine("40", "Mystic Fire Staff(With 40 Attack)", 1401, 14); - menuLine("40", "Mystic Water Staff(With 40 Attack)", 1403, 15); - menuLine("40", "Mystic Lava Staff(With 40 Attack)", 3054, 16); - menuLine("40", "Mystic Mud Staff(With 40 Attack)", 6563, 17); - menuLine("50", "Slayer's Staff(With 55 Slayer)", 4170, 18); - menuLine("50", "Iban's Staff(With 50 Attack)", 1409, 19); - menuLine("50", "Ancient Staff(With 50 Attack)", 4675, 20); - menuLine("60", "Saradomin Staff", 2415, 21); - menuLine("60", "Guthix Staff", 2416, 22); - menuLine("60", "Zamorak Staff", 2417, 23); - menuLine("60", "TokTz-Mej-Tal(Obsidian Staff)", 6526, 24); - menuLine("70", "Ahrim's Staff(With 70 Attack)", 4710, 25); - optionTab("Magic", "Weapons", "Spells", "Ancients", "Armour", - "Weapons", "Special", "", "", "", "", "", "", "", - ""); - } - - else if (screen == 5) { - clearMenu(); - menuLine("45", "Beginner Wand", 6908, 0); - menuLine("50", "Apprentice Wand", 6910, 1); - menuLine("55", "Teacher Wand", 6912, 2); - menuLine("60", "Master Wand", 6914, 3); - menuLine("60", "Mage's Book", 6889, 4); - optionTab("Magic", "Special", "Spells", "Ancients", "Armour", - "Weapons", "Special", "", "", "", "", "", "", "", - ""); - } - } - - /* - * Skill ID: 6 - * - * @param screen - * - * @return - */ - public void runecraftingComplex(int screen) { - if (screen == 1) { - clearMenu(); - menuLine("1", "Air runes", 556, 0); - menuLine("2", "Mind runes", 558, 1); - menuLine("5", "Water runes", 555, 2); - menuLine("6", "Mist runes", 4695, 3); - menuLine("9", "Earth runes", 557, 4); - menuLine("10", "Dust runes", 4696, 5); - menuLine("13", "Mud runes", 4698, 6); - menuLine("14", "Fire runes", 554, 7); - menuLine("15", "Smoke runes", 4697, 8); - menuLine("19", "Steam runes", 4694, 9); - menuLine("20", "Body runes", 559, 10); - menuLine("23", "Lava runes", 4699, 11); - menuLine("27", "Cosmic runes", 564, 12); - menuLine("35", "Chaos runes", 562, 13); - menuLine("44", "Nature runes", 561, 14); - menuLine("54", "Law runes", 563, 15); - menuLine("65", "Death runes", 560, 16); - menuLine("77", "Blood runes", 565, 17); - optionTab("RuneCrafting", "Runes", "Runes", "Multiples", - "Equipment", "", "", "", "", "", "", "", "", "", - ""); - } - - else if (screen == 2) { - clearMenu(); - menuLine("11", "2 Air runes per essence", 556, 0); - menuLine("14", "2 Mind runes per essence", 558, 1); - menuLine("19", "2 Water runes per essence", 555, 2); - menuLine("22", "3 Air runes per essence", 556, 3); - menuLine("26", "2 Earth runes per essence", 557, 4); - menuLine("28", "3 Mind runes per essence", 558, 5); - menuLine("33", "4 Air runes per essence", 556, 6); - menuLine("35", "2 Fire runes per essence", 554, 7); - menuLine("38", "3 Water runes per essence", 555, 8); - menuLine("42", "4 Mind runes per essence", 558, 9); - menuLine("44", "5 Air runes per essence", 556, 10); - menuLine("46", "2 Body runes per essence", 559, 11); - menuLine("52", "3 Earth runes per essence", 557, 12); - menuLine("55", "6 Air runes per essence", 556, 13); - menuLine("56", "5 Mind runes per essence", 558, 14); - menuLine("57", "4 Water runes per essence", 555, 15); - menuLine("59", "2 Cosmic runes per essence", 564, 16); - menuLine("66", "7 Air runes per essence", 556, 17); - menuLine("70", "6 Mind runes per essence", 558, 18); - menuLine("74", "3 Fire runes per essence", 554, 19); - menuLine("76", "2 Chaos runes per essence", 562, 20); - menuLine("77", "5 Water runes per essence", 555, 21); - menuLine("78", "8 Air runes per essence", 556, 22); - menuLine("82", "4 Earth runes per essence", 557, 23); - menuLine("84", "7 Mind runes per essence", 558, 24); - menuLine("88", "9 Air runes per essence", 556, 25); - menuLine("91", "2 Nature runes per essence", 561, 26); - menuLine("92", "3 Body runes per essence", 559, 27); - menuLine("95", "6 Water runes per essence", 555, 28); - menuLine("98", "8 Mind runes per essence", 558, 29); - menuLine("99", "10 Air runes per essence", 556, 30); - optionTab("RuneCrafting", "Multiples", "Runes", "Multiples", - "Equipment", "", "", "", "", "", "", "", "", "", - ""); - } - - else if (screen == 3) { - clearMenu(); - menuLine("1", "Small Pouch(3 Essence)", 5509, 0); - menuLine("25", "Medium Pouch(6 Essence)", 5510, 1); - menuLine("50", "Large Pouch(9 Essence)", 5512, 2); - menuLine("75", "Giant Pouch(12 Essence)", 5514, 3); - optionTab("RuneCrafting", "Equipment", "Runes", "Multiples", - "Equipment", "", "", "", "", "", "", "", "", "", - ""); - } - } - - /* - * Skill ID: 7 - * - * @param screen - * - * @return - */ - public void hitpointsComplex(int screen) { - if (screen == 1) { - clearMenu(); - menuLine("", "Hitpoints tell you how healthy your", 4049, 0); - menuLine("", "character is. A character who reaches 0", 0, 1); - menuLine("", "Hitpoints has died, but will reappear at", 0, 2); - menuLine("", "their chosen respawn location", 0, 3); - menuLine("", "", 0, 4); - menuLine("", "If you see any red 'hitsplats' during", 4049, 5); - menuLine("", "combat, the number shown corresponds", 0, 6); - menuLine("", "to the number of Hitpoints lost as a", 0, 7); - menuLine("", "result of that strike.", 0, 8); - menuLine("", "", 0, 9); - menuLine("", "Blue hitsplats mean no damage has", 4049, 10); - menuLine("", "been dealt.", 0, 11); - menuLine("", "", 0, 12); - menuLine("", "Green hitspats are poison damage", 4049, 13); - menuLine("", "", 0, 14); - menuLine("", "Yellow hitsplats are disease damage", 4049, 15); - optionTab("Hitpoints", "Hitpoints", "Hitpoints", "", "", - "", "", "", "", "", "", "", "", "", ""); - } - } - - /* - * Skill ID: 8 - * - * @param screen - * - * @return - */ - public void agilityComplex(int screen) { - if (screen == 1) { - clearMenu(); - menuLine("1", "Gnome Agility Course", 2150, 0);// swamptoad - menuLine("1", "Gnome Ball", 751, 1);// gnomeball - menuLine("1", "Low-Level Agility Arena Obstacles", 2996, 2);// arena - // ticket - menuLine("20", "Medium-Level Agility Arena Obstacles", 2996, 3);// arena - // ticket - menuLine("25", "Werewolf Skullball Game", 1061, 4);// boots - menuLine("30", "Agility Pyramid", 6970, 5);// boots - menuLine("35", "Barbarian Outpost Agility Course", 1365, 6);// steel - menuLine("40", "High-Level Agility Area Obstacles", 2996, 7); - menuLine("48", "Ape Atoll Agility Course", 4024, 8);// greegree - menuLine("52", "Wilderness Agility Course", 964, 9);// skull - menuLine("60", "Werewolf Agility Course", 6465, 19);// charos - optionTab("Agility", "Courses", "Courses", "Areas", "Shortcuts", - "", "", "", "", "", "", "", "", "", ""); - } - - else if (screen == 2) { - clearMenu(); - menuLine("10", "Moss Giant Island Rope Swing", 6518, 0); - menuLine("12", "Karamja Dungeon Stepping Stones", 6518, 1); - menuLine("15", "Edgeville Dungeon Monkey Bars", 6518, 2); - menuLine("18", "Watchtower Wall Climb", 6521, 3); - menuLine("22", "Karamja Dungeon Pipe Contortion", 6520, 4); - menuLine("30", "South-east Karamja Stepping Stones", 6518, 5); - menuLine("34", "Karamja Dungeon Pipe Contortion", 6520, 6); - menuLine("45", "Isafdar Log Balance", 6519, 7); - menuLine("49", "Yanille Dungeon Contortion", 6520, 8); - menuLine("50", "Rogues' Den(With 50 Thieving)", 6518, 9); - menuLine("67", "Yanille Dungeon Rubble Climb", 6521, 10); - optionTab("Agility", "Areas", "Courses", "Areas", "Shortcuts", - "", "", "", "", "", "", "", "", "", ""); - } - - else if (screen == 3) { - clearMenu(); - menuLine("5", "Falador Agility Shortcut", 6517, 0); - menuLine("8", "River Crossing To Al Kharid", 6515, 1); - menuLine("11", "Falador Wall", 6517, 2); - menuLine("13", "Varrock South Fence Jump", 6514, 3); - menuLine("16", "Yanille Agility Shortcut", 6516, 4); - menuLine("20", "Coal Truck Log Balance", 6515, 5); - menuLine("21", "Varrock Agility Shortcut", 6516, 6); - menuLine("26", "Falador wall Crawl", 6516, 7); - menuLine("28", "Draynor Manor Broken Railing", 6516, 8); - menuLine("29", "Draynor Manor Stones To The Champions' Guild", - 6516, 9); - menuLine("31", "Catherby Cliff", 6515, 10); - menuLine("32", "Ardougne Log Balance Shortcut", 6517, 11); - menuLine("33", "Water Obelisk Island Escape", 6516, 12); - menuLine("36", "Gnome Stronghold Shortcut", 6517, 13); - menuLine("37", "Al Kharid Mining Pit Sliffside Scramble", 6517, 14); - menuLine("39", "Yanille Wall", 6517, 15); - menuLine("40", "Trollheim Easy Cliffside Scramble", 6517, 16); - menuLine("41", "Dwarven Mine Narrow Crevice", 6517, 17); - menuLine("42", "Trollheim Medium Cliffside Scramble", 6516, 18); - menuLine("43", "Trollheim Advanced Cliffside Scramble", 6517, 19); - menuLine("44", "Cosmic Temple Medium Narrow Walkway", 6517, 20); - menuLine("46", "Trollheim Hard Cliffside Scramble", 6516, 21); - menuLine("47", "Log Balance To The Fremennik Province", 6517, 22); - menuLine("48", "Edgeville Dungeon To Varrock Sewers Pipe", 6515, 23); - menuLine("51", "Karamja Crossing, South Of The Volcano", 6516, 24); - menuLine("53", "Port Phasmatys Ectopool Shortcut", 6517, 25); - menuLine("58", "Elven Overpass Easy Cliffside Scramble", 6517, 26); - menuLine("59", "Slayer Tower Medium Spiked Chain Climb", 6517, 27); - menuLine("61", "Slayer Dungon Narrow Crevice", 6517, 28); - menuLine("62", "Trollheim Wilderness Route", 6516, 29); - menuLine("64", "Paterdomus Temple To Morytania Shortcut", 6517, 30); - menuLine("66", "Cosmic Temple Advanced Narrow Walkway", 6517, 31); - menuLine("68", "Elven Overpass Medium Cliffside Scramble", 6517, 32); - menuLine("70", "Taverly Dungeon Pipe Squeeze", 6516, 33); - menuLine("71", "Slayer Tower Advanced Spiked Chain Climb", 6517, 34); - menuLine("74", "Shilo Village Stepping Stone", 6514, 35); - menuLine("80", "Taverly Dungeon Spiked Blade Jump", 6514, 36); - menuLine("81", "Slayer Dungeon Chasm Jump", 6514, 37); - menuLine("85", "Elven Overpass Advanced Cliff Scramble", 6517, 38); - optionTab("Agility", "Shortcuts", "Courses", "Areas", "Shortcuts", - "", "", "", "", "", "", "", "", "", ""); - } - - else if (screen == 4) { - clearMenu(); - menuLine("50", "Crystal Equipment", 4207, 0); - optionTab("Agility", "", "Courses", "Areas", "Shortcuts", - "", "", "", "", "", "", "", "", "", ""); - } - } - - /* - * Skill ID: 9 - * - * @param screen - * - * @return - */ - public void herbloreComplex(int screen) { - if (screen == 1) { - clearMenu(); - menuLine("3", "Attack potion", 121, 0); - menuLine("5", "Anti-poison", 175, 1); - menuLine("12", "Strength potion", 115, 2); - menuLine("22", "Stat restore potion", 127, 3); - menuLine("26", "Energy potion", 3010, 4); - menuLine("30", "Defence potion", 133, 5); - menuLine("34", "Agility potion", 3034, 6); - menuLine("38", "Prayer restore potion", 139, 7); - menuLine("45", "Super Attack potion", 145, 8); - menuLine("48", "Super anti-poison", 181, 9); - menuLine("50", "Fishing potion", 151, 10); - menuLine("52", "Super energy potion", 3018, 11); - menuLine("55", "Super Strength potion", 157, 12); - menuLine("60", "Weapon poison", 187, 13); - menuLine("63", "Super restore potion", 3026, 14); - menuLine("66", "Super Defence potion", 163, 15); - menuLine("68", "Antidote+", 5945, 16); - menuLine("69", "Ranging potion", 169, 17); - menuLine("72", "Antifire potion", 2454, 18); - menuLine("73", "Weapon poison+", 5937, 19); - menuLine("76", "Magic potion", 3042, 20); - menuLine("78", "Zamorak brew", 189, 21); - menuLine("79", "Antidote++", 5954, 22); - menuLine("81", "Saradomin brew", 6687, 23); - menuLine("82", "Weapon poison++", 5940, 24); - optionTab("Herblore", "Potions", "Potions", "Herbs", "", - "", "", "", "", "", "", "", "", "", ""); - } - - else if (screen == 2) { - clearMenu(); - menuLine("3", "Guam Leaf", 249, 0); - menuLine("5", "Marrentill", 251, 1); - menuLine("11", "Tarromin", 253, 2); - menuLine("20", "Harralander", 255, 3); - menuLine("25", "Ranarr", 257, 4); - menuLine("30", "Toadflax", 2998, 5); - menuLine("40", "Irit Leaf", 259, 6); - menuLine("48", "Avantoe", 261, 7); - menuLine("54", "Kwuarm", 263, 8); - menuLine("59", "Snapdragon", 3000, 9); - menuLine("65", "Cadantine", 265, 10); - menuLine("67", "Lantadyme", 2481, 11); - menuLine("70", "Dwarf Weed", 267, 12); - menuLine("75", "Torstol", 269, 13); - optionTab("Herblore", "Herbs", "Potions", "Herbs", "", - "", "", "", "", "", "", "", "", "", ""); - } - } - - /* - * Skill ID: 10 - * - * @param screen - * - * @return - */ - public void thievingComplex(int screen) { - if (screen == 1) { - clearMenu(); - menuLine("1", "Man", 3241, 0); - menuLine("10", "Farmer", 3243, 1); - menuLine("15", "Female H.A.M. Follower", 4295, 2); - menuLine("20", "Male H.A.M. Follower", 4297, 3); - menuLine("25", "Warrior", 3245, 4); - menuLine("32", "Rogue", 3247, 5); - menuLine("38", "Master Farmer", 5068, 6); - menuLine("40", "Guard", 3249, 7); - menuLine("45", "Fremennik Citizen", 3686, 8); - menuLine("45", "Beared Pollnivnian Bandit", 6781, 9); - menuLine("53", "Desert Bandit", 4625, 10); - menuLine("55", "Knight", 3251, 11); - menuLine("55", "Pollnivnian Bandit", 6782, 12); - menuLine("65", "Watchman", 3253, 13); - menuLine("65", "Menaphite Thug", 6780, 14); - menuLine("70", "Paladin", 3255, 15); - menuLine("75", "Gnome", 3257, 16); - menuLine("80", "Hero", 3259, 17); - menuLine("85", "Elf", 6105, 18); - optionTab("Thieving", "Pickpocket", "Pickpocket", "Stalls", - "Chests", "", "", "", "", "", "", "", "", "", ""); - } - - else if (screen == 2) { - clearMenu(); - menuLine("2", "Vegetable stall", 1965, 0); - menuLine("5", "Baker's stall", 2309, 1); - menuLine("5", "Ape Atoll general stall", 1933, 2); - menuLine("5", "Tea stall", 1978, 3); - menuLine("5", "Crafting stall", 1755, 4); - menuLine("5", "Monkey food stall", 1963, 5); - menuLine("15", "Rock cake stall", 2379, 6); - menuLine("20", "Silk stall", 950, 7); - menuLine("22", "Wine stall", 1993, 8); - menuLine("27", "Seed stall", 5318, 9); - menuLine("35", "Fur stall", 958, 10); - menuLine("42", "Fish stall", 333, 11); - menuLine("50", "Silver stall", 2355, 12); - menuLine("65", "Magic stall", 6422, 13); - menuLine("65", "Scimitar stall", 1323, 14); - menuLine("65", "Spice stall", 2007, 15); - menuLine("75", "Gem stall", 1607, 16); - optionTab("Thieving", "Stalls", "Pickpocket", "Stalls", "Chests", - "", "", "", "", "", "", "", "", "", ""); - } - - else if (screen == 3) { - clearMenu(); - menuLine("13", "Ardougne, Rellekka, and the Wilderness", 617, 0); - menuLine("28", "Upstairs in Ardougne and Rellekka", 561, 1); - menuLine("43", "Upstairs in Ardougne", 617, 2); - menuLine("47", "Hemenster", 41, 3); - menuLine("47", "Rellekka", 617, 4); - menuLine("59", "Chaos Druid Tower north of Ardougne", 565, 5); - menuLine("72", "King Lathas's castle in Ardougne", 383, 6); - optionTab("Thieving", "Chests", "Pickpocket", "Stalls", "Chests", - "", "", "", "", "", "", "", "", "", ""); - } - } - - /* - * Skill ID: 11 - * - * @param screen - * - * @return - */ - public void craftingComplex(int screen) { - if (screen == 1) { - clearMenu(); - menuLine("10", "Cloth", 3224, 0); - menuLine("21", "Vegetable Sack", 5418, 1); - optionTab("Crafting", "Weaving", "Weaving", "Armour", "Spinning", - "Pottery", "Glass", "Jewellery", "Weaponry", "", - "", "", "", "", ""); - } - - else if (screen == 2) { - clearMenu(); - menuLine("1", "Leather Gloves", 1059, 0); - menuLine("7", "Leather Boots", 1061, 1); - menuLine("9", "Leather Cowl", 1167, 2); - menuLine("11", "Leather Vambraces", 1063, 3); - menuLine("14", "Leather Body", 1129, 4); - menuLine("18", "Leather Chaps", 1095, 5); - menuLine("28", "Hard Leather Body", 1131, 6); - menuLine("35", "Broodoo Shield", 6257, 7); - menuLine("38", "Coif", 1169, 8); - menuLine("41", "Studded Body", 1133, 9); - menuLine("44", "Studded Chaps", 1097, 10); - menuLine("45", "Snakeskin Boots", 6328, 11); - menuLine("47", "Snakeskin Vambraces", 6330, 12); - menuLine("48", "Snakeskin Bandana", 6326, 13); - menuLine("51", "Snakeskin Chaps", 6324, 14); - menuLine("53", "Snakeskin Body", 6322, 15); - menuLine("57", "Green Dragonhide Vambraces", 1065, 16); - menuLine("60", "Green Dragonhide Chaps", 1099, 17); - menuLine("63", "Green Dragonhide Body", 1135, 18); - menuLine("66", "Blue Dragonhide Vambraces", 2487, 19); - menuLine("68", "Blue Dragonhide Chaps", 2493, 20); - menuLine("71", "Blue Dragonhide Body", 2499, 21); - menuLine("73", "Red Dragonhide Vambraces", 2489, 22); - menuLine("75", "Red Dragonhide Chaps", 2495, 23); - menuLine("77", "Red Dragonhide Body", 2501, 24); - menuLine("79", "Black Dragonhide Vambraces", 2491, 25); - menuLine("82", "Black Dragonhide Chaps", 2497, 26); - menuLine("84", "Black Dragonhide Body", 2503, 27); - optionTab("Crafting", "Armour", "Weaving", "Armour", "Spinning", - "Pottery", "Glass", "Jewellery", "Weaponry", "", - "", "", "", "", ""); - } - - else if (screen == 3) { - clearMenu(); - menuLine("1", "Wool", 1759, 0); - menuLine("10", "Flax into Bow Strings", 1777, 1); - optionTab("Crafting", "Spinning", "Weaving", "Armour", "Spinning", - "Pottery", "Glass", "Jewellery", "Weaponry", "", - "", "", "", "", ""); - } - - else if (screen == 4) { - clearMenu(); - menuLine("1", "Pot", 1931, 0); - menuLine("7", "Pie Dish", 2313, 1); - menuLine("8", "Bowl", 1923, 2); - menuLine("19", "Plant Pot", 5350, 3); - menuLine("25", "Pot Lid", 4440, 4); - optionTab("Crafting", "Pottery", "Weaving", "Armour", "Spinning", - "Pottery", "Glass", "Jewellery", "Weaponry", "", - "", "", "", "", ""); - } - - else if (screen == 5) { - clearMenu(); - menuLine("1", "Beer Glass", 1919, 0); - menuLine("4", "Candle Lantern", 4527, 1); - menuLine("12", "Oil Lamp", 4525, 2); - menuLine("26", "Oil Lantern", 4535, 3); - menuLine("33", "Vial", 229, 4); - menuLine("42", "Fishbowl", 6667, 5); - menuLine("46", "Glass Orb", 567, 6); - menuLine("49", "Bullseye Lantern Lens", 4542, 7); - optionTab("Crafting", "Glass", "Weaving", "Armour", "Spinning", - "Pottery", "Glass", "Jewellery", "Weaponry", "", - "", "", "", "", ""); - } - - else if (screen == 6) { - clearMenu(); - menuLine("1", "Cut Opal", 1609, 0); - menuLine("5", "Gold Ring", 1635, 1); - menuLine("6", "Gold Necklace", 1654, 2); - menuLine("8", "Gold Amulet", 1673, 3); - menuLine("13", "Cut Jade", 1611, 4); - menuLine("16", "Holy Symbol", 1714, 5); - menuLine("16", "Cut Red Topaz", 1613, 6); - menuLine("17", "Unholy Symbol", 1724, 7); - menuLine("20", "Cut Sapphire", 1607, 8); - menuLine("20", "Sapphire Ring", 1637, 9); - menuLine("22", "Sapphire Necklace", 1656, 10); - menuLine("23", "Tiara", 5525, 11); - menuLine("24", "Sapphire Amulet", 1675, 12); - menuLine("27", "Cut Emerald", 1605, 13); - menuLine("27", "Emerald Ring", 1639, 14); - menuLine("29", "Emerald Necklace", 1658, 15); - menuLine("31", "Emerald Amulet", 1677, 16); - menuLine("34", "Cut Ruby", 1603, 17); - menuLine("34", "Ruby Ring", 1641, 18); - menuLine("40", "Ruby Necklace", 1660, 19); - menuLine("43", "Cut Diamond", 1601, 20); - menuLine("43", "Diamond Ring", 1643, 21); - menuLine("50", "Ruby Amulet", 1679, 22); - menuLine("55", "Cut Dragonstone", 1615, 23); - menuLine("55", "Dragonstone Ring", 1645, 24); - menuLine("56", "Diamond Necklace", 1662, 25); - menuLine("67", "Cut Onyx", 6573, 26); - menuLine("67", "Onyx Ring", 6575, 27); - menuLine("70", "Diamond Amulet", 1681, 28); - menuLine("80", "Dragonstone Amulet", 1683, 29); - menuLine("82", "Onyx Necklace", 6577, 30); - menuLine("90", "Onyx Amulet", 6579, 31); - optionTab("Crafting", "Jewellery", "Weaving", "Armour", "Spinning", - "Pottery", "Glass", "Jewellery", "Weaponry", "", - "", "", "", "", ""); - } - - else if (screen == 7) { - clearMenu(); - menuLine("54", "Water battlestaff", 1395, 0); - menuLine("58", "Earth battlestaff", 1399, 1); - menuLine("62", "Fire battlestaff", 1393, 2); - menuLine("66", "Air battlestaff", 1397, 3); - optionTab("Crafting", "Weaponry", "Weaving", "Armour", "Spinning", - "Pottery", "Glass", "Jewellery", "Weaponry", "", - "", "", "", "", ""); - } - } - - /* - * Skill ID: 12 - * - * @param screen - * - * @return - */ - public void fletchingComplex(int screen) { - if (screen == 1) { - clearMenu(); - menuLine("1", "Bronze arrow", 882, 0); - menuLine("5", "Ogre arrow", 2866, 1); - menuLine("7", "Bronze 'brutal' arrow", 4773, 2); - menuLine("15", "Iron arrow", 884, 3); - menuLine("18", "Iron 'brutal' arrow", 4778, 4); - menuLine("30", "Steel arrow", 886, 5); - menuLine("33", "Steel 'brutal' arrow", 4783, 6); - menuLine("38", "Black 'brutal' arrow", 4788, 7); - menuLine("45", "Mithril arrow", 888, 8); - menuLine("49", "Mithril 'brutal' arrow", 4793, 9); - menuLine("60", "Adamant arrow", 890, 10); - menuLine("62", "Adamant 'brutal' arrow", 4798, 11); - menuLine("75", "Rune arrow", 892, 12); - menuLine("77", "Rune 'brutal' arrow", 4803, 13); - optionTab("Fletching", "Arrows", "Arrows", "Bows", "Darts", - "", "", "", "", "", "", "", "", "", ""); - } - - else if (screen == 2) { - clearMenu(); - menuLine("5", "Shortbow", 841, 0); - menuLine("10", "Longbow", 839, 1); - menuLine("20", "Oak Shortbow", 843, 2); - menuLine("25", "Oak Longbow", 845, 3); - menuLine("30", "Ogre Composite Bow(After Zogre Flesh Eaters)", - 4827, 4); - menuLine("35", "Willow Shortbow", 849, 5); - menuLine("40", "Willow Longbow", 847, 6); - menuLine("50", "Maple Shortbow", 853, 7); - menuLine("55", "Maple Longbow", 851, 8); - menuLine("65", "Yew Shortbow", 857, 9); - menuLine("70", "Yew Longbow", 855, 10); - menuLine("80", "Magic Shortbow", 861, 11); - menuLine("85", "Magic Longbow", 859, 12); - optionTab("Fletching", "Bows", "Arrows", "Bows", "Darts", - "", "", "", "", "", "", "", "", "", ""); - } - - else if (screen == 3) { - clearMenu(); - menuLine("1", "Bronze Dart", 806, 0); - menuLine("22", "Iron Dart", 807, 1); - menuLine("37", "Steel Dart", 808, 2); - menuLine("52", "Mithril Dart", 809, 3); - menuLine("67", "Adamant Dart", 810, 4); - menuLine("81", "Rune Dart", 811, 5); - optionTab("Fletching", "Darts", "Arrows", "Bows", "Darts", - "", "", "", "", "", "", "", "", "", ""); - } - } - - /* - * Skill ID: 13 - * - * @param screen - * - * @return - */ - public void slayerComplex(int screen) { - if (screen == 1) { - clearMenu(); - menuLine("5", "Crawling Hand", 4133, 0); - menuLine("7", "Cave Bug", 4521, 1); - menuLine("10", "Cave Crawler", 4134, 2); - menuLine("15", "Banshee", 4135, 3); - menuLine("17", "Cave Slime", 4520, 4); - menuLine("20", "Rockslug", 4136, 5); - menuLine("25", "Cockatrice", 4137, 6); - menuLine("30", "Pyrefiend", 4138, 7); - menuLine("40", "Basalisk", 4139, 8); - menuLine("45", "Infernal Mage", 4140, 9); - menuLine("50", "Bloodveld", 4141, 10); - menuLine("52", "Jelly", 4142, 11); - menuLine("55", "Turoth", 4143, 12); - menuLine("60", "Aberrant Spectre", 4144, 13); - menuLine("65", "Dust Devil", 4145, 14); - menuLine("70", "Kurask", 4146, 15); - menuLine("72", "Skeletal Wyvern", 6811, 16); - menuLine("75", "Gargoyle", 4147, 17); - menuLine("80", "Nechrael", 4148, 18); - menuLine("85", "Abyssal Demon", 4149, 19); - menuLine("90", "Dark Beast", 6637, 20); - optionTab("Slayer", "Monsters", "Monsters", "Equipment", "", "", "", "", "", "", "", "", "", "", ""); - } - - else if (screen == 2) { - clearMenu(); - menuLine("1", "Enchanted Gem", 4155, 0); - menuLine("1", "Bag Of Salt", 4161, 1); - menuLine("1", "Ice Cooler", 6696, 2); - menuLine("1", "Spiny Helmet (With 5 Defence)", 4551, 3); - menuLine("1", "Rock Hammer", 4162, 4); - menuLine("10", "Facemask", 4164, 5); - menuLine("15", "Earmuffs", 4166, 6); - menuLine("25", "Mirror Shield (With 20 Defence)", 4156, 7); - menuLine("32", "Fishing Explosive", 6660, 8); - menuLine("33", "Harpie Bug Lantern (Not a light source)", 7053, 9); - menuLine("37", "Insulated Boots", 7159, 10); - menuLine("42", "Slayer Gloves", 6708, 11); - menuLine("55", "Leaf-Bladed Spear", 4158, 12); - menuLine("55", "Broad arrows (With 50 Range)", 4150, 13); - menuLine("55", "Slayer's staff(With 50 Magic)", 4170, 14); - menuLine("57", "Fungicide Spray", 7421, 15); - menuLine("60", "Nose Peg", 4168, 16); - optionTab("Slayer", "Equipment", "Monsters", "Equipment", "", "", "", "", "", "", "", "", "", "", ""); - } - } - - /* - * Skill ID: 14 - * - * @param screen - * - * @return - */ - public void miningComplex(int screen) { - if (screen == 1) { - clearMenu(); - menuLine("1", "Rune Essence(After Rune Mysteries)", 1436, 0); - menuLine("1", "Clay", 434, 1); - menuLine("1", "Copper Ore", 436, 2); - menuLine("1", "Tin Ore", 438, 3); - menuLine("10", "Limestone", 3211, 4); - menuLine("10", "Blurite Ore", 668, 5); - menuLine("15", "Iron Ore", 440, 6); - menuLine("20", "Elemental Ore(After Starting Elemental Workshop)", 2892, 7); - menuLine("20", "Silver Ore", 442, 8); - menuLine("30", "Coal", 453, 9); - menuLine("30", "Pure Essence(After Rune Mysteries)", 7936, 10); - menuLine("35", "Sandstone", 6977, 11); - menuLine("40", "Gold Ore", 444, 12); - menuLine("40", "Gem Rocks", 1603, 13); - menuLine("45", "Granite", 6983, 14); - menuLine("55", "Mithril Ore", 447, 15); - menuLine("70", "Adamantite Ore", 449, 16); - menuLine("85", "Runite Ore", 451, 17); - optionTab("Mining", "Ores", "Ores", "Pickaxes", "", "", - "", "", "", "", "", "", "", "", ""); - } - - else if (screen == 2) { - clearMenu(); - menuLine("1", "Bronze Pickaxe", 1265, 0); - menuLine("1", "Iron Pickaxe", 1267, 1); - menuLine("6", "Steel Pickaxe", 1269, 2); - menuLine("21", "Mithril Pickaxe", 1273, 3); - menuLine("31", "Adamant Pickaxe", 1271, 4); - menuLine("41", "Rune Pickaxe", 1275, 5); - optionTab("Mining", "Pickaxes", "Ores", "Pickaxes", "", - "", "", "", "", "", "", "", "", "", ""); - } - - else if (screen == 3) { - clearMenu(); - menuLine("60", "Mining Guild", 447, 0); - optionTab("Mining", "", "Ores", "Pickaxes", "", - "", "", "", "", "", "", "", "", "", ""); - } - } - - /* - * Skill ID: 15 - * - * @param screen - * - * @return - */ - public void smithingComplex(int screen) { - if (screen == 1) { - clearMenu(); - menuLine("1", "Bronze(1 Tin Ore + 1 Copper Ore)", 2349, 0); - menuLine("15", "Iron(50% Chance of Success)", 2351, 1); - menuLine("20", "Elemental Metal(After Elemental Workshop)", 2893, 2); - menuLine("20", "Silver", 2355, 3); - menuLine("30", "Steel(2 Coal + 1 Iron Ore)", 2353, 4); - menuLine("40", "Gold", 2357, 5); - menuLine("50", "Mithril(4 Coal + 1 Mithril Ore)", 2359, 6); - menuLine("70", "Adamant(6 Coal + 1 Adamantite Ore)", 2361, 7); - menuLine("85", "Runite(8 Coal + 1 Runite Ore)", 2363, 8); - optionTab("Smithing", "Smelting", "Smelting", "Bronze", "Iron", - "Steel", "Mithril", "Adamantite", "Runite", "Gold", - "Elemental", "Other", "", "", ""); - } - - else if (screen == 2) { - clearMenu(); - String type = "Bronze"; - menuLine("1", type + " Dagger - 1 Bar", 1205, 0); - menuLine("1", type + " Hatchet - 1 Bar", 1351, 1); - menuLine("2", type + " Mace - 1 Bar", 1422, 2); - menuLine("3", type + " Med Helm - 1 Bar", 1139, 3); - menuLine("4", type + " Sword - 1 Bar", 1277, 4); - menuLine("4", type + " Dart Tips - 1 Bar makes 10", 819, 5); - menuLine("4", type + " Wire - 1 Bar", 1794, 6); - menuLine("4", type + " Nails - 1 Bar makes 15", 4819, 7); - menuLine("5", type + " Scimitar - 2 Bars", 1321, 8); - menuLine("5", type + " Spear - 1 Bar + 1 Log", 1237, 9); - menuLine("5", type + " Arrowhead - 1 Bar makes 15", 39, 10); - menuLine("6", type + " Longsword - 2 Bars", 1291, 11); - menuLine("7", type + " Full Helm - 2 Bars", 1155, 12); - menuLine("7", type + " Throwing Knife", 864, 13); - menuLine("8", type + " Square Shield - 2 Bars", 1173, 14); - menuLine("9", type + " Warhammer - 3 Bars", 1337, 15); - menuLine("10", type + " Battleaxe - 3 Bars", 1375, 16); - menuLine("11", type + " Chainbody - 3 Bars", 1103, 17); - menuLine("12", type + " Kiteshield - 3 Bars", 1189, 18); - menuLine("13", type + " Claws(After Death Plateu) - 2 Bars", 3095, - 19); - menuLine("14", type + " Two-Handed Sword - 3 Bars", 1307, 20); - menuLine("16", type + " Platelegs - 3 Bars", 1075, 21); - menuLine("16", type + " Plateskirt - 3 Bars", 1087, 22); - menuLine("18", type + " Platebody - 5 Bars", 1117, 23); - optionTab("Smithing", "Bronze", "Smelting", "Bronze", "Iron", - "Steel", "Mithril", "Adamantite", "Runite", "Gold", - "Elemental", "Other", "", "", ""); - } else if (screen == 3) { - clearMenu(); - String type = "Iron"; - menuLine("15", type + " Dagger - 1 Bar", 1203, 0); - menuLine("16", type + " Hatchet - 1 Bar", 1349, 1); - menuLine("17", type + " Mace - 1 Bar", 1420, 2); - menuLine("17", type + " Spit - 1 Bar", 7225, 3); - menuLine("18", type + " Med Helm - 1 Bar", 1137, 4); - menuLine("19", type + " Sword - 1 Bar", 1279, 5); - menuLine("19", type + " Dart Tips - 1 Bar makes 10", 820, 6); - menuLine("19", type + " Nails - 1 Bar makes 15", 4819, 7); - menuLine("20", type + " Scimitar - 2 Bars", 1323, 8); - menuLine("20", type + " Spear - 1 Bar + 1 Log", 1239, 9); - menuLine("20", type + " Arrowhead - 1 Bar makes 15", 40, 10); - menuLine("21", type + " Longsword - 2 Bars", 1293, 11); - menuLine("22", type + " Full Helm - 2 Bars", 1153, 12); - menuLine("22", type + " Throwing Knife", 863, 13); - menuLine("23", type + " Square Shield - 2 Bars", 1175, 14); - menuLine("24", type + " Warhammer - 3 Bars", 1335, 15); - menuLine("25", type + " Battleaxe - 3 Bars", 1363, 16); - menuLine("26", type + " Chainbody - 3 Bars", 1101, 17); - menuLine("26", "Oil Lantern Frame - 1 Bar", 4540, 18); - menuLine("27", type + " Kiteshield - 3 Bars", 1191, 19); - menuLine("28", type + " Claws(After Death Plateau) - 2 Bars", 3096, - 20); - menuLine("29", type + " Two-Handed Sword - 3 Bars", 1309, 21); - menuLine("31", type + " Platelegs - 3 Bars", 1067, 22); - menuLine("31", type + " Plateskirt - 3 Bars", 1081, 23); - menuLine("33", type + " Platebody - 5 Bars", 1115, 24); - optionTab("Smithing", "Iron", "Smelting", "Bronze", "Iron", - "Steel", "Mithril", "Adamantite", "Runite", "Gold", - "Elemental", "Other", "", "", ""); - } - - else if (screen == 4) { - clearMenu(); - String type = "Steel"; - menuLine("30", type + " Dagger - 1 Bar", 1207, 0); - menuLine("31", type + " Hatchet - 1 Bar", 1353, 1); - menuLine("32", type + " Mace - 1 Bar", 1424, 2); - menuLine("33", type + " Med Helm - 1 Bar", 1141, 3); - menuLine("34", type + " Sword - 1 Bar", 1281, 4); - menuLine("34", type + " Dart Tips - 1 Bar makes 10", 821, 5); - menuLine("34", type + " Nails - 1 Bar makes 15", 1539, 6); - menuLine("35", type + " Scimitar - 2 Bars", 1325, 7); - menuLine("35", type + " Spear - 1 Bar + 1 Log", 1241, 8); - menuLine("35", type + " Arrowhead - 1 Bar makes 15", 41, 9); - menuLine("36", type + " Longsword - 2 Bars", 1295, 10); - menuLine("36", type + " Studs - 1 Bar", 2370, 11); - menuLine("37", type + " Full Helm - 2 Bars", 1157, 12); - menuLine("37", type + " Throwing Knife", 865, 13); - menuLine("38", type + " Square Shield - 2 Bars", 1177, 14); - menuLine("39", type + " Warhammer - 3 Bars", 1339, 15); - menuLine("40", type + " Battleaxe - 3 Bars", 1365, 16); - menuLine("41", type + " Chainbody - 3 Bars", 1105, 17); - menuLine("42", type + " Kiteshield - 3 Bars", 1193, 18); - menuLine("43", type + " Claws(After Death Plateu) - 2 Bars", 3097, - 19); - menuLine("44", type + " Two-Handed Sword - 3 Bars", 1311, 20); - menuLine("46", type + " Platelegs - 3 Bars", 1069, 21); - menuLine("46", type + " Plateskirt - 3 Bars", 1083, 22); - menuLine("48", type + " Platebody - 5 Bars", 1119, 23); - optionTab("Smithing", "Steel", "Smelting", "Bronze", "Iron", - "Steel", "Mithril", "Adamantite", "Runite", "Gold", - "Elemental", "Other", "", "", ""); - } else if (screen == 5) { - clearMenu(); - String type = "Mithril"; - menuLine("50", type + " Dagger - 1 Bar", 1209, 0); - menuLine("51", type + " Hatchet - 1 Bar", 1355, 1); - menuLine("52", type + " Mace - 1 Bar", 1428, 2); - menuLine("53", type + " Med Helm - 1 Bar", 1143, 3); - menuLine("54", type + " Sword - 1 Bar", 1285, 4); - menuLine("54", type + " Dart Tips - 1 Bar makes 10", 822, 5); - menuLine("54", type + " Nails - 1 Bar makes 15", 4822, 6); - menuLine("55", type + " Scimitar - 2 Bars", 1329, 7); - menuLine("55", type + " Spear - 1 Bar + 1 Log", 1243, 8); - menuLine("55", type + " Arrowhead - 1 Bar makes 15", 42, 9); - menuLine("56", type + " Longsword - 2 Bars", 1299, 10); - menuLine("57", type + " Full Helm - 2 Bars", 1159, 11); - menuLine("57", type + " Throwing Knife", 866, 12); - menuLine("58", type + " Square Shield - 2 Bars", 1181, 13); - menuLine("59", type + " Warhammer - 3 Bars", 1343, 14); - menuLine("60", type + " Battleaxe - 3 Bars", 1369, 15); - menuLine("61", type + " Chainbody - 3 Bars", 1109, 16); - menuLine("62", type + " Kiteshield - 3 Bars", 1197, 17); - menuLine("63", type + " Claws(After Death Plateau) - 2 Bars", 3099, - 18); - menuLine("64", type + " Two-Handed Sword - 3 Bars", 1315, 19); - menuLine("66", type + " Platelegs - 3 Bars", 1071, 20); - menuLine("66", type + " Plateskirt - 3 Bars", 1085, 21); - menuLine("68", type + " Platebody - 5 Bars", 1121, 22); - optionTab("Smithing", "Mithril", "Smelting", "Bronze", "Iron", - "Steel", "Mithril", "Adamantite", "Runite", "Gold", - "Elemental", "Other", "", "", ""); - } else if (screen == 6) { - clearMenu(); - String type = "Adamant"; - menuLine("70", type + " Dagger - 1 Bar", 1211, 0); - menuLine("71", type + " Hatchet - 1 Bar", 1357, 1); - menuLine("72", type + " Mace - 1 Bar", 1430, 2); - menuLine("73", type + " Med Helm - 1 Bar", 1145, 3); - menuLine("74", type + " Sword - 1 Bar", 1287, 4); - menuLine("74", type + " Dart Tips - 1 Bar makes 10", 823, 5); - menuLine("74", type + " Nails - 1 Bar makes 15", 4823, 6); - menuLine("75", type + " Scimitar - 2 Bars", 1331, 7); - menuLine("75", type + " Spear - 1 Bar + 1 Log", 1245, 8); - menuLine("75", type + " Arrowhead - 1 Bar makes 15", 43, 9); - menuLine("76", type + " Longsword - 2 Bars", 1301, 10); - menuLine("77", type + " Full Helm - 2 Bars", 1161, 11); - menuLine("77", type + " Throwing Knife", 867, 12); - menuLine("78", type + " Square Shield - 2 Bars", 1183, 13); - menuLine("79", type + " Warhammer - 3 Bars", 1343, 14); - menuLine("80", type + " Battleaxe - 3 Bars", 1371, 15); - menuLine("81", type + " Chainbody - 3 Bars", 1111, 16); - menuLine("82", type + " Kiteshield - 3 Bars", 1199, 17); - menuLine("83", type + " Claws(After Death Plateau) - 2 Bars", 3100, - 18); - menuLine("84", type + " Two-Handed Sword - 3 Bars", 1317, 19); - menuLine("86", type + " Platelegs - 3 Bars", 1073, 20); - menuLine("86", type + " Plateskirt - 3 Bars", 1091, 21); - menuLine("88", type + " Platebody - 5 Bars", 1123, 22); - optionTab("Smithing", "Adamantite", "Smelting", "Bronze", "Iron", - "Steel", "Mithril", "Adamantite", "Runite", "Gold", - "Elemental", "Other", "", "", ""); - } else if (screen == 7) { - clearMenu(); - String type = "Rune"; - menuLine("85", type + " Dagger - 1 Bar", 1213, 0); - menuLine("86", type + " Hatchet - 1 Bar", 1359, 1); - menuLine("87", type + " Mace - 1 Bar", 1432, 2); - menuLine("88", type + " Med Helm - 1 Bar", 1147, 3); - menuLine("89", type + " Sword - 1 Bar", 1289, 4); - menuLine("89", type + " Dart Tips - 1 Bar makes 10", 824, 5); - menuLine("89", type + " Nails - 1 Bar makes 15", 4824, 6); - menuLine("90", type + " Scimitar - 2 Bars", 1333, 7); - menuLine("90", type + " Spear - 1 Bar + 1 Log", 1247, 8); - menuLine("90", type + " Arrowhead - 1 Bar makes 15", 44, 9); - menuLine("91", type + " Longsword - 2 Bars", 1303, 10); - menuLine("92", type + " Full Helm - 2 Bars", 1163, 11); - menuLine("92", type + " Throwing Knife", 868, 12); - menuLine("93", type + " Square Shield - 2 Bars", 1185, 13); - menuLine("94", type + " Warhammer - 3 Bars", 1347, 14); - menuLine("95", type + " Battleaxe - 3 Bars", 1373, 15); - menuLine("96", type + " Chainbody - 3 Bars", 1113, 16); - menuLine("97", type + " Kiteshield - 3 Bars", 1201, 17); - menuLine("98", type + " Claws(After Death Plateau) - 2 Bars", 3101, - 18); - menuLine("99", type + " Two-Handed Sword - 3 Bars", 1319, 19); - menuLine("99", type + " Platelegs - 3 Bars", 1079, 20); - menuLine("99", type + " Plateskirt - 3 Bars", 1093, 21); - menuLine("99", type + " Platebody - 5 Bars", 1127, 22); - optionTab("Smithing", "Runite", "Smelting", "Bronze", "Iron", - "Steel", "Mithril", "Adamantite", "Runite", "Gold", - "Elemental", "Other", "", "", ""); - } else if (screen == 8) { - clearMenu(); - menuLine("50", "Gold Bowl(After Starting Legends' Quest)", 721, 0); - menuLine("50", "Gold Helmet(After starting Between a Rock)", 4567, 1); - optionTab("Smithing", "Gold", "Smelting", "Bronze", "Iron", - "Steel", "Mithril", "Adamantite", "Runite", "Gold", - "Elemental", "Other", "", "", ""); - } else if (screen == 9) { - clearMenu(); - menuLine("20", "Elemental Shield(After Elemental Workshop)", 2890, - 0); - optionTab("Smithing", "Elemental", "Smelting", "Bronze", "Iron", - "Steel", "Mithril", "Adamantite", "Runite", "Gold", - "Elemental", "Other", "", "", ""); - } else if (screen == 10) { - clearMenu(); - menuLine("60", "Dragon Square Shield", 1187, 0); - optionTab("Smithing", "Other", "Smelting", "Bronze", "Iron", - "Steel", "Mithril", "Adamantite", "Runite", "Gold", - "Elemental", "Other", "", "", ""); - } - } - - /* - * Skill ID: 16 - * - * @param screen - * - * @return - */ - public void fishingComplex(int screen) { - if (screen == 1) { - clearMenu(); - menuLine("1", "Small Net", 303, 0); - menuLine("5", "Bait Fishing", 307, 1); - menuLine("16", "Big Net Fishing", 305, 2); - menuLine("20", "Fly Fishing Rod", 309, 3); - menuLine("35", "Harpoon", 311, 4); - menuLine("40", "Lobster Pot", 301, 5); - menuLine("65", "Vessel Fishing", 3157, 6); - optionTab("Fishing", "Techniques", "Techniques", "Catches", - "", "", "", "", "", "", "", "", "", "", ""); - } - - else if (screen == 2) { - clearMenu(); - menuLine("1", "Shrimp - Net Fishing", 317, 0); - menuLine("5", "Sardine - Sea Bait Fishing", 327, 1); - menuLine("5", "Karambwanji - Net Fishing", 3150, 2); - menuLine("10", "Herring - Sea Bait Fishing", 347, 3); - menuLine("15", "Anchovie - Net Fishing", 321, 4); - menuLine("16", "Mackerel - Big Net Fishing", 353, 5); - menuLine("16", "Oyster - Big Net Fishing", 407, 6); - menuLine("16", "Casket - Big Net Fishing", 405, 7); - menuLine("16", "Seaweed - Big Net Fishing", 401, 8); - menuLine("20", "Trout - Fly Fishing", 335, 9); - menuLine("23", "Cod - Big Net Fishing", 341, 10); - menuLine("25", "Pike - River Bait Fishing", 349, 11); - menuLine("28", "Slimy Eel - River Bait Fishing", 3379, 12); - menuLine("30", "Salmon - Fly Fishing", 331, 13); - menuLine("35", "Tuna - Harpoon Fishing", 359, 14); - menuLine("38", "Cave Eel - River Bait Fishing", 5001, 15); - menuLine("40", "Lobster - Lobster Pot Fishing", 377, 16); - menuLine("46", "Bass - Big Net Fishing", 363, 17); - menuLine("50", "Swordfish - Harpoon Fishing", 371, 18); - menuLine("53", "Lava Eel - Bait Fishing", 2148, 19); - menuLine("62", "Monkfish - Net Fishing", 7944, 20); - menuLine("65", "Karambwan - Vessel Fishing", 3142, 21); - menuLine("76", "Shark - Harpoon Fishing", 383, 22); - menuLine("79", "Sea Turtle - Fishing Trawler", 395, 23); - menuLine("81", "Manta Ray - Fishing Trawler", 389, 24); - optionTab("Fishing", "Catches", "Techniques", "Catches", - "", "", "", "", "", "", "", "", "", "", ""); - } - - else if (screen == 3) { - clearMenu(); - menuLine("68", "Fishing Guild", 385, 0); - optionTab("Fishing", "", "Techniques", "Catches", - "", "", "", "", "", "", "", "", "", "", ""); - } - } - - /* - * Skill ID: 17 - * - * @param screen - * - * @return - */ - public void cookingComplex(int screen) { - if (screen == 1) { - clearMenu(); - menuLine("1", "Meat", 2142, 0); - menuLine("1", "Shrimp", 315, 1); - menuLine("1", "Chicken", 2140, 2); - menuLine("1", "Rabbit", 3228, 3); - menuLine("1", "Anchovies", 319, 4); - menuLine("1", "Sardine", 325, 5); - menuLine("1", "Karambwanji", 3151, 6); - menuLine("1", "Karambwan", 3144, 7); - menuLine("1", "Ugthanki Kebab", 1883, 8); - menuLine("5", "Herring", 347, 9); - menuLine("10", "Mackerel", 355, 10); - menuLine("12", "Thin Snail", 3363, 11); - menuLine("15", "Trout", 333, 12); - menuLine("16", "Spider", 6293, 13); - menuLine("16", "Roasted Rabbit", 7223, 14); - menuLine("17", "Lean Snail", 3365, 15); - menuLine("18", "Cod", 339, 16); - menuLine("20", "Pike", 351, 17); - menuLine("22", "Fat Snail", 3367, 18); - menuLine("25", "Salmon", 329, 19); - menuLine("28", "Slimy Eel", 3379, 20); - menuLine("30", "Tuna", 361, 21); - menuLine("30", "Roasted Chompy", 2878, 22); - menuLine("31", "Fishcake", 7530, 23); - menuLine("38", "Cave Eel", 5003, 24); - menuLine("40", "Lobster", 379, 25); - menuLine("41", "Jubbly", 7568, 26); - menuLine("43", "Bass", 365, 27); - menuLine("45", "Swordfish", 373, 28); - menuLine("53", "Lava Eel", 2149, 29); - menuLine("62", "Monkfish", 7946, 30); - menuLine("80", "Shark", 385, 31); - menuLine("82", "Sea Turtle", 397, 32); - menuLine("91", "Manta Ray", 391, 33); - optionTab("Cooking", "Meats", "Meats", "Bread", "Pies", "Stews", - "Pizzas", "Cakes", "Wine", "Hot Drinks", "Brewing", - "Potatoes", "Diary", "Gnome", ""); - } - - else if (screen == 2) { - clearMenu(); - menuLine("1", "Bread", 2309, 0); - menuLine("58", "Pitta Bread", 1865, 1); - menuLine("", "To make bread:", 0, 2); - menuLine("", "1.Pick some grain and use a hopper to make flour", 0, - 3); - menuLine("", "2.Use a pot to collect the flour you have made", 0, 4); - menuLine("", "3.Fill a bucket or jug with water from a sink", 0, 5); - menuLine("", "4.Mix the flour and water to make some dough", 0, 6); - menuLine("", "5.Cook the dough by using it with a stove", 0, 7); - optionTab("Cooking", "Bread", "Meats", "Bread", "Pies", "Stews", - "Pizzas", "Cakes", "Wine", "Hot Drinks", "Brewing", - "Potatoes", "Diary", "Gnome", ""); - } - - else if (screen == 3) { - clearMenu(); - menuLine("10", "Redberry Pie", 2325, 0); - menuLine("20", "Meat Pie", 2327, 1); - menuLine("29", "Mud Pie", 7170, 2); - menuLine("30", "Apple Pie", 2323, 3); - menuLine("34", "Garden Pie", 7178, 4); - menuLine("47", "Fish Pie", 7188, 5); - menuLine("70", "Admiral Pie", 7198, 6); - menuLine("85", "Wild Pie", 7208, 7); - menuLine("95", "Summer Pie", 7218, 8); - menuLine("", "To make a pie:", 0, 9); - menuLine("", "1.Mixe flour and water to make pastry dough", 0, 10); - menuLine("", "2.Place the dough in an empty pie dish", 0, 11); - menuLine("", "3.Use our choice of filling with the empty pie", 0, - 12); - menuLine("", "4.Cook the pie by using it with a stove", 0, 13); - optionTab("Cooking", "Pies", "Meats", "Bread", "Pies", "Stews", - "Pizzas", "Cakes", "Wine", "Hot Drinks", "Brewing", - "Potatoes", "Diary", "Gnome", ""); - } - - else if (screen == 4) { - clearMenu(); - menuLine("25", "Stew", 2003, 0); - menuLine("60", "Curry", 2011, 1); - menuLine("", "To make stew:", 0, 2); - menuLine("", "1.Obtain a bowl and fill it with water", 0, 3); - menuLine("", "2.Pick a potato and place it in the bowl.", 0, 4); - menuLine("", "3.Cook some meat and place it in the bowl", 0, 5); - menuLine("", "4.Cook the stew by using it with a stove or fire", 0, - 6); - menuLine("", "To make curry:", 0, 7); - menuLine("", "Make uncooked stew as above.", 0, 8); - menuLine("", "Before cooking, add some spices or curry leaves", 0, - 9); - optionTab("Cooking", "Stews", "Meats", "Bread", "Pies", "Stews", - "Pizzas", "Cakes", "Wine", "Hot Drinks", "Brewing", - "Potatoes", "Diary", "Gnome", ""); - } - - else if (screen == 5) { - clearMenu(); - menuLine("35", "Plain Pizza", 2289, 0); - menuLine("45", "Meat Pizza", 2293, 1); - menuLine("55", "Anchovy Pizza", 2297, 2); - menuLine("65", "Pineapple Pizza", 2301, 3); - menuLine("", "To make a pizza:", 0, 4); - menuLine("", "1.Mix flour and water to make a pizza base", 0, 5); - menuLine("", "2.Add a tomato to the pizza", 0, 6); - menuLine("", "3.Add some cheese to the pizza", 0, 7); - menuLine("", "4.Cook the pizza by using it with a stove", 0, 8); - menuLine("", "5.Add your choice of topping to the pizza", 0, 9); - optionTab("Cooking", "Pizzas", "Meats", "Bread", "Pies", "Stews", - "Pizzas", "Cakes", "Wine", "Hot Drinks", "Brewing", - "Potatoes", "Diary", "Gnome", ""); - } - - else if (screen == 6) { - clearMenu(); - menuLine("40", "Cake", 1891, 0); - menuLine("50", "Chocolate Cake", 1897, 1); - menuLine("", "To make a cake:", 0, 2); - menuLine("", "1.Mix flour, eggs and milk together in a cake tin", - 0, 3); - menuLine("", "2.Cook the cake by using it with a stove", 0, 4); - menuLine("", "3.Optional:Buy some chocolate and add", 0, 5); - menuLine("", "it to the cake to make a choclate cake", 0, 6); - optionTab("Cooking", "Cakes", "Meats", "Bread", "Pies", "Stews", - "Pizzas", "Cakes", "Wine", "Hot Drinks", "Brewing", - "Potatoes", "Diary", "Gnome", ""); - } - - else if (screen == 7) { - clearMenu(); - menuLine("35", "Wine", 1993, 0); - menuLine("", "To make wine:", 0, 1); - menuLine("", "1.Fill a jug with water", 0, 2); - menuLine("", "2.Use grapes with the jug of water", 0, 3); - menuLine("", "3.Wait until the wine ferments", 0, 4); - menuLine("", "4.The wine will ferment while left in your", 0, 5); - menuLine("", "inventory or the bank", 0, 6); - optionTab("Cooking", "Wine", "Meats", "Bread", "Pies", "Stews", - "Pizzas", "Cakes", "Wine", "Hot Drinks", "Brewing", - "Potatoes", "Diary", "Gnome", ""); - } - - else if (screen == 8) { - clearMenu(); - menuLine("20", "Nettle Tea", 1978, 0); - menuLine("", "To make nettle tea:", 0, 1); - menuLine("", "1.Fill a bowl with water", 0, 2); - menuLine("", "2.Put some picked nettles into the bowl of water", 0, - 3); - menuLine("", "3.Boil the nettle-water by using it with a range", 0, - 4); - menuLine("", "4.Use the bowl of nettle tea with a cup", 0, 5); - menuLine("", "5.If you take milk, use some milk on the tea", 0, 6); - optionTab("Cooking", "Hot Drinks", "Meats", "Bread", "Pies", - "Stews", "Pizzas", "Cakes", "Wine", "Hot Drinks", - "Brewing", "Potatoes", "Diary", "Gnome", ""); - } - - else if (screen == 9) { - clearMenu(); - menuLine("14", "Cider(4 Apple Mush)", 5763, 0); - menuLine("19", "Dwarven Stout(4 Hammerstone Hops)", 1913, 1); - menuLine("24", "Asgarnian Ale(4 Asgarnian Hops)", 1905, 2); - menuLine("29", "Greenman's Ale(4 Harralander Leaves)", 1909, 3); - menuLine("34", "Wizard's Mind Bomb(4 Yanillian Hops)", 1907, 4); - menuLine("39", "Dragon Bitter(4 Krandorian Hops)", 1911, 5); - menuLine("44", "Moonlight Mead(4 Bittercap Mushrooms)", 2955, 6); - menuLine("49", "Axeman's Folly(1 Oak Root)", 5751, 7); - menuLine("54", "Chef's Delight(4 Portions of Chocolate Dust)", - 5755, 8); - menuLine("59", "Slayer's Respite(4 Wildblood Hops)", 5759, 9); - optionTab("Cooking", "Brewing", "Meats", "Bread", "Pies", "Stews", - "Pizzas", "Cakes", "Wine", "Hot Drinks", "Brewing", - "Potatoes", "Diary", "Gnome", ""); - } - - else if (screen == 10) { - clearMenu(); - menuLine("7", "Baked Potato", 6701, 0); - menuLine("9", "Spicy Sauce(Topping Ingredient)", 7072, 1); - menuLine("11", "Chilli Con Carne(Topping)", 7062, 2); - menuLine("13", "Scrambled Egg(Topping Ingredient)", 7078, 3); - menuLine("23", "Scrambled Egg and Tomato(Topping)", 7064, 4); - menuLine("28", "Sweetcorn", 5988, 5); - menuLine("39", "Baked Potato with Butter", 6703, 6); - menuLine("41", "Baked Potato with Chilli Con Carne", 7054, 7); - menuLine("42", "Fried Onion(Topping Ingredient)", 7084, 8); - menuLine("46", "Fried Mushroom(Topping Ingredient)", 7082, 9); - menuLine("47", "Baked Potato with Butter and Cheese", 6705, 10); - menuLine("51", "Baked Potato with Egg and Tomato", 7056, 11); - menuLine("57", "Fried Mushroom and Onion(Topping)", 7066, 12); - menuLine("64", "Baked Potato with Mushroom and Onion", 7058, 13); - menuLine("67", "Tuna and Sweetcorn(Topping)", 7068, 14); - menuLine("68", "Baked Potato with Tuna and Sweetcorn", 7060, 15); - menuLine("", "To make baked potatoes with toppings:", 0, 16); - menuLine("", "1.Bake the potato on a range", 0, 17); - menuLine("", "2.Add some butter", 0, 18); - menuLine("", "3.If needed, combine topping ingredients", 0, 19); - menuLine("", "by chopping them into a bowl", 0, 20); - menuLine("", "Ingredients for toppings:", 0, 21); - menuLine("", "1.Chilli con carne: Meat & spicy sauce", 0, 22); - menuLine("", "2.Egg and tomato: Scrambled egg & tomato", 0, 23); - menuLine("", "3.Mushroom and onion: Fried mushroom & onion", 0, 24); - menuLine("", "4.Tuna and sweetcorn: Tuna & cooked sweetcorn", 0, 25); - optionTab("Cooking", "Potatoes", "Meats", "Bread", "Pies", "Stews", - "Pizzas", "Cakes", "Wine", "Hot Drinks", "Brewing", - "Potatoes", "Diary", "Gnome", ""); - } - - else if (screen == 11) { - clearMenu(); - menuLine("4", "Chocolate Milk", 1977, 0); - menuLine("21", "Cream", 2130, 1); - menuLine("38", "Butter", 6697, 2); - menuLine("48", "Cheese", 1985, 3); - menuLine("", "To make churned dairy products:", 0, 4); - menuLine("", "1.Get a bucket of milk, a pot of cream or butter", 0, - 5); - menuLine("", "2.Use the milk, cream or butter in a churn", 0, 6); - menuLine("", "3.Milk can be churned into cream, ", 0, 7); - menuLine("", "then into butter, then into cheese", 0, 8); - optionTab("Cooking", "Dairy", "Meats", "Bread", "Pies", "Stews", - "Pizzas", "Cakes", "Wine", "Hot Drinks", "Brewing", - "Potatoes", "Diary", "Gnome", ""); - } - - else if (screen == 12) { - clearMenu(); - menuLine("6", "Fruit Blast", 2034, 0); - menuLine("8", "Pineapple Punch", 2036, 1); - menuLine("10", "Toad Crunchies", 2217, 2); - menuLine("12", "Spicy Crunchies", 2213, 3); - menuLine("14", "Worm Crunchies", 2237, 4); - menuLine("16", "Chocolate Chip Crunchies", 2239, 5); - menuLine("18", "Wizard Blizzard", 2040, 6); - menuLine("20", "Short Green Guy(SGG)", 2038, 7); - menuLine("25", "Fruit Batta", 2225, 8); - menuLine("26", "Toad Batta", 2221, 9); - menuLine("27", "Worm Batta", 2219, 10); - menuLine("28", "Vegetable Batta", 2227, 11); - menuLine("29", "Cheese and Tomato Batta", 2223, 12); - menuLine("30", "Worm Hole", 2191, 13); - menuLine("32", "Drunk Dragon", 2032, 14); - menuLine("33", "Chocolate Saturday", 2030, 15); - menuLine("35", "Vegetable Ball", 2195, 16); - menuLine("37", "Blurberry Special", 2028, 17); - menuLine("40", "Tangled Toads' Legs", 2187, 18); - menuLine("42", "Chocolate Bomb", 2185, 19); - optionTab("Cooking", "Gnome", "Meats", "Bread", "Pies", "Stews", - "Pizzas", "Cakes", "Wine", "Hot Drinks", "Brewing", - "Potatoes", "Diary", "Gnome", ""); - } - - else if (screen == 13) { - clearMenu(); - menuLine("32", "Chefs' Guild", 1949, 0); - optionTab("Cooking", "", "Meats", "Bread", "Pies", - "Stews", "Pizzas", "Cakes", "Wine", "Hot Drinks", - "Brewing", "Potatoes", "Diary", "Gnome", ""); - } - } - - /* - * Skill ID: 18 - * - * @param screen - * - * @return - */ - public void firemakingComplex(int screen) { - if (screen == 1) { - clearMenu(); - menuLine("1", "Normal Logs", 1511, 0); - menuLine("1", "Torch", 596, 1); - menuLine("1", "Candle", 36, 2); - menuLine("1", "Achey Logs", 2862, 3); - menuLine("4", "Candle Lantern", 4527, 4); - menuLine("5", "Pyre Logs", 3438, 5); - menuLine("12", "Oil Lamp", 4522, 6); - menuLine("15", "Oak Logs", 1521, 7); - menuLine("20", "Iron Spit", 7225, 8); - menuLine("20", "Oak Pyre Logs", 3440, 9); - menuLine("26", "Oil Lantern", 4535, 10); - menuLine("30", "Willow Logs", 1519, 11); - menuLine("33", "Harpie Bug Lantern", 7051, 12); - menuLine("35", "Teak Logs", 6333, 13); - menuLine("35", "Willow Pyre Logs", 3442, 14); - menuLine("40", "Teak Pyre Logs", 6211, 15); - menuLine("45", "Maple Logs", 1517, 16); - menuLine("49", "Bullseye Lantern", 4546, 17); - menuLine("49", "Sapphire Lantern", 4700, 18); - menuLine("50", "Mahogany Logs", 6332, 19); - menuLine("50", "Maple Pyre Logs", 3444, 20); - menuLine("55", "Mahogany Pyre Logs", 6213, 21); - menuLine("60", "Yew Logs", 1515, 22); - menuLine("65", "Cave Goblin Mining Helmet", 5014, 23); - menuLine("65", "Yew Pyre Logs", 3446, 24); - menuLine("75", "Magic Logs", 1513, 25); - menuLine("80", "Magic Pyre Logs", 3448, 26); - optionTab("Firemaking", "Firemaking", "Firemaking", "Equipment", - "", "", "", "", "", "", "", "", "", "", ""); - } - - else if (screen == 2) { - clearMenu(); - menuLine("1", "Tinderbox", 590, 0); - optionTab("Firemaking", "Equipment", "Firemaking", "Equipment", - "", "", "", "", "", "", "", "", "", "", ""); - } - } - - /* - * Skill ID: 19 - * - * @param screen - * - * @return - */ - public void woodcuttingComplex(int screen) { - if (screen == 1) { - clearMenu(); - menuLine("1", "Normal Tree", 1511, 0); - menuLine("1", "Achey Tree", 2862, 1); - menuLine("10", "Light Jungle", 6281, 2); - menuLine("15", "Oak Tree", 1521, 3); - menuLine("20", "Medium Jungle", 6283, 4); - menuLine("30", "Willow Tree", 1519, 5); - menuLine("35", "Dense Jungle", 6285, 6); - menuLine("35", "Teak Tree", 6333, 7); - menuLine("45", "Maple Tree", 1517, 8); - menuLine("45", "Hollow Tree", 3239, 9); - menuLine("50", "Mahogany Tree", 6332, 10); - menuLine("60", "Yew Tree", 1515, 11); - menuLine("75", "Magic Tree", 1513, 12); - optionTab("Woodcutting", "Trees", "Trees", "Hatchets", "Canoes", - "", "", "", "", "", "", "", "", "", ""); - } - - else if (screen == 2) { - clearMenu(); - menuLine("1", "Bronze Axe", 1351, 0); - menuLine("1", "Iron Axe", 1349, 1); - menuLine("6", "Steel Axe", 1353, 2); - menuLine("6", "Black Axe", 1361, 3); - menuLine("21", "Mithril Axe", 1355, 4); - menuLine("31", "Adamant Axe", 1357, 5); - menuLine("41", "Rune Axe", 1359, 6); - menuLine("61", "Dragon Axe", 6739, 7); - optionTab("Woodcutting", "Hatchets", "Trees", "Hatchets", "Canoes", - "", "", "", "", "", "", "", "", "", ""); - } - - else if (screen == 3) { - clearMenu(); - menuLine("12", "Log Canoe", 7414, 0); - menuLine("27", "Dugout Canoe", 7414, 1); - menuLine("42", "Stable Dugout Canoe", 7414, 2); - menuLine("57", "Waka Canoe", 7414, 3); - optionTab("Woodcutting", "Canoes", "Trees", "Hatchets", "Canoes", - "", "", "", "", "", "", "", "", "", ""); - } - } - - /* - * Skill ID: 20 - * - * @param screen - * - * @return - */ - public void farmingComplex(int screen) { - if (screen == 1) { - clearMenu(); - menuLine("1", "Potato", 1942, 0); - menuLine("5", "Onion", 1957, 1); - menuLine("7", "Cabbage", 1965, 2); - menuLine("12", "Tomato", 1982, 3); - menuLine("20", "Sweetcorn", 5986, 4); - menuLine("31", "Strawberry", 5504, 5); - menuLine("47", "Watermelon", 5982, 6); - optionTab("Farming", "Allotments", "Allotments", "Hops", "Trees", - "Fruit Trees", "Bushes", "Flowers", "Herbs", "Special", - "Scarecrows", "", "", "", ""); - } - - else if (screen == 2) { - clearMenu(); - menuLine("3", "Barley", 6006, 0); - menuLine("4", "Hammerstone Hop", 5994, 1); - menuLine("8", "Asgarnian Hop", 5996, 2); - menuLine("13", "Jute Plant", 5931, 3); - menuLine("16", "Yanillian Hop", 5998, 4); - menuLine("21", "Krandorian Hop", 6000, 5); - menuLine("28", "Wildblood Hop", 6002, 6); - optionTab("Farming", "Allotments", "Allotments", "Hops", "Trees", - "Fruit Trees", "Bushes", "Flowers", "Herbs", "Special", - "Scarecrows", "", "", "", ""); - } - - else if (screen == 3) { - clearMenu(); - menuLine("15", "Oak Tree", 1521, 0); - menuLine("30", "Willow Tree", 1519, 1); - menuLine("45", "Maple Tree", 1517, 2); - menuLine("60", "Yew Tree", 1515, 3); - menuLine("75", "Magic Tree", 1513, 4); - optionTab("Farming", "Trees", "Allotments", "Hops", "Trees", - "Fruit Trees", "Bushes", "Flowers", "Herbs", "Special", - "Scarecrows", "", "", "", ""); - } - - else if (screen == 4) { - clearMenu(); - menuLine("27", "Apple Tree", 1955, 0); - menuLine("33", "Banana Tree", 1963, 1); - menuLine("39", "Orange Tree", 2108, 2); - menuLine("42", "Curry Tree", 5970, 3); - menuLine("51", "Pineapple Plant", 2114, 4); - menuLine("57", "Papaya Tree", 5972, 5); - menuLine("68", "Palm Tree", 5974, 6); - optionTab("Farming", "Fruit Trees", "Allotments", "Hops", "Trees", - "Fruit Trees", "Bushes", "Flowers", "Herbs", "Special", - "Scarecrows", "", "", "", ""); - } - - else if (screen == 5) { - clearMenu(); - menuLine("10", "Redberry Bush", 1951, 0); - menuLine("22", "Cadavaberry Bush", 753, 1); - menuLine("36", "Dwellberry Bush", 2126, 2); - menuLine("48", "Jangerberry Bush", 247, 3); - menuLine("59", "White Berry Bush", 239, 4); - menuLine("70", "Poison Ivy Bush", 6018, 5); - optionTab("Farming", "Bushes", "Allotments", "Hops", "Trees", - "Fruit Trees", "Bushes", "Flowers", "Herbs", "Special", - "Scarecrows", "", "", "", ""); - } - - else if (screen == 6) { - clearMenu(); - menuLine("2", "Marigold(Protects low level crops from Disease)", - 6010, 0); - menuLine("11", "Rosemary(Protects Cabbages from Disease)", 6014, 1); - menuLine("24", "Nasturtium(Protects Watermelons from Disease)", - 6012, 2); - menuLine("25", "Woad", 1793, 3); - menuLine("26", "Limpwurt", 225, 4); - optionTab("Farming", "Flowers", "Allotments", "Hops", "Trees", - "Fruit Trees", "Bushes", "Flowers", "Herbs", "Special", - "Scarecrows", "", "", "", ""); - } - - else if (screen == 7) { - clearMenu(); - menuLine("9", "Guam", 249, 0); - menuLine("14", "Marrentill", 251, 1); - menuLine("19", "Tarromin", 253, 2); - menuLine("26", "Harralander", 255, 3); - menuLine("32", "Ranarr", 257, 4); - menuLine("38", "Toadflax", 2998, 5); - menuLine("44", "Irit", 259, 6); - menuLine("50", "Avantoe", 261, 7); - menuLine("56", "Kwuarm", 263, 8); - menuLine("62", "Snapdragon", 3000, 9); - menuLine("67", "Cadantine", 265, 10); - menuLine("73", "Lantadyme", 2481, 11); - menuLine("79", "Dwarf Weed", 267, 12); - menuLine("85", "Torstol", 269, 13); - optionTab("Farming", "Herbs", "Allotments", "Hops", "Trees", - "Fruit Trees", "Bushes", "Flowers", "Herbs", "Special", - "Scarecrows", "", "", "", ""); - } - - else if (screen == 8) { - clearMenu(); - menuLine("55", "Cactus", 6016, 0); - menuLine("63", "Belladonna", 5281, 1); - menuLine("72", "Calquat Tree", 5980, 2); - menuLine("83", "Spirit Tree", 6063, 3); - optionTab("Farming", "Special", "Allotments", "Hops", "Trees", - "Fruit Trees", "Bushes", "Flowers", "Herbs", "Special", - "Scarecrows", "", "", "", ""); - } - - else if (screen == 9) { - clearMenu(); - menuLine("23", "Able to make and place a scarecrow", 6059, 0); - menuLine("", "", 0, 1); - menuLine("", "Scarecrows help to stop sweetcorn from", 0, 2); - menuLine("", "being attacked by birds, while also", 0, 3); - menuLine("", "helping to prevent disease", 0, 4); - menuLine("", "", 0, 5); - menuLine("", "How to make a scarecrow:", 0, 6); - menuLine("", "", 0, 7); - menuLine("", "1.Fill an empty sack with straw.", 0, 8); - menuLine("", "2.Drive a hay sack onto a bronze spear", 0, 9); - menuLine("", "3.Place a watermelon at the top as a head", 0, 10); - menuLine("", "4.Stand the scarecrow in a flower patch", 0, 11); - optionTab("Farming", "Scarecrows", "Allotments", "Hops", "Trees", - "Fruit Trees", "Bushes", "Flowers", "Herbs", "Special", - "Scarecrows", "", "", "", ""); - } - } -} +package com.rebotted.game.content.skills; + +import com.rebotted.game.players.Player; + +public class SkillInterfaces { + + private final Player c; + + public int selected; + + private final int item[] = new int[40]; + + public SkillInterfaces(Player player) { + c = player; + } + + /* + * @param screen + * + * @return Used to call all of the menus, redundant No change needed to the + * method no matter How many menus added + */ + public void menuCompilation(int screen) { + if (selected == 0) { + attackComplex(screen); + } else if (selected == 1) { + strengthComplex(screen); + } else if (selected == 2) { + defenceComplex(screen); + } else if (selected == 3) { + rangedComplex(screen); + } else if (selected == 4) { + prayerComplex(screen); + } else if (selected == 5) { + magicComplex(screen); + } else if (selected == 6) { + runecraftingComplex(screen); + } else if (selected == 7) { + hitpointsComplex(screen); + } else if (selected == 8) { + agilityComplex(screen); + } else if (selected == 9) { + herbloreComplex(screen); + } else if (selected == 10) { + thievingComplex(screen); + } else if (selected == 11) { + craftingComplex(screen); + } else if (selected == 12) { + fletchingComplex(screen); + } else if (selected == 13) { + slayerComplex(screen); + } else if (selected == 14) { + miningComplex(screen); + } else if (selected == 15) { + smithingComplex(screen); + } else if (selected == 16) { + fishingComplex(screen); + } else if (selected == 17) { + cookingComplex(screen); + } else if (selected == 18) { + firemakingComplex(screen); + } else if (selected == 19) { + woodcuttingComplex(screen); + } else if (selected == 20) { + farmingComplex(screen); + } + } + + /** + * @param title + * @param currentTab + * @param write + * [] + * @return Used to shorten the sidebar tab texts, shortens by up to 12x, + * Also includes the title of the menu and the current tab + */ + private void optionTab(String title, String currentTab, String op1, + String op2, String op3, String op4, String op5, String op6, + String op7, String op8, String op9, String op10, String op11, + String op12, String op13) { + if (SkillHandler.isSkilling(c)) { + c.getPacketSender().sendMessage( + "You can't open this while skilling!"); + return; + } + c.getPacketSender().sendFrame126(title, 8716); + c.getPacketSender().sendFrame126(currentTab, 8849); + c.getPacketSender().sendFrame126(op1, 8846); + c.getPacketSender().sendFrame126(op2, 8823); + c.getPacketSender().sendFrame126(op3, 8824); + c.getPacketSender().sendFrame126(op4, 8827); + c.getPacketSender().sendFrame126(op5, 8837); + c.getPacketSender().sendFrame126(op6, 8840); + c.getPacketSender().sendFrame126(op7, 8843); + c.getPacketSender().sendFrame126(op8, 8859); + c.getPacketSender().sendFrame126(op9, 8862); + c.getPacketSender().sendFrame126(op10, 8865); + c.getPacketSender().sendFrame126(op11, 15303); + c.getPacketSender().sendFrame126(op12, 15306); + c.getPacketSender().sendFrame126(op13, 15309); + c.getPacketSender().showInterface(8714); + } + + /** + * @param levels + * @param lines + * @param ids + * @param lineCounter + * @return Used to reduce code by 3x. Contains the item on interface, Level + * text, and the item description, along with the line Counter to + * ensure it is placed in the right spot + */ + private void menuLine(final String levels, final String lines, + final int ids, final int lineCounter) { + if (SkillHandler.isSkilling(c)) { + return; + } + c.getPacketSender().sendFrame126(lines, 8760 + lineCounter); + c.getPacketSender().sendFrame126(levels, 8720 + lineCounter); + item[0 + lineCounter] = ids; + writeInterfaceItem(item); + } + + /** + * Clears the menus + */ + private void clearMenu() { + for (int i = 0; i < 39; i++) { + item[i] = 0; + } + for (int i = 8720; i < 8799; i++) { + c.getPacketSender().sendFrame126("", i); + } + } + + /** + * @param id + * [] + * @return Used to place the item on the interface + */ + private void writeInterfaceItem(int id[]) { + synchronized (c) { + c.outStream.createFrameVarSizeWord(53); + c.outStream.writeWord(8847); // 8847 + c.outStream.writeWord(id.length); + for (int element : id) { + c.outStream.writeByte(1); + if (element > 0) { + c.outStream.writeWordBigEndianA(element + 1); + } else { + c.outStream.writeWordBigEndianA(0); + } + } + c.outStream.endFrameVarSizeWord(); + c.flushOutStream(); + } + } + + /** + * Skill ID: 0 + * + * @param screen + * @return + */ + public void attackComplex(int screen) { + if (screen == 1) { + clearMenu(); + String level = "1"; + String type = "Bronze"; + menuLine(level, type + " Dagger", 1205, 0); + menuLine(level, type + " Axe", 1351, 1); + menuLine(level, type + " Mace", 1422, 2); + menuLine(level, type + " Claws", 3095, 3); + menuLine(level, type + " Sword", 1277, 4); + menuLine(level, type + " Longsword", 1291, 5); + menuLine(level, type + " Scimitar", 1321, 6); + menuLine(level, type + " Spear", 1237, 7); + menuLine(level, type + " Warhammer", 1337, 8); + menuLine(level, type + " Battleaxe", 1375, 9); + menuLine(level, type + " Two-Handed Sword", 1307, 10); + menuLine(level, type + " Halberd", 3190, 11); + optionTab("Attack", type, "Bronze", "Iron", "Steel", "Black", + "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", + "Special", "", ""); + } else if (screen == 2) { + clearMenu(); + String level = "1"; + String type = "Iron"; + menuLine(level, type + " Dagger", 1203, 0); + menuLine(level, type + " Axe", 1349, 1); + menuLine(level, type + " Mace", 1420, 2); + menuLine(level, type + " Claws", 3096, 3); + menuLine(level, type + " Sword", 1279, 4); + menuLine(level, type + " Longsword", 1293, 5); + menuLine(level, type + " Scimitar", 1323, 6); + menuLine(level, type + " Spear", 1239, 7); + menuLine(level, type + " Warhammer", 1335, 8); + menuLine(level, type + " Battleaxe", 1363, 9); + menuLine(level, type + " Two-Handed Sword", 1309, 10); + menuLine(level, type + " Halberd", 3192, 11); + optionTab("Attack", type + "", "Bronze", "Iron", "Steel", "Black", + "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", + "Special", "", ""); + } else if (screen == 3) { + clearMenu(); + String level = "5"; + String type = "Steel"; + menuLine(level, type + " Dagger", 1207, 0); + menuLine(level, type + " Axe", 1353, 1); + menuLine(level, type + " Mace", 1424, 2); + menuLine(level, type + " Claws", 3097, 3); + menuLine(level, type + " Sword", 1281, 4); + menuLine(level, type + " Longsword", 1295, 5); + menuLine(level, type + " Scimitar", 1325, 6); + menuLine(level, type + " Spear", 1241, 7); + menuLine(level, type + " Warhammer", 1339, 8); + menuLine(level, type + " Battleaxe", 1365, 9); + menuLine(level, type + " Two-Handed Sword", 1311, 10); + menuLine(level, type + " Halberd", 3194, 11); + optionTab("Attack", type, "Bronze", "Iron", "Steel", "Black", + "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", + "Special", "", ""); + } else if (screen == 4) { + clearMenu(); + String level = "10"; + String type = "Black"; + menuLine(level, type + " Dagger", 1217, 0); + menuLine(level, type + " Axe", 1361, 1); + menuLine(level, type + " Mace", 1426, 2); + menuLine(level, type + " Claws", 3098, 3); + menuLine(level, type + " Sword", 1283, 4); + menuLine(level, type + " Longsword", 1297, 5); + menuLine(level, type + " Scimitar", 1327, 6); + menuLine(level, type + " Spear", 4580, 7); + menuLine(level, type + " Warhammer", 1341, 8); + menuLine(level, type + " Battleaxe", 1367, 9); + menuLine(level, type + " Two-Handed Sword", 1313, 10); + menuLine(level, type + " Halberd", 3196, 11); + optionTab("Attack", type, "Bronze", "Iron", "Steel", "Black", + "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", + "Special", "", ""); + } else if (screen == 5) { + clearMenu(); + String level = "10"; + String type = "White"; + menuLine(level, type + " Dagger", 6591, 0); + menuLine(level, type + " Mace", 6601, 1); + menuLine(level, type + " Claws", 6587, 2); + menuLine(level, type + " Sword", 6605, 3); + menuLine(level, type + " Longsword", 6607, 4); + menuLine(level, type + " Scimitar", 6611, 5); + menuLine(level, type + " Warhammer", 6613, 6); + menuLine(level, type + " Battleaxe", 6589, 7); + menuLine(level, type + " Two-Handed Sword", 6609, 8); + menuLine(level, type + " Halberd", 6599, 9); + optionTab("Attack", type, "Bronze", "Iron", "Steel", "Black", + "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", + "Special", "", ""); + } else if (screen == 6) { + clearMenu(); + String level = "20"; + String type = "Mithril"; + menuLine(level, type + " Dagger", 1209, 0); + menuLine(level, type + " Axe", 1355, 1); + menuLine(level, type + " Mace", 1428, 2); + menuLine(level, type + " Claws", 3099, 3); + menuLine(level, type + " Sword", 1285, 4); + menuLine(level, type + " Longsword", 1299, 5); + menuLine(level, type + " Scimitar", 1329, 6); + menuLine(level, type + " Spear", 1243, 7); + menuLine(level, type + " Warhammer", 1343, 8); + menuLine(level, type + " Battleaxe", 1369, 9); + menuLine(level, type + " Two-Handed Sword", 1315, 10); + menuLine(level, type + " Halberd", 3198, 11); + optionTab("Attack", type, "Bronze", "Iron", "Steel", "Black", + "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", + "Special", "", ""); + } else if (screen == 7) { + clearMenu(); + String level = "30"; + String type = "Adamant"; + menuLine(level, type + " Dagger", 1211, 0); + menuLine(level, type + " Axe", 1357, 1); + menuLine(level, type + " Mace", 1430, 2); + menuLine(level, type + " Claws", 3100, 3); + menuLine(level, type + " Sword", 1287, 4); + menuLine(level, type + " Longsword", 1301, 5); + menuLine(level, type + " Scimitar", 1331, 6); + menuLine(level, type + " Spear", 1245, 7); + menuLine(level, type + " Warhammer", 1345, 8); + menuLine(level, type + " Battleaxe", 1371, 9); + menuLine(level, type + " Two-Handed Sword", 1317, 10); + menuLine(level, type + " Halberd", 3200, 11); + optionTab("Attack", type, "Bronze", "Iron", "Steel", "Black", + "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", + "Special", "", ""); + } else if (screen == 8) { + clearMenu(); + String level = "40"; + String type = "Rune"; + menuLine(level, type + " Dagger", 1213, 0); + menuLine(level, type + " Axe", 1359, 1); + menuLine(level, type + " Mace", 1432, 2); + menuLine(level, type + " Claws", 3101, 3); + menuLine(level, type + " Sword", 1289, 4); + menuLine(level, type + " Longsword", 1303, 5); + menuLine(level, type + " Scimitar", 1333, 6); + menuLine(level, type + " Spear", 1247, 7); + menuLine(level, type + " Warhammer", 1347, 8); + menuLine(level, type + " Battleaxe", 1373, 9); + menuLine(level, type + " Two-Handed Sword", 1319, 10); + menuLine(level, type + " Halberd", 3202, 11); + optionTab("Attack", type, "Bronze", "Iron", "Steel", "Black", + "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", + "Special", "", ""); + } else if (screen == 9) { + clearMenu(); + String level = "60"; + String type = "Dragon"; + menuLine(level, type + " Dagger", 1215, 0); + menuLine(level, type + " Axe", 6739, 1); + menuLine(level, type + " Mace", 1434, 2); + menuLine(level, type + " Longsword", 1305, 3); + menuLine(level, type + " Scimitar", 4587, 4); + menuLine(level, type + " Spear", 1249, 5); + menuLine(level, type + " Battleaxe", 1377, 6); + menuLine(level, type + " Two-Handed Sword", 7158, 7); + menuLine(level, type + " Halberd", 3204, 8); + optionTab("Attack", type, "Bronze", "Iron", "Steel", "Black", + "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", + "Special", "", ""); + } else if (screen == 10) { + clearMenu(); + String level = "70"; + String type = "Barrows"; + menuLine(level, "Ahrim's Staff(With 70 Magic)", 4710, 0); + menuLine(level, "Dharok's Greataxe(With 70 Strength)", 4718, 1); + menuLine(level, "Guthan's Spear", 4726, 2); + menuLine(level, "Torag's Hammers(With 70 Strength", 4747, 3); + menuLine(level, "Verac's Flail", 4755, 4); + optionTab("Attack", type, "Bronze", "Iron", "Steel", "Black", + "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", + "Special", "", ""); + } else if (screen == 11) { + clearMenu(); + menuLine("50", "Leaf-Bladed Spear(With 55 Slayer)", 4158, 0); + menuLine("50", "Ancient Staff(With 50 Magic)", 4675, 1); + menuLine("60", "TokTz-Xil-Ak(Obsidian Sword)", 6523, 2); + menuLine("60", "TzHaar-Ket-Om(Obsidian Maul)", 6528, 3); + menuLine("60", "TokTz-Xil-Ek(Obsidian Knife)", 6525, 4); + menuLine("60", "TokTz-Mej-Tal(Obsidian Staff)", 6526, 5); + menuLine("60", "TokTz-Ket-Em(Obsidian Mace)", 6527, 6); + menuLine("70", "Abyssal Whip", 4151, 7); + optionTab("Attack", "Special", "Bronze", "Iron", "Steel", "Black", + "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", + "Special", "", ""); + } + } + + /* + * Skill ID: 1 + * + * @param screen + * + * @return + */ + public void strengthComplex(int screen) { + if (screen == 1) { + clearMenu(); + menuLine("5", "Black Halberd(With 10 Attack)", 3196, 0); + menuLine("5", "White Halberd(With 10 Attack)", 6599, 1); + menuLine("10", "Mithril Halberd(With 20 Attack)", 3198, 2); + menuLine("15", "Adamant Halberd(With 30 Attack)", 3200, 3); + menuLine("20", "Rune Halberd(With 40 Attack)", 3202, 4); + menuLine("30", "Dragon Halberd(With 60 Attack)", 3204, 5); + menuLine("50", "Granite Maul(With 50 Attack)", 4153, 6); + menuLine("60", "TzHaar-Ket-Om(Obsidian Maul)", 6528, 7); + menuLine("70", "Dharok's Greataxe(With 70 Attack)", 4718, 8); + menuLine("70", "Torag's Hammers(With 70 Attack)", 4747, 9); + optionTab("Strength", "Weaponry", "Weaponry", "Armor", + "", "", "", "", "", "", "", "", "", "", ""); + } + + else if (screen == 2) { + clearMenu(); + menuLine("50", "Granite Shield(With 50 Defence)", 3122, 0); + optionTab("Strength", "Armor", "Weaponry", "Armor", "", + "", "", "", "", "", "", "", "", "", ""); + } + } + + /* + * Skill ID: 2 + * + * @param screen + * + * @return + */ + public void defenceComplex(int screen) { + if (screen == 1) { + clearMenu(); + String level = "1"; + String type = "Bronze"; + menuLine(level, type + " Square Shield", 1173, 0); + menuLine(level, type + " Kiteshield", 1189, 1); + menuLine(level, type + " Medium Helm", 1139, 2); + menuLine(level, type + " Full Helm", 1155, 3); + menuLine(level, type + " Chainbody", 1103, 4); + menuLine(level, type + " Platebody", 1117, 5); + menuLine(level, type + " Plateskirt", 1087, 6); + menuLine(level, type + " Platelegs", 1075, 7); + menuLine(level, type + " Boots", 4119, 8); + optionTab("Defence", type, "Bronze", "Iron", "Steel", "Black", + "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", + "Magic", "Equipment", ""); + } + + else if (screen == 2) { + clearMenu(); + String level = "1"; + String type = "Iron"; + menuLine(level, type + " Square Shield", 1175, 0); + menuLine(level, type + " Kiteshield", 1191, 1); + menuLine(level, type + " Medium Helm", 1137, 2); + menuLine(level, type + " Full Helm", 1153, 3); + menuLine(level, type + " Chainbody", 1101, 4); + menuLine(level, type + " Platebody", 1115, 5); + menuLine(level, type + " Plateskirt", 1081, 6); + menuLine(level, type + " Platelegs", 1067, 7); + menuLine(level, type + " Boots", 4121, 8); + optionTab("Defence", type, "Bronze", "Iron", "Steel", "Black", + "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", + "Magic", "Equipment", ""); + } + + else if (screen == 3) { + clearMenu(); + String level = "5"; + String type = "Steel"; + menuLine(level, type + " Square Shield", 1177, 0); + menuLine(level, type + " Kiteshield", 1193, 1); + menuLine(level, type + " Medium Helm", 1141, 2); + menuLine(level, type + " Full Helm", 1157, 3); + menuLine(level, type + " Chainbody", 1105, 4); + menuLine(level, type + " Platebody", 1119, 5); + menuLine(level, type + " Plateskirt", 1083, 6); + menuLine(level, type + " Platelegs", 1069, 7); + menuLine(level, type + " Boots", 4123, 8); + optionTab("Defence", type, "Bronze", "Iron", "Steel", "Black", + "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", + "Magic", "Equipment", ""); + } + + else if (screen == 4) { + clearMenu(); + String level = "10"; + String type = "Black"; + menuLine(level, type + " Square Shield", 1179, 0); + menuLine(level, type + " Kiteshield", 1195, 1); + menuLine(level, type + " Medium Helm", 1151, 2); + menuLine(level, type + " Full Helm", 1165, 3); + menuLine(level, type + " Chainbody", 1107, 4); + menuLine(level, type + " Platebody", 1125, 5); + menuLine(level, type + " Plateskirt", 1089, 6); + menuLine(level, type + " Platelegs", 1077, 7); + menuLine(level, type + " Boots", 4125, 8); + optionTab("Defence", type, "Bronze", "Iron", "Steel", "Black", + "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", + "Magic", "Equipment", ""); + } + + else if (screen == 5) { + clearMenu(); + String level = "10"; + String type = "White"; + menuLine(level, type + " Square Shield", 6631, 0); + menuLine(level, type + " Kiteshield", 6633, 1); + menuLine(level, type + " Medium Helm", 6621, 2); + menuLine(level, type + " Full Helm", 6623, 3); + menuLine(level, type + " Chainbody", 6615, 4); + menuLine(level, type + " Platebody", 6617, 5); + menuLine(level, type + " Plateskirt", 6627, 6); + menuLine(level, type + " Platelegs", 6625, 7); + menuLine(level, type + " Boots", 6619, 8); + optionTab("Defence", type, "Bronze", "Iron", "Steel", "Black", + "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", + "Magic", "Equipment", ""); + } + + else if (screen == 6) { + clearMenu(); + String level = "20"; + String type = "Mithril"; + menuLine(level, type + " Square Shield", 1181, 0); + menuLine(level, type + " Kiteshield", 1197, 1); + menuLine(level, type + " Medium Helm", 1143, 2); + menuLine(level, type + " Full Helm", 1159, 3); + menuLine(level, type + " Chainbody", 1109, 4); + menuLine(level, type + " Platebody", 1121, 5); + menuLine(level, type + " Plateskirt", 1085, 6); + menuLine(level, type + " Platelegs", 1071, 7); + menuLine(level, type + " Boots", 4127, 8); + optionTab("Defence", type, "Bronze", "Iron", "Steel", "Black", + "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", + "Magic", "Equipment", ""); + } + + else if (screen == 7) { + clearMenu(); + String level = "30"; + String type = "Adamant"; + menuLine(level, type + " Square Shield", 1183, 0); + menuLine(level, type + " Kiteshield", 1199, 1); + menuLine(level, type + " Medium Helm", 1145, 2); + menuLine(level, type + " Full Helm", 1161, 3); + menuLine(level, type + " Chainbody", 1111, 4); + menuLine(level, type + " Platebody", 1123, 5); + menuLine(level, type + " Plateskirt", 1091, 6); + menuLine(level, type + " Platelegs", 1073, 7); + menuLine(level, type + " Boots", 4129, 8); + optionTab("Defence", type, "Bronze", "Iron", "Steel", "Black", + "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", + "Magic", "Equipment", ""); + } + + else if (screen == 8) { + clearMenu(); + String level = "40"; + String type = "Rune"; + menuLine(level, type + " Square Shield", 1185, 0); + menuLine(level, type + " Kiteshield", 1201, 1); + menuLine(level, type + " Medium Helm", 1147, 2); + menuLine(level, type + " Full Helm", 1163, 3); + menuLine(level, type + " Chainbody", 1113, 4); + menuLine(level, type + " Platebody", 1127, 5); + menuLine(level, type + " Plateskirt", 1093, 6); + menuLine(level, type + " Platelegs", 1079, 7); + menuLine(level, type + " Boots", 4131, 8); + optionTab("Defence", type, "Bronze", "Iron", "Steel", "Black", + "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", + "Magic", "Equipment", ""); + } + + else if (screen == 9) { + clearMenu(); + String level = "60"; + String type = "Dragon"; + menuLine(level, type + " Square Shield", 1187, 0); + menuLine(level, type + " Medium Helm", 1149, 1); + menuLine(level, type + " Chainbody", 3140, 2); + menuLine(level, type + " Plateskirt", 4585, 3); + menuLine(level, type + " Platelegs", 4087, 4); + optionTab("Defence", type, "Bronze", "Iron", "Steel", "Black", + "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", + "Magic", "Equipment", ""); + } + + else if (screen == 10) { + clearMenu(); + String level = "70"; + menuLine(level, "Ahrim's Hood(With 70 Magic)", 4708, 0); + menuLine(level, "Ahrim's Robe Top(With 70 Magic)", 4712, 1); + menuLine(level, "Ahrim's Robeskirt(With 70 Magic)", 4714, 2); + menuLine(level, "Dharok's Helm", 4716, 3); + menuLine(level, "Dharok's Platebody", 4720, 4); + menuLine(level, "Dharok's Platelegs", 4722, 5); + menuLine(level, "Guthan's Helm", 4724, 6); + menuLine(level, "Guthan's Platebody", 4728, 7); + menuLine(level, "Guthan's Chainskirt", 4730, 8); + menuLine(level, "Karil's Coif(With 70 Ranged)", 4732, 9); + menuLine(level, "Karil's Leather Top(With 70 Ranged)", 4736, 10); + menuLine(level, "Karil's Leather Skirt(With 70 Ranged)", 4738, 11); + menuLine(level, "Torag's Helm", 4745, 12); + menuLine(level, "Torag's Platebody", 4749, 13); + menuLine(level, "Torag's Platelegs", 4751, 14); + menuLine(level, "Verac's Helm", 4753, 15); + menuLine(level, "Verac's Brassard", 4757, 16); + menuLine(level, "Verac's Plateskirt", 4759, 17); + optionTab("Defence", "Barrows", "Bronze", "Iron", "Steel", "Black", + "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", + "Magic", "Equipment", ""); + } + + else if (screen == 11) { + clearMenu(); + menuLine("1", "Skeletal Gloves", 6153, 0); + menuLine("1", "Skeletal Boots", 6147, 1); + menuLine("1", "Elemental Shield", 2890, 2); + menuLine("20", "Enchanted Hat(With 40 Magic)", 7400, 3); + menuLine("20", "Enchanted Robe Top(With 40 Magic)", 7399, 4); + menuLine("20", "Enchanted Robe(With 40 Magic)", 7398, 5); + menuLine("20", "Mystic Hat(With 40 Magic)", 4099, 6); + menuLine("20", "Mystic Robe Top(With 40 Magic)", 4101, 7); + menuLine("20", "Mystic Robe(With 40 Magic)", 4103, 8); + menuLine("20", "Mystic Gloves(With 40 Magic)", 4105, 9); + menuLine("20", "Mystic Boots(With 40 Magic)", 4107, 10); + menuLine("25", "Infinity Hat(With 50 Magic)", 6918, 11); + menuLine("25", "Infinity Ttop(With 50 Magic)", 6916, 12); + menuLine("25", "Infinity Bottom(With 50 Magic)", 6924, 13); + menuLine("25", "Infinity Gloves(With 50 Magic)", 6922, 14); + menuLine("25", "Infinity Boots(With 50 Magic)", 6920, 15); + menuLine("40", "Splitbark Helm(With 40 Magic)", 3385, 16); + menuLine("40", "Splitbark Body(With 40 Magic)", 3387, 17); + menuLine("40", "Splitbark Legs(With 40 Magic)", 3389, 18); + menuLine("40", "Splitbark Gauntlets(With 40 Magic)", 3391, 19); + menuLine("40", "Splitbark Boots(With 40 Magic)", 3393, 20); + menuLine("40", "Skeletal Helm(With 40 Magic)", 6137, 21); + menuLine("40", "Skeletal Top(With 40 Magic)", 6139, 22); + menuLine("40", "Skeletal Bottoms(With 40 Magic)", 6141, 23); + menuLine("44", "Farseer Helm", 3755, 24); + optionTab("Defence", "Magic", "Bronze", "Iron", "Steel", "Black", + "White", "Mithril", "Adamant", "Rune", "Dragon", "Barrows", + "Magic", "Equipment", ""); + } + + else if (screen == 12) { + clearMenu(); + menuLine("1", "Khazard Helmet", 74, 0); + menuLine("1", "Khazard Armour", 75, 1); + menuLine("1", "Anti-Dragonbreath Shield", 1540, 2); + menuLine("1", "Spined Gloves", 6149, 3); + menuLine("1", "Spined Boots", 6143, 4); + menuLine("1", "Rock-Shell Gloves", 6151, 5); + menuLine("1", "Rock-Shell Boots", 6145, 6); + menuLine("5", "Spiny Helmet", 4551, 7); + menuLine("10", "Hard Leather Body", 1131, 8); + menuLine("20", "Studded Body(With 20 Ranged)", 1133, 9); + menuLine("20", "Initiate Helm(With 10 Prayer)", 5574, 10); + menuLine("20", "Initiate Platemail(With 10 Prayer)", 5575, 11); + menuLine("20", "Initiate Platelegs(With 10 Prayer)", 5576, 12); + menuLine("20", "Mirror Shield(with 20 Slayer)", 4156, 13); + menuLine("30", "Snakeskin armour(With 30 Ranged)", 6322, 14); + menuLine("40", "Green Dragonhide Body(With 40 Ranged)", 1135, 15); + menuLine("50", "Blue Dragonhide Body(With 50 Ranged)", 2499, 16); + menuLine("60", "Red Dragonhide Body(With 60 Ranged)", 2501, 17); + menuLine("70", "Black Dragonhide Body(With 70 Ranged)", 2503, 18); + menuLine("40", "Spined Armour(With 40 Ranged)", 6133, 19); + menuLine("40", "Rock-shell Armour", 6129, 20); + menuLine("45", "Berserker Helm", 3751, 21); + menuLine("45", "Warrior Helm", 3753, 22); + menuLine("45", "Archer Helm", 3749, 23); + menuLine("45", "Farseer Helm", 3755, 24); + menuLine("50", "Granite Shield(With 50 Strength)", 3122, 25); + menuLine("60", "TokTz-Ket-Xil(Obsidian Shield)", 6524, 26); + menuLine("70", "Crystal Shield(With 50 Agility)", 4224, 27); + optionTab("Defence", "Equipment", "Bronze", "Iron", "Steel", + "Black", "White", "Mithril", "Adamant", "Rune", "Dragon", + "Barrows", "Magic", "Equipment", ""); + } + } + + /* + * Skill ID: 3 + * + * @param screen + * + * @return + */ + public void rangedComplex(int screen) { + if (screen == 1) { + clearMenu(); + menuLine("1", "Standard Bow", 839, 0); + menuLine("5", "Oak Bow", 845, 1); + menuLine("20", "Willow Bow", 847, 2); + menuLine("30", "Maple Bow", 851, 3); + menuLine("30", "Ogre Bow", 2883, 4); + menuLine("30", "Ogre Composite Bow", 4827, 5); + menuLine("40", "Yew Bow", 855, 6); + menuLine("50", "Magic Bow", 859, 7); + menuLine("50", "Seercull", 6724, 8); + menuLine("70", "Crystal Bow(With 50 Agility)", 4212, 9); + optionTab("Ranged", "Bows", "Bows", "Thrown", "Armour", + "Crossbows", "Other", "", "", "", "", "", "", "", + ""); + } + + else if (screen == 2) { + clearMenu(); + menuLine("1", "Bronze Dart", 806, 0); + menuLine("1", "Bronze Javelin", 825, 1); + menuLine("1", "Bronze Throwing Axe", 800, 2); + menuLine("1", "Bronze Throwing Knife", 864, 3); + menuLine("1", "Iron Dart", 807, 4); + menuLine("1", "Iron Javelin", 826, 5); + menuLine("1", "Iron Throwing Axe", 801, 6); + menuLine("1", "Iron Throwing Knife", 863, 7); + menuLine("5", "Steel Dart", 808, 8); + menuLine("5", "Steel Davelin", 827, 9); + menuLine("5", "Steel Throwing Axe", 802, 10); + menuLine("5", "Steel Throwing Knife", 865, 11); + menuLine("10", "Black Dart", 3093, 12); + menuLine("10", "Black Throwing Knife", 869, 13); + menuLine("20", "Mithril Dart", 809, 14); + menuLine("20", "Mithril Javelin", 828, 15); + menuLine("20", "Mithril Throwing Axe", 803, 16); + menuLine("20", "Mithril Throwing Knife", 866, 17); + menuLine("30", "Adamant Dart", 810, 18); + menuLine("30", "Adamant Javelin", 829, 19); + menuLine("30", "Adamant Throwing Axe", 804, 20); + menuLine("30", "Adamant Throwing Knife", 867, 21); + menuLine("40", "Rune Dart", 811, 22); + menuLine("40", "Rune Javelin", 830, 23); + menuLine("40", "Rune Throwing Axe", 805, 24); + menuLine("40", "Rune Throwing Knife", 868, 25); + menuLine("60", "TokTz-Xil-Ul(Obsidian Rings)", 6522, 26); + optionTab("Ranged", "Thrown", "Bows", "Thrown", "Armour", + "Crossbows", "Other", "", "", "", "", "", "", "", + ""); + } + + else if (screen == 3) { + clearMenu(); + menuLine("1", "Leather Items", 1129, 0); + menuLine("1", "Hardleather Body(With 10 Defence)", 1131, 1); + menuLine("1", "Spined Boots", 6143, 2); + menuLine("1", "Spined Gloves", 6149, 3); + menuLine("1", "Archer Helm(With 45 Defence)", 3749, 4); + menuLine("20", "Studded Leather Body(With 20 Defence)", 1133, 5); + menuLine("20", "Studded Leather Chaps", 1097, 6); + menuLine("20", "Coif", 1169, 7); + menuLine("30", "Snakeskin Body(With 30 Defence)", 6322, 8); + menuLine("30", "Snakeskin Chaps(With 30 Defence)", 6324, 9); + menuLine("30", "Snakeskin Vambraces(With 30 Defence)", 6330, 10); + menuLine("30", "Snakeskin Bandana(With 30 Defence)", 6326, 11); + menuLine("30", "Snakeskin Boots(With 30 Defence)", 6328, 12); + menuLine("40", "Ranger Boots", 2577, 13); + menuLine("40", "Robin Hood Hat", 2581, 14); + menuLine("40", "Green Dragonhide Vambraces", 1065, 15); + menuLine("40", "Green Dragonhide Chaps", 1099, 16); + menuLine("40", "Green Dragonhide Body(With 40 Defence)", 1135, 17); + menuLine("40", "Spined Body(With 40 Defence)", 6133, 18); + menuLine("40", "Spined Chaps(With 40 Defence)", 6135, 19); + menuLine("40", "Spined Helm(With 40 Defence)", 6131, 20); + menuLine("50", "Blue Dragonhide Vambraces", 2487, 21); + menuLine("50", "Blue Dragonhide Chaps", 2493, 22); + menuLine("50", "Blue Dragonhide Body(With 40 Defence)", 2499, 23); + menuLine("60", "Red Dragonhide Vambraces", 2489, 24); + menuLine("60", "Red Dragonhide Chaps", 2495, 25); + menuLine("60", "Red Dragonhide Body(With 40 Defence)", 2501, 26); + menuLine("70", "Black Dragonhdie Vambraces", 2491, 27); + menuLine("70", "Black Dragonhdie Chaps", 2497, 28); + menuLine("70", "Black Dragonhdie Body(With 40 Defence)", 2503, 29); + menuLine("70", "Karil's Coif(With 70 Defence)", 4732, 30); + menuLine("70", "Karil's Leathertop(With 70 Defence)", 4736, 31); + menuLine("70", "Karil's Leatherskirt(With 70 Defence)", 4738, 32); + optionTab("Ranged", "Armour", "Bows", "Thrown", "Armour", + "Crossbows", "Other", "", "", "", "", "", "", "", + ""); + } + + else if (screen == 4) { + clearMenu(); + menuLine("1", "Crossbow", 837, 0); + menuLine("1", "Pheonix Crossbow", 767, 1); + menuLine("70", "Karil's Crossbow", 4734, 2); + optionTab("Ranged", "Crossbows", "Bows", "Thrown", "Armour", + "Crossbows", "Other", "", "", "", "", "", "", "", + ""); + } + + else if (screen == 5) { + clearMenu(); + menuLine("50", "Broad Arrow(With 55 Slayer)", 4150, 0); + optionTab("Ranged", "Other", "Bows", "Thrown", "Armour", + "Crossbows", "Other", "", "", "", "", "", "", "", + ""); + } + } + + /* + * Skill ID: 4 + * + * @param screen + * + * @return + */ + public void prayerComplex(int screen) { + if (screen == 1) { + clearMenu(); + menuLine("", "You can see what each of these prayers", 3840, 0); + menuLine("", "does by selecting the Prayer icon on", 0, 1); + menuLine("", "your side interface. Move your mouse", 3844, 2); + menuLine("", "over the icon of the prayer you want", 0, 3); + menuLine("", "and a description will be available", 3842, 4); + menuLine("", "", 0, 5); + menuLine("1", "Thick Skin", 1714, 6); + menuLine("4", "Burst of Strength", 1714, 7); + menuLine("7", "Clarity of Thought", 1714, 8); + menuLine("10", "Rock Skin", 1714, 9); + menuLine("13", "Superhuman Strength", 1714, 10); + menuLine("16", "Improved Reflexes", 1714, 11); + menuLine("19", "Rapid Restore", 1714, 12); + menuLine("22", "Rapid Heal", 1714, 13); + menuLine("25", "Protect Item", 1714, 14); + menuLine("28", "Steel Skin", 1714, 15); + menuLine("31", "Ultimate Strength", 1714, 16); + menuLine("34", "Incredible Reflexes", 1714, 17); + menuLine("37", "Protect from Magic", 1714, 18); + menuLine("40", "Protect from Missles", 1714, 19); + menuLine("43", "Protect from Melee", 1714, 20); + menuLine("46", "Retribution", 1714, 21); + menuLine("49", "Redemption", 1714, 22); + menuLine("52", "Smite", 1714, 23); + optionTab("Prayer", "Prayers", "Prayers", "Equipment", + "", "", "", "", "", "", "", "", "", "", ""); + } + + else if (screen == 2) { + clearMenu(); + menuLine("10", "Initiate Helm(With 20 Defence)", 5574, 0); + menuLine("10", "Initiate Platemail(With 20 Defence)", 5575, 1); + menuLine("10", "Initiate Platelegs(With 20 Defence)", 5576, 2); + menuLine("50", "Enchant Unholy And Holy Symbols", 1724, 3); + optionTab("Prayer", "Equipment", "Prayers", "Equipment", + "", "", "", "", "", "", "", "", "", "", ""); + } + } + + /* + * Skill ID: 5 + * + * @param screen + * + * @return + */ + public void magicComplex(int screen) { + if (screen == 1) { + clearMenu(); + menuLine("", "You can see what each of the spells", 6949, 0); + menuLine("", "does by selecting the spellbook icon on", 0, 1); + menuLine("", "your side interface. To switch to ancient", 0, 2); + menuLine("", "magicks, visit the Dark Mage near the bank", 0, 3); + menuLine("", "in Camelot.", 0, 4); + optionTab("Magic", "Spells", "Spells", "Ancients", "Armour", + "Weapons", "Special", "", "", "", "", "", "", "", + ""); + } + + else if (screen == 2) { + clearMenu(); + menuLine("", "@cr1@Must have completed Desert Treasure", 6949, 0); + menuLine("", "", 0, 1); + menuLine("50", "Smoke Rush", 0, 2); + menuLine("52", "Shadow Rush", 0, 3); + menuLine("54", "Teleport to Paddewwa", 0, 4); + menuLine("56", "Blood Rush", 0, 5); + menuLine("58", "Ice Rush", 0, 6); + menuLine("60", "Teleport to Senntisten", 0, 7); + menuLine("62", "Smoke Burst", 0, 8); + menuLine("64", "Shadow Burst", 0, 9); + menuLine("66", "Teleport to Kharyrll", 0, 10); + menuLine("68", "Blood Burst", 0, 11); + menuLine("70", "Ice Burst", 0, 12); + menuLine("72", "Teleport to Lassar", 0, 13); + menuLine("74", "Smoke Blitz", 0, 14); + menuLine("76", "Shadow Blitz", 0, 15); + menuLine("78", "Teleport Dareeyak", 0, 16); + menuLine("80", "Blood Blitz", 0, 17); + menuLine("82", "Ice Blitz", 0, 18); + menuLine("84", "Teleport to Carrallangar", 0, 19); + menuLine("86", "Smoke Barrage", 0, 20); + menuLine("88", "Shadow Barrage", 0, 21); + menuLine("90", "Teleport to Annakarl", 0, 22); + menuLine("92", "Blood Barrage", 0, 23); + menuLine("94", "Ice Barrage", 0, 24); + menuLine("96", "Teleport to Ghorrock", 0, 25); + optionTab("Magic", "Ancients", "Spells", "Ancients", "Armour", + "Weapons", "Special", "", "", "", "", "", "", "", + ""); + } + + else if (screen == 3) { + clearMenu(); + menuLine("1", "Farseer Helm(With 45 Defence)", 3755, 0); + menuLine("1", "Elemental Shield", 2890, 1); + menuLine("1", "Skeletal Gloves", 6153, 2); + menuLine("1", "Skeletal Boots", 6147, 3); + menuLine("20", "Wizard Boots", 2579, 4); + menuLine("40", "Mystic Hat(With 20 Defence)", 4099, 5); + menuLine("40", "Mystic Robe Top(With 20 Defence)", 4101, 6); + menuLine("40", "Mystic Robe Bottom(With 20 Defence)", 4103, 7); + menuLine("40", "Mystic Gloves(With 20 Defence)", 4105, 8); + menuLine("40", "Mystic Boots(With 20 Defence)", 4107, 9); + menuLine("40", "Enchanted Hat(With 20 Defence)", 7400, 10); + menuLine("40", "Enchanted Top(With 20 Defence)", 7399, 11); + menuLine("40", "Enchanted Robe(With 20 Defence)", 7398, 12); + menuLine("40", "Splitbark Helm(With 40 Defence)", 3385, 13); + menuLine("40", "Splitbark Body(With 40 Defence)", 3387, 14); + menuLine("40", "Splitbark Legs(With 40 Defence)", 3389, 15); + menuLine("40", "Splitbark Gauntlets(With 40 Defence)", 3391, 16); + menuLine("40", "Splitbark Boots(With 40 Defence)", 3393, 17); + menuLine("40", "Skeletal Helmet(With 40 Defence)", 6137, 18); + menuLine("40", "Skeletal Top(With 40 Defence)", 6139, 19); + menuLine("40", "Skeletal Bottoms(With 40 Defence)", 6141, 20); + menuLine("50", "Infinity Hat(With 25 Defence)", 6918, 21); + menuLine("50", "Infinity Top(With 25 Defence)", 6916, 22); + menuLine("50", "Infinity Bottom(With 25 Defence)", 6924, 23); + menuLine("50", "Infinity Boots(With 25 Defence)", 6920, 24); + menuLine("50", "Infinity Gloves(with 25 Defence)", 6922, 25); + menuLine("70", "Ahrim's Hood(With 70 Defence)", 4708, 26); + menuLine("70", "Ahrim's Robe Top(With 70 Defence)", 4712, 27); + menuLine("70", "Ahrim's Robeskirt(With 70 Defence)", 4714, 28); + optionTab("Magic", "Armour", "Spells", "Ancients", "Armour", + "Weapons", "Special", "", "", "", "", "", "", "", + ""); + } + + else if (screen == 4) { + clearMenu(); + menuLine("1", "Staff", 1379, 0); + menuLine("1", "Magic staff", 1389, 1); + menuLine("1", "Staff of Air", 1381, 2); + menuLine("1", "Staff of Earth", 1385, 3); + menuLine("1", "Staff of Fire", 1387, 4); + menuLine("1", "Staff of Water", 1383, 5); + menuLine("30", "Air Battlestaff(With 30 Attack)", 1397, 6); + menuLine("30", "Earth Battlestaff(With 30 Attack)", 1399, 7); + menuLine("30", "Fire Battlestaff(With 30 Attack)", 1393, 8); + menuLine("30", "Water Battlestaff(With 30 Attack)", 1395, 9); + menuLine("30", "Lava Battlestaff(With 30 Attack)", 3053, 10); + menuLine("30", "Mud Battlestaff(With 30 Attack)", 6562, 11); + menuLine("40", "Mystic Air Staff(With 40 Attack)", 1405, 12); + menuLine("40", "Mystic Earth Staff(With 40 Attack)", 1407, 13); + menuLine("40", "Mystic Fire Staff(With 40 Attack)", 1401, 14); + menuLine("40", "Mystic Water Staff(With 40 Attack)", 1403, 15); + menuLine("40", "Mystic Lava Staff(With 40 Attack)", 3054, 16); + menuLine("40", "Mystic Mud Staff(With 40 Attack)", 6563, 17); + menuLine("50", "Slayer's Staff(With 55 Slayer)", 4170, 18); + menuLine("50", "Iban's Staff(With 50 Attack)", 1409, 19); + menuLine("50", "Ancient Staff(With 50 Attack)", 4675, 20); + menuLine("60", "Saradomin Staff", 2415, 21); + menuLine("60", "Guthix Staff", 2416, 22); + menuLine("60", "Zamorak Staff", 2417, 23); + menuLine("60", "TokTz-Mej-Tal(Obsidian Staff)", 6526, 24); + menuLine("70", "Ahrim's Staff(With 70 Attack)", 4710, 25); + optionTab("Magic", "Weapons", "Spells", "Ancients", "Armour", + "Weapons", "Special", "", "", "", "", "", "", "", + ""); + } + + else if (screen == 5) { + clearMenu(); + menuLine("45", "Beginner Wand", 6908, 0); + menuLine("50", "Apprentice Wand", 6910, 1); + menuLine("55", "Teacher Wand", 6912, 2); + menuLine("60", "Master Wand", 6914, 3); + menuLine("60", "Mage's Book", 6889, 4); + optionTab("Magic", "Special", "Spells", "Ancients", "Armour", + "Weapons", "Special", "", "", "", "", "", "", "", + ""); + } + } + + /* + * Skill ID: 6 + * + * @param screen + * + * @return + */ + public void runecraftingComplex(int screen) { + if (screen == 1) { + clearMenu(); + menuLine("1", "Air runes", 556, 0); + menuLine("2", "Mind runes", 558, 1); + menuLine("5", "Water runes", 555, 2); + menuLine("6", "Mist runes", 4695, 3); + menuLine("9", "Earth runes", 557, 4); + menuLine("10", "Dust runes", 4696, 5); + menuLine("13", "Mud runes", 4698, 6); + menuLine("14", "Fire runes", 554, 7); + menuLine("15", "Smoke runes", 4697, 8); + menuLine("19", "Steam runes", 4694, 9); + menuLine("20", "Body runes", 559, 10); + menuLine("23", "Lava runes", 4699, 11); + menuLine("27", "Cosmic runes", 564, 12); + menuLine("35", "Chaos runes", 562, 13); + menuLine("44", "Nature runes", 561, 14); + menuLine("54", "Law runes", 563, 15); + menuLine("65", "Death runes", 560, 16); + menuLine("77", "Blood runes", 565, 17); + optionTab("RuneCrafting", "Runes", "Runes", "Multiples", + "Equipment", "", "", "", "", "", "", "", "", "", + ""); + } + + else if (screen == 2) { + clearMenu(); + menuLine("11", "2 Air runes per essence", 556, 0); + menuLine("14", "2 Mind runes per essence", 558, 1); + menuLine("19", "2 Water runes per essence", 555, 2); + menuLine("22", "3 Air runes per essence", 556, 3); + menuLine("26", "2 Earth runes per essence", 557, 4); + menuLine("28", "3 Mind runes per essence", 558, 5); + menuLine("33", "4 Air runes per essence", 556, 6); + menuLine("35", "2 Fire runes per essence", 554, 7); + menuLine("38", "3 Water runes per essence", 555, 8); + menuLine("42", "4 Mind runes per essence", 558, 9); + menuLine("44", "5 Air runes per essence", 556, 10); + menuLine("46", "2 Body runes per essence", 559, 11); + menuLine("52", "3 Earth runes per essence", 557, 12); + menuLine("55", "6 Air runes per essence", 556, 13); + menuLine("56", "5 Mind runes per essence", 558, 14); + menuLine("57", "4 Water runes per essence", 555, 15); + menuLine("59", "2 Cosmic runes per essence", 564, 16); + menuLine("66", "7 Air runes per essence", 556, 17); + menuLine("70", "6 Mind runes per essence", 558, 18); + menuLine("74", "3 Fire runes per essence", 554, 19); + menuLine("76", "2 Chaos runes per essence", 562, 20); + menuLine("77", "5 Water runes per essence", 555, 21); + menuLine("78", "8 Air runes per essence", 556, 22); + menuLine("82", "4 Earth runes per essence", 557, 23); + menuLine("84", "7 Mind runes per essence", 558, 24); + menuLine("88", "9 Air runes per essence", 556, 25); + menuLine("91", "2 Nature runes per essence", 561, 26); + menuLine("92", "3 Body runes per essence", 559, 27); + menuLine("95", "6 Water runes per essence", 555, 28); + menuLine("98", "8 Mind runes per essence", 558, 29); + menuLine("99", "10 Air runes per essence", 556, 30); + optionTab("RuneCrafting", "Multiples", "Runes", "Multiples", + "Equipment", "", "", "", "", "", "", "", "", "", + ""); + } + + else if (screen == 3) { + clearMenu(); + menuLine("1", "Small Pouch(3 Essence)", 5509, 0); + menuLine("25", "Medium Pouch(6 Essence)", 5510, 1); + menuLine("50", "Large Pouch(9 Essence)", 5512, 2); + menuLine("75", "Giant Pouch(12 Essence)", 5514, 3); + optionTab("RuneCrafting", "Equipment", "Runes", "Multiples", + "Equipment", "", "", "", "", "", "", "", "", "", + ""); + } + } + + /* + * Skill ID: 7 + * + * @param screen + * + * @return + */ + public void hitpointsComplex(int screen) { + if (screen == 1) { + clearMenu(); + menuLine("", "Hitpoints tell you how healthy your", 4049, 0); + menuLine("", "character is. A character who reaches 0", 0, 1); + menuLine("", "Hitpoints has died, but will reappear at", 0, 2); + menuLine("", "their chosen respawn location", 0, 3); + menuLine("", "", 0, 4); + menuLine("", "If you see any red 'hitsplats' during", 4049, 5); + menuLine("", "combat, the number shown corresponds", 0, 6); + menuLine("", "to the number of Hitpoints lost as a", 0, 7); + menuLine("", "result of that strike.", 0, 8); + menuLine("", "", 0, 9); + menuLine("", "Blue hitsplats mean no damage has", 4049, 10); + menuLine("", "been dealt.", 0, 11); + menuLine("", "", 0, 12); + menuLine("", "Green hitspats are poison damage", 4049, 13); + menuLine("", "", 0, 14); + menuLine("", "Yellow hitsplats are disease damage", 4049, 15); + optionTab("Hitpoints", "Hitpoints", "Hitpoints", "", "", + "", "", "", "", "", "", "", "", "", ""); + } + } + + /* + * Skill ID: 8 + * + * @param screen + * + * @return + */ + public void agilityComplex(int screen) { + if (screen == 1) { + clearMenu(); + menuLine("1", "Gnome Agility Course", 2150, 0);// swamptoad + menuLine("1", "Gnome Ball", 751, 1);// gnomeball + menuLine("1", "Low-Level Agility Arena Obstacles", 2996, 2);// arena + // ticket + menuLine("20", "Medium-Level Agility Arena Obstacles", 2996, 3);// arena + // ticket + menuLine("25", "Werewolf Skullball Game", 1061, 4);// boots + menuLine("30", "Agility Pyramid", 6970, 5);// boots + menuLine("35", "Barbarian Outpost Agility Course", 1365, 6);// steel + menuLine("40", "High-Level Agility Area Obstacles", 2996, 7); + menuLine("48", "Ape Atoll Agility Course", 4024, 8);// greegree + menuLine("52", "Wilderness Agility Course", 964, 9);// skull + menuLine("60", "Werewolf Agility Course", 6465, 19);// charos + optionTab("Agility", "Courses", "Courses", "Areas", "Shortcuts", + "", "", "", "", "", "", "", "", "", ""); + } + + else if (screen == 2) { + clearMenu(); + menuLine("10", "Moss Giant Island Rope Swing", 6518, 0); + menuLine("12", "Karamja Dungeon Stepping Stones", 6518, 1); + menuLine("15", "Edgeville Dungeon Monkey Bars", 6518, 2); + menuLine("18", "Watchtower Wall Climb", 6521, 3); + menuLine("22", "Karamja Dungeon Pipe Contortion", 6520, 4); + menuLine("30", "South-east Karamja Stepping Stones", 6518, 5); + menuLine("34", "Karamja Dungeon Pipe Contortion", 6520, 6); + menuLine("45", "Isafdar Log Balance", 6519, 7); + menuLine("49", "Yanille Dungeon Contortion", 6520, 8); + menuLine("50", "Rogues' Den(With 50 Thieving)", 6518, 9); + menuLine("67", "Yanille Dungeon Rubble Climb", 6521, 10); + optionTab("Agility", "Areas", "Courses", "Areas", "Shortcuts", + "", "", "", "", "", "", "", "", "", ""); + } + + else if (screen == 3) { + clearMenu(); + menuLine("5", "Falador Agility Shortcut", 6517, 0); + menuLine("8", "River Crossing To Al Kharid", 6515, 1); + menuLine("11", "Falador Wall", 6517, 2); + menuLine("13", "Varrock South Fence Jump", 6514, 3); + menuLine("16", "Yanille Agility Shortcut", 6516, 4); + menuLine("20", "Coal Truck Log Balance", 6515, 5); + menuLine("21", "Varrock Agility Shortcut", 6516, 6); + menuLine("26", "Falador wall Crawl", 6516, 7); + menuLine("28", "Draynor Manor Broken Railing", 6516, 8); + menuLine("29", "Draynor Manor Stones To The Champions' Guild", + 6516, 9); + menuLine("31", "Catherby Cliff", 6515, 10); + menuLine("32", "Ardougne Log Balance Shortcut", 6517, 11); + menuLine("33", "Water Obelisk Island Escape", 6516, 12); + menuLine("36", "Gnome Stronghold Shortcut", 6517, 13); + menuLine("37", "Al Kharid Mining Pit Sliffside Scramble", 6517, 14); + menuLine("39", "Yanille Wall", 6517, 15); + menuLine("40", "Trollheim Easy Cliffside Scramble", 6517, 16); + menuLine("41", "Dwarven Mine Narrow Crevice", 6517, 17); + menuLine("42", "Trollheim Medium Cliffside Scramble", 6516, 18); + menuLine("43", "Trollheim Advanced Cliffside Scramble", 6517, 19); + menuLine("44", "Cosmic Temple Medium Narrow Walkway", 6517, 20); + menuLine("46", "Trollheim Hard Cliffside Scramble", 6516, 21); + menuLine("47", "Log Balance To The Fremennik Province", 6517, 22); + menuLine("48", "Edgeville Dungeon To Varrock Sewers Pipe", 6515, 23); + menuLine("51", "Karamja Crossing, South Of The Volcano", 6516, 24); + menuLine("53", "Port Phasmatys Ectopool Shortcut", 6517, 25); + menuLine("58", "Elven Overpass Easy Cliffside Scramble", 6517, 26); + menuLine("59", "Slayer Tower Medium Spiked Chain Climb", 6517, 27); + menuLine("61", "Slayer Dungon Narrow Crevice", 6517, 28); + menuLine("62", "Trollheim Wilderness Route", 6516, 29); + menuLine("64", "Paterdomus Temple To Morytania Shortcut", 6517, 30); + menuLine("66", "Cosmic Temple Advanced Narrow Walkway", 6517, 31); + menuLine("68", "Elven Overpass Medium Cliffside Scramble", 6517, 32); + menuLine("70", "Taverly Dungeon Pipe Squeeze", 6516, 33); + menuLine("71", "Slayer Tower Advanced Spiked Chain Climb", 6517, 34); + menuLine("74", "Shilo Village Stepping Stone", 6514, 35); + menuLine("80", "Taverly Dungeon Spiked Blade Jump", 6514, 36); + menuLine("81", "Slayer Dungeon Chasm Jump", 6514, 37); + menuLine("85", "Elven Overpass Advanced Cliff Scramble", 6517, 38); + optionTab("Agility", "Shortcuts", "Courses", "Areas", "Shortcuts", + "", "", "", "", "", "", "", "", "", ""); + } + + else if (screen == 4) { + clearMenu(); + menuLine("50", "Crystal Equipment", 4207, 0); + optionTab("Agility", "", "Courses", "Areas", "Shortcuts", + "", "", "", "", "", "", "", "", "", ""); + } + } + + /* + * Skill ID: 9 + * + * @param screen + * + * @return + */ + public void herbloreComplex(int screen) { + if (screen == 1) { + clearMenu(); + menuLine("3", "Attack potion", 121, 0); + menuLine("5", "Anti-poison", 175, 1); + menuLine("12", "Strength potion", 115, 2); + menuLine("22", "Stat restore potion", 127, 3); + menuLine("26", "Energy potion", 3010, 4); + menuLine("30", "Defence potion", 133, 5); + menuLine("34", "Agility potion", 3034, 6); + menuLine("38", "Prayer restore potion", 139, 7); + menuLine("45", "Super Attack potion", 145, 8); + menuLine("48", "Super anti-poison", 181, 9); + menuLine("50", "Fishing potion", 151, 10); + menuLine("52", "Super energy potion", 3018, 11); + menuLine("55", "Super Strength potion", 157, 12); + menuLine("60", "Weapon poison", 187, 13); + menuLine("63", "Super restore potion", 3026, 14); + menuLine("66", "Super Defence potion", 163, 15); + menuLine("68", "Antidote+", 5945, 16); + menuLine("69", "Ranging potion", 169, 17); + menuLine("72", "Antifire potion", 2454, 18); + menuLine("73", "Weapon poison+", 5937, 19); + menuLine("76", "Magic potion", 3042, 20); + menuLine("78", "Zamorak brew", 189, 21); + menuLine("79", "Antidote++", 5954, 22); + menuLine("81", "Saradomin brew", 6687, 23); + menuLine("82", "Weapon poison++", 5940, 24); + optionTab("Herblore", "Potions", "Potions", "Herbs", "", + "", "", "", "", "", "", "", "", "", ""); + } + + else if (screen == 2) { + clearMenu(); + menuLine("3", "Guam Leaf", 249, 0); + menuLine("5", "Marrentill", 251, 1); + menuLine("11", "Tarromin", 253, 2); + menuLine("20", "Harralander", 255, 3); + menuLine("25", "Ranarr", 257, 4); + menuLine("30", "Toadflax", 2998, 5); + menuLine("40", "Irit Leaf", 259, 6); + menuLine("48", "Avantoe", 261, 7); + menuLine("54", "Kwuarm", 263, 8); + menuLine("59", "Snapdragon", 3000, 9); + menuLine("65", "Cadantine", 265, 10); + menuLine("67", "Lantadyme", 2481, 11); + menuLine("70", "Dwarf Weed", 267, 12); + menuLine("75", "Torstol", 269, 13); + optionTab("Herblore", "Herbs", "Potions", "Herbs", "", + "", "", "", "", "", "", "", "", "", ""); + } + } + + /* + * Skill ID: 10 + * + * @param screen + * + * @return + */ + public void thievingComplex(int screen) { + if (screen == 1) { + clearMenu(); + menuLine("1", "Man", 3241, 0); + menuLine("10", "Farmer", 3243, 1); + menuLine("15", "Female H.A.M. Follower", 4295, 2); + menuLine("20", "Male H.A.M. Follower", 4297, 3); + menuLine("25", "Warrior", 3245, 4); + menuLine("32", "Rogue", 3247, 5); + menuLine("38", "Master Farmer", 5068, 6); + menuLine("40", "Guard", 3249, 7); + menuLine("45", "Fremennik Citizen", 3686, 8); + menuLine("45", "Beared Pollnivnian Bandit", 6781, 9); + menuLine("53", "Desert Bandit", 4625, 10); + menuLine("55", "Knight", 3251, 11); + menuLine("55", "Pollnivnian Bandit", 6782, 12); + menuLine("65", "Watchman", 3253, 13); + menuLine("65", "Menaphite Thug", 6780, 14); + menuLine("70", "Paladin", 3255, 15); + menuLine("75", "Gnome", 3257, 16); + menuLine("80", "Hero", 3259, 17); + menuLine("85", "Elf", 6105, 18); + optionTab("Thieving", "Pickpocket", "Pickpocket", "Stalls", + "Chests", "", "", "", "", "", "", "", "", "", ""); + } + + else if (screen == 2) { + clearMenu(); + menuLine("2", "Vegetable stall", 1965, 0); + menuLine("5", "Baker's stall", 2309, 1); + menuLine("5", "Ape Atoll general stall", 1933, 2); + menuLine("5", "Tea stall", 1978, 3); + menuLine("5", "Crafting stall", 1755, 4); + menuLine("5", "Monkey food stall", 1963, 5); + menuLine("15", "Rock cake stall", 2379, 6); + menuLine("20", "Silk stall", 950, 7); + menuLine("22", "Wine stall", 1993, 8); + menuLine("27", "Seed stall", 5318, 9); + menuLine("35", "Fur stall", 958, 10); + menuLine("42", "Fish stall", 333, 11); + menuLine("50", "Silver stall", 2355, 12); + menuLine("65", "Magic stall", 6422, 13); + menuLine("65", "Scimitar stall", 1323, 14); + menuLine("65", "Spice stall", 2007, 15); + menuLine("75", "Gem stall", 1607, 16); + optionTab("Thieving", "Stalls", "Pickpocket", "Stalls", "Chests", + "", "", "", "", "", "", "", "", "", ""); + } + + else if (screen == 3) { + clearMenu(); + menuLine("13", "Ardougne, Rellekka, and the Wilderness", 617, 0); + menuLine("28", "Upstairs in Ardougne and Rellekka", 561, 1); + menuLine("43", "Upstairs in Ardougne", 617, 2); + menuLine("47", "Hemenster", 41, 3); + menuLine("47", "Rellekka", 617, 4); + menuLine("59", "Chaos Druid Tower north of Ardougne", 565, 5); + menuLine("72", "King Lathas's castle in Ardougne", 383, 6); + optionTab("Thieving", "Chests", "Pickpocket", "Stalls", "Chests", + "", "", "", "", "", "", "", "", "", ""); + } + } + + /* + * Skill ID: 11 + * + * @param screen + * + * @return + */ + public void craftingComplex(int screen) { + if (screen == 1) { + clearMenu(); + menuLine("10", "Cloth", 3224, 0); + menuLine("21", "Vegetable Sack", 5418, 1); + optionTab("Crafting", "Weaving", "Weaving", "Armour", "Spinning", + "Pottery", "Glass", "Jewellery", "Weaponry", "", + "", "", "", "", ""); + } + + else if (screen == 2) { + clearMenu(); + menuLine("1", "Leather Gloves", 1059, 0); + menuLine("7", "Leather Boots", 1061, 1); + menuLine("9", "Leather Cowl", 1167, 2); + menuLine("11", "Leather Vambraces", 1063, 3); + menuLine("14", "Leather Body", 1129, 4); + menuLine("18", "Leather Chaps", 1095, 5); + menuLine("28", "Hard Leather Body", 1131, 6); + menuLine("35", "Broodoo Shield", 6257, 7); + menuLine("38", "Coif", 1169, 8); + menuLine("41", "Studded Body", 1133, 9); + menuLine("44", "Studded Chaps", 1097, 10); + menuLine("45", "Snakeskin Boots", 6328, 11); + menuLine("47", "Snakeskin Vambraces", 6330, 12); + menuLine("48", "Snakeskin Bandana", 6326, 13); + menuLine("51", "Snakeskin Chaps", 6324, 14); + menuLine("53", "Snakeskin Body", 6322, 15); + menuLine("57", "Green Dragonhide Vambraces", 1065, 16); + menuLine("60", "Green Dragonhide Chaps", 1099, 17); + menuLine("63", "Green Dragonhide Body", 1135, 18); + menuLine("66", "Blue Dragonhide Vambraces", 2487, 19); + menuLine("68", "Blue Dragonhide Chaps", 2493, 20); + menuLine("71", "Blue Dragonhide Body", 2499, 21); + menuLine("73", "Red Dragonhide Vambraces", 2489, 22); + menuLine("75", "Red Dragonhide Chaps", 2495, 23); + menuLine("77", "Red Dragonhide Body", 2501, 24); + menuLine("79", "Black Dragonhide Vambraces", 2491, 25); + menuLine("82", "Black Dragonhide Chaps", 2497, 26); + menuLine("84", "Black Dragonhide Body", 2503, 27); + optionTab("Crafting", "Armour", "Weaving", "Armour", "Spinning", + "Pottery", "Glass", "Jewellery", "Weaponry", "", + "", "", "", "", ""); + } + + else if (screen == 3) { + clearMenu(); + menuLine("1", "Wool", 1759, 0); + menuLine("10", "Flax into Bow Strings", 1777, 1); + optionTab("Crafting", "Spinning", "Weaving", "Armour", "Spinning", + "Pottery", "Glass", "Jewellery", "Weaponry", "", + "", "", "", "", ""); + } + + else if (screen == 4) { + clearMenu(); + menuLine("1", "Pot", 1931, 0); + menuLine("7", "Pie Dish", 2313, 1); + menuLine("8", "Bowl", 1923, 2); + menuLine("19", "Plant Pot", 5350, 3); + menuLine("25", "Pot Lid", 4440, 4); + optionTab("Crafting", "Pottery", "Weaving", "Armour", "Spinning", + "Pottery", "Glass", "Jewellery", "Weaponry", "", + "", "", "", "", ""); + } + + else if (screen == 5) { + clearMenu(); + menuLine("1", "Beer Glass", 1919, 0); + menuLine("4", "Candle Lantern", 4527, 1); + menuLine("12", "Oil Lamp", 4525, 2); + menuLine("26", "Oil Lantern", 4535, 3); + menuLine("33", "Vial", 229, 4); + menuLine("42", "Fishbowl", 6667, 5); + menuLine("46", "Glass Orb", 567, 6); + menuLine("49", "Bullseye Lantern Lens", 4542, 7); + optionTab("Crafting", "Glass", "Weaving", "Armour", "Spinning", + "Pottery", "Glass", "Jewellery", "Weaponry", "", + "", "", "", "", ""); + } + + else if (screen == 6) { + clearMenu(); + menuLine("1", "Cut Opal", 1609, 0); + menuLine("5", "Gold Ring", 1635, 1); + menuLine("6", "Gold Necklace", 1654, 2); + menuLine("8", "Gold Amulet", 1673, 3); + menuLine("13", "Cut Jade", 1611, 4); + menuLine("16", "Holy Symbol", 1714, 5); + menuLine("16", "Cut Red Topaz", 1613, 6); + menuLine("17", "Unholy Symbol", 1724, 7); + menuLine("20", "Cut Sapphire", 1607, 8); + menuLine("20", "Sapphire Ring", 1637, 9); + menuLine("22", "Sapphire Necklace", 1656, 10); + menuLine("23", "Tiara", 5525, 11); + menuLine("24", "Sapphire Amulet", 1675, 12); + menuLine("27", "Cut Emerald", 1605, 13); + menuLine("27", "Emerald Ring", 1639, 14); + menuLine("29", "Emerald Necklace", 1658, 15); + menuLine("31", "Emerald Amulet", 1677, 16); + menuLine("34", "Cut Ruby", 1603, 17); + menuLine("34", "Ruby Ring", 1641, 18); + menuLine("40", "Ruby Necklace", 1660, 19); + menuLine("43", "Cut Diamond", 1601, 20); + menuLine("43", "Diamond Ring", 1643, 21); + menuLine("50", "Ruby Amulet", 1679, 22); + menuLine("55", "Cut Dragonstone", 1615, 23); + menuLine("55", "Dragonstone Ring", 1645, 24); + menuLine("56", "Diamond Necklace", 1662, 25); + menuLine("67", "Cut Onyx", 6573, 26); + menuLine("67", "Onyx Ring", 6575, 27); + menuLine("70", "Diamond Amulet", 1681, 28); + menuLine("80", "Dragonstone Amulet", 1683, 29); + menuLine("82", "Onyx Necklace", 6577, 30); + menuLine("90", "Onyx Amulet", 6579, 31); + optionTab("Crafting", "Jewellery", "Weaving", "Armour", "Spinning", + "Pottery", "Glass", "Jewellery", "Weaponry", "", + "", "", "", "", ""); + } + + else if (screen == 7) { + clearMenu(); + menuLine("54", "Water battlestaff", 1395, 0); + menuLine("58", "Earth battlestaff", 1399, 1); + menuLine("62", "Fire battlestaff", 1393, 2); + menuLine("66", "Air battlestaff", 1397, 3); + optionTab("Crafting", "Weaponry", "Weaving", "Armour", "Spinning", + "Pottery", "Glass", "Jewellery", "Weaponry", "", + "", "", "", "", ""); + } + } + + /* + * Skill ID: 12 + * + * @param screen + * + * @return + */ + public void fletchingComplex(int screen) { + if (screen == 1) { + clearMenu(); + menuLine("1", "Bronze arrow", 882, 0); + menuLine("5", "Ogre arrow", 2866, 1); + menuLine("7", "Bronze 'brutal' arrow", 4773, 2); + menuLine("15", "Iron arrow", 884, 3); + menuLine("18", "Iron 'brutal' arrow", 4778, 4); + menuLine("30", "Steel arrow", 886, 5); + menuLine("33", "Steel 'brutal' arrow", 4783, 6); + menuLine("38", "Black 'brutal' arrow", 4788, 7); + menuLine("45", "Mithril arrow", 888, 8); + menuLine("49", "Mithril 'brutal' arrow", 4793, 9); + menuLine("60", "Adamant arrow", 890, 10); + menuLine("62", "Adamant 'brutal' arrow", 4798, 11); + menuLine("75", "Rune arrow", 892, 12); + menuLine("77", "Rune 'brutal' arrow", 4803, 13); + optionTab("Fletching", "Arrows", "Arrows", "Bows", "Darts", + "", "", "", "", "", "", "", "", "", ""); + } + + else if (screen == 2) { + clearMenu(); + menuLine("5", "Shortbow", 841, 0); + menuLine("10", "Longbow", 839, 1); + menuLine("20", "Oak Shortbow", 843, 2); + menuLine("25", "Oak Longbow", 845, 3); + menuLine("30", "Ogre Composite Bow(After Zogre Flesh Eaters)", + 4827, 4); + menuLine("35", "Willow Shortbow", 849, 5); + menuLine("40", "Willow Longbow", 847, 6); + menuLine("50", "Maple Shortbow", 853, 7); + menuLine("55", "Maple Longbow", 851, 8); + menuLine("65", "Yew Shortbow", 857, 9); + menuLine("70", "Yew Longbow", 855, 10); + menuLine("80", "Magic Shortbow", 861, 11); + menuLine("85", "Magic Longbow", 859, 12); + optionTab("Fletching", "Bows", "Arrows", "Bows", "Darts", + "", "", "", "", "", "", "", "", "", ""); + } + + else if (screen == 3) { + clearMenu(); + menuLine("1", "Bronze Dart", 806, 0); + menuLine("22", "Iron Dart", 807, 1); + menuLine("37", "Steel Dart", 808, 2); + menuLine("52", "Mithril Dart", 809, 3); + menuLine("67", "Adamant Dart", 810, 4); + menuLine("81", "Rune Dart", 811, 5); + optionTab("Fletching", "Darts", "Arrows", "Bows", "Darts", + "", "", "", "", "", "", "", "", "", ""); + } + } + + /* + * Skill ID: 13 + * + * @param screen + * + * @return + */ + public void slayerComplex(int screen) { + if (screen == 1) { + clearMenu(); + menuLine("5", "Crawling Hand", 4133, 0); + menuLine("7", "Cave Bug", 4521, 1); + menuLine("10", "Cave Crawler", 4134, 2); + menuLine("15", "Banshee", 4135, 3); + menuLine("17", "Cave Slime", 4520, 4); + menuLine("20", "Rockslug", 4136, 5); + menuLine("25", "Cockatrice", 4137, 6); + menuLine("30", "Pyrefiend", 4138, 7); + menuLine("40", "Basalisk", 4139, 8); + menuLine("45", "Infernal Mage", 4140, 9); + menuLine("50", "Bloodveld", 4141, 10); + menuLine("52", "Jelly", 4142, 11); + menuLine("55", "Turoth", 4143, 12); + menuLine("60", "Aberrant Spectre", 4144, 13); + menuLine("65", "Dust Devil", 4145, 14); + menuLine("70", "Kurask", 4146, 15); + menuLine("72", "Skeletal Wyvern", 6811, 16); + menuLine("75", "Gargoyle", 4147, 17); + menuLine("80", "Nechrael", 4148, 18); + menuLine("85", "Abyssal Demon", 4149, 19); + menuLine("90", "Dark Beast", 6637, 20); + optionTab("Slayer", "Monsters", "Monsters", "Equipment", "", "", "", "", "", "", "", "", "", "", ""); + } + + else if (screen == 2) { + clearMenu(); + menuLine("1", "Enchanted Gem", 4155, 0); + menuLine("1", "Bag Of Salt", 4161, 1); + menuLine("1", "Ice Cooler", 6696, 2); + menuLine("1", "Spiny Helmet (With 5 Defence)", 4551, 3); + menuLine("1", "Rock Hammer", 4162, 4); + menuLine("10", "Facemask", 4164, 5); + menuLine("15", "Earmuffs", 4166, 6); + menuLine("25", "Mirror Shield (With 20 Defence)", 4156, 7); + menuLine("32", "Fishing Explosive", 6660, 8); + menuLine("33", "Harpie Bug Lantern (Not a light source)", 7053, 9); + menuLine("37", "Insulated Boots", 7159, 10); + menuLine("42", "Slayer Gloves", 6708, 11); + menuLine("55", "Leaf-Bladed Spear", 4158, 12); + menuLine("55", "Broad arrows (With 50 Range)", 4150, 13); + menuLine("55", "Slayer's staff(With 50 Magic)", 4170, 14); + menuLine("57", "Fungicide Spray", 7421, 15); + menuLine("60", "Nose Peg", 4168, 16); + optionTab("Slayer", "Equipment", "Monsters", "Equipment", "", "", "", "", "", "", "", "", "", "", ""); + } + } + + /* + * Skill ID: 14 + * + * @param screen + * + * @return + */ + public void miningComplex(int screen) { + if (screen == 1) { + clearMenu(); + menuLine("1", "Rune Essence(After Rune Mysteries)", 1436, 0); + menuLine("1", "Clay", 434, 1); + menuLine("1", "Copper Ore", 436, 2); + menuLine("1", "Tin Ore", 438, 3); + menuLine("10", "Limestone", 3211, 4); + menuLine("10", "Blurite Ore", 668, 5); + menuLine("15", "Iron Ore", 440, 6); + menuLine("20", "Elemental Ore(After Starting Elemental Workshop)", 2892, 7); + menuLine("20", "Silver Ore", 442, 8); + menuLine("30", "Coal", 453, 9); + menuLine("30", "Pure Essence(After Rune Mysteries)", 7936, 10); + menuLine("35", "Sandstone", 6977, 11); + menuLine("40", "Gold Ore", 444, 12); + menuLine("40", "Gem Rocks", 1603, 13); + menuLine("45", "Granite", 6983, 14); + menuLine("55", "Mithril Ore", 447, 15); + menuLine("70", "Adamantite Ore", 449, 16); + menuLine("85", "Runite Ore", 451, 17); + optionTab("Mining", "Ores", "Ores", "Pickaxes", "", "", + "", "", "", "", "", "", "", "", ""); + } + + else if (screen == 2) { + clearMenu(); + menuLine("1", "Bronze Pickaxe", 1265, 0); + menuLine("1", "Iron Pickaxe", 1267, 1); + menuLine("6", "Steel Pickaxe", 1269, 2); + menuLine("21", "Mithril Pickaxe", 1273, 3); + menuLine("31", "Adamant Pickaxe", 1271, 4); + menuLine("41", "Rune Pickaxe", 1275, 5); + optionTab("Mining", "Pickaxes", "Ores", "Pickaxes", "", + "", "", "", "", "", "", "", "", "", ""); + } + + else if (screen == 3) { + clearMenu(); + menuLine("60", "Mining Guild", 447, 0); + optionTab("Mining", "", "Ores", "Pickaxes", "", + "", "", "", "", "", "", "", "", "", ""); + } + } + + /* + * Skill ID: 15 + * + * @param screen + * + * @return + */ + public void smithingComplex(int screen) { + if (screen == 1) { + clearMenu(); + menuLine("1", "Bronze(1 Tin Ore + 1 Copper Ore)", 2349, 0); + menuLine("15", "Iron(50% Chance of Success)", 2351, 1); + menuLine("20", "Elemental Metal(After Elemental Workshop)", 2893, 2); + menuLine("20", "Silver", 2355, 3); + menuLine("30", "Steel(2 Coal + 1 Iron Ore)", 2353, 4); + menuLine("40", "Gold", 2357, 5); + menuLine("50", "Mithril(4 Coal + 1 Mithril Ore)", 2359, 6); + menuLine("70", "Adamant(6 Coal + 1 Adamantite Ore)", 2361, 7); + menuLine("85", "Runite(8 Coal + 1 Runite Ore)", 2363, 8); + optionTab("Smithing", "Smelting", "Smelting", "Bronze", "Iron", + "Steel", "Mithril", "Adamantite", "Runite", "Gold", + "Elemental", "Other", "", "", ""); + } + + else if (screen == 2) { + clearMenu(); + String type = "Bronze"; + menuLine("1", type + " Dagger - 1 Bar", 1205, 0); + menuLine("1", type + " Hatchet - 1 Bar", 1351, 1); + menuLine("2", type + " Mace - 1 Bar", 1422, 2); + menuLine("3", type + " Med Helm - 1 Bar", 1139, 3); + menuLine("4", type + " Sword - 1 Bar", 1277, 4); + menuLine("4", type + " Dart Tips - 1 Bar makes 10", 819, 5); + menuLine("4", type + " Wire - 1 Bar", 1794, 6); + menuLine("4", type + " Nails - 1 Bar makes 15", 4819, 7); + menuLine("5", type + " Scimitar - 2 Bars", 1321, 8); + menuLine("5", type + " Spear - 1 Bar + 1 Log", 1237, 9); + menuLine("5", type + " Arrowhead - 1 Bar makes 15", 39, 10); + menuLine("6", type + " Longsword - 2 Bars", 1291, 11); + menuLine("7", type + " Full Helm - 2 Bars", 1155, 12); + menuLine("7", type + " Throwing Knife", 864, 13); + menuLine("8", type + " Square Shield - 2 Bars", 1173, 14); + menuLine("9", type + " Warhammer - 3 Bars", 1337, 15); + menuLine("10", type + " Battleaxe - 3 Bars", 1375, 16); + menuLine("11", type + " Chainbody - 3 Bars", 1103, 17); + menuLine("12", type + " Kiteshield - 3 Bars", 1189, 18); + menuLine("13", type + " Claws(After Death Plateu) - 2 Bars", 3095, + 19); + menuLine("14", type + " Two-Handed Sword - 3 Bars", 1307, 20); + menuLine("16", type + " Platelegs - 3 Bars", 1075, 21); + menuLine("16", type + " Plateskirt - 3 Bars", 1087, 22); + menuLine("18", type + " Platebody - 5 Bars", 1117, 23); + optionTab("Smithing", "Bronze", "Smelting", "Bronze", "Iron", + "Steel", "Mithril", "Adamantite", "Runite", "Gold", + "Elemental", "Other", "", "", ""); + } else if (screen == 3) { + clearMenu(); + String type = "Iron"; + menuLine("15", type + " Dagger - 1 Bar", 1203, 0); + menuLine("16", type + " Hatchet - 1 Bar", 1349, 1); + menuLine("17", type + " Mace - 1 Bar", 1420, 2); + menuLine("17", type + " Spit - 1 Bar", 7225, 3); + menuLine("18", type + " Med Helm - 1 Bar", 1137, 4); + menuLine("19", type + " Sword - 1 Bar", 1279, 5); + menuLine("19", type + " Dart Tips - 1 Bar makes 10", 820, 6); + menuLine("19", type + " Nails - 1 Bar makes 15", 4819, 7); + menuLine("20", type + " Scimitar - 2 Bars", 1323, 8); + menuLine("20", type + " Spear - 1 Bar + 1 Log", 1239, 9); + menuLine("20", type + " Arrowhead - 1 Bar makes 15", 40, 10); + menuLine("21", type + " Longsword - 2 Bars", 1293, 11); + menuLine("22", type + " Full Helm - 2 Bars", 1153, 12); + menuLine("22", type + " Throwing Knife", 863, 13); + menuLine("23", type + " Square Shield - 2 Bars", 1175, 14); + menuLine("24", type + " Warhammer - 3 Bars", 1335, 15); + menuLine("25", type + " Battleaxe - 3 Bars", 1363, 16); + menuLine("26", type + " Chainbody - 3 Bars", 1101, 17); + menuLine("26", "Oil Lantern Frame - 1 Bar", 4540, 18); + menuLine("27", type + " Kiteshield - 3 Bars", 1191, 19); + menuLine("28", type + " Claws(After Death Plateau) - 2 Bars", 3096, + 20); + menuLine("29", type + " Two-Handed Sword - 3 Bars", 1309, 21); + menuLine("31", type + " Platelegs - 3 Bars", 1067, 22); + menuLine("31", type + " Plateskirt - 3 Bars", 1081, 23); + menuLine("33", type + " Platebody - 5 Bars", 1115, 24); + optionTab("Smithing", "Iron", "Smelting", "Bronze", "Iron", + "Steel", "Mithril", "Adamantite", "Runite", "Gold", + "Elemental", "Other", "", "", ""); + } + + else if (screen == 4) { + clearMenu(); + String type = "Steel"; + menuLine("30", type + " Dagger - 1 Bar", 1207, 0); + menuLine("31", type + " Hatchet - 1 Bar", 1353, 1); + menuLine("32", type + " Mace - 1 Bar", 1424, 2); + menuLine("33", type + " Med Helm - 1 Bar", 1141, 3); + menuLine("34", type + " Sword - 1 Bar", 1281, 4); + menuLine("34", type + " Dart Tips - 1 Bar makes 10", 821, 5); + menuLine("34", type + " Nails - 1 Bar makes 15", 1539, 6); + menuLine("35", type + " Scimitar - 2 Bars", 1325, 7); + menuLine("35", type + " Spear - 1 Bar + 1 Log", 1241, 8); + menuLine("35", type + " Arrowhead - 1 Bar makes 15", 41, 9); + menuLine("36", type + " Longsword - 2 Bars", 1295, 10); + menuLine("36", type + " Studs - 1 Bar", 2370, 11); + menuLine("37", type + " Full Helm - 2 Bars", 1157, 12); + menuLine("37", type + " Throwing Knife", 865, 13); + menuLine("38", type + " Square Shield - 2 Bars", 1177, 14); + menuLine("39", type + " Warhammer - 3 Bars", 1339, 15); + menuLine("40", type + " Battleaxe - 3 Bars", 1365, 16); + menuLine("41", type + " Chainbody - 3 Bars", 1105, 17); + menuLine("42", type + " Kiteshield - 3 Bars", 1193, 18); + menuLine("43", type + " Claws(After Death Plateu) - 2 Bars", 3097, + 19); + menuLine("44", type + " Two-Handed Sword - 3 Bars", 1311, 20); + menuLine("46", type + " Platelegs - 3 Bars", 1069, 21); + menuLine("46", type + " Plateskirt - 3 Bars", 1083, 22); + menuLine("48", type + " Platebody - 5 Bars", 1119, 23); + optionTab("Smithing", "Steel", "Smelting", "Bronze", "Iron", + "Steel", "Mithril", "Adamantite", "Runite", "Gold", + "Elemental", "Other", "", "", ""); + } else if (screen == 5) { + clearMenu(); + String type = "Mithril"; + menuLine("50", type + " Dagger - 1 Bar", 1209, 0); + menuLine("51", type + " Hatchet - 1 Bar", 1355, 1); + menuLine("52", type + " Mace - 1 Bar", 1428, 2); + menuLine("53", type + " Med Helm - 1 Bar", 1143, 3); + menuLine("54", type + " Sword - 1 Bar", 1285, 4); + menuLine("54", type + " Dart Tips - 1 Bar makes 10", 822, 5); + menuLine("54", type + " Nails - 1 Bar makes 15", 4822, 6); + menuLine("55", type + " Scimitar - 2 Bars", 1329, 7); + menuLine("55", type + " Spear - 1 Bar + 1 Log", 1243, 8); + menuLine("55", type + " Arrowhead - 1 Bar makes 15", 42, 9); + menuLine("56", type + " Longsword - 2 Bars", 1299, 10); + menuLine("57", type + " Full Helm - 2 Bars", 1159, 11); + menuLine("57", type + " Throwing Knife", 866, 12); + menuLine("58", type + " Square Shield - 2 Bars", 1181, 13); + menuLine("59", type + " Warhammer - 3 Bars", 1343, 14); + menuLine("60", type + " Battleaxe - 3 Bars", 1369, 15); + menuLine("61", type + " Chainbody - 3 Bars", 1109, 16); + menuLine("62", type + " Kiteshield - 3 Bars", 1197, 17); + menuLine("63", type + " Claws(After Death Plateau) - 2 Bars", 3099, + 18); + menuLine("64", type + " Two-Handed Sword - 3 Bars", 1315, 19); + menuLine("66", type + " Platelegs - 3 Bars", 1071, 20); + menuLine("66", type + " Plateskirt - 3 Bars", 1085, 21); + menuLine("68", type + " Platebody - 5 Bars", 1121, 22); + optionTab("Smithing", "Mithril", "Smelting", "Bronze", "Iron", + "Steel", "Mithril", "Adamantite", "Runite", "Gold", + "Elemental", "Other", "", "", ""); + } else if (screen == 6) { + clearMenu(); + String type = "Adamant"; + menuLine("70", type + " Dagger - 1 Bar", 1211, 0); + menuLine("71", type + " Hatchet - 1 Bar", 1357, 1); + menuLine("72", type + " Mace - 1 Bar", 1430, 2); + menuLine("73", type + " Med Helm - 1 Bar", 1145, 3); + menuLine("74", type + " Sword - 1 Bar", 1287, 4); + menuLine("74", type + " Dart Tips - 1 Bar makes 10", 823, 5); + menuLine("74", type + " Nails - 1 Bar makes 15", 4823, 6); + menuLine("75", type + " Scimitar - 2 Bars", 1331, 7); + menuLine("75", type + " Spear - 1 Bar + 1 Log", 1245, 8); + menuLine("75", type + " Arrowhead - 1 Bar makes 15", 43, 9); + menuLine("76", type + " Longsword - 2 Bars", 1301, 10); + menuLine("77", type + " Full Helm - 2 Bars", 1161, 11); + menuLine("77", type + " Throwing Knife", 867, 12); + menuLine("78", type + " Square Shield - 2 Bars", 1183, 13); + menuLine("79", type + " Warhammer - 3 Bars", 1343, 14); + menuLine("80", type + " Battleaxe - 3 Bars", 1371, 15); + menuLine("81", type + " Chainbody - 3 Bars", 1111, 16); + menuLine("82", type + " Kiteshield - 3 Bars", 1199, 17); + menuLine("83", type + " Claws(After Death Plateau) - 2 Bars", 3100, + 18); + menuLine("84", type + " Two-Handed Sword - 3 Bars", 1317, 19); + menuLine("86", type + " Platelegs - 3 Bars", 1073, 20); + menuLine("86", type + " Plateskirt - 3 Bars", 1091, 21); + menuLine("88", type + " Platebody - 5 Bars", 1123, 22); + optionTab("Smithing", "Adamantite", "Smelting", "Bronze", "Iron", + "Steel", "Mithril", "Adamantite", "Runite", "Gold", + "Elemental", "Other", "", "", ""); + } else if (screen == 7) { + clearMenu(); + String type = "Rune"; + menuLine("85", type + " Dagger - 1 Bar", 1213, 0); + menuLine("86", type + " Hatchet - 1 Bar", 1359, 1); + menuLine("87", type + " Mace - 1 Bar", 1432, 2); + menuLine("88", type + " Med Helm - 1 Bar", 1147, 3); + menuLine("89", type + " Sword - 1 Bar", 1289, 4); + menuLine("89", type + " Dart Tips - 1 Bar makes 10", 824, 5); + menuLine("89", type + " Nails - 1 Bar makes 15", 4824, 6); + menuLine("90", type + " Scimitar - 2 Bars", 1333, 7); + menuLine("90", type + " Spear - 1 Bar + 1 Log", 1247, 8); + menuLine("90", type + " Arrowhead - 1 Bar makes 15", 44, 9); + menuLine("91", type + " Longsword - 2 Bars", 1303, 10); + menuLine("92", type + " Full Helm - 2 Bars", 1163, 11); + menuLine("92", type + " Throwing Knife", 868, 12); + menuLine("93", type + " Square Shield - 2 Bars", 1185, 13); + menuLine("94", type + " Warhammer - 3 Bars", 1347, 14); + menuLine("95", type + " Battleaxe - 3 Bars", 1373, 15); + menuLine("96", type + " Chainbody - 3 Bars", 1113, 16); + menuLine("97", type + " Kiteshield - 3 Bars", 1201, 17); + menuLine("98", type + " Claws(After Death Plateau) - 2 Bars", 3101, + 18); + menuLine("99", type + " Two-Handed Sword - 3 Bars", 1319, 19); + menuLine("99", type + " Platelegs - 3 Bars", 1079, 20); + menuLine("99", type + " Plateskirt - 3 Bars", 1093, 21); + menuLine("99", type + " Platebody - 5 Bars", 1127, 22); + optionTab("Smithing", "Runite", "Smelting", "Bronze", "Iron", + "Steel", "Mithril", "Adamantite", "Runite", "Gold", + "Elemental", "Other", "", "", ""); + } else if (screen == 8) { + clearMenu(); + menuLine("50", "Gold Bowl(After Starting Legends' Quest)", 721, 0); + menuLine("50", "Gold Helmet(After starting Between a Rock)", 4567, 1); + optionTab("Smithing", "Gold", "Smelting", "Bronze", "Iron", + "Steel", "Mithril", "Adamantite", "Runite", "Gold", + "Elemental", "Other", "", "", ""); + } else if (screen == 9) { + clearMenu(); + menuLine("20", "Elemental Shield(After Elemental Workshop)", 2890, + 0); + optionTab("Smithing", "Elemental", "Smelting", "Bronze", "Iron", + "Steel", "Mithril", "Adamantite", "Runite", "Gold", + "Elemental", "Other", "", "", ""); + } else if (screen == 10) { + clearMenu(); + menuLine("60", "Dragon Square Shield", 1187, 0); + optionTab("Smithing", "Other", "Smelting", "Bronze", "Iron", + "Steel", "Mithril", "Adamantite", "Runite", "Gold", + "Elemental", "Other", "", "", ""); + } + } + + /* + * Skill ID: 16 + * + * @param screen + * + * @return + */ + public void fishingComplex(int screen) { + if (screen == 1) { + clearMenu(); + menuLine("1", "Small Net", 303, 0); + menuLine("5", "Bait Fishing", 307, 1); + menuLine("16", "Big Net Fishing", 305, 2); + menuLine("20", "Fly Fishing Rod", 309, 3); + menuLine("35", "Harpoon", 311, 4); + menuLine("40", "Lobster Pot", 301, 5); + menuLine("65", "Vessel Fishing", 3157, 6); + optionTab("Fishing", "Techniques", "Techniques", "Catches", + "", "", "", "", "", "", "", "", "", "", ""); + } + + else if (screen == 2) { + clearMenu(); + menuLine("1", "Shrimp - Net Fishing", 317, 0); + menuLine("5", "Sardine - Sea Bait Fishing", 327, 1); + menuLine("5", "Karambwanji - Net Fishing", 3150, 2); + menuLine("10", "Herring - Sea Bait Fishing", 347, 3); + menuLine("15", "Anchovie - Net Fishing", 321, 4); + menuLine("16", "Mackerel - Big Net Fishing", 353, 5); + menuLine("16", "Oyster - Big Net Fishing", 407, 6); + menuLine("16", "Casket - Big Net Fishing", 405, 7); + menuLine("16", "Seaweed - Big Net Fishing", 401, 8); + menuLine("20", "Trout - Fly Fishing", 335, 9); + menuLine("23", "Cod - Big Net Fishing", 341, 10); + menuLine("25", "Pike - River Bait Fishing", 349, 11); + menuLine("28", "Slimy Eel - River Bait Fishing", 3379, 12); + menuLine("30", "Salmon - Fly Fishing", 331, 13); + menuLine("35", "Tuna - Harpoon Fishing", 359, 14); + menuLine("38", "Cave Eel - River Bait Fishing", 5001, 15); + menuLine("40", "Lobster - Lobster Pot Fishing", 377, 16); + menuLine("46", "Bass - Big Net Fishing", 363, 17); + menuLine("50", "Swordfish - Harpoon Fishing", 371, 18); + menuLine("53", "Lava Eel - Bait Fishing", 2148, 19); + menuLine("62", "Monkfish - Net Fishing", 7944, 20); + menuLine("65", "Karambwan - Vessel Fishing", 3142, 21); + menuLine("76", "Shark - Harpoon Fishing", 383, 22); + menuLine("79", "Sea Turtle - Fishing Trawler", 395, 23); + menuLine("81", "Manta Ray - Fishing Trawler", 389, 24); + optionTab("Fishing", "Catches", "Techniques", "Catches", + "", "", "", "", "", "", "", "", "", "", ""); + } + + else if (screen == 3) { + clearMenu(); + menuLine("68", "Fishing Guild", 385, 0); + optionTab("Fishing", "", "Techniques", "Catches", + "", "", "", "", "", "", "", "", "", "", ""); + } + } + + /* + * Skill ID: 17 + * + * @param screen + * + * @return + */ + public void cookingComplex(int screen) { + if (screen == 1) { + clearMenu(); + menuLine("1", "Meat", 2142, 0); + menuLine("1", "Shrimp", 315, 1); + menuLine("1", "Chicken", 2140, 2); + menuLine("1", "Rabbit", 3228, 3); + menuLine("1", "Anchovies", 319, 4); + menuLine("1", "Sardine", 325, 5); + menuLine("1", "Karambwanji", 3151, 6); + menuLine("1", "Karambwan", 3144, 7); + menuLine("1", "Ugthanki Kebab", 1883, 8); + menuLine("5", "Herring", 347, 9); + menuLine("10", "Mackerel", 355, 10); + menuLine("12", "Thin Snail", 3363, 11); + menuLine("15", "Trout", 333, 12); + menuLine("16", "Spider", 6293, 13); + menuLine("16", "Roasted Rabbit", 7223, 14); + menuLine("17", "Lean Snail", 3365, 15); + menuLine("18", "Cod", 339, 16); + menuLine("20", "Pike", 351, 17); + menuLine("22", "Fat Snail", 3367, 18); + menuLine("25", "Salmon", 329, 19); + menuLine("28", "Slimy Eel", 3379, 20); + menuLine("30", "Tuna", 361, 21); + menuLine("30", "Roasted Chompy", 2878, 22); + menuLine("31", "Fishcake", 7530, 23); + menuLine("38", "Cave Eel", 5003, 24); + menuLine("40", "Lobster", 379, 25); + menuLine("41", "Jubbly", 7568, 26); + menuLine("43", "Bass", 365, 27); + menuLine("45", "Swordfish", 373, 28); + menuLine("53", "Lava Eel", 2149, 29); + menuLine("62", "Monkfish", 7946, 30); + menuLine("80", "Shark", 385, 31); + menuLine("82", "Sea Turtle", 397, 32); + menuLine("91", "Manta Ray", 391, 33); + optionTab("Cooking", "Meats", "Meats", "Bread", "Pies", "Stews", + "Pizzas", "Cakes", "Wine", "Hot Drinks", "Brewing", + "Potatoes", "Diary", "Gnome", ""); + } + + else if (screen == 2) { + clearMenu(); + menuLine("1", "Bread", 2309, 0); + menuLine("58", "Pitta Bread", 1865, 1); + menuLine("", "To make bread:", 0, 2); + menuLine("", "1.Pick some grain and use a hopper to make flour", 0, + 3); + menuLine("", "2.Use a pot to collect the flour you have made", 0, 4); + menuLine("", "3.Fill a bucket or jug with water from a sink", 0, 5); + menuLine("", "4.Mix the flour and water to make some dough", 0, 6); + menuLine("", "5.Cook the dough by using it with a stove", 0, 7); + optionTab("Cooking", "Bread", "Meats", "Bread", "Pies", "Stews", + "Pizzas", "Cakes", "Wine", "Hot Drinks", "Brewing", + "Potatoes", "Diary", "Gnome", ""); + } + + else if (screen == 3) { + clearMenu(); + menuLine("10", "Redberry Pie", 2325, 0); + menuLine("20", "Meat Pie", 2327, 1); + menuLine("29", "Mud Pie", 7170, 2); + menuLine("30", "Apple Pie", 2323, 3); + menuLine("34", "Garden Pie", 7178, 4); + menuLine("47", "Fish Pie", 7188, 5); + menuLine("70", "Admiral Pie", 7198, 6); + menuLine("85", "Wild Pie", 7208, 7); + menuLine("95", "Summer Pie", 7218, 8); + menuLine("", "To make a pie:", 0, 9); + menuLine("", "1.Mixe flour and water to make pastry dough", 0, 10); + menuLine("", "2.Place the dough in an empty pie dish", 0, 11); + menuLine("", "3.Use our choice of filling with the empty pie", 0, + 12); + menuLine("", "4.Cook the pie by using it with a stove", 0, 13); + optionTab("Cooking", "Pies", "Meats", "Bread", "Pies", "Stews", + "Pizzas", "Cakes", "Wine", "Hot Drinks", "Brewing", + "Potatoes", "Diary", "Gnome", ""); + } + + else if (screen == 4) { + clearMenu(); + menuLine("25", "Stew", 2003, 0); + menuLine("60", "Curry", 2011, 1); + menuLine("", "To make stew:", 0, 2); + menuLine("", "1.Obtain a bowl and fill it with water", 0, 3); + menuLine("", "2.Pick a potato and place it in the bowl.", 0, 4); + menuLine("", "3.Cook some meat and place it in the bowl", 0, 5); + menuLine("", "4.Cook the stew by using it with a stove or fire", 0, + 6); + menuLine("", "To make curry:", 0, 7); + menuLine("", "Make uncooked stew as above.", 0, 8); + menuLine("", "Before cooking, add some spices or curry leaves", 0, + 9); + optionTab("Cooking", "Stews", "Meats", "Bread", "Pies", "Stews", + "Pizzas", "Cakes", "Wine", "Hot Drinks", "Brewing", + "Potatoes", "Diary", "Gnome", ""); + } + + else if (screen == 5) { + clearMenu(); + menuLine("35", "Plain Pizza", 2289, 0); + menuLine("45", "Meat Pizza", 2293, 1); + menuLine("55", "Anchovy Pizza", 2297, 2); + menuLine("65", "Pineapple Pizza", 2301, 3); + menuLine("", "To make a pizza:", 0, 4); + menuLine("", "1.Mix flour and water to make a pizza base", 0, 5); + menuLine("", "2.Add a tomato to the pizza", 0, 6); + menuLine("", "3.Add some cheese to the pizza", 0, 7); + menuLine("", "4.Cook the pizza by using it with a stove", 0, 8); + menuLine("", "5.Add your choice of topping to the pizza", 0, 9); + optionTab("Cooking", "Pizzas", "Meats", "Bread", "Pies", "Stews", + "Pizzas", "Cakes", "Wine", "Hot Drinks", "Brewing", + "Potatoes", "Diary", "Gnome", ""); + } + + else if (screen == 6) { + clearMenu(); + menuLine("40", "Cake", 1891, 0); + menuLine("50", "Chocolate Cake", 1897, 1); + menuLine("", "To make a cake:", 0, 2); + menuLine("", "1.Mix flour, eggs and milk together in a cake tin", + 0, 3); + menuLine("", "2.Cook the cake by using it with a stove", 0, 4); + menuLine("", "3.Optional:Buy some chocolate and add", 0, 5); + menuLine("", "it to the cake to make a choclate cake", 0, 6); + optionTab("Cooking", "Cakes", "Meats", "Bread", "Pies", "Stews", + "Pizzas", "Cakes", "Wine", "Hot Drinks", "Brewing", + "Potatoes", "Diary", "Gnome", ""); + } + + else if (screen == 7) { + clearMenu(); + menuLine("35", "Wine", 1993, 0); + menuLine("", "To make wine:", 0, 1); + menuLine("", "1.Fill a jug with water", 0, 2); + menuLine("", "2.Use grapes with the jug of water", 0, 3); + menuLine("", "3.Wait until the wine ferments", 0, 4); + menuLine("", "4.The wine will ferment while left in your", 0, 5); + menuLine("", "inventory or the bank", 0, 6); + optionTab("Cooking", "Wine", "Meats", "Bread", "Pies", "Stews", + "Pizzas", "Cakes", "Wine", "Hot Drinks", "Brewing", + "Potatoes", "Diary", "Gnome", ""); + } + + else if (screen == 8) { + clearMenu(); + menuLine("20", "Nettle Tea", 1978, 0); + menuLine("", "To make nettle tea:", 0, 1); + menuLine("", "1.Fill a bowl with water", 0, 2); + menuLine("", "2.Put some picked nettles into the bowl of water", 0, + 3); + menuLine("", "3.Boil the nettle-water by using it with a range", 0, + 4); + menuLine("", "4.Use the bowl of nettle tea with a cup", 0, 5); + menuLine("", "5.If you take milk, use some milk on the tea", 0, 6); + optionTab("Cooking", "Hot Drinks", "Meats", "Bread", "Pies", + "Stews", "Pizzas", "Cakes", "Wine", "Hot Drinks", + "Brewing", "Potatoes", "Diary", "Gnome", ""); + } + + else if (screen == 9) { + clearMenu(); + menuLine("14", "Cider(4 Apple Mush)", 5763, 0); + menuLine("19", "Dwarven Stout(4 Hammerstone Hops)", 1913, 1); + menuLine("24", "Asgarnian Ale(4 Asgarnian Hops)", 1905, 2); + menuLine("29", "Greenman's Ale(4 Harralander Leaves)", 1909, 3); + menuLine("34", "Wizard's Mind Bomb(4 Yanillian Hops)", 1907, 4); + menuLine("39", "Dragon Bitter(4 Krandorian Hops)", 1911, 5); + menuLine("44", "Moonlight Mead(4 Bittercap Mushrooms)", 2955, 6); + menuLine("49", "Axeman's Folly(1 Oak Root)", 5751, 7); + menuLine("54", "Chef's Delight(4 Portions of Chocolate Dust)", + 5755, 8); + menuLine("59", "Slayer's Respite(4 Wildblood Hops)", 5759, 9); + optionTab("Cooking", "Brewing", "Meats", "Bread", "Pies", "Stews", + "Pizzas", "Cakes", "Wine", "Hot Drinks", "Brewing", + "Potatoes", "Diary", "Gnome", ""); + } + + else if (screen == 10) { + clearMenu(); + menuLine("7", "Baked Potato", 6701, 0); + menuLine("9", "Spicy Sauce(Topping Ingredient)", 7072, 1); + menuLine("11", "Chilli Con Carne(Topping)", 7062, 2); + menuLine("13", "Scrambled Egg(Topping Ingredient)", 7078, 3); + menuLine("23", "Scrambled Egg and Tomato(Topping)", 7064, 4); + menuLine("28", "Sweetcorn", 5988, 5); + menuLine("39", "Baked Potato with Butter", 6703, 6); + menuLine("41", "Baked Potato with Chilli Con Carne", 7054, 7); + menuLine("42", "Fried Onion(Topping Ingredient)", 7084, 8); + menuLine("46", "Fried Mushroom(Topping Ingredient)", 7082, 9); + menuLine("47", "Baked Potato with Butter and Cheese", 6705, 10); + menuLine("51", "Baked Potato with Egg and Tomato", 7056, 11); + menuLine("57", "Fried Mushroom and Onion(Topping)", 7066, 12); + menuLine("64", "Baked Potato with Mushroom and Onion", 7058, 13); + menuLine("67", "Tuna and Sweetcorn(Topping)", 7068, 14); + menuLine("68", "Baked Potato with Tuna and Sweetcorn", 7060, 15); + menuLine("", "To make baked potatoes with toppings:", 0, 16); + menuLine("", "1.Bake the potato on a range", 0, 17); + menuLine("", "2.Add some butter", 0, 18); + menuLine("", "3.If needed, combine topping ingredients", 0, 19); + menuLine("", "by chopping them into a bowl", 0, 20); + menuLine("", "Ingredients for toppings:", 0, 21); + menuLine("", "1.Chilli con carne: Meat & spicy sauce", 0, 22); + menuLine("", "2.Egg and tomato: Scrambled egg & tomato", 0, 23); + menuLine("", "3.Mushroom and onion: Fried mushroom & onion", 0, 24); + menuLine("", "4.Tuna and sweetcorn: Tuna & cooked sweetcorn", 0, 25); + optionTab("Cooking", "Potatoes", "Meats", "Bread", "Pies", "Stews", + "Pizzas", "Cakes", "Wine", "Hot Drinks", "Brewing", + "Potatoes", "Diary", "Gnome", ""); + } + + else if (screen == 11) { + clearMenu(); + menuLine("4", "Chocolate Milk", 1977, 0); + menuLine("21", "Cream", 2130, 1); + menuLine("38", "Butter", 6697, 2); + menuLine("48", "Cheese", 1985, 3); + menuLine("", "To make churned dairy products:", 0, 4); + menuLine("", "1.Get a bucket of milk, a pot of cream or butter", 0, + 5); + menuLine("", "2.Use the milk, cream or butter in a churn", 0, 6); + menuLine("", "3.Milk can be churned into cream, ", 0, 7); + menuLine("", "then into butter, then into cheese", 0, 8); + optionTab("Cooking", "Dairy", "Meats", "Bread", "Pies", "Stews", + "Pizzas", "Cakes", "Wine", "Hot Drinks", "Brewing", + "Potatoes", "Diary", "Gnome", ""); + } + + else if (screen == 12) { + clearMenu(); + menuLine("6", "Fruit Blast", 2034, 0); + menuLine("8", "Pineapple Punch", 2036, 1); + menuLine("10", "Toad Crunchies", 2217, 2); + menuLine("12", "Spicy Crunchies", 2213, 3); + menuLine("14", "Worm Crunchies", 2237, 4); + menuLine("16", "Chocolate Chip Crunchies", 2239, 5); + menuLine("18", "Wizard Blizzard", 2040, 6); + menuLine("20", "Short Green Guy(SGG)", 2038, 7); + menuLine("25", "Fruit Batta", 2225, 8); + menuLine("26", "Toad Batta", 2221, 9); + menuLine("27", "Worm Batta", 2219, 10); + menuLine("28", "Vegetable Batta", 2227, 11); + menuLine("29", "Cheese and Tomato Batta", 2223, 12); + menuLine("30", "Worm Hole", 2191, 13); + menuLine("32", "Drunk Dragon", 2032, 14); + menuLine("33", "Chocolate Saturday", 2030, 15); + menuLine("35", "Vegetable Ball", 2195, 16); + menuLine("37", "Blurberry Special", 2028, 17); + menuLine("40", "Tangled Toads' Legs", 2187, 18); + menuLine("42", "Chocolate Bomb", 2185, 19); + optionTab("Cooking", "Gnome", "Meats", "Bread", "Pies", "Stews", + "Pizzas", "Cakes", "Wine", "Hot Drinks", "Brewing", + "Potatoes", "Diary", "Gnome", ""); + } + + else if (screen == 13) { + clearMenu(); + menuLine("32", "Chefs' Guild", 1949, 0); + optionTab("Cooking", "", "Meats", "Bread", "Pies", + "Stews", "Pizzas", "Cakes", "Wine", "Hot Drinks", + "Brewing", "Potatoes", "Diary", "Gnome", ""); + } + } + + /* + * Skill ID: 18 + * + * @param screen + * + * @return + */ + public void firemakingComplex(int screen) { + if (screen == 1) { + clearMenu(); + menuLine("1", "Normal Logs", 1511, 0); + menuLine("1", "Torch", 596, 1); + menuLine("1", "Candle", 36, 2); + menuLine("1", "Achey Logs", 2862, 3); + menuLine("4", "Candle Lantern", 4527, 4); + menuLine("5", "Pyre Logs", 3438, 5); + menuLine("12", "Oil Lamp", 4522, 6); + menuLine("15", "Oak Logs", 1521, 7); + menuLine("20", "Iron Spit", 7225, 8); + menuLine("20", "Oak Pyre Logs", 3440, 9); + menuLine("26", "Oil Lantern", 4535, 10); + menuLine("30", "Willow Logs", 1519, 11); + menuLine("33", "Harpie Bug Lantern", 7051, 12); + menuLine("35", "Teak Logs", 6333, 13); + menuLine("35", "Willow Pyre Logs", 3442, 14); + menuLine("40", "Teak Pyre Logs", 6211, 15); + menuLine("45", "Maple Logs", 1517, 16); + menuLine("49", "Bullseye Lantern", 4546, 17); + menuLine("49", "Sapphire Lantern", 4700, 18); + menuLine("50", "Mahogany Logs", 6332, 19); + menuLine("50", "Maple Pyre Logs", 3444, 20); + menuLine("55", "Mahogany Pyre Logs", 6213, 21); + menuLine("60", "Yew Logs", 1515, 22); + menuLine("65", "Cave Goblin Mining Helmet", 5014, 23); + menuLine("65", "Yew Pyre Logs", 3446, 24); + menuLine("75", "Magic Logs", 1513, 25); + menuLine("80", "Magic Pyre Logs", 3448, 26); + optionTab("Firemaking", "Firemaking", "Firemaking", "Equipment", + "", "", "", "", "", "", "", "", "", "", ""); + } + + else if (screen == 2) { + clearMenu(); + menuLine("1", "Tinderbox", 590, 0); + optionTab("Firemaking", "Equipment", "Firemaking", "Equipment", + "", "", "", "", "", "", "", "", "", "", ""); + } + } + + /* + * Skill ID: 19 + * + * @param screen + * + * @return + */ + public void woodcuttingComplex(int screen) { + if (screen == 1) { + clearMenu(); + menuLine("1", "Normal Tree", 1511, 0); + menuLine("1", "Achey Tree", 2862, 1); + menuLine("10", "Light Jungle", 6281, 2); + menuLine("15", "Oak Tree", 1521, 3); + menuLine("20", "Medium Jungle", 6283, 4); + menuLine("30", "Willow Tree", 1519, 5); + menuLine("35", "Dense Jungle", 6285, 6); + menuLine("35", "Teak Tree", 6333, 7); + menuLine("45", "Maple Tree", 1517, 8); + menuLine("45", "Hollow Tree", 3239, 9); + menuLine("50", "Mahogany Tree", 6332, 10); + menuLine("60", "Yew Tree", 1515, 11); + menuLine("75", "Magic Tree", 1513, 12); + optionTab("Woodcutting", "Trees", "Trees", "Hatchets", "Canoes", + "", "", "", "", "", "", "", "", "", ""); + } + + else if (screen == 2) { + clearMenu(); + menuLine("1", "Bronze Axe", 1351, 0); + menuLine("1", "Iron Axe", 1349, 1); + menuLine("6", "Steel Axe", 1353, 2); + menuLine("6", "Black Axe", 1361, 3); + menuLine("21", "Mithril Axe", 1355, 4); + menuLine("31", "Adamant Axe", 1357, 5); + menuLine("41", "Rune Axe", 1359, 6); + menuLine("61", "Dragon Axe", 6739, 7); + optionTab("Woodcutting", "Hatchets", "Trees", "Hatchets", "Canoes", + "", "", "", "", "", "", "", "", "", ""); + } + + else if (screen == 3) { + clearMenu(); + menuLine("12", "Log Canoe", 7414, 0); + menuLine("27", "Dugout Canoe", 7414, 1); + menuLine("42", "Stable Dugout Canoe", 7414, 2); + menuLine("57", "Waka Canoe", 7414, 3); + optionTab("Woodcutting", "Canoes", "Trees", "Hatchets", "Canoes", + "", "", "", "", "", "", "", "", "", ""); + } + } + + /* + * Skill ID: 20 + * + * @param screen + * + * @return + */ + public void farmingComplex(int screen) { + if (screen == 1) { + clearMenu(); + menuLine("1", "Potato", 1942, 0); + menuLine("5", "Onion", 1957, 1); + menuLine("7", "Cabbage", 1965, 2); + menuLine("12", "Tomato", 1982, 3); + menuLine("20", "Sweetcorn", 5986, 4); + menuLine("31", "Strawberry", 5504, 5); + menuLine("47", "Watermelon", 5982, 6); + optionTab("Farming", "Allotments", "Allotments", "Hops", "Trees", + "Fruit Trees", "Bushes", "Flowers", "Herbs", "Special", + "Scarecrows", "", "", "", ""); + } + + else if (screen == 2) { + clearMenu(); + menuLine("3", "Barley", 6006, 0); + menuLine("4", "Hammerstone Hop", 5994, 1); + menuLine("8", "Asgarnian Hop", 5996, 2); + menuLine("13", "Jute Plant", 5931, 3); + menuLine("16", "Yanillian Hop", 5998, 4); + menuLine("21", "Krandorian Hop", 6000, 5); + menuLine("28", "Wildblood Hop", 6002, 6); + optionTab("Farming", "Allotments", "Allotments", "Hops", "Trees", + "Fruit Trees", "Bushes", "Flowers", "Herbs", "Special", + "Scarecrows", "", "", "", ""); + } + + else if (screen == 3) { + clearMenu(); + menuLine("15", "Oak Tree", 1521, 0); + menuLine("30", "Willow Tree", 1519, 1); + menuLine("45", "Maple Tree", 1517, 2); + menuLine("60", "Yew Tree", 1515, 3); + menuLine("75", "Magic Tree", 1513, 4); + optionTab("Farming", "Trees", "Allotments", "Hops", "Trees", + "Fruit Trees", "Bushes", "Flowers", "Herbs", "Special", + "Scarecrows", "", "", "", ""); + } + + else if (screen == 4) { + clearMenu(); + menuLine("27", "Apple Tree", 1955, 0); + menuLine("33", "Banana Tree", 1963, 1); + menuLine("39", "Orange Tree", 2108, 2); + menuLine("42", "Curry Tree", 5970, 3); + menuLine("51", "Pineapple Plant", 2114, 4); + menuLine("57", "Papaya Tree", 5972, 5); + menuLine("68", "Palm Tree", 5974, 6); + optionTab("Farming", "Fruit Trees", "Allotments", "Hops", "Trees", + "Fruit Trees", "Bushes", "Flowers", "Herbs", "Special", + "Scarecrows", "", "", "", ""); + } + + else if (screen == 5) { + clearMenu(); + menuLine("10", "Redberry Bush", 1951, 0); + menuLine("22", "Cadavaberry Bush", 753, 1); + menuLine("36", "Dwellberry Bush", 2126, 2); + menuLine("48", "Jangerberry Bush", 247, 3); + menuLine("59", "White Berry Bush", 239, 4); + menuLine("70", "Poison Ivy Bush", 6018, 5); + optionTab("Farming", "Bushes", "Allotments", "Hops", "Trees", + "Fruit Trees", "Bushes", "Flowers", "Herbs", "Special", + "Scarecrows", "", "", "", ""); + } + + else if (screen == 6) { + clearMenu(); + menuLine("2", "Marigold(Protects low level crops from Disease)", + 6010, 0); + menuLine("11", "Rosemary(Protects Cabbages from Disease)", 6014, 1); + menuLine("24", "Nasturtium(Protects Watermelons from Disease)", + 6012, 2); + menuLine("25", "Woad", 1793, 3); + menuLine("26", "Limpwurt", 225, 4); + optionTab("Farming", "Flowers", "Allotments", "Hops", "Trees", + "Fruit Trees", "Bushes", "Flowers", "Herbs", "Special", + "Scarecrows", "", "", "", ""); + } + + else if (screen == 7) { + clearMenu(); + menuLine("9", "Guam", 249, 0); + menuLine("14", "Marrentill", 251, 1); + menuLine("19", "Tarromin", 253, 2); + menuLine("26", "Harralander", 255, 3); + menuLine("32", "Ranarr", 257, 4); + menuLine("38", "Toadflax", 2998, 5); + menuLine("44", "Irit", 259, 6); + menuLine("50", "Avantoe", 261, 7); + menuLine("56", "Kwuarm", 263, 8); + menuLine("62", "Snapdragon", 3000, 9); + menuLine("67", "Cadantine", 265, 10); + menuLine("73", "Lantadyme", 2481, 11); + menuLine("79", "Dwarf Weed", 267, 12); + menuLine("85", "Torstol", 269, 13); + optionTab("Farming", "Herbs", "Allotments", "Hops", "Trees", + "Fruit Trees", "Bushes", "Flowers", "Herbs", "Special", + "Scarecrows", "", "", "", ""); + } + + else if (screen == 8) { + clearMenu(); + menuLine("55", "Cactus", 6016, 0); + menuLine("63", "Belladonna", 5281, 1); + menuLine("72", "Calquat Tree", 5980, 2); + menuLine("83", "Spirit Tree", 6063, 3); + optionTab("Farming", "Special", "Allotments", "Hops", "Trees", + "Fruit Trees", "Bushes", "Flowers", "Herbs", "Special", + "Scarecrows", "", "", "", ""); + } + + else if (screen == 9) { + clearMenu(); + menuLine("23", "Able to make and place a scarecrow", 6059, 0); + menuLine("", "", 0, 1); + menuLine("", "Scarecrows help to stop sweetcorn from", 0, 2); + menuLine("", "being attacked by birds, while also", 0, 3); + menuLine("", "helping to prevent disease", 0, 4); + menuLine("", "", 0, 5); + menuLine("", "How to make a scarecrow:", 0, 6); + menuLine("", "", 0, 7); + menuLine("", "1.Fill an empty sack with straw.", 0, 8); + menuLine("", "2.Drive a hay sack onto a bronze spear", 0, 9); + menuLine("", "3.Place a watermelon at the top as a head", 0, 10); + menuLine("", "4.Stand the scarecrow in a flower patch", 0, 11); + optionTab("Farming", "Scarecrows", "Allotments", "Hops", "Trees", + "Fruit Trees", "Bushes", "Flowers", "Herbs", "Special", + "Scarecrows", "", "", "", ""); + } + } +} diff --git a/2006Redone Server/src/redone/game/content/skills/SkillMenu.java b/2006Redone Server/src/com/rebotted/game/content/skills/SkillMenu.java similarity index 85% rename from 2006Redone Server/src/redone/game/content/skills/SkillMenu.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/SkillMenu.java index 3f86dc68..8a70d050 100644 --- a/2006Redone Server/src/redone/game/content/skills/SkillMenu.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/SkillMenu.java @@ -1,112 +1,112 @@ -package redone.game.content.skills; - -import redone.game.players.Client; - -/** - * @author Sanity - */ - -public class SkillMenu { - - private static final int INTERFACE_ID = 8714; - private static final int LEVEL_LINE = 8720; - private static final int TEXT_LINE = 8760; - private static final int TITLE_LINE = 8716; - private static final int[][] items = { - { 1321, 1323, 1325, 1327, 1329, 1331, 1333, 4153, 4587, 4151, 4718, - 11694, 9747 }, - { 1117, 1115, 1119, 1125, 1121, 6916, 1123, 1127, 3751, 2513, - 10348, 11724, 11720, 4720, 11283, 9753 }, - { 4153, 6528, 9750 }, - { 9768 }, - { 841, 843, 849, 853, 857, 1135, 861, 2499, 11235, 6522, 2501, - 9185, 10330, 4214, 2503, 4734, 9756 }, { 9759 }, - { 4099, 6916, 6889, 7401, 3387, 4675, 10338, 4712 } }; - private static final String[][] LEVELS = { - { "1", "1", "5", "10", "20", "30", "40", "50", "60", "70", "70", - "75", "99" }, - { "1", "1", "5", "10", "20", "25", "30", "40", "45", "60", "65", - "65", "70", "70", "75", "99" }, - { "50", "60", "99" }, - { "99" }, - { "1", "5", "20", "30", "30", "40", "50", "50", "60", "60", "60", - "61", "65", "70", "70", "70", "99" }, { "99" }, - { "20", "25", "25", "40", "40", "50", "65", "70" } }; - - private static final String[][] DESCRIPTION = { - { "Bronze Weapons", "Iron Weapons", "Steel Weapons", - "Black Weapons", "Mithril Weapons", "Adamant Weapons", - "Rune Weapons", "Granite Maul", "Dragon Weapons", - "Abyssal Whip", "Barrows Weapons", "Godswords", - "Cape of Achievement" }, - { "Bronze Armour", "Iron Armour", "Steel Armour", "Black Armour", - "Mithril Armour", "Infinity", "Adamant Armour", - "Rune Armour", "Fremennik Helmets", "Dragon Armour", - "3rd Age Armour", "Bandos", "Armadyl", "Barrows Armour", - "Dragonfire Shield", "Cape of Achievement" }, - { "Granite Items", "Obby Maul", "Cape of Achievement" }, - { "Cape of Achievement" }, - { "Normal Bows", "Oak Bows", "Willow Bows", "Maple Bows", - "Yew Bows", "Green D'hide", "Magic Bows", "Blue D'hide", - "Dark Bow", "Obby Ring", "Red D'hide", "Rune C'bow", - "3rd age Range", "Crystal Bow", "Black D'hide", "Karil's", - "Cape of Achievement" }, - { "Cape of Achievement" }, - { "Mystic ", "Infinity ", "Mage's book", "Enchanted ", - "Splitbark ", "Ancient staff", "3rd age mage", "Ahrims" } }; - - private static final String[] SKILLS = { "Attack", "Defence", "Strength", - "Hitpoints", "Ranged", "Prayer", "Magic" }; - - public static void openInterface(Client c, int skillType) { - removeSidebars(c); - writeItems(c, skillType); - writeText(c, skillType); - c.getPlayerAssistant().showInterface(INTERFACE_ID); - } - - private static void removeSidebars(Client c) { - int[] temp = { 8849, 8846, 8823, 8824, 8827, 8837, 8840, 8843, 8859, - 8862, 8865, 15303, 15306, 15309 }; - for (int element : temp) { - c.getPlayerAssistant().sendFrame126("", element); - } - } - - private static void writeItems(Client c, int skillType) { - synchronized (c) { - c.outStream.createFrameVarSizeWord(53); - c.outStream.writeWord(8847); - c.outStream.writeWord(items[skillType].length); - for (int j = 0; j < items[skillType].length; j++) { - c.outStream.writeByte(1); - if (items[skillType][j] > 0) { - c.outStream.writeWordBigEndianA(items[skillType][j] + 1); - } else { - c.outStream.writeWordBigEndianA(0); - } - } - c.outStream.endFrameVarSizeWord(); - c.flushOutStream(); - } - } - - private static void writeText(Client c, int skillType) { - c.getPlayerAssistant().sendFrame126(SKILLS[skillType], TITLE_LINE); - for (int j = 0; j < LEVELS[skillType].length; j++) { - c.getPlayerAssistant().sendFrame126(LEVELS[skillType][j], - LEVEL_LINE + j); - } - for (int j = 0; j < DESCRIPTION[skillType].length; j++) { - c.getPlayerAssistant().sendFrame126(DESCRIPTION[skillType][j], - TEXT_LINE + j); - } - - for (int j = DESCRIPTION[skillType].length; j < 30; j++) { - c.getPlayerAssistant().sendFrame126("", LEVEL_LINE + j); - } - for (int j = LEVELS[skillType].length; j < 30; j++) { - c.getPlayerAssistant().sendFrame126("", TEXT_LINE + j); - } - } -} +package com.rebotted.game.content.skills; + +import com.rebotted.game.players.Client; + +/** + * @author Sanity + */ + +public class SkillMenu { + + private static final int INTERFACE_ID = 8714; + private static final int LEVEL_LINE = 8720; + private static final int TEXT_LINE = 8760; + private static final int TITLE_LINE = 8716; + private static final int[][] items = { + { 1321, 1323, 1325, 1327, 1329, 1331, 1333, 4153, 4587, 4151, 4718, + 11694, 9747 }, + { 1117, 1115, 1119, 1125, 1121, 6916, 1123, 1127, 3751, 2513, + 10348, 11724, 11720, 4720, 11283, 9753 }, + { 4153, 6528, 9750 }, + { 9768 }, + { 841, 843, 849, 853, 857, 1135, 861, 2499, 11235, 6522, 2501, + 9185, 10330, 4214, 2503, 4734, 9756 }, { 9759 }, + { 4099, 6916, 6889, 7401, 3387, 4675, 10338, 4712 } }; + private static final String[][] LEVELS = { + { "1", "1", "5", "10", "20", "30", "40", "50", "60", "70", "70", + "75", "99" }, + { "1", "1", "5", "10", "20", "25", "30", "40", "45", "60", "65", + "65", "70", "70", "75", "99" }, + { "50", "60", "99" }, + { "99" }, + { "1", "5", "20", "30", "30", "40", "50", "50", "60", "60", "60", + "61", "65", "70", "70", "70", "99" }, { "99" }, + { "20", "25", "25", "40", "40", "50", "65", "70" } }; + + private static final String[][] DESCRIPTION = { + { "Bronze Weapons", "Iron Weapons", "Steel Weapons", + "Black Weapons", "Mithril Weapons", "Adamant Weapons", + "Rune Weapons", "Granite Maul", "Dragon Weapons", + "Abyssal Whip", "Barrows Weapons", "Godswords", + "Cape of Achievement" }, + { "Bronze Armour", "Iron Armour", "Steel Armour", "Black Armour", + "Mithril Armour", "Infinity", "Adamant Armour", + "Rune Armour", "Fremennik Helmets", "Dragon Armour", + "3rd Age Armour", "Bandos", "Armadyl", "Barrows Armour", + "Dragonfire Shield", "Cape of Achievement" }, + { "Granite Items", "Obby Maul", "Cape of Achievement" }, + { "Cape of Achievement" }, + { "Normal Bows", "Oak Bows", "Willow Bows", "Maple Bows", + "Yew Bows", "Green D'hide", "Magic Bows", "Blue D'hide", + "Dark Bow", "Obby Ring", "Red D'hide", "Rune C'bow", + "3rd age Range", "Crystal Bow", "Black D'hide", "Karil's", + "Cape of Achievement" }, + { "Cape of Achievement" }, + { "Mystic ", "Infinity ", "Mage's book", "Enchanted ", + "Splitbark ", "Ancient staff", "3rd age mage", "Ahrims" } }; + + private static final String[] SKILLS = { "Attack", "Defence", "Strength", + "Hitpoints", "Ranged", "Prayer", "Magic" }; + + public static void openInterface(Client c, int skillType) { + removeSidebars(c); + writeItems(c, skillType); + writeText(c, skillType); + c.getPacketSender().showInterface(INTERFACE_ID); + } + + private static void removeSidebars(Client c) { + int[] temp = { 8849, 8846, 8823, 8824, 8827, 8837, 8840, 8843, 8859, + 8862, 8865, 15303, 15306, 15309 }; + for (int element : temp) { + c.getPacketSender().sendFrame126("", element); + } + } + + private static void writeItems(Client c, int skillType) { + synchronized (c) { + c.outStream.createFrameVarSizeWord(53); + c.outStream.writeWord(8847); + c.outStream.writeWord(items[skillType].length); + for (int j = 0; j < items[skillType].length; j++) { + c.outStream.writeByte(1); + if (items[skillType][j] > 0) { + c.outStream.writeWordBigEndianA(items[skillType][j] + 1); + } else { + c.outStream.writeWordBigEndianA(0); + } + } + c.outStream.endFrameVarSizeWord(); + c.flushOutStream(); + } + } + + private static void writeText(Client c, int skillType) { + c.getPacketSender().sendFrame126(SKILLS[skillType], TITLE_LINE); + for (int j = 0; j < LEVELS[skillType].length; j++) { + c.getPacketSender().sendFrame126(LEVELS[skillType][j], + LEVEL_LINE + j); + } + for (int j = 0; j < DESCRIPTION[skillType].length; j++) { + c.getPacketSender().sendFrame126(DESCRIPTION[skillType][j], + TEXT_LINE + j); + } + + for (int j = DESCRIPTION[skillType].length; j < 30; j++) { + c.getPacketSender().sendFrame126("", LEVEL_LINE + j); + } + for (int j = LEVELS[skillType].length; j < 30; j++) { + c.getPacketSender().sendFrame126("", TEXT_LINE + j); + } + } +} diff --git a/2006Redone Server/src/redone/game/content/skills/agility/Agility.java b/2006Redone Server/src/com/rebotted/game/content/skills/agility/Agility.java similarity index 88% rename from 2006Redone Server/src/redone/game/content/skills/agility/Agility.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/agility/Agility.java index 52c0b92c..538fe375 100644 --- a/2006Redone Server/src/redone/game/content/skills/agility/Agility.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/agility/Agility.java @@ -1,698 +1,692 @@ -package redone.game.content.skills.agility; - -import redone.Constants; -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.players.Client; -import redone.game.players.Player; -import redone.game.players.PlayerHandler; -import redone.util.Misc; - -public class Agility { - - /** - * @author Aintaro - */ - - Client c; - - public Agility(Client c) { - this.c = c; - } - - public boolean[] agilityProgress = new boolean[6]; - - public void resetAgilityProgress() { - for (int i = 0; i < 6; i++) { - agilityProgress[i] = false; - } - lapBonus = 0; - } - - public static final int LOG_EMOTE = 762, PIPES_EMOTE = 844, - CLIMB_UP_EMOTE = 828, CLIMB_DOWN_EMOTE = 827, - CLIMB_UP_MONKEY_EMOTE = 3487, WALL_EMOTE = 840; - public int steppingStone, steppingStoneTimer = 0, agilityTimer = -1, - moveHeight = -1, tropicalTreeUpdate = -1, zipLine = -1; - private int moveX, moveY, moveH; - - /** - * sets a specific emote to walk to point x - */ - - private void walkToEmote(int id) { - c.isRunning2 = false; - c.playerWalkIndex = id; - c.getPlayerAssistant().requestUpdates(); // this was needed to make the - // agility work - } - - /** - * resets the player animation - */ - - private void stopEmote() { - c.getCombatAssistant().getPlayerAnimIndex(); - c.getPlayerAction().setAction(false); - c.getPlayerAction().canWalk(true); - c.getPlayerAssistant().requestUpdates(); // this was needed to make the - // agility work - c.isRunning2 = true; - } - - private static void setAnimationBack(Client c) { - c.isRunning2 = true; - c.getPlayerAssistant().sendConfig(173, 1); - c.playerWalkIndex = 0x333; - c.getPlayerAssistant().requestUpdates(); - } - - /** - * walk to point x with s a specific animation - */ - - public void walk(int EndX, int EndY, int Emote, int endingAnimation) { - c.getPlayerAction().setAction(true); - c.getPlayerAction().canWalk(false); - walkToEmote(Emote); - c.getPlayerAssistant().walkTo2(EndX, EndY); - destinationReached(EndX, EndY, endingAnimation); - } - - public static void brimhavenSkippingStone(final Client c) { - if (c.stopPlayerPacket) { - return; - } - if (c.playerLevel[c.playerAgility] < 12) { - c.getDialogueHandler().sendStatement("You need 12 agility to use these stepping stones"); - c.nextChat = 0; - return; - } - c.stopPlayerPacket = true; - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - - @Override - public void execute(CycleEventContainer container) { - c.startAnimation(769); - if (c.absX <= 2997) { - container.stop(); - } - } - - @Override - public void stop() { - // c.getPlayerAssistant().addSkillXP(100, c.playerAgility); - } - }, 1); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - - @Override - public void execute(CycleEventContainer container) { - if (c.absX >= 2648) { - c.teleportToX = c.absX - 2; - c.teleportToY = c.absY - 5; - if (c.absX <= 2997) { - container.stop(); - } - } else if (c.absX <= 2648) { - c.teleportToX = c.absX + 2; - c.teleportToY = c.absY + 5; - if (c.absX >= 2645) { - container.stop(); - } - } - - } - - @Override - public void stop() { - // c.getPlayerAssistant().addSkillXP(300, c.playerAgility); - setAnimationBack(c); - c.stopPlayerPacket = false; - } - }, 3); - } - - /** - * when a player reaches he's point the stopEmote() method gets called this - * method calculates when the player reached he's point - */ - - public void destinationReached(int x2, int y2, final int endingEmote) { - if (x2 >= 0 && y2 >= 0 && x2 != y2) { - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (c.disconnected) { - container.stop(); - return; - } - if (moveHeight >= 0) { - c.getPlayerAssistant().movePlayer(c.getX(), c.getY(), moveHeight); - moveHeight = -1; - } - stopEmote(); - c.startAnimation(endingEmote); - container.stop(); - } - @Override - public void stop() { - - } - }, x2 + y2); - } else if (x2 == y2) { - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (c.disconnected) { - container.stop(); - return; - } - if (moveHeight >= 0) { - c.getPlayerAssistant().movePlayer(c.getX(), c.getY(), moveHeight); - moveHeight = -1; - } - stopEmote(); - c.startAnimation(endingEmote); - container.stop(); - } - @Override - public void stop() { - - } - }, x2); - } else if (x2 < 0) { - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (c.disconnected) { - container.stop(); - return; - } - if (moveHeight >= 0) { - c.getPlayerAssistant().movePlayer(c.getX(), c.getY(), moveHeight); - moveHeight = -1; - - } - stopEmote(); - c.startAnimation(endingEmote); - container.stop(); - } - @Override - public void stop() { - - } - }, -x2 + y2); - } else if (y2 < 0) { - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (c.disconnected) { - container.stop(); - return; - } - if (moveHeight >= 0) { - c.getPlayerAssistant().movePlayer(c.getX(), c.getY(), moveHeight); - moveHeight = -1; - - } - stopEmote(); - c.startAnimation(endingEmote); - container.stop(); - } - @Override - public void stop() { - - } - }, x2 - y2); - } - } - - /** - * @param objectId - * : the objectId to know how much exp a player receives - */ - - public double getXp(int objectId) { - switch (objectId) { - case GnomeAgility.TREE_OBJECT: - case GnomeAgility.TREE_BRANCH_OBJECT: - return 5; - case GnomeAgility.LOG_OBJECT: - case GnomeAgility.PIPES1_OBJECT: - case GnomeAgility.PIPES2_OBJECT: - case GnomeAgility.NET2_OBJECT: - case GnomeAgility.NET1_OBJECT: - case GnomeAgility.ROPE_OBJECT: - return 7.5; - case PyramidAgility.PYRAMID_WALL_OBJECT: - case BarbarianAgility.BARBARIAN_NET_OBJECT: - return 8; - case WildernessAgility.WILDERNESS_PIPE_OBJECT: - return 12; - case WildernessAgility.WILDERNESS_SWING_ROPE_OBJECT: - case WildernessAgility.WILDERNESS_STEPPING_STONE_OBJECT: - case WildernessAgility.WILDERNESS_LOG_BALANCE_OBJECT: - return 20; - case WildernessAgility.WILDERNESS_ROCKS_OBJECT: - return 0; - case BarbarianAgility.BARBARIAN_LOG_OBJECT: - case BarbarianAgility.BARBARIAN_WALL_OBJECT: - return 14; - case WerewolfAgility.WEREWOLF_PIPES_OBJECT: - return 15; - case WerewolfAgility.WEREWOLF_SKULL_OBJECT: - return 25; - case WerewolfAgility.WEREWOLF_HURDLE_OBJECT1: - case WerewolfAgility.WEREWOLF_HURDLE_OBJECT2: - case WerewolfAgility.WEREWOLF_HURDLE_OBJECT3: - return 20; - case BarbarianAgility.BARBARIAN_ROPE_SWING_OBJECT: - case BarbarianAgility.BARBARIAN_LEDGE_OBJECT: - return 22; - case WerewolfAgility.WEREWOLF_STEPPING_STONE_OBJECT: - return 50; - case PyramidAgility.PYRAMID_GAP_OBJECT: - case PyramidAgility.PYRAMID_GAP_2: - case PyramidAgility.PYRAMID_GAP_3: - case PyramidAgility.PYRAMID_GAP_4: - case PyramidAgility.PYRAMID_GAP_5: - return 52; - case PyramidAgility.PYRAMID_PLANK_OBJECT: - return 56; - case WerewolfAgility.WEREWOLF_SLING_OBJECT: - return 190; - } - return -1; - } - - /** - * @param objectId - * : the objectId to fit with the right agility level required - */ - - private int getLevelRequired(int objectId) { - switch (objectId) { - case PyramidAgility.PYRAMID_WALL_OBJECT: - case PyramidAgility.PYRAMID_STAIRCE_OBJECT: - case PyramidAgility.PYRAMID_PLANK_OBJECT: - case PyramidAgility.PYRAMID_GAP_OBJECT: - case PyramidAgility.PYRAMID_GAP_2: - case PyramidAgility.PYRAMID_GAP_3: - case PyramidAgility.PYRAMID_GAP_4: - case PyramidAgility.PYRAMID_GAP_5: - case PyramidAgility.LEDGE: - case PyramidAgility.LEDGE_2: - case PyramidAgility.LEDGE_3: - case PyramidAgility.PYRAMID_ROCKS: - return 30; - case BarbarianAgility.BARBARIAN_ROPE_SWING_OBJECT: - case BarbarianAgility.BARBARIAN_LOG_OBJECT: - case BarbarianAgility.BARBARIAN_NET_OBJECT: - case BarbarianAgility.BARBARIAN_LEDGE_OBJECT: - case BarbarianAgility.BARBARIAN_WALL_OBJECT: - return 35; - - case ApeAtollAgility.APE_ATOLL_STEPPING_STONES_OBJECT: - case ApeAtollAgility.APE_ATOLL_TROPICAL_TREE_OBJECT: - case ApeAtollAgility.APE_ATOLL_MONKEYBARS_OBJECT: - case ApeAtollAgility.APE_ATOLL_SKULL_SLOPE_OBJECT: - case ApeAtollAgility.APE_ATOLL_SWINGROPE_OBJECT: - case ApeAtollAgility.APE_ATOLL_BIG_TROPICAL_TREE_OBJECT: - return 50; - - case WildernessAgility.WILDERNESS_PIPE_OBJECT: - case WildernessAgility.WILDERNESS_SWING_ROPE_OBJECT: - case WildernessAgility.WILDERNESS_STEPPING_STONE_OBJECT: - case WildernessAgility.WILDERNESS_ROCKS_OBJECT: - case WildernessAgility.WILDERNESS_LOG_BALANCE_OBJECT: - return 52; - - case WerewolfAgility.WEREWOLF_STEPPING_STONE_OBJECT: - case WerewolfAgility.WEREWOLF_HURDLE_OBJECT1: - case WerewolfAgility.WEREWOLF_HURDLE_OBJECT2: - case WerewolfAgility.WEREWOLF_HURDLE_OBJECT3: - case WerewolfAgility.WEREWOLF_PIPES_OBJECT: - case WerewolfAgility.WEREWOLF_SKULL_OBJECT: - case WerewolfAgility.WEREWOLF_SLING_OBJECT: - return 60; - } - return -1; - } - - /** - * @param objectId - * : the objectId to fit with the right animation played - */ - - public int getAnimation(int objectId) { - switch (objectId) { - case GnomeAgility.LOG_OBJECT: - case WildernessAgility.WILDERNESS_LOG_BALANCE_OBJECT: - case BarbarianAgility.BARBARIAN_LOG_OBJECT: - case GnomeAgility.ROPE_OBJECT: - case 2332: - return LOG_EMOTE; - case 154: - case 4084: - case 9330: - case 9228: - case 5100: - case WildernessAgility.WILDERNESS_PIPE_OBJECT: - case WerewolfAgility.WEREWOLF_PIPES_OBJECT: - return PIPES_EMOTE; - case WildernessAgility.WILDERNESS_SWING_ROPE_OBJECT: - case BarbarianAgility.BARBARIAN_ROPE_SWING_OBJECT: - case WerewolfAgility.WEREWOLF_STEPPING_STONE_OBJECT: - return 3067; - case WildernessAgility.WILDERNESS_STEPPING_STONE_OBJECT: - return 1604; // 2588 - case WildernessAgility.WILDERNESS_ROCKS_OBJECT: - case WerewolfAgility.WEREWOLF_SKULL_OBJECT: - case PyramidAgility.PYRAMID_ROCKS: - return 1148; - case BarbarianAgility.BARBARIAN_LEDGE_OBJECT: - case PyramidAgility.LEDGE: - case PyramidAgility.LEDGE_2: - case PyramidAgility.LEDGE_3: - return 756; - case BarbarianAgility.BARBARIAN_WALL_OBJECT: - case PyramidAgility.PYRAMID_WALL_OBJECT: - return WALL_EMOTE; - case ApeAtollAgility.APE_ATOLL_STEPPING_STONES_OBJECT: - return 3480; - case ApeAtollAgility.APE_ATOLL_MONKEYBARS_OBJECT: - return 3483; - case ApeAtollAgility.APE_ATOLL_SKULL_SLOPE_OBJECT: - return 3485; - case ApeAtollAgility.APE_ATOLL_BIG_TROPICAL_TREE_OBJECT: - return 3494; - case ApeAtollAgility.APE_ATOLL_SWINGROPE_OBJECT: - return 3482; - case WerewolfAgility.WEREWOLF_SLING_OBJECT: - return 744; - case WerewolfAgility.WEREWOLF_HURDLE_OBJECT1: - case WerewolfAgility.WEREWOLF_HURDLE_OBJECT2: - case WerewolfAgility.WEREWOLF_HURDLE_OBJECT3: - return 2750; - } - return -1; - } - - /** - * method used for the tropicalTree at ape atoll the problem was that the - * heightlevel was not correct while the heightlevel was not correct we - * could not change heightlevels and use the walkToEmote directly so we need - * to add a little timer to make it work - */ - - public void climbUpTropicalTree(final int moveX, final int moveY, final int moveH) { - c.startAnimation(CLIMB_UP_MONKEY_EMOTE); - c.getPlayerAction().setAction(true); - c.getPlayerAction().canWalk(false); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (c.disconnected) { - container.stop(); - return; - } - c.getPlayerAction().setAction(false); - c.getPlayerAction().canWalk(true); - c.getPlayerAssistant().movePlayer(moveX, moveY, moveH); - container.stop(); - } - @Override - public void stop() { - - } - }, 2); - } - - /** - * climbUp a ladder or anything. small delay before getting teleported to - * destination - */ - - public void climbUp(final int moveX, final int moveY, final int moveH) { - c.startAnimation(CLIMB_UP_EMOTE); - c.getPlayerAction().setAction(true); - c.getPlayerAction().canWalk(false); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (c.disconnected) { - stop(); - return; - } - c.getPlayerAction().setAction(false); - c.getPlayerAction().canWalk(true); - c.getPlayerAssistant().movePlayer(moveX, moveY, moveH); - container.stop(); - } - @Override - public void stop() { - - } - }, 1); - } - - /** - * climbDown a ladder or anything. small delay before getting teleported to - * destination - */ - - public void climbDown(final int moveX, final int moveY, final int moveH) { - c.startAnimation(CLIMB_DOWN_EMOTE); - c.getPlayerAction().setAction(true); - c.getPlayerAction().canWalk(false); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (c.disconnected) { - stop(); - return; - } - c.getPlayerAction().setAction(false); - c.getPlayerAction().canWalk(true); - c.getPlayerAssistant().movePlayer(moveX, moveY, moveH); - container.stop(); - } - @Override - public void stop() { - - } - }, 1); - } - - /** - * a specific position the player has to stand on before the action is set - * to true - */ - - public boolean hotSpot(int hotX, int hotY) { - if (c.getX() == hotX && c.getY() == hotY) { - return true; - } - return false; - } - - int lapBonus = 0; - - public void lapFinished() { - if (agilityProgress[5]) { - c.getPlayerAssistant().addSkillXP(lapBonus, c.playerAgility); - c.getActionSender().sendMessage("You received some bonus experience for completing the track!"); - resetAgilityProgress(); - } - } - - /** - * 600 ms process for some agility actions - */ - - public void agilityProcess() { - // tropicaltreeupdate timer for the object in ape atoll course - if (tropicalTreeUpdate > 0) { - tropicalTreeUpdate--; - } - if (tropicalTreeUpdate == 0) { - walk(13, - 13, - getAnimation(ApeAtollAgility.APE_ATOLL_BIG_TROPICAL_TREE_OBJECT), - -1); - tropicalTreeUpdate = -1; - } - // zipline timer for the object in werewolve course - if (zipLine > 0) { - zipLine--; - } - if (zipLine == 0) { - walk(0, -39, getAnimation(WerewolfAgility.WEREWOLF_SLING_OBJECT), - 743); - zipLine = -1; - } - - if (steppingStone > 0 && steppingStoneTimer == 0) { - walk(-1, - 0, - getAnimation(WildernessAgility.WILDERNESS_STEPPING_STONE_OBJECT), - -1); - steppingStone--; - steppingStoneTimer = 2; - } - - if (steppingStoneTimer > 0) { - steppingStoneTimer--; - } - - if (hotSpot(3363, 2851)) { - moveX = 3368; - moveY = 2851; - moveH = 1; - walk(1, 0, 2753, -1); - c.getPlayerAssistant().addSkillXP(14, c.playerAgility); - agilityTimer = 2; - } - - if (hotSpot(3372, 2832)) { - moveX = 3367; - moveY = 2832; - moveH = 1; - walk(-1, 0, 2753, -1); - c.getPlayerAssistant().addSkillXP(14, c.playerAgility); - agilityTimer = 2; - } - - if (hotSpot(3364, 2832)) { - moveX = 3359; - moveY = 2832; - moveH = 1; - walk(-1, 0, 2753, -1); - c.getPlayerAssistant().addSkillXP(14, c.playerAgility); - agilityTimer = 2; - } - - if (hotSpot(3357, 2836)) { - moveX = 3357; - moveY = 2841; - moveH = 2; - walk(0, 1, 2753, -1); - c.getPlayerAssistant().addSkillXP(14, c.playerAgility); - agilityTimer = 2; - } - - if (hotSpot(3357, 2846)) { - moveX = 3357; - moveY = 2849; - moveH = 2; - walk(0, 1, 2753, -1); - c.getPlayerAssistant().addSkillXP(14, c.playerAgility); - agilityTimer = 2; - } - - if (hotSpot(3359, 2849)) { - moveX = 3366; - moveY = 2849; - moveH = 2; - walk(1, 0, 2753, -1); - c.getPlayerAssistant().addSkillXP(14, c.playerAgility); - agilityTimer = 2; - } - - if (hotSpot(3372, 2841)) { - moveX = 3372; - moveY = 2836; - moveH = 2; - walk(0, -1, 2753, -1); - c.getPlayerAssistant().addSkillXP(14, c.playerAgility); - agilityTimer = 2; - } - - if (hotSpot(3366, 2834)) { - moveX = 3363; - moveY = 2834; - moveH = 2; - walk(-1, 0, 2753, -1); - c.getPlayerAssistant().addSkillXP(14, c.playerAgility); - agilityTimer = 2; - } - - if (hotSpot(3359, 2842)) { - moveX = 3359; - moveY = 2847; - moveH = 3; - walk(0, 1, 2753, -1); - c.getPlayerAssistant().addSkillXP(14, c.playerAgility); - agilityTimer = 2; - } - - if (hotSpot(3370, 2843)) { - moveX = 3370; - moveY = 2840; - moveH = 3; - walk(0, -1, 2753, -1); - c.getPlayerAssistant().addSkillXP(14, c.playerAgility); - } - - if (agilityTimer > 0) { - agilityTimer--; - } - - if (agilityTimer == 0) { - c.getPlayerAssistant().movePlayer(moveX, moveY, moveH); - moveX = -1; - moveY = -1; - moveH = 0; - agilityTimer = -1; - System.out.println("Bam"); - } - - } - - public boolean checkLevel(int objectId) { - if (getLevelRequired(objectId) > c.playerLevel[c.playerAgility]) { - c.getActionSender().sendMessage( - "You need atleast " + getLevelRequired(objectId) - + " agility to do this."); - return true; - } - return false; - } - - static int changeObjectTimer = 10; - static int rndChance; - static int newObjectX, newObjectY; - - public static void Brimhavenprocess() { - if (changeObjectTimer > 0) { - changeObjectTimer--; - } - if (changeObjectTimer == 0) { - rndChance = Misc.random(3); - if (rndChance == 0) { - newObjectX = 2794; - newObjectY = 9579; - } else if (rndChance == 1) { - newObjectX = 2783; - newObjectY = 9579; - } else if (rndChance == 2) { - newObjectX = 2783; - newObjectY = 9568; - } else if (rndChance == 3) { - newObjectX = 2794; - newObjectY = 9568; - } - for (Player player : PlayerHandler.players) { - if (player != null) { - Client c = (Client) player; - c.getActionSender().createObjectHints(newObjectX, - newObjectY, 130, 2); - System.out.println("Updated"); - } - } - changeObjectTimer = 10; - } - } -} +package com.rebotted.game.content.skills.agility; + +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerHandler; +import com.rebotted.util.Misc; + +public class Agility { + + Player c; + + public Agility(Player player) { + this.c = player; + } + + public boolean[] agilityProgress = new boolean[6]; + + public void resetAgilityProgress() { + for (int i = 0; i < 6; i++) { + agilityProgress[i] = false; + } + lapBonus = 0; + } + + public static final int LOG_EMOTE = 762, PIPES_EMOTE = 844, + CLIMB_UP_EMOTE = 828, CLIMB_DOWN_EMOTE = 827, + CLIMB_UP_MONKEY_EMOTE = 3487, WALL_EMOTE = 840; + public int steppingStone, steppingStoneTimer = 0, agilityTimer = -1, + moveHeight = -1, tropicalTreeUpdate = -1, zipLine = -1; + private int moveX, moveY, moveH; + + /** + * sets a specific emote to walk to point x + */ + + private void walkToEmote(int id) { + c.isRunning2 = false; + c.playerWalkIndex = id; + c.getPlayerAssistant().requestUpdates(); // this was needed to make the + // agility work + } + + /** + * resets the player animation + */ + + private void stopEmote() { + c.getCombatAssistant().getPlayerAnimIndex(); + c.getPlayerAction().setAction(false); + c.getPlayerAction().canWalk(true); + c.getPlayerAssistant().requestUpdates(); // this was needed to make the + // agility work + c.isRunning2 = true; + } + + private static void setAnimationBack(Player player) { + player.isRunning2 = true; + player.getPacketSender().sendConfig(173, 1); + player.playerWalkIndex = 0x333; + player.getPlayerAssistant().requestUpdates(); + } + + /** + * walk to point x with s a specific animation + */ + + public void walk(int EndX, int EndY, int Emote, int endingAnimation) { + c.getPlayerAction().setAction(true); + c.getPlayerAction().canWalk(false); + walkToEmote(Emote); + c.getPlayerAssistant().walkTo2(EndX, EndY); + destinationReached(EndX, EndY, endingAnimation); + } + + public static void brimhavenSkippingStone(final Player player) { + if (player.stopPlayerPacket) { + return; + } + if (player.playerLevel[player.playerAgility] < 12) { + player.getDialogueHandler().sendStatement("You need 12 agility to use these stepping stones"); + player.nextChat = 0; + return; + } + player.stopPlayerPacket = true; + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + + @Override + public void execute(CycleEventContainer container) { + player.startAnimation(769); + if (player.absX <= 2997) { + container.stop(); + } + } + + @Override + public void stop() { + // c.getPlayerAssistant().addSkillXP(100, c.playerAgility); + } + }, 1); + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + + @Override + public void execute(CycleEventContainer container) { + if (player.absX >= 2648) { + player.teleportToX = player.absX - 2; + player.teleportToY = player.absY - 5; + if (player.absX <= 2997) { + container.stop(); + } + } else if (player.absX <= 2648) { + player.teleportToX = player.absX + 2; + player.teleportToY = player.absY + 5; + if (player.absX >= 2645) { + container.stop(); + } + } + + } + + @Override + public void stop() { + // c.getPlayerAssistant().addSkillXP(300, c.playerAgility); + setAnimationBack(player); + player.stopPlayerPacket = false; + } + }, 3); + } + + /** + * when a player reaches he's point the stopEmote() method gets called this + * method calculates when the player reached he's point + */ + + public void destinationReached(int x2, int y2, final int endingEmote) { + if (x2 >= 0 && y2 >= 0 && x2 != y2) { + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (c.disconnected) { + container.stop(); + return; + } + if (moveHeight >= 0) { + c.getPlayerAssistant().movePlayer(c.getX(), c.getY(), moveHeight); + moveHeight = -1; + } + stopEmote(); + c.startAnimation(endingEmote); + container.stop(); + } + @Override + public void stop() { + + } + }, x2 + y2); + } else if (x2 == y2) { + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (c.disconnected) { + container.stop(); + return; + } + if (moveHeight >= 0) { + c.getPlayerAssistant().movePlayer(c.getX(), c.getY(), moveHeight); + moveHeight = -1; + } + stopEmote(); + c.startAnimation(endingEmote); + container.stop(); + } + @Override + public void stop() { + + } + }, x2); + } else if (x2 < 0) { + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (c.disconnected) { + container.stop(); + return; + } + if (moveHeight >= 0) { + c.getPlayerAssistant().movePlayer(c.getX(), c.getY(), moveHeight); + moveHeight = -1; + + } + stopEmote(); + c.startAnimation(endingEmote); + container.stop(); + } + @Override + public void stop() { + + } + }, -x2 + y2); + } else if (y2 < 0) { + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (c.disconnected) { + container.stop(); + return; + } + if (moveHeight >= 0) { + c.getPlayerAssistant().movePlayer(c.getX(), c.getY(), moveHeight); + moveHeight = -1; + + } + stopEmote(); + c.startAnimation(endingEmote); + container.stop(); + } + @Override + public void stop() { + + } + }, x2 - y2); + } + } + + /** + * @param objectId + * : the objectId to know how much exp a player receives + */ + + public double getXp(int objectId) { + switch (objectId) { + case GnomeAgility.TREE_OBJECT: + case GnomeAgility.TREE_BRANCH_OBJECT: + return 5; + case GnomeAgility.LOG_OBJECT: + case GnomeAgility.PIPES1_OBJECT: + case GnomeAgility.PIPES2_OBJECT: + case GnomeAgility.NET2_OBJECT: + case GnomeAgility.NET1_OBJECT: + case GnomeAgility.ROPE_OBJECT: + return 7.5; + case PyramidAgility.PYRAMID_WALL_OBJECT: + case BarbarianAgility.BARBARIAN_NET_OBJECT: + return 8; + case WildernessAgility.WILDERNESS_PIPE_OBJECT: + return 12; + case WildernessAgility.WILDERNESS_SWING_ROPE_OBJECT: + case WildernessAgility.WILDERNESS_STEPPING_STONE_OBJECT: + case WildernessAgility.WILDERNESS_LOG_BALANCE_OBJECT: + return 20; + case WildernessAgility.WILDERNESS_ROCKS_OBJECT: + return 0; + case BarbarianAgility.BARBARIAN_LOG_OBJECT: + case BarbarianAgility.BARBARIAN_WALL_OBJECT: + return 14; + case WerewolfAgility.WEREWOLF_PIPES_OBJECT: + return 15; + case WerewolfAgility.WEREWOLF_SKULL_OBJECT: + return 25; + case WerewolfAgility.WEREWOLF_HURDLE_OBJECT1: + case WerewolfAgility.WEREWOLF_HURDLE_OBJECT2: + case WerewolfAgility.WEREWOLF_HURDLE_OBJECT3: + return 20; + case BarbarianAgility.BARBARIAN_ROPE_SWING_OBJECT: + case BarbarianAgility.BARBARIAN_LEDGE_OBJECT: + return 22; + case WerewolfAgility.WEREWOLF_STEPPING_STONE_OBJECT: + return 50; + case PyramidAgility.PYRAMID_GAP_OBJECT: + case PyramidAgility.PYRAMID_GAP_2: + case PyramidAgility.PYRAMID_GAP_3: + case PyramidAgility.PYRAMID_GAP_4: + case PyramidAgility.PYRAMID_GAP_5: + return 52; + case PyramidAgility.PYRAMID_PLANK_OBJECT: + return 56; + case WerewolfAgility.WEREWOLF_SLING_OBJECT: + return 190; + } + return -1; + } + + /** + * @param objectId + * : the objectId to fit with the right agility level required + */ + + private int getLevelRequired(int objectId) { + switch (objectId) { + case PyramidAgility.PYRAMID_WALL_OBJECT: + case PyramidAgility.PYRAMID_STAIRCE_OBJECT: + case PyramidAgility.PYRAMID_PLANK_OBJECT: + case PyramidAgility.PYRAMID_GAP_OBJECT: + case PyramidAgility.PYRAMID_GAP_2: + case PyramidAgility.PYRAMID_GAP_3: + case PyramidAgility.PYRAMID_GAP_4: + case PyramidAgility.PYRAMID_GAP_5: + case PyramidAgility.LEDGE: + case PyramidAgility.LEDGE_2: + case PyramidAgility.LEDGE_3: + case PyramidAgility.PYRAMID_ROCKS: + return 30; + case BarbarianAgility.BARBARIAN_ROPE_SWING_OBJECT: + case BarbarianAgility.BARBARIAN_LOG_OBJECT: + case BarbarianAgility.BARBARIAN_NET_OBJECT: + case BarbarianAgility.BARBARIAN_LEDGE_OBJECT: + case BarbarianAgility.BARBARIAN_WALL_OBJECT: + return 35; + + case ApeAtollAgility.APE_ATOLL_STEPPING_STONES_OBJECT: + case ApeAtollAgility.APE_ATOLL_TROPICAL_TREE_OBJECT: + case ApeAtollAgility.APE_ATOLL_MONKEYBARS_OBJECT: + case ApeAtollAgility.APE_ATOLL_SKULL_SLOPE_OBJECT: + case ApeAtollAgility.APE_ATOLL_SWINGROPE_OBJECT: + case ApeAtollAgility.APE_ATOLL_BIG_TROPICAL_TREE_OBJECT: + return 50; + + case WildernessAgility.WILDERNESS_PIPE_OBJECT: + case WildernessAgility.WILDERNESS_SWING_ROPE_OBJECT: + case WildernessAgility.WILDERNESS_STEPPING_STONE_OBJECT: + case WildernessAgility.WILDERNESS_ROCKS_OBJECT: + case WildernessAgility.WILDERNESS_LOG_BALANCE_OBJECT: + return 52; + + case WerewolfAgility.WEREWOLF_STEPPING_STONE_OBJECT: + case WerewolfAgility.WEREWOLF_HURDLE_OBJECT1: + case WerewolfAgility.WEREWOLF_HURDLE_OBJECT2: + case WerewolfAgility.WEREWOLF_HURDLE_OBJECT3: + case WerewolfAgility.WEREWOLF_PIPES_OBJECT: + case WerewolfAgility.WEREWOLF_SKULL_OBJECT: + case WerewolfAgility.WEREWOLF_SLING_OBJECT: + return 60; + } + return -1; + } + + /** + * @param objectId + * : the objectId to fit with the right animation played + */ + + public int getAnimation(int objectId) { + switch (objectId) { + case GnomeAgility.LOG_OBJECT: + case WildernessAgility.WILDERNESS_LOG_BALANCE_OBJECT: + case BarbarianAgility.BARBARIAN_LOG_OBJECT: + case GnomeAgility.ROPE_OBJECT: + case 2332: + return LOG_EMOTE; + case 154: + case 4084: + case 9330: + case 9228: + case 5100: + case WildernessAgility.WILDERNESS_PIPE_OBJECT: + case WerewolfAgility.WEREWOLF_PIPES_OBJECT: + return PIPES_EMOTE; + case WildernessAgility.WILDERNESS_SWING_ROPE_OBJECT: + case BarbarianAgility.BARBARIAN_ROPE_SWING_OBJECT: + case WerewolfAgility.WEREWOLF_STEPPING_STONE_OBJECT: + return 3067; + case WildernessAgility.WILDERNESS_STEPPING_STONE_OBJECT: + return 1604; // 2588 + case WildernessAgility.WILDERNESS_ROCKS_OBJECT: + case WerewolfAgility.WEREWOLF_SKULL_OBJECT: + case PyramidAgility.PYRAMID_ROCKS: + return 1148; + case BarbarianAgility.BARBARIAN_LEDGE_OBJECT: + case PyramidAgility.LEDGE: + case PyramidAgility.LEDGE_2: + case PyramidAgility.LEDGE_3: + return 756; + case BarbarianAgility.BARBARIAN_WALL_OBJECT: + case PyramidAgility.PYRAMID_WALL_OBJECT: + return WALL_EMOTE; + case ApeAtollAgility.APE_ATOLL_STEPPING_STONES_OBJECT: + return 3480; + case ApeAtollAgility.APE_ATOLL_MONKEYBARS_OBJECT: + return 3483; + case ApeAtollAgility.APE_ATOLL_SKULL_SLOPE_OBJECT: + return 3485; + case ApeAtollAgility.APE_ATOLL_BIG_TROPICAL_TREE_OBJECT: + return 3494; + case ApeAtollAgility.APE_ATOLL_SWINGROPE_OBJECT: + return 3482; + case WerewolfAgility.WEREWOLF_SLING_OBJECT: + return 744; + case WerewolfAgility.WEREWOLF_HURDLE_OBJECT1: + case WerewolfAgility.WEREWOLF_HURDLE_OBJECT2: + case WerewolfAgility.WEREWOLF_HURDLE_OBJECT3: + return 2750; + } + return -1; + } + + /** + * method used for the tropicalTree at ape atoll the problem was that the + * heightlevel was not correct while the heightlevel was not correct we + * could not change heightlevels and use the walkToEmote directly so we need + * to add a little timer to make it work + */ + + public void climbUpTropicalTree(final int moveX, final int moveY, final int moveH) { + c.startAnimation(CLIMB_UP_MONKEY_EMOTE); + c.getPlayerAction().setAction(true); + c.getPlayerAction().canWalk(false); + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (c.disconnected) { + container.stop(); + return; + } + c.getPlayerAction().setAction(false); + c.getPlayerAction().canWalk(true); + c.getPlayerAssistant().movePlayer(moveX, moveY, moveH); + container.stop(); + } + @Override + public void stop() { + + } + }, 2); + } + + /** + * climbUp a ladder or anything. small delay before getting teleported to + * destination + */ + + public void climbUp(final int moveX, final int moveY, final int moveH) { + c.startAnimation(CLIMB_UP_EMOTE); + c.getPlayerAction().setAction(true); + c.getPlayerAction().canWalk(false); + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (c.disconnected) { + stop(); + return; + } + c.getPlayerAction().setAction(false); + c.getPlayerAction().canWalk(true); + c.getPlayerAssistant().movePlayer(moveX, moveY, moveH); + container.stop(); + } + @Override + public void stop() { + + } + }, 1); + } + + /** + * climbDown a ladder or anything. small delay before getting teleported to + * destination + */ + + public void climbDown(final int moveX, final int moveY, final int moveH) { + c.startAnimation(CLIMB_DOWN_EMOTE); + c.getPlayerAction().setAction(true); + c.getPlayerAction().canWalk(false); + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (c.disconnected) { + stop(); + return; + } + c.getPlayerAction().setAction(false); + c.getPlayerAction().canWalk(true); + c.getPlayerAssistant().movePlayer(moveX, moveY, moveH); + container.stop(); + } + @Override + public void stop() { + + } + }, 1); + } + + /** + * a specific position the player has to stand on before the action is set + * to true + */ + + public boolean hotSpot(int hotX, int hotY) { + if (c.getX() == hotX && c.getY() == hotY) { + return true; + } + return false; + } + + int lapBonus = 0; + + public void lapFinished() { + if (agilityProgress[5]) { + c.getPlayerAssistant().addSkillXP(lapBonus, c.playerAgility); + c.getPacketSender().sendMessage("You received some bonus experience for completing the track!"); + resetAgilityProgress(); + } + } + + /** + * 600 ms process for some agility actions + */ + + public void agilityProcess() { + // tropicaltreeupdate timer for the object in ape atoll course + if (tropicalTreeUpdate > 0) { + tropicalTreeUpdate--; + } + if (tropicalTreeUpdate == 0) { + walk(13, + 13, + getAnimation(ApeAtollAgility.APE_ATOLL_BIG_TROPICAL_TREE_OBJECT), + -1); + tropicalTreeUpdate = -1; + } + // zipline timer for the object in werewolve course + if (zipLine > 0) { + zipLine--; + } + if (zipLine == 0) { + walk(0, -39, getAnimation(WerewolfAgility.WEREWOLF_SLING_OBJECT), + 743); + zipLine = -1; + } + + if (steppingStone > 0 && steppingStoneTimer == 0) { + walk(-1, + 0, + getAnimation(WildernessAgility.WILDERNESS_STEPPING_STONE_OBJECT), + -1); + steppingStone--; + steppingStoneTimer = 2; + } + + if (steppingStoneTimer > 0) { + steppingStoneTimer--; + } + + if (hotSpot(3363, 2851)) { + moveX = 3368; + moveY = 2851; + moveH = 1; + walk(1, 0, 2753, -1); + c.getPlayerAssistant().addSkillXP(14, c.playerAgility); + agilityTimer = 2; + } + + if (hotSpot(3372, 2832)) { + moveX = 3367; + moveY = 2832; + moveH = 1; + walk(-1, 0, 2753, -1); + c.getPlayerAssistant().addSkillXP(14, c.playerAgility); + agilityTimer = 2; + } + + if (hotSpot(3364, 2832)) { + moveX = 3359; + moveY = 2832; + moveH = 1; + walk(-1, 0, 2753, -1); + c.getPlayerAssistant().addSkillXP(14, c.playerAgility); + agilityTimer = 2; + } + + if (hotSpot(3357, 2836)) { + moveX = 3357; + moveY = 2841; + moveH = 2; + walk(0, 1, 2753, -1); + c.getPlayerAssistant().addSkillXP(14, c.playerAgility); + agilityTimer = 2; + } + + if (hotSpot(3357, 2846)) { + moveX = 3357; + moveY = 2849; + moveH = 2; + walk(0, 1, 2753, -1); + c.getPlayerAssistant().addSkillXP(14, c.playerAgility); + agilityTimer = 2; + } + + if (hotSpot(3359, 2849)) { + moveX = 3366; + moveY = 2849; + moveH = 2; + walk(1, 0, 2753, -1); + c.getPlayerAssistant().addSkillXP(14, c.playerAgility); + agilityTimer = 2; + } + + if (hotSpot(3372, 2841)) { + moveX = 3372; + moveY = 2836; + moveH = 2; + walk(0, -1, 2753, -1); + c.getPlayerAssistant().addSkillXP(14, c.playerAgility); + agilityTimer = 2; + } + + if (hotSpot(3366, 2834)) { + moveX = 3363; + moveY = 2834; + moveH = 2; + walk(-1, 0, 2753, -1); + c.getPlayerAssistant().addSkillXP(14, c.playerAgility); + agilityTimer = 2; + } + + if (hotSpot(3359, 2842)) { + moveX = 3359; + moveY = 2847; + moveH = 3; + walk(0, 1, 2753, -1); + c.getPlayerAssistant().addSkillXP(14, c.playerAgility); + agilityTimer = 2; + } + + if (hotSpot(3370, 2843)) { + moveX = 3370; + moveY = 2840; + moveH = 3; + walk(0, -1, 2753, -1); + c.getPlayerAssistant().addSkillXP(14, c.playerAgility); + } + + if (agilityTimer > 0) { + agilityTimer--; + } + + if (agilityTimer == 0) { + c.getPlayerAssistant().movePlayer(moveX, moveY, moveH); + moveX = -1; + moveY = -1; + moveH = 0; + agilityTimer = -1; + System.out.println("Bam"); + } + + } + + public boolean checkLevel(int objectId) { + if (getLevelRequired(objectId) > c.playerLevel[c.playerAgility]) { + c.getPacketSender().sendMessage( + "You need atleast " + getLevelRequired(objectId) + + " agility to do this."); + return true; + } + return false; + } + + static int changeObjectTimer = 10; + static int rndChance; + static int newObjectX, newObjectY; + + public static void Brimhavenprocess() { + if (changeObjectTimer > 0) { + changeObjectTimer--; + } + if (changeObjectTimer == 0) { + rndChance = Misc.random(3); + if (rndChance == 0) { + newObjectX = 2794; + newObjectY = 9579; + } else if (rndChance == 1) { + newObjectX = 2783; + newObjectY = 9579; + } else if (rndChance == 2) { + newObjectX = 2783; + newObjectY = 9568; + } else if (rndChance == 3) { + newObjectX = 2794; + newObjectY = 9568; + } + for (Player player : PlayerHandler.players) { + if (player != null) { + Player c = (Player) player; + c.getPacketSender().createObjectHints(newObjectX, + newObjectY, 130, 2); + System.out.println("Updated"); + } + } + changeObjectTimer = 10; + } + } +} diff --git a/2006Redone Server/src/com/rebotted/game/content/skills/agility/AgilityShortcut.java b/2006Redone Server/src/com/rebotted/game/content/skills/agility/AgilityShortcut.java new file mode 100644 index 00000000..88170ca3 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/skills/agility/AgilityShortcut.java @@ -0,0 +1,252 @@ +package com.rebotted.game.content.skills.agility; + +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; + +/** + * Agility Shortcuts + * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) + */ + +public class AgilityShortcut { + + private static final int WALK = 1, MOVE = 2, AGILITY = 3; + + private static void handleAgility(Player player, int x, int y, int levelReq, int anim, int walk, String message) { + if (player.playerLevel[player.playerAgility] < levelReq) { + player.getPacketSender().sendMessage("You need " + levelReq + " agility to use this shortcut."); + return; + } + switch (walk) { + case 1: + player.getPlayerAssistant().walkTo(x, y); + break; + case 2: + player.getPlayerAssistant().movePlayer(x, y, player.heightLevel); + break; + case 3: + player.getAgility().walk(x, y, anim, -1); + break; + } + if (anim != 0 && anim != -1) { + player.startAnimation(anim); + } + player.getPacketSender().sendMessage(message); + } + + public static void processAgilityShortcut(Player player) { + switch (player.objectId) { + case 993: + if (player.absY == 3435) { + handleAgility(player, 2761, 3438, 1, 3067, MOVE, "You jump over the stile."); + } else if (player.absY == 3438) { + handleAgility(player, 2761, 3435, 1, 3067, MOVE, "You jump over the stile."); + } + break; + case 9326: + if (player.absX == 2773) { + handleAgility(player, 2, 0, 81, 3067, WALK, "You jump over the strange floor."); + } else if (player.absX == 2775) { + handleAgility(player, -2, 0, 81, 3067, WALK, "You jump over the strange floor."); + } + break; + case 9321: + if (player.absX == 2735) { + handleAgility(player, -5, 0, 62, 2240, WALK, "You squeeze through the crevice."); + } else if (player.absX == 2730) { + handleAgility(player, 5, 0, 62, 2240, WALK, "You squeeze through the crevice."); + } + break; + case 12127: + if (player.absY == 4403) { + handleAgility(player, 0, -2, 66, 2240, WALK, + "You squeeze past the jutted wall."); + } else if (player.absY == 4401) { + handleAgility(player, 0, 2, 66, 2240, WALK, + "You squeeze past the jutted wall."); + } else if (player.absY == 4404) { + handleAgility(player, 0, -2, 46, 2240, WALK, + "You squeeze past the jutted wall."); + } else if (player.absY == 4402) { + handleAgility(player, 0, 2, 46, 2240, WALK, + "You squeeze past the jutted wall."); + } + break; + case 3933: + if (player.absY == 3232) { + handleAgility(player, 0, 7, 85, 762, WALK, + "You pass through the agility shortcut."); + } else if (player.absY == 3239) { + handleAgility(player, 0, -7, 85, 762, WALK, + "You pass through the agility shortcut."); + } + break; + case 4615: + case 4616: + if (player.absX == 2595) { + handleAgility(player, 2599, player.absY, 1, 3067, MOVE, + "You pass through the agility shortcut."); + } else if (player.absX == 2599) { + handleAgility(player, 2595, player.absY, 1, 3067, MOVE, + "You pass through the agility shortcut."); + } + break; + case 11844: + if (player.absX == 2936) { + handleAgility(player, -2, 0, 5, -1, WALK, + "You pass through the agility shortcut."); + } else if (player.absX == 2934) { + handleAgility(player, 2, 0, 5, -1, WALK, + "You pass through the agility shortcut."); + } + break; + case 5090: + if (player.absX == 2687) {// 2682, 9506 + handleAgility(player, -5, 0, 5, 762, WALK, + "You walk across the log balance."); + } + break; + case 5088: + if (player.absX == 2682) {// 2867, 9506 + handleAgility(player, 5, 0, 5, 762, WALK, + "You walk across the log balance."); + } + break; + case 14922: + if (player.objectX == 2344 && player.objectY == 3651) { + handleAgility(player, 2344, 3655, 1, 762, MOVE, + "You crawl through the hole."); + } else if (player.objectX == 2344 && player.objectY == 3654) { + handleAgility(player, 2344, 3650, 1, 762, MOVE, + "You crawl through the hole."); + } + break; + case 9330: + if (player.objectX == 2601 && player.objectY == 3336) { + handleAgility(player, -4, 0, 33, player.getAgility() + .getAnimation(Agility.PIPES_EMOTE), AGILITY, + "You pass through the agility shortcut."); + } + case 5100: + if (player.absY == 9566) { + handleAgility(player, 2655, 9573, 17, 762, MOVE, + "You pass through the agility shortcut."); + } else if (player.absY == 9573) { + handleAgility(player, 2655, 9573, 17, 762, MOVE, + "You pass through the agility shortcut."); + } + break; + case 9328: + if (player.objectX == 2599 && player.objectY == 3336) { + handleAgility(player, 4, 0, 33, player.getAgility() + .getAnimation(Agility.PIPES_EMOTE), AGILITY, + "You pass through the agility shortcut."); + } + break; + + case 9293: + if (player.absX < player.objectX) { + handleAgility(player, 2892, 9799, 70, player.getAgility() + .getAnimation(Agility.PIPES_EMOTE), MOVE, + "You pass through the agility shortcut."); + } else { + handleAgility(player, 2886, 9799, 70, player.getAgility() + .getAnimation(Agility.PIPES_EMOTE), MOVE, + "You pass through the agility shortcut."); + } + break; + + case 9294: + if (player.absX < player.objectX) { + player.getPlayerAssistant().movePlayer(player.objectX + 1, + player.absY, 0); + handleAgility(player, 2880, 9713, 80, 3067, MOVE, + "You jump over the strange wall."); + } else if (player.absX > player.objectX) { + handleAgility(player, 2878, 9713, 80, 3067, MOVE, + "You jump over the strange wall."); + } + break; + + case 9302: + if (player.absY == 3112) { + handleAgility(player, 2575, 3107, 16, 844, MOVE, + "You pass through the agility shortcut."); + } + break; + + case 9301: + if (player.absY == 3107) { + handleAgility(player, 2575, 3112, 16, 844, MOVE, + "You pass through the agility shortcut."); + } + break; + case 9309: + if (player.absY == 3309) { + handleAgility(player, 2948, 3313, 26, 844, MOVE, + "You pass through the agility shortcut."); + } + break; + case 9310: + if (player.absY == 3313) { + handleAgility(player, 2948, 3309, 26, 844, MOVE, + "You pass through the agility shortcut."); + } + break; + case 2322: + if (player.absX == 2709) { + handleAgility(player, 2704, 3209, 10, 3067, MOVE, + "You pass through the agility shortcut."); + } + break; + case 2323: + if (player.absX == 2705) { + handleAgility(player, 2709, 3205, 10, 3067, MOVE, + "You pass through the agility shortcut."); + } + break; + case 2332: + if (player.absX == 2906) { + handleAgility(player, 4, 0, 1, 762, WALK, + "You pass through the agility shortcut."); + } else if (player.absX == 2910) { + handleAgility(player, -4, 0, 1, 762, WALK, + "You pass through the agility shortcut."); + } + break; + case 3067: + if (player.absX == 2639) { + handleAgility(player, -1, 0, 1, 3067, WALK, + "You pass through the agility shortcut."); + } else if (player.absX == 2638) { + handleAgility(player, -1, 0, 1, 3067, WALK, + "You pass through the agility shortcut."); + } + break; + case 2618: + if (player.absY == 3492) { + handleAgility(player, 0, +2, 1, 3067, WALK, + "You jump over the broken fence."); + } else if (player.absY == 3494) { + handleAgility(player, -0, -2, 1, 3067, WALK, + "You jump over the broken fence."); + } + break; + case 5110: + Agility.brimhavenSkippingStone(player); + break; + case 5111: + Agility.brimhavenSkippingStone(player); + break; + case 2296: + if (player.absX == 2603) { + handleAgility(player, -5, 0, 1, -1, WALK, + "You pass through the agility shortcut."); + } else if (player.absX == 2598) { + handleAgility(player, 5, 0, 1, -1, WALK, + "You pass through the agility shortcut."); + } + break; + } + } +} diff --git a/2006Redone Server/src/redone/game/content/skills/agility/ApeAtollAgility.java b/2006Redone Server/src/com/rebotted/game/content/skills/agility/ApeAtollAgility.java similarity index 83% rename from 2006Redone Server/src/redone/game/content/skills/agility/ApeAtollAgility.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/agility/ApeAtollAgility.java index a39d24b8..57b1e09e 100644 --- a/2006Redone Server/src/redone/game/content/skills/agility/ApeAtollAgility.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/agility/ApeAtollAgility.java @@ -1,175 +1,175 @@ -package redone.game.content.skills.agility; - -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.players.Client; - -public class ApeAtollAgility { - - private final Client c; - - public ApeAtollAgility(Client c) { - this.c = c; - } - - public static final int APE_ATOLL_STEPPING_STONES_OBJECT = 12568, - APE_ATOLL_TROPICAL_TREE_OBJECT = 12570, - APE_ATOLL_MONKEYBARS_OBJECT = 12573, - APE_ATOLL_SKULL_SLOPE_OBJECT = 12576, - APE_ATOLL_SWINGROPE_OBJECT = 12578, - APE_ATOLL_BIG_TROPICAL_TREE_OBJECT = 12618; - private static int NINJA_MONKEY_NPC = 1480; - - public boolean apeAtollCourse(int objectId) { - switch (objectId) { - case APE_ATOLL_STEPPING_STONES_OBJECT: - if (c.npcId2 != NINJA_MONKEY_NPC) { - c.getActionSender().sendMessage( - "You can't do that! You aren't a monkey."); - return false; - } - if (c.getAgility().checkLevel(objectId)) { - return false; - } - if (c.getAgility().hotSpot(2755, 2742)) { - c.getActionSender().sendMessage("You jump the step stone."); - c.getAgility().walk(-2, 0, - c.getAgility().getAnimation(objectId), -1); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - c.getAgility().resetAgilityProgress(); - c.getAgility().agilityProgress[0] = true; - } - return true; - - case APE_ATOLL_TROPICAL_TREE_OBJECT: - if (c.npcId2 != NINJA_MONKEY_NPC) { - c.getActionSender().sendMessage( - "You can't do that! You aren't a monkey."); - return false; - } - if (c.getAgility().checkLevel(objectId)) { - return false; - } - if (c.getAgility().hotSpot(2753, 2742) && c.heightLevel == 0) { - c.getActionSender().sendMessage( - "You managed to climb up the Tree."); - c.getAgility().climbUpTropicalTree(c.getX(), c.getY(), 2); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - if (c.getAgility().agilityProgress[0] == true) { - c.getAgility().agilityProgress[1] = true; - } - } - return true; - - case APE_ATOLL_MONKEYBARS_OBJECT: - if (c.npcId2 != NINJA_MONKEY_NPC) { - c.getActionSender().sendMessage( - "You can't do that! You aren't a monkey."); - return false; - } - if (c.getAgility().checkLevel(objectId)) { - return false; - } - if (c.getAgility().hotSpot(2752, 2741)) { - c.getActionSender().sendMessage( - "You swing yourself to the other side"); - c.getAgility().moveHeight = 0; - c.getAgility().walk(-5, 0, - c.getAgility().getAnimation(objectId), -1); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - if (c.getAgility().agilityProgress[1] == true) { - c.getAgility().agilityProgress[2] = true; - } - } - return true; - - case APE_ATOLL_SKULL_SLOPE_OBJECT: - if (c.npcId2 != NINJA_MONKEY_NPC) { - c.getActionSender().sendMessage( - "You can't do that! You aren't a monkey."); - return false; - } - if (c.getAgility().checkLevel(objectId)) { - return false; - } - if (c.getAgility().hotSpot(2747, 2741)) { - c.getAgility().walk(-5, 0, - c.getAgility().getAnimation(objectId), -1); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - c.getActionSender().sendMessage("You climb your way up"); - if (c.getAgility().agilityProgress[2] == true) { - c.getAgility().agilityProgress[3] = true; - } - } - return true; - - case APE_ATOLL_SWINGROPE_OBJECT: - if (c.npcId2 != NINJA_MONKEY_NPC) { - c.getActionSender().sendMessage( - "You can't do that! You aren't a monkey."); - return false; - } - if (c.getAgility().checkLevel(objectId)) { - return false; - } - if (c.getAgility().hotSpot(2751, 2731)) { - c.getAgility().walk(1, 0, - c.getAgility().getAnimation(objectId), -1); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - if (c.getAgility().agilityProgress[3] == true) { - c.getAgility().agilityProgress[4] = true; - } - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (c.disconnected) { - container.stop(); - return; - } - c.getPlayerAssistant().movePlayer(2756, 2731, 0); - c.getActionSender().sendMessage( - "You swing yourself to the other side"); - container.stop(); - } - @Override - public void stop() { - - } - }, 1); - } - return true; - - case APE_ATOLL_BIG_TROPICAL_TREE_OBJECT: - if (c.npcId2 != NINJA_MONKEY_NPC) { - c.getActionSender().sendMessage( - "You can't do that! You aren't a monkey."); - return false; - } - if (c.getAgility().checkLevel(objectId)) { - return false; - } - c.getPlayerAction().setAction(true); - c.getPlayerAction().canWalk(false); - c.getPlayerAssistant().movePlayer(c.getX(), c.getY() + 1, 1); - c.getAgility().tropicalTreeUpdate = 2; - c.getAgility().moveHeight = 0; - c.getPlayerAssistant().addSkillXP(c.getAgility().getXp(objectId), - c.playerAgility); - if (c.getAgility().agilityProgress[4] == true) { - c.getAgility().agilityProgress[5] = true; - } - c.getAgility().lapBonus = 2700; - c.getAgility().lapFinished(); - c.getAgility().resetAgilityProgress(); - return true; - } - return false; - } - -} +package com.rebotted.game.content.skills.agility; + +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.players.Player; + +public class ApeAtollAgility { + + private final Player c; + + public ApeAtollAgility(Player player) { + this.c = player; + } + + public static final int APE_ATOLL_STEPPING_STONES_OBJECT = 12568, + APE_ATOLL_TROPICAL_TREE_OBJECT = 12570, + APE_ATOLL_MONKEYBARS_OBJECT = 12573, + APE_ATOLL_SKULL_SLOPE_OBJECT = 12576, + APE_ATOLL_SWINGROPE_OBJECT = 12578, + APE_ATOLL_BIG_TROPICAL_TREE_OBJECT = 12618; + private static int NINJA_MONKEY_NPC = 1480; + + public boolean apeAtollCourse(int objectId) { + switch (objectId) { + case APE_ATOLL_STEPPING_STONES_OBJECT: + if (c.npcId2 != NINJA_MONKEY_NPC) { + c.getPacketSender().sendMessage( + "You can't do that! You aren't a monkey."); + return false; + } + if (c.getAgility().checkLevel(objectId)) { + return false; + } + if (c.getAgility().hotSpot(2755, 2742)) { + c.getPacketSender().sendMessage("You jump the step stone."); + c.getAgility().walk(-2, 0, + c.getAgility().getAnimation(objectId), -1); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + c.getAgility().resetAgilityProgress(); + c.getAgility().agilityProgress[0] = true; + } + return true; + + case APE_ATOLL_TROPICAL_TREE_OBJECT: + if (c.npcId2 != NINJA_MONKEY_NPC) { + c.getPacketSender().sendMessage( + "You can't do that! You aren't a monkey."); + return false; + } + if (c.getAgility().checkLevel(objectId)) { + return false; + } + if (c.getAgility().hotSpot(2753, 2742) && c.heightLevel == 0) { + c.getPacketSender().sendMessage( + "You managed to climb up the Tree."); + c.getAgility().climbUpTropicalTree(c.getX(), c.getY(), 2); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + if (c.getAgility().agilityProgress[0] == true) { + c.getAgility().agilityProgress[1] = true; + } + } + return true; + + case APE_ATOLL_MONKEYBARS_OBJECT: + if (c.npcId2 != NINJA_MONKEY_NPC) { + c.getPacketSender().sendMessage( + "You can't do that! You aren't a monkey."); + return false; + } + if (c.getAgility().checkLevel(objectId)) { + return false; + } + if (c.getAgility().hotSpot(2752, 2741)) { + c.getPacketSender().sendMessage( + "You swing yourself to the other side"); + c.getAgility().moveHeight = 0; + c.getAgility().walk(-5, 0, + c.getAgility().getAnimation(objectId), -1); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + if (c.getAgility().agilityProgress[1] == true) { + c.getAgility().agilityProgress[2] = true; + } + } + return true; + + case APE_ATOLL_SKULL_SLOPE_OBJECT: + if (c.npcId2 != NINJA_MONKEY_NPC) { + c.getPacketSender().sendMessage( + "You can't do that! You aren't a monkey."); + return false; + } + if (c.getAgility().checkLevel(objectId)) { + return false; + } + if (c.getAgility().hotSpot(2747, 2741)) { + c.getAgility().walk(-5, 0, + c.getAgility().getAnimation(objectId), -1); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + c.getPacketSender().sendMessage("You climb your way up"); + if (c.getAgility().agilityProgress[2] == true) { + c.getAgility().agilityProgress[3] = true; + } + } + return true; + + case APE_ATOLL_SWINGROPE_OBJECT: + if (c.npcId2 != NINJA_MONKEY_NPC) { + c.getPacketSender().sendMessage( + "You can't do that! You aren't a monkey."); + return false; + } + if (c.getAgility().checkLevel(objectId)) { + return false; + } + if (c.getAgility().hotSpot(2751, 2731)) { + c.getAgility().walk(1, 0, + c.getAgility().getAnimation(objectId), -1); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + if (c.getAgility().agilityProgress[3] == true) { + c.getAgility().agilityProgress[4] = true; + } + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (c.disconnected) { + container.stop(); + return; + } + c.getPlayerAssistant().movePlayer(2756, 2731, 0); + c.getPacketSender().sendMessage( + "You swing yourself to the other side"); + container.stop(); + } + @Override + public void stop() { + + } + }, 1); + } + return true; + + case APE_ATOLL_BIG_TROPICAL_TREE_OBJECT: + if (c.npcId2 != NINJA_MONKEY_NPC) { + c.getPacketSender().sendMessage( + "You can't do that! You aren't a monkey."); + return false; + } + if (c.getAgility().checkLevel(objectId)) { + return false; + } + c.getPlayerAction().setAction(true); + c.getPlayerAction().canWalk(false); + c.getPlayerAssistant().movePlayer(c.getX(), c.getY() + 1, 1); + c.getAgility().tropicalTreeUpdate = 2; + c.getAgility().moveHeight = 0; + c.getPlayerAssistant().addSkillXP(c.getAgility().getXp(objectId), + c.playerAgility); + if (c.getAgility().agilityProgress[4] == true) { + c.getAgility().agilityProgress[5] = true; + } + c.getAgility().lapBonus = 2700; + c.getAgility().lapFinished(); + c.getAgility().resetAgilityProgress(); + return true; + } + return false; + } + +} diff --git a/2006Redone Server/src/redone/game/content/skills/agility/BarbarianAgility.java b/2006Redone Server/src/com/rebotted/game/content/skills/agility/BarbarianAgility.java similarity index 88% rename from 2006Redone Server/src/redone/game/content/skills/agility/BarbarianAgility.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/agility/BarbarianAgility.java index f015010d..2bc423e2 100644 --- a/2006Redone Server/src/redone/game/content/skills/agility/BarbarianAgility.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/agility/BarbarianAgility.java @@ -1,154 +1,154 @@ -package redone.game.content.skills.agility; - -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.players.Client; - -public class BarbarianAgility { - - private final Client c; - - public BarbarianAgility(Client c) { - this.c = c; - } - - public static final int BARBARIAN_ROPE_SWING_OBJECT = 2282, - BARBARIAN_LOG_OBJECT = 2294, BARBARIAN_NET_OBJECT = 2284, - BARBARIAN_LEDGE_OBJECT = 2302, BARBARIAN_LADDER_OBJECT = 3205, - BARBARIAN_WALL_OBJECT = 1948; // barbarian course objects - - public boolean barbarianCourse(int objectId) { - switch (objectId) { - case BARBARIAN_ROPE_SWING_OBJECT: - if (c.getAgility().checkLevel(objectId)) { - return false; - } - if (c.getAgility().hotSpot(2551, 3554)) { - c.getAgility().walk(0, -1, - c.getAgility().getAnimation(objectId), -1); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - c.getAgility().resetAgilityProgress(); - c.getAgility().agilityProgress[0] = true; - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (c.disconnected) { - container.stop(); - return; - } - c.getPlayerAssistant().movePlayer(2551, 3549, 0); - container.stop(); - } - @Override - public void stop() { - - } - }, 1); - } - return true; - - case BARBARIAN_LOG_OBJECT: - if (c.getAgility().checkLevel(objectId)) { - return false; - } - if (c.getAgility().hotSpot(2551, 3546)) { - c.getAgility().walk(-10, 0, c.getAgility().getAnimation(objectId), -1); - c.getPlayerAssistant().addSkillXP(c.getAgility().getXp(objectId), c.playerAgility); - if (c.getAgility().agilityProgress[0] == true) { - c.getAgility().agilityProgress[1] = true; - } - } else if (c.absX < 2551 && c.absX > 2541) { - c.getPlayerAssistant().movePlayer(2541, 3546, 0); - } - return true; - - case BARBARIAN_NET_OBJECT: - if (c.getAgility().checkLevel(objectId)) { - return false; - } - if (c.absX == 2539 && c.absY > 3544 && c.absY < 3547) { - c.getAgility().climbUp(c.getX() - 1, c.getY(), 1); - c.getPlayerAssistant().addSkillXP(c.getAgility().getXp(objectId), - c.playerAgility); - if (c.getAgility().agilityProgress[1] == true) { - c.getAgility().agilityProgress[2] = true; - } - } else { - c.getActionSender().sendMessage("You can't climb the net from here!"); - return false; - } - return true; - - case BARBARIAN_LEDGE_OBJECT: - if (c.getAgility().checkLevel(objectId)) { - return false; - } - if (c.getAgility().hotSpot(2536, 3547)) { - c.getAgility().walk(-4, 0, - c.getAgility().getAnimation(objectId), -1); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - if (c.getAgility().agilityProgress[2] == true) { - c.getAgility().agilityProgress[3] = true; - } - } else if (c.absX < 2536 && c.absX > 2532) { - c.getPlayerAssistant().movePlayer(2532, 3547, 1); - } - return true; - - case BARBARIAN_LADDER_OBJECT: - if (c.playerLevel[c.playerAgility] < 35 && c.objectX != 2776 - && c.objectY != 3121) { - c.getActionSender().sendMessage( - "You need 35 agility to use this ladder."); - return false; - } else if (c.objectX == 2776 && c.objectY == 3121) { - return true; - } - c.getAgility().climbDown(c.getX(), c.getY(), 0); - c.getActionSender().sendMessage("You climb down."); - if (c.getAgility().agilityProgress[3] == true) { - c.getAgility().agilityProgress[4] = true; - } - return true; - - case BARBARIAN_WALL_OBJECT: - if (c.getAgility().checkLevel(objectId)) { - return false; - } - if (c.getAgility().hotSpot(2541, 3553)) { - c.getAgility().walk(2, 0, - c.getAgility().getAnimation(objectId), -1); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - if (c.getAgility().agilityProgress[4] == true) { - c.getAgility().agilityProgress[5] = true; - } - if (c.getAgility().agilityProgress[5] == true) { - c.getAgility().lapBonus = 1700 / 30; - c.getAgility().lapFinished(); - c.getAgility().resetAgilityProgress(); - } - return true; - } else if (c.absX == 2540 && c.absY == 3553) { - c.getAgility().walk(3, 0, - c.getAgility().getAnimation(objectId), -1); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - } else if (c.absX == 2542 && c.absY == 3553) { - c.getAgility().walk(1, 0, - c.getAgility().getAnimation(objectId), -1); - } else if (c.absX == 2535 && c.absY == 3553 || c.absX == 2538 - && c.absY == 3553) { - c.getAgility().walk(2, 0, - c.getAgility().getAnimation(objectId), -1); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - return true; - } - } - return false; - } -} +package com.rebotted.game.content.skills.agility; + +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.players.Player; + +public class BarbarianAgility { + + private final Player c; + + public BarbarianAgility(Player player) { + this.c = player; + } + + public static final int BARBARIAN_ROPE_SWING_OBJECT = 2282, + BARBARIAN_LOG_OBJECT = 2294, BARBARIAN_NET_OBJECT = 2284, + BARBARIAN_LEDGE_OBJECT = 2302, BARBARIAN_LADDER_OBJECT = 3205, + BARBARIAN_WALL_OBJECT = 1948; // barbarian course objects + + public boolean barbarianCourse(int objectId) { + switch (objectId) { + case BARBARIAN_ROPE_SWING_OBJECT: + if (c.getAgility().checkLevel(objectId)) { + return false; + } + if (c.getAgility().hotSpot(2551, 3554)) { + c.getAgility().walk(0, -1, + c.getAgility().getAnimation(objectId), -1); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + c.getAgility().resetAgilityProgress(); + c.getAgility().agilityProgress[0] = true; + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (c.disconnected) { + container.stop(); + return; + } + c.getPlayerAssistant().movePlayer(2551, 3549, 0); + container.stop(); + } + @Override + public void stop() { + + } + }, 1); + } + return true; + + case BARBARIAN_LOG_OBJECT: + if (c.getAgility().checkLevel(objectId)) { + return false; + } + if (c.getAgility().hotSpot(2551, 3546)) { + c.getAgility().walk(-10, 0, c.getAgility().getAnimation(objectId), -1); + c.getPlayerAssistant().addSkillXP(c.getAgility().getXp(objectId), c.playerAgility); + if (c.getAgility().agilityProgress[0] == true) { + c.getAgility().agilityProgress[1] = true; + } + } else if (c.absX < 2551 && c.absX > 2541) { + c.getPlayerAssistant().movePlayer(2541, 3546, 0); + } + return true; + + case BARBARIAN_NET_OBJECT: + if (c.getAgility().checkLevel(objectId)) { + return false; + } + if (c.absX == 2539 && c.absY > 3544 && c.absY < 3547) { + c.getAgility().climbUp(c.getX() - 1, c.getY(), 1); + c.getPlayerAssistant().addSkillXP(c.getAgility().getXp(objectId), + c.playerAgility); + if (c.getAgility().agilityProgress[1] == true) { + c.getAgility().agilityProgress[2] = true; + } + } else { + c.getPacketSender().sendMessage("You can't climb the net from here!"); + return false; + } + return true; + + case BARBARIAN_LEDGE_OBJECT: + if (c.getAgility().checkLevel(objectId)) { + return false; + } + if (c.getAgility().hotSpot(2536, 3547)) { + c.getAgility().walk(-4, 0, + c.getAgility().getAnimation(objectId), -1); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + if (c.getAgility().agilityProgress[2] == true) { + c.getAgility().agilityProgress[3] = true; + } + } else if (c.absX < 2536 && c.absX > 2532) { + c.getPlayerAssistant().movePlayer(2532, 3547, 1); + } + return true; + + case BARBARIAN_LADDER_OBJECT: + if (c.playerLevel[c.playerAgility] < 35 && c.objectX != 2776 + && c.objectY != 3121) { + c.getPacketSender().sendMessage( + "You need 35 agility to use this ladder."); + return false; + } else if (c.objectX == 2776 && c.objectY == 3121) { + return true; + } + c.getAgility().climbDown(c.getX(), c.getY(), 0); + c.getPacketSender().sendMessage("You climb down."); + if (c.getAgility().agilityProgress[3] == true) { + c.getAgility().agilityProgress[4] = true; + } + return true; + + case BARBARIAN_WALL_OBJECT: + if (c.getAgility().checkLevel(objectId)) { + return false; + } + if (c.getAgility().hotSpot(2541, 3553)) { + c.getAgility().walk(2, 0, + c.getAgility().getAnimation(objectId), -1); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + if (c.getAgility().agilityProgress[4] == true) { + c.getAgility().agilityProgress[5] = true; + } + if (c.getAgility().agilityProgress[5] == true) { + c.getAgility().lapBonus = 1700 / 30; + c.getAgility().lapFinished(); + c.getAgility().resetAgilityProgress(); + } + return true; + } else if (c.absX == 2540 && c.absY == 3553) { + c.getAgility().walk(3, 0, + c.getAgility().getAnimation(objectId), -1); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + } else if (c.absX == 2542 && c.absY == 3553) { + c.getAgility().walk(1, 0, + c.getAgility().getAnimation(objectId), -1); + } else if (c.absX == 2535 && c.absY == 3553 || c.absX == 2538 + && c.absY == 3553) { + c.getAgility().walk(2, 0, + c.getAgility().getAnimation(objectId), -1); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + return true; + } + } + return false; + } +} diff --git a/2006Redone Server/src/redone/game/content/skills/agility/GnomeAgility.java b/2006Redone Server/src/com/rebotted/game/content/skills/agility/GnomeAgility.java similarity index 93% rename from 2006Redone Server/src/redone/game/content/skills/agility/GnomeAgility.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/agility/GnomeAgility.java index 0051bbb1..891a67fb 100644 --- a/2006Redone Server/src/redone/game/content/skills/agility/GnomeAgility.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/agility/GnomeAgility.java @@ -1,125 +1,125 @@ -package redone.game.content.skills.agility; - -import redone.game.players.Client; - -public class GnomeAgility { - - private final Client c; - - public GnomeAgility(Client c) { - this.c = c; - } - - private static long clickTimer = 0; - - public static final int LOG_OBJECT = 2295, NET1_OBJECT = 2285, - TREE_OBJECT = 2313, ROPE_OBJECT = 2312, TREE_BRANCH_OBJECT = 2314, - NET2_OBJECT = 2286, PIPES1_OBJECT = 154, PIPES2_OBJECT = 4058;// gnome - // course - // objects - - public boolean gnomeCourse(int objectId) { - switch (objectId) { - case LOG_OBJECT: - if (c.getAgility().hotSpot(2474, 3436)) { - c.getAgility().walk(0, -7, c.getAgility().getAnimation(objectId), -1); - } else if (c.absX == 2474 && c.absY > 3429 && c.absY < 3436) { - c.getPlayerAssistant().movePlayer(2474, 3429, 0); - } - c.getPlayerAssistant().addSkillXP(c.getAgility().getXp(objectId), c.playerAgility); - c.getAgility().resetAgilityProgress(); - c.getAgility().agilityProgress[0] = true; - return true; - - case NET1_OBJECT: - c.getAgility().climbUp(c.getX(), c.getY() - 2, 1); - c.getPlayerAssistant().addSkillXP(c.getAgility().getXp(objectId), c.playerAgility); - if (c.getAgility().agilityProgress[0] == true) { - c.getAgility().agilityProgress[1] = true; - } - return true; - - case TREE_OBJECT: - c.getAgility().climbUp(c.getX(), c.getY() - 3, 2); - c.getPlayerAssistant().addSkillXP(c.getAgility().getXp(objectId), c.playerAgility); - if (c.getAgility().agilityProgress[1] == true) { - c.getAgility().agilityProgress[2] = true; - } - return true; - - case ROPE_OBJECT: - if (c.getAgility().hotSpot(2477, 3420)) { - c.getAgility().walk(6, 0, c.getAgility().getAnimation(objectId), -1); - } else if (c.absY == 3420 && c.absX > 2477 && c.absX < 2483) {// makes - // sure - // they - // don't - // cheat - c.getPlayerAssistant().movePlayer(2483, 3420, 2); - } - c.getPlayerAssistant().addSkillXP(c.getAgility().getXp(objectId), c.playerAgility); - if (c.getAgility().agilityProgress[2] == true) { - c.getAgility().agilityProgress[3] = true; - } - return true; - - case TREE_BRANCH_OBJECT: - c.getAgility().climbDown(c.getX(), c.getY(), 0); - c.getPlayerAssistant().addSkillXP(c.getAgility().getXp(objectId), c.playerAgility); - if (c.getAgility().agilityProgress[3] == true) { - c.getAgility().agilityProgress[4] = true; - } - return true; - - case NET2_OBJECT: - if (System.currentTimeMillis() - clickTimer < 1800) { - return false; - } - if (c.getY() == 3425 && System.currentTimeMillis() - clickTimer > 1800) { - c.getAgility().climbUp(c.getX(), c.getY() + 2, 0); - c.getPlayerAssistant().addSkillXP(c.getAgility().getXp(objectId), c.playerAgility); - clickTimer = System.currentTimeMillis(); - if (c.getAgility().agilityProgress[4] == true) { - c.getAgility().agilityProgress[5] = true; - } - } - return true; - - case PIPES1_OBJECT: - if (c.getAgility().hotSpot(2484, 3430)) { - c.getAgility().walk(0, 7, c.getAgility().getAnimation(objectId), 748); - if (c.getAgility().agilityProgress[5] == true) { - c.getPlayerAssistant().addSkillXP(c.getAgility().getXp(objectId), c.playerAgility); - c.getAgility().lapBonus = 1400 / 30; - c.getAgility().lapFinished(); - } else { - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - } - c.getAgility().resetAgilityProgress(); - } else if (c.absY > 3430 && c.absY < 3436 && System.currentTimeMillis() - clickTimer > 1800) { - c.getPlayerAssistant().movePlayer(2484, 3437, 0); - } - return true; - - case PIPES2_OBJECT: - if (c.getAgility().hotSpot(2487, 3430)) { - c.getAgility().walk(0, 7, c.getAgility().getAnimation(objectId), 748); - if (c.getAgility().agilityProgress[5] == true) { - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - c.getAgility().lapBonus = 1400 / 30; - c.getAgility().lapFinished(); - } else { - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - } - c.getAgility().resetAgilityProgress(); - } else if (c.absY > 3430 && c.absY < 3436) { - c.getPlayerAssistant().movePlayer(2487, 3437, 0); - } - return true; - } - return false; - } -} +package com.rebotted.game.content.skills.agility; + +import com.rebotted.game.players.Player; + +public class GnomeAgility { + + private final Player c; + + public GnomeAgility(Player player) { + this.c = player; + } + + private static long clickTimer = 0; + + public static final int LOG_OBJECT = 2295, NET1_OBJECT = 2285, + TREE_OBJECT = 2313, ROPE_OBJECT = 2312, TREE_BRANCH_OBJECT = 2314, + NET2_OBJECT = 2286, PIPES1_OBJECT = 154, PIPES2_OBJECT = 4058;// gnome + // course + // objects + + public boolean gnomeCourse(int objectId) { + switch (objectId) { + case LOG_OBJECT: + if (c.getAgility().hotSpot(2474, 3436)) { + c.getAgility().walk(0, -7, c.getAgility().getAnimation(objectId), -1); + } else if (c.absX == 2474 && c.absY > 3429 && c.absY < 3436) { + c.getPlayerAssistant().movePlayer(2474, 3429, 0); + } + c.getPlayerAssistant().addSkillXP(c.getAgility().getXp(objectId), c.playerAgility); + c.getAgility().resetAgilityProgress(); + c.getAgility().agilityProgress[0] = true; + return true; + + case NET1_OBJECT: + c.getAgility().climbUp(c.getX(), c.getY() - 2, 1); + c.getPlayerAssistant().addSkillXP(c.getAgility().getXp(objectId), c.playerAgility); + if (c.getAgility().agilityProgress[0] == true) { + c.getAgility().agilityProgress[1] = true; + } + return true; + + case TREE_OBJECT: + c.getAgility().climbUp(c.getX(), c.getY() - 3, 2); + c.getPlayerAssistant().addSkillXP(c.getAgility().getXp(objectId), c.playerAgility); + if (c.getAgility().agilityProgress[1] == true) { + c.getAgility().agilityProgress[2] = true; + } + return true; + + case ROPE_OBJECT: + if (c.getAgility().hotSpot(2477, 3420)) { + c.getAgility().walk(6, 0, c.getAgility().getAnimation(objectId), -1); + } else if (c.absY == 3420 && c.absX > 2477 && c.absX < 2483) {// makes + // sure + // they + // don't + // cheat + c.getPlayerAssistant().movePlayer(2483, 3420, 2); + } + c.getPlayerAssistant().addSkillXP(c.getAgility().getXp(objectId), c.playerAgility); + if (c.getAgility().agilityProgress[2] == true) { + c.getAgility().agilityProgress[3] = true; + } + return true; + + case TREE_BRANCH_OBJECT: + c.getAgility().climbDown(c.getX(), c.getY(), 0); + c.getPlayerAssistant().addSkillXP(c.getAgility().getXp(objectId), c.playerAgility); + if (c.getAgility().agilityProgress[3] == true) { + c.getAgility().agilityProgress[4] = true; + } + return true; + + case NET2_OBJECT: + if (System.currentTimeMillis() - clickTimer < 1800) { + return false; + } + if (c.getY() == 3425 && System.currentTimeMillis() - clickTimer > 1800) { + c.getAgility().climbUp(c.getX(), c.getY() + 2, 0); + c.getPlayerAssistant().addSkillXP(c.getAgility().getXp(objectId), c.playerAgility); + clickTimer = System.currentTimeMillis(); + if (c.getAgility().agilityProgress[4] == true) { + c.getAgility().agilityProgress[5] = true; + } + } + return true; + + case PIPES1_OBJECT: + if (c.getAgility().hotSpot(2484, 3430)) { + c.getAgility().walk(0, 7, c.getAgility().getAnimation(objectId), 748); + if (c.getAgility().agilityProgress[5] == true) { + c.getPlayerAssistant().addSkillXP(c.getAgility().getXp(objectId), c.playerAgility); + c.getAgility().lapBonus = 1400 / 30; + c.getAgility().lapFinished(); + } else { + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + } + c.getAgility().resetAgilityProgress(); + } else if (c.absY > 3430 && c.absY < 3436 && System.currentTimeMillis() - clickTimer > 1800) { + c.getPlayerAssistant().movePlayer(2484, 3437, 0); + } + return true; + + case PIPES2_OBJECT: + if (c.getAgility().hotSpot(2487, 3430)) { + c.getAgility().walk(0, 7, c.getAgility().getAnimation(objectId), 748); + if (c.getAgility().agilityProgress[5] == true) { + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + c.getAgility().lapBonus = 1400 / 30; + c.getAgility().lapFinished(); + } else { + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + } + c.getAgility().resetAgilityProgress(); + } else if (c.absY > 3430 && c.absY < 3436) { + c.getPlayerAssistant().movePlayer(2487, 3437, 0); + } + return true; + } + return false; + } +} diff --git a/2006Redone Server/src/redone/game/content/skills/agility/PyramidAgility.java b/2006Redone Server/src/com/rebotted/game/content/skills/agility/PyramidAgility.java similarity index 92% rename from 2006Redone Server/src/redone/game/content/skills/agility/PyramidAgility.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/agility/PyramidAgility.java index 23ed1fb4..813ebce5 100644 --- a/2006Redone Server/src/redone/game/content/skills/agility/PyramidAgility.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/agility/PyramidAgility.java @@ -1,362 +1,360 @@ -package redone.game.content.skills.agility; - -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.players.Client; - -public class PyramidAgility { - - private final Client c; - - public PyramidAgility(Client c) { - this.c = c; - } - - public static final int PYRAMID_STAIRCE_OBJECT = 10857, - PYRAMID_WALL_OBJECT = 10865, PYRAMID_PLANK_OBJECT = 10868, - PYRAMID_GAP_OBJECT = 10863, PYRAMID_GAP_2 = 10885, - PYRAMID_GAP_3 = 10859, PYRAMID_GAP_4 = 10883, - PYRAMID_GAP_5 = 10862, LEDGE = 10860, LEDGE_2 = 10886, - LEDGE_3 = 10888, PYRAMID_ROCKS = 10852; // pyramid - // course - // objects - - public boolean pyramidCourse(int objectId) { - switch (objectId) { - case PYRAMID_STAIRCE_OBJECT: - if (c.getAgility().checkLevel(objectId)) { - return false; - } - if (c.getAgility().hotSpot(3357, 2832) - || c.getAgility().hotSpot(3356, 2832) - || c.getAgility().hotSpot(3355, 2830) - || c.getAgility().hotSpot(3359, 2834) - || c.getAgility().hotSpot(3358, 2834) - || c.getAgility().hotSpot(3361, 2836) - || c.getAgility().hotSpot(3360, 2836)) { - if (c.heightLevel == 0) { - c.getAgility().climbUp(c.getX(), c.getY() + 3, 1); - } else if (c.heightLevel == 1) { - c.getAgility().climbUp(c.getX(), c.getY() + 3, 2); - } else if (c.heightLevel == 2) { - c.getAgility().climbUp(c.getX(), c.getY() + 3, 3); - } else { - c.getAgility().climbUp(c.getX(), c.getY() - 8, 0); - c.getActionSender() - .sendMessage( - "Congratulations you completed the pyramid course!"); - } - } - return true; - - case PYRAMID_ROCKS: - if (c.getAgility().checkLevel(objectId)) { - return false; - } - if (c.absX == 3349) { - c.getAgility().walk(-6, 0, - c.getAgility().getAnimation(objectId), -1); - c.getActionSender().sendMessage( - "You leave the agility pyramid"); - } else if (c.absX == 3343) { - c.getAgility() - .walk(6, 0, c.getAgility().getAnimation(3043), -1); - c.getActionSender().sendMessage( - "You enter the agility pyramid"); - } - return true; - - case LEDGE: - case LEDGE_2: - case LEDGE_3: - if (c.getAgility().checkLevel(objectId)) { - return false; - } - if (c.getAgility().hotSpot(3363, 2851)) { - c.getAgility().walk(5, 0, - c.getAgility().getAnimation(objectId), -1); - } else if (c.getAgility().hotSpot(3364, 2832)) { - c.getAgility().walk(-5, 0, - c.getAgility().getAnimation(objectId), -1); - } else if (c.getAgility().hotSpot(3372, 2841)) { - c.getAgility().walk(0, -5, - c.getAgility().getAnimation(objectId), -1); - } else if (c.getAgility().hotSpot(3359, 2842)) { - c.getAgility().walk(0, 5, - c.getAgility().getAnimation(objectId), -1); - } - return true; - - case PyramidAgility.PYRAMID_WALL_OBJECT: - if (c.getAgility().checkLevel(objectId)) { - return false; - } - if (c.getAgility().hotSpot(3354, 2848) - || c.getAgility().hotSpot(3355, 2848)) { - c.getAgility().walk(0, 2, - c.getAgility().getAnimation(objectId), -1); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - } - if (c.getAgility().hotSpot(3371, 2834) - || c.getAgility().hotSpot(3371, 2833)) { - c.getAgility().walk(-2, 0, - c.getAgility().getAnimation(objectId), -1); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - } - if (c.getAgility().hotSpot(3359, 2838) - || c.getAgility().hotSpot(3358, 2838)) { - c.getAgility().walk(0, 2, - c.getAgility().getAnimation(objectId), -1); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - } - return true; - - case PYRAMID_GAP_OBJECT: - case PYRAMID_GAP_2: - case PYRAMID_GAP_3: - case PYRAMID_GAP_4: - case PYRAMID_GAP_5: - if (c.getAgility().checkLevel(objectId)) { - return false; - } - if (c.getAgility().hotSpot(3363, 2851)) { - c.getAgility().walk(1, 0, - c.getAgility().getAnimation(objectId), -1); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (c.disconnected) { - container.stop(); - return; - } - c.getPlayerAssistant().movePlayer(3368, 2851, 1); - container.stop(); - } - @Override - public void stop() { - - } - }, 1); - } - if (c.getAgility().hotSpot(3372, 2832) - || c.getAgility().hotSpot(3372, 2831)) { - c.getAgility().walk(-1, 0, - c.getAgility().getAnimation(objectId), -1); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (c.disconnected) { - container.stop(); - return; - } - c.getPlayerAssistant().movePlayer(3367, c.absY, 1);// was - // 2832 - container.stop(); - } - @Override - public void stop() { - - } - }, 1); - } - if (c.getAgility().hotSpot(3364, 2832)) { - c.getAgility().walk(-1, 0, - c.getAgility().getAnimation(objectId), -1); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (c.disconnected) { - container.stop(); - return; - } - c.getPlayerAssistant().movePlayer(3359, 2832, 1); - container.stop(); - } - @Override - public void stop() { - - } - }, 1); - } - if (c.getAgility().hotSpot(3357, 2836)) { - c.getAgility().walk(0, 5, - c.getAgility().getAnimation(objectId), -1); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (c.disconnected) { - container.stop(); - return; - } - c.getPlayerAssistant().movePlayer(3357, 2841, 2); - container.stop(); - } - @Override - public void stop() { - - } - }, 1); - } - if (c.getAgility().hotSpot(3357, 2846)) { - c.getAgility().walk(0, 3, - c.getAgility().getAnimation(objectId), -1); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (c.disconnected) { - container.stop(); - return; - } - c.getPlayerAssistant().movePlayer(3357, 2849, 2); - container.stop(); - } - @Override - public void stop() { - - } - }, 1); - } - if (c.getAgility().hotSpot(3359, 2849) - || c.getAgility().hotSpot(3359, 2850)) { - c.getAgility().walk(5, 0, - c.getAgility().getAnimation(objectId), -1); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (c.disconnected) { - container.stop(); - return; - } - c.getPlayerAssistant().movePlayer(3364, c.absY, 2); - container.stop(); - } - @Override - public void stop() { - - } - }, 1); - } - if (c.getAgility().hotSpot(3366, 2834)) { - c.getAgility().walk(-1, 0, - c.getAgility().getAnimation(objectId), -1); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (c.disconnected) { - container.stop(); - return; - } - c.getPlayerAssistant().movePlayer(3363, 2834, 2); - container.stop(); - } - @Override - public void stop() { - - } - }, 1); - } - if (c.getAgility().hotSpot(3359, 2842)) { - c.getAgility().walk(0, 1, - c.getAgility().getAnimation(objectId), -1); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (c.disconnected) { - container.stop(); - return; - } - c.getPlayerAssistant().movePlayer(3359, 2847, 3); - container.stop(); - } - @Override - public void stop() { - - } - }, 1); - } - if (c.getAgility().hotSpot(3370, 2843)) { - c.getAgility().walk(0, -1, - c.getAgility().getAnimation(objectId), -1); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (c.disconnected) { - container.stop(); - return; - } - c.getPlayerAssistant().movePlayer(3370, 2838, 3); - container.stop(); - } - @Override - public void stop() { - - } - }, 1); - } - if (c.getAgility().hotSpot(3372, 2841)) { - c.getAgility().walk(0, -1, - c.getAgility().getAnimation(objectId), -1); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (c.disconnected) { - container.stop(); - return; - } - c.getPlayerAssistant().movePlayer(3372, 2836, 2); - container.stop(); - } - @Override - public void stop() { - - } - }, 1); - } - return true; - - case PYRAMID_PLANK_OBJECT: - if (c.getAgility().checkLevel(objectId)) { - return false; - } - if (c.getAgility().hotSpot(3375, 2845)) { - c.getAgility().walk(0, -6, - c.getAgility().getAnimation(objectId), -1); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - } - if (c.getAgility().hotSpot(3370, 2835)) { - c.getAgility().walk(-6, 0, - c.getAgility().getAnimation(objectId), -1); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - } - return true; - } - return false; - } - -} +package com.rebotted.game.content.skills.agility; + +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.players.Player; + +public class PyramidAgility { + + private final Player c; + + public PyramidAgility(Player player) { + this.c = player; + } + + public static final int PYRAMID_STAIRCE_OBJECT = 10857, + PYRAMID_WALL_OBJECT = 10865, PYRAMID_PLANK_OBJECT = 10868, + PYRAMID_GAP_OBJECT = 10863, PYRAMID_GAP_2 = 10885, + PYRAMID_GAP_3 = 10859, PYRAMID_GAP_4 = 10883, + PYRAMID_GAP_5 = 10862, LEDGE = 10860, LEDGE_2 = 10886, + LEDGE_3 = 10888, PYRAMID_ROCKS = 10852; + + public boolean pyramidCourse(int objectId) { + switch (objectId) { + case PYRAMID_STAIRCE_OBJECT: + if (c.getAgility().checkLevel(objectId)) { + return false; + } + if (c.getAgility().hotSpot(3357, 2832) + || c.getAgility().hotSpot(3356, 2832) + || c.getAgility().hotSpot(3355, 2830) + || c.getAgility().hotSpot(3359, 2834) + || c.getAgility().hotSpot(3358, 2834) + || c.getAgility().hotSpot(3361, 2836) + || c.getAgility().hotSpot(3360, 2836)) { + if (c.heightLevel == 0) { + c.getAgility().climbUp(c.getX(), c.getY() + 3, 1); + } else if (c.heightLevel == 1) { + c.getAgility().climbUp(c.getX(), c.getY() + 3, 2); + } else if (c.heightLevel == 2) { + c.getAgility().climbUp(c.getX(), c.getY() + 3, 3); + } else { + c.getAgility().climbUp(c.getX(), c.getY() - 8, 0); + c.getPacketSender() + .sendMessage( + "Congratulations you completed the pyramid course!"); + } + } + return true; + + case PYRAMID_ROCKS: + if (c.getAgility().checkLevel(objectId)) { + return false; + } + if (c.absX == 3349) { + c.getAgility().walk(-6, 0, + c.getAgility().getAnimation(objectId), -1); + c.getPacketSender().sendMessage( + "You leave the agility pyramid"); + } else if (c.absX == 3343) { + c.getAgility() + .walk(6, 0, c.getAgility().getAnimation(3043), -1); + c.getPacketSender().sendMessage( + "You enter the agility pyramid"); + } + return true; + + case LEDGE: + case LEDGE_2: + case LEDGE_3: + if (c.getAgility().checkLevel(objectId)) { + return false; + } + if (c.getAgility().hotSpot(3363, 2851)) { + c.getAgility().walk(5, 0, + c.getAgility().getAnimation(objectId), -1); + } else if (c.getAgility().hotSpot(3364, 2832)) { + c.getAgility().walk(-5, 0, + c.getAgility().getAnimation(objectId), -1); + } else if (c.getAgility().hotSpot(3372, 2841)) { + c.getAgility().walk(0, -5, + c.getAgility().getAnimation(objectId), -1); + } else if (c.getAgility().hotSpot(3359, 2842)) { + c.getAgility().walk(0, 5, + c.getAgility().getAnimation(objectId), -1); + } + return true; + + case PyramidAgility.PYRAMID_WALL_OBJECT: + if (c.getAgility().checkLevel(objectId)) { + return false; + } + if (c.getAgility().hotSpot(3354, 2848) + || c.getAgility().hotSpot(3355, 2848)) { + c.getAgility().walk(0, 2, + c.getAgility().getAnimation(objectId), -1); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + } + if (c.getAgility().hotSpot(3371, 2834) + || c.getAgility().hotSpot(3371, 2833)) { + c.getAgility().walk(-2, 0, + c.getAgility().getAnimation(objectId), -1); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + } + if (c.getAgility().hotSpot(3359, 2838) + || c.getAgility().hotSpot(3358, 2838)) { + c.getAgility().walk(0, 2, + c.getAgility().getAnimation(objectId), -1); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + } + return true; + + case PYRAMID_GAP_OBJECT: + case PYRAMID_GAP_2: + case PYRAMID_GAP_3: + case PYRAMID_GAP_4: + case PYRAMID_GAP_5: + if (c.getAgility().checkLevel(objectId)) { + return false; + } + if (c.getAgility().hotSpot(3363, 2851)) { + c.getAgility().walk(1, 0, + c.getAgility().getAnimation(objectId), -1); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (c.disconnected) { + container.stop(); + return; + } + c.getPlayerAssistant().movePlayer(3368, 2851, 1); + container.stop(); + } + @Override + public void stop() { + + } + }, 1); + } + if (c.getAgility().hotSpot(3372, 2832) + || c.getAgility().hotSpot(3372, 2831)) { + c.getAgility().walk(-1, 0, + c.getAgility().getAnimation(objectId), -1); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (c.disconnected) { + container.stop(); + return; + } + c.getPlayerAssistant().movePlayer(3367, c.absY, 1);// was + // 2832 + container.stop(); + } + @Override + public void stop() { + + } + }, 1); + } + if (c.getAgility().hotSpot(3364, 2832)) { + c.getAgility().walk(-1, 0, + c.getAgility().getAnimation(objectId), -1); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (c.disconnected) { + container.stop(); + return; + } + c.getPlayerAssistant().movePlayer(3359, 2832, 1); + container.stop(); + } + @Override + public void stop() { + + } + }, 1); + } + if (c.getAgility().hotSpot(3357, 2836)) { + c.getAgility().walk(0, 5, + c.getAgility().getAnimation(objectId), -1); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (c.disconnected) { + container.stop(); + return; + } + c.getPlayerAssistant().movePlayer(3357, 2841, 2); + container.stop(); + } + @Override + public void stop() { + + } + }, 1); + } + if (c.getAgility().hotSpot(3357, 2846)) { + c.getAgility().walk(0, 3, + c.getAgility().getAnimation(objectId), -1); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (c.disconnected) { + container.stop(); + return; + } + c.getPlayerAssistant().movePlayer(3357, 2849, 2); + container.stop(); + } + @Override + public void stop() { + + } + }, 1); + } + if (c.getAgility().hotSpot(3359, 2849) + || c.getAgility().hotSpot(3359, 2850)) { + c.getAgility().walk(5, 0, + c.getAgility().getAnimation(objectId), -1); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (c.disconnected) { + container.stop(); + return; + } + c.getPlayerAssistant().movePlayer(3364, c.absY, 2); + container.stop(); + } + @Override + public void stop() { + + } + }, 1); + } + if (c.getAgility().hotSpot(3366, 2834)) { + c.getAgility().walk(-1, 0, + c.getAgility().getAnimation(objectId), -1); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (c.disconnected) { + container.stop(); + return; + } + c.getPlayerAssistant().movePlayer(3363, 2834, 2); + container.stop(); + } + @Override + public void stop() { + + } + }, 1); + } + if (c.getAgility().hotSpot(3359, 2842)) { + c.getAgility().walk(0, 1, + c.getAgility().getAnimation(objectId), -1); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (c.disconnected) { + container.stop(); + return; + } + c.getPlayerAssistant().movePlayer(3359, 2847, 3); + container.stop(); + } + @Override + public void stop() { + + } + }, 1); + } + if (c.getAgility().hotSpot(3370, 2843)) { + c.getAgility().walk(0, -1, + c.getAgility().getAnimation(objectId), -1); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (c.disconnected) { + container.stop(); + return; + } + c.getPlayerAssistant().movePlayer(3370, 2838, 3); + container.stop(); + } + @Override + public void stop() { + + } + }, 1); + } + if (c.getAgility().hotSpot(3372, 2841)) { + c.getAgility().walk(0, -1, + c.getAgility().getAnimation(objectId), -1); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (c.disconnected) { + container.stop(); + return; + } + c.getPlayerAssistant().movePlayer(3372, 2836, 2); + container.stop(); + } + @Override + public void stop() { + + } + }, 1); + } + return true; + + case PYRAMID_PLANK_OBJECT: + if (c.getAgility().checkLevel(objectId)) { + return false; + } + if (c.getAgility().hotSpot(3375, 2845)) { + c.getAgility().walk(0, -6, + c.getAgility().getAnimation(objectId), -1); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + } + if (c.getAgility().hotSpot(3370, 2835)) { + c.getAgility().walk(-6, 0, + c.getAgility().getAnimation(objectId), -1); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + } + return true; + } + return false; + } + +} diff --git a/2006Redone Server/src/redone/game/content/skills/agility/WerewolfAgility.java b/2006Redone Server/src/com/rebotted/game/content/skills/agility/WerewolfAgility.java similarity index 91% rename from 2006Redone Server/src/redone/game/content/skills/agility/WerewolfAgility.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/agility/WerewolfAgility.java index 97dd51d7..5b3e876b 100644 --- a/2006Redone Server/src/redone/game/content/skills/agility/WerewolfAgility.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/agility/WerewolfAgility.java @@ -1,188 +1,188 @@ -package redone.game.content.skills.agility; - -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.players.Client; - -public class WerewolfAgility { - - private final Client c; - - public WerewolfAgility(Client c) { - this.c = c; - } - - public static final int WEREWOLF_STEPPING_STONE_OBJECT = 5138, - WEREWOLF_HURDLE_OBJECT1 = 5133, WEREWOLF_HURDLE_OBJECT2 = 5134, - WEREWOLF_HURDLE_OBJECT3 = 5135, WEREWOLF_PIPES_OBJECT = 5152, - WEREWOLF_SKULL_OBJECT = 5136, WEREWOLF_SLING_OBJECT = 5141; // werewolf - // course - // objects - - public boolean werewolfCourse(int objectId) { - switch (objectId) { - case WEREWOLF_STEPPING_STONE_OBJECT: - if (c.getAgility().checkLevel(objectId)) { - return false; - } - if (c.getAgility().hotSpot(3538, 9873)) { - c.getAgility().walk(0, 2, - c.getAgility().getAnimation(objectId), -1); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - c.getAgility().resetAgilityProgress(); - c.getAgility().agilityProgress[0] = true; - } else if (c.getAgility().hotSpot(3538, 9875)) { - c.getAgility().walk(0, 2, - c.getAgility().getAnimation(objectId), -1); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - c.getAgility().resetAgilityProgress(); - c.getAgility().agilityProgress[0] = true; - } else if (c.getAgility().hotSpot(3538, 9876)) { - c.getAgility().walk(1, 2, - c.getAgility().getAnimation(objectId), -1); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - c.getAgility().resetAgilityProgress(); - c.getAgility().agilityProgress[0] = true; - } else if (c.getAgility().hotSpot(3538, 9877)) { - c.getAgility().walk(2, 0, - c.getAgility().getAnimation(objectId), -1); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - c.getAgility().resetAgilityProgress(); - c.getAgility().agilityProgress[0] = true; - } else if (c.getAgility().hotSpot(3540, 9877)) { - c.getAgility().walk(0, 2, - c.getAgility().getAnimation(objectId), -1); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - c.getAgility().resetAgilityProgress(); - c.getAgility().agilityProgress[0] = true; - } else if (c.getAgility().hotSpot(3540, 9879)) { - c.getAgility().walk(0, 2, - c.getAgility().getAnimation(objectId), -1); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - c.getAgility().resetAgilityProgress(); - c.getAgility().agilityProgress[0] = true; - } - return true; - - case WEREWOLF_HURDLE_OBJECT1: - case WEREWOLF_HURDLE_OBJECT2: - case WEREWOLF_HURDLE_OBJECT3: - if (c.getAgility().checkLevel(objectId)) { - return false; - } - if (c.getY() == 9892 || c.getY() == 9895 || c.getY() == 9898) { - c.getAgility().walk(0, 2, - c.getAgility().getAnimation(objectId), -1); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - if (c.getAgility().agilityProgress[0] == true) { - c.getAgility().agilityProgress[1] = true; - } - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (c.disconnected) { - container.stop(); - return; - } - c.getPlayerAssistant().movePlayer(c.getX(), c.getY() + 1, 0); - c.getActionSender().sendMessage("You managed to jump over the hurdle."); - container.stop(); - } - @Override - public void stop() { - - } - }, 1); - } - return true; - - case WEREWOLF_PIPES_OBJECT: - if (c.getAgility().checkLevel(objectId)) { - return false; - } - if (c.getAgility().hotSpot(3538, 9904)) { - c.getAgility().walk(0, 6, - c.getAgility().getAnimation(objectId), 748); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - if (c.getAgility().agilityProgress[1] == true) { - c.getAgility().agilityProgress[2] = true; - } - } else if (c.getAgility().hotSpot(3541, 9904)) { - c.getAgility().walk(0, 6, - c.getAgility().getAnimation(objectId), 748); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - if (c.getAgility().agilityProgress[1] == true) { - c.getAgility().agilityProgress[2] = true; - } - } else if (c.getAgility().hotSpot(3544, 9904)) { - c.getAgility().walk(0, 6, - c.getAgility().getAnimation(objectId), 748); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - if (c.getAgility().agilityProgress[1] == true) { - c.getAgility().agilityProgress[2] = true; - } - } - return true; - - case WEREWOLF_SKULL_OBJECT: - if (c.getAgility().checkLevel(objectId)) { - return false; - } - if (c.getX() == 3533) { - c.getAgility().walk(-3, 0, - c.getAgility().getAnimation(objectId), -1); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - if (c.getAgility().agilityProgress[2] == true) { - c.getAgility().agilityProgress[3] = true; - } - } - return true; - - case 5139: - if (c.getAgility().hotSpot(3528, 9910)) { - c.getAgility().walk( - 0, - -39, - c.getAgility().getAnimation( - WerewolfAgility.WEREWOLF_SLING_OBJECT), 743); - c.getPlayerAssistant().addSkillXP( - c.getAgility().getXp(objectId), c.playerAgility); - if (c.getAgility().agilityProgress[3] == true) { - c.getAgility().agilityProgress[4] = true; - } - c.getAgility().agilityProgress[5] = true; - c.getAgility().lapBonus = 2350 / 30; - c.getAgility().lapFinished(); - } - return true; - - case WEREWOLF_SLING_OBJECT: - if (c.getAgility().checkLevel(objectId)) { - return false; - } - if (c.getX() == 3530) { - c.getPlayerAction().setAction(true); - c.getPlayerAction().canWalk(false); - c.getPlayerAssistant().movePlayer(3528, 9910, 0); - c.isRunning2 = true; - // c.getAgility().zipLine = 0; - // c.getAgility().moveHeight = 0; - } - return true; - } - return false; - } - -} +package com.rebotted.game.content.skills.agility; + +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.players.Player; + +public class WerewolfAgility { + + private final Player c; + + public WerewolfAgility(Player player) { + this.c = player; + } + + public static final int WEREWOLF_STEPPING_STONE_OBJECT = 5138, + WEREWOLF_HURDLE_OBJECT1 = 5133, WEREWOLF_HURDLE_OBJECT2 = 5134, + WEREWOLF_HURDLE_OBJECT3 = 5135, WEREWOLF_PIPES_OBJECT = 5152, + WEREWOLF_SKULL_OBJECT = 5136, WEREWOLF_SLING_OBJECT = 5141; // werewolf + // course + // objects + + public boolean werewolfCourse(int objectId) { + switch (objectId) { + case WEREWOLF_STEPPING_STONE_OBJECT: + if (c.getAgility().checkLevel(objectId)) { + return false; + } + if (c.getAgility().hotSpot(3538, 9873)) { + c.getAgility().walk(0, 2, + c.getAgility().getAnimation(objectId), -1); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + c.getAgility().resetAgilityProgress(); + c.getAgility().agilityProgress[0] = true; + } else if (c.getAgility().hotSpot(3538, 9875)) { + c.getAgility().walk(0, 2, + c.getAgility().getAnimation(objectId), -1); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + c.getAgility().resetAgilityProgress(); + c.getAgility().agilityProgress[0] = true; + } else if (c.getAgility().hotSpot(3538, 9876)) { + c.getAgility().walk(1, 2, + c.getAgility().getAnimation(objectId), -1); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + c.getAgility().resetAgilityProgress(); + c.getAgility().agilityProgress[0] = true; + } else if (c.getAgility().hotSpot(3538, 9877)) { + c.getAgility().walk(2, 0, + c.getAgility().getAnimation(objectId), -1); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + c.getAgility().resetAgilityProgress(); + c.getAgility().agilityProgress[0] = true; + } else if (c.getAgility().hotSpot(3540, 9877)) { + c.getAgility().walk(0, 2, + c.getAgility().getAnimation(objectId), -1); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + c.getAgility().resetAgilityProgress(); + c.getAgility().agilityProgress[0] = true; + } else if (c.getAgility().hotSpot(3540, 9879)) { + c.getAgility().walk(0, 2, + c.getAgility().getAnimation(objectId), -1); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + c.getAgility().resetAgilityProgress(); + c.getAgility().agilityProgress[0] = true; + } + return true; + + case WEREWOLF_HURDLE_OBJECT1: + case WEREWOLF_HURDLE_OBJECT2: + case WEREWOLF_HURDLE_OBJECT3: + if (c.getAgility().checkLevel(objectId)) { + return false; + } + if (c.getY() == 9892 || c.getY() == 9895 || c.getY() == 9898) { + c.getAgility().walk(0, 2, + c.getAgility().getAnimation(objectId), -1); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + if (c.getAgility().agilityProgress[0] == true) { + c.getAgility().agilityProgress[1] = true; + } + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (c.disconnected) { + container.stop(); + return; + } + c.getPlayerAssistant().movePlayer(c.getX(), c.getY() + 1, 0); + c.getPacketSender().sendMessage("You managed to jump over the hurdle."); + container.stop(); + } + @Override + public void stop() { + + } + }, 1); + } + return true; + + case WEREWOLF_PIPES_OBJECT: + if (c.getAgility().checkLevel(objectId)) { + return false; + } + if (c.getAgility().hotSpot(3538, 9904)) { + c.getAgility().walk(0, 6, + c.getAgility().getAnimation(objectId), 748); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + if (c.getAgility().agilityProgress[1] == true) { + c.getAgility().agilityProgress[2] = true; + } + } else if (c.getAgility().hotSpot(3541, 9904)) { + c.getAgility().walk(0, 6, + c.getAgility().getAnimation(objectId), 748); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + if (c.getAgility().agilityProgress[1] == true) { + c.getAgility().agilityProgress[2] = true; + } + } else if (c.getAgility().hotSpot(3544, 9904)) { + c.getAgility().walk(0, 6, + c.getAgility().getAnimation(objectId), 748); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + if (c.getAgility().agilityProgress[1] == true) { + c.getAgility().agilityProgress[2] = true; + } + } + return true; + + case WEREWOLF_SKULL_OBJECT: + if (c.getAgility().checkLevel(objectId)) { + return false; + } + if (c.getX() == 3533) { + c.getAgility().walk(-3, 0, + c.getAgility().getAnimation(objectId), -1); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + if (c.getAgility().agilityProgress[2] == true) { + c.getAgility().agilityProgress[3] = true; + } + } + return true; + + case 5139: + if (c.getAgility().hotSpot(3528, 9910)) { + c.getAgility().walk( + 0, + -39, + c.getAgility().getAnimation( + WerewolfAgility.WEREWOLF_SLING_OBJECT), 743); + c.getPlayerAssistant().addSkillXP( + c.getAgility().getXp(objectId), c.playerAgility); + if (c.getAgility().agilityProgress[3] == true) { + c.getAgility().agilityProgress[4] = true; + } + c.getAgility().agilityProgress[5] = true; + c.getAgility().lapBonus = 2350 / 30; + c.getAgility().lapFinished(); + } + return true; + + case WEREWOLF_SLING_OBJECT: + if (c.getAgility().checkLevel(objectId)) { + return false; + } + if (c.getX() == 3530) { + c.getPlayerAction().setAction(true); + c.getPlayerAction().canWalk(false); + c.getPlayerAssistant().movePlayer(3528, 9910, 0); + c.isRunning2 = true; + // c.getAgility().zipLine = 0; + // c.getAgility().moveHeight = 0; + } + return true; + } + return false; + } + +} diff --git a/2006Redone Server/src/redone/game/content/skills/agility/WildernessAgility.java b/2006Redone Server/src/com/rebotted/game/content/skills/agility/WildernessAgility.java similarity index 90% rename from 2006Redone Server/src/redone/game/content/skills/agility/WildernessAgility.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/agility/WildernessAgility.java index d0e69e82..3a261022 100644 --- a/2006Redone Server/src/redone/game/content/skills/agility/WildernessAgility.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/agility/WildernessAgility.java @@ -1,119 +1,119 @@ -package redone.game.content.skills.agility; - -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.players.Client; - -public class WildernessAgility { - - private final Client c; - - public WildernessAgility(Client c) { - this.c = c; - } - - public static final int WILDERNESS_PIPE_OBJECT = 2288, - WILDERNESS_SWING_ROPE_OBJECT = 2283, - WILDERNESS_STEPPING_STONE_OBJECT = 2311, - WILDERNESS_LOG_BALANCE_OBJECT = 2297, - WILDERNESS_ROCKS_OBJECT = 2328; - - public boolean wildernessCourse(final int objectId) { - switch (objectId) { - case WILDERNESS_PIPE_OBJECT: // pipe - if (c.getAgility().checkLevel(objectId)) { - return false; - } - if (c.getAgility().hotSpot(3004, 3937)) { - c.getAgility().walk(0, 13, - c.getAgility().getAnimation(objectId), 748); - } else if (c.absX == 3004 && c.absY > 3937 && c.absY < 3950) { - c.getPlayerAssistant().movePlayer(3004, 3950, 0); - } - c.getPlayerAssistant().addSkillXP(c.getAgility().getXp(objectId), c.playerAgility); - c.getAgility().resetAgilityProgress(); - c.getAgility().agilityProgress[0] = true; - return true; - case WILDERNESS_SWING_ROPE_OBJECT: - if (c.getAgility().checkLevel(objectId)) { - return false; - } - if (c.getAgility().hotSpot(3005, 3953)) { - c.getAgility().walk(0, 1, - c.getAgility().getAnimation(objectId), -1); - if (c.getAgility().agilityProgress[0] == true) { - c.getAgility().agilityProgress[1] = true; - } - c.getPlayerAssistant().addSkillXP(c.getAgility().getXp(objectId), c.playerAgility); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (c.disconnected) { - container.stop(); - return; - } - c.getPlayerAssistant().movePlayer(3005, 3958, 0); - container.stop(); - } - @Override - public void stop() { - // TODO Auto-generated method stub - - } - }, 1); - } - return true; - case WILDERNESS_STEPPING_STONE_OBJECT: - if (c.getAgility().checkLevel(objectId)) { - return false; - } - if (c.getAgility().hotSpot(3002, 3960)) { - c.getAgility().walk(-6, 0, - c.getAgility().getAnimation(objectId), -1); - } else if (c.absX > 2996 && c.absX < 3002 && c.absY == 3960) { - c.getPlayerAssistant().movePlayer(2996, 3960, 0); - } - c.getPlayerAssistant().addSkillXP(c.getAgility().getXp(objectId), c.playerAgility); - c.getAgility().steppingStone = 6; - c.getAgility().steppingStoneTimer = 2; - c.getAgility().steppingStone--; - if (c.getAgility().agilityProgress[2] == true) { - c.getAgility().agilityProgress[3] = true; - } - return true; - - case WILDERNESS_LOG_BALANCE_OBJECT: - if (c.getAgility().checkLevel(objectId)) { - return false; - } - if (c.getAgility().hotSpot(3002, 3945)) { - c.getAgility().walk(-8, 0, - c.getAgility().getAnimation(objectId), -1); - if (c.getAgility().agilityProgress[3] == true) { - c.getAgility().agilityProgress[5] = true; - } - c.getPlayerAssistant().addSkillXP(c.getAgility().getXp(objectId), c.playerAgility); - } else if (c.absX > 2994 && c.absX < 3002 && c.absY == 3945) { - c.getPlayerAssistant().movePlayer(2994, 3945, 0); - } - return true; - - case WILDERNESS_ROCKS_OBJECT: - if (c.getAgility().checkLevel(objectId)) { - return false; - } - c.getAgility().walk(0, -4, c.getAgility().getAnimation(objectId), -1); - if (c.getAgility().agilityProgress[5] == true) { - c.getPlayerAssistant().addSkillXP(c.getAgility().getXp(objectId), c.playerAgility); - c.getAgility().lapBonus = 2400 / 30; - c.getAgility().lapFinished(); - } else { - c.getPlayerAssistant().addSkillXP(c.getAgility().getXp(objectId), c.playerAgility); - } - return true; - } - return false; - } - -} +package com.rebotted.game.content.skills.agility; + +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.players.Player; + +public class WildernessAgility { + + private final Player c; + + public WildernessAgility(Player player) { + this.c = player; + } + + public static final int WILDERNESS_PIPE_OBJECT = 2288, + WILDERNESS_SWING_ROPE_OBJECT = 2283, + WILDERNESS_STEPPING_STONE_OBJECT = 2311, + WILDERNESS_LOG_BALANCE_OBJECT = 2297, + WILDERNESS_ROCKS_OBJECT = 2328; + + public boolean wildernessCourse(final int objectId) { + switch (objectId) { + case WILDERNESS_PIPE_OBJECT: // pipe + if (c.getAgility().checkLevel(objectId)) { + return false; + } + if (c.getAgility().hotSpot(3004, 3937)) { + c.getAgility().walk(0, 13, + c.getAgility().getAnimation(objectId), 748); + } else if (c.absX == 3004 && c.absY > 3937 && c.absY < 3950) { + c.getPlayerAssistant().movePlayer(3004, 3950, 0); + } + c.getPlayerAssistant().addSkillXP(c.getAgility().getXp(objectId), c.playerAgility); + c.getAgility().resetAgilityProgress(); + c.getAgility().agilityProgress[0] = true; + return true; + case WILDERNESS_SWING_ROPE_OBJECT: + if (c.getAgility().checkLevel(objectId)) { + return false; + } + if (c.getAgility().hotSpot(3005, 3953)) { + c.getAgility().walk(0, 1, + c.getAgility().getAnimation(objectId), -1); + if (c.getAgility().agilityProgress[0] == true) { + c.getAgility().agilityProgress[1] = true; + } + c.getPlayerAssistant().addSkillXP(c.getAgility().getXp(objectId), c.playerAgility); + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (c.disconnected) { + container.stop(); + return; + } + c.getPlayerAssistant().movePlayer(3005, 3958, 0); + container.stop(); + } + @Override + public void stop() { + // TODO Auto-generated method stub + + } + }, 1); + } + return true; + case WILDERNESS_STEPPING_STONE_OBJECT: + if (c.getAgility().checkLevel(objectId)) { + return false; + } + if (c.getAgility().hotSpot(3002, 3960)) { + c.getAgility().walk(-6, 0, + c.getAgility().getAnimation(objectId), -1); + } else if (c.absX > 2996 && c.absX < 3002 && c.absY == 3960) { + c.getPlayerAssistant().movePlayer(2996, 3960, 0); + } + c.getPlayerAssistant().addSkillXP(c.getAgility().getXp(objectId), c.playerAgility); + c.getAgility().steppingStone = 6; + c.getAgility().steppingStoneTimer = 2; + c.getAgility().steppingStone--; + if (c.getAgility().agilityProgress[2] == true) { + c.getAgility().agilityProgress[3] = true; + } + return true; + + case WILDERNESS_LOG_BALANCE_OBJECT: + if (c.getAgility().checkLevel(objectId)) { + return false; + } + if (c.getAgility().hotSpot(3002, 3945)) { + c.getAgility().walk(-8, 0, + c.getAgility().getAnimation(objectId), -1); + if (c.getAgility().agilityProgress[3] == true) { + c.getAgility().agilityProgress[5] = true; + } + c.getPlayerAssistant().addSkillXP(c.getAgility().getXp(objectId), c.playerAgility); + } else if (c.absX > 2994 && c.absX < 3002 && c.absY == 3945) { + c.getPlayerAssistant().movePlayer(2994, 3945, 0); + } + return true; + + case WILDERNESS_ROCKS_OBJECT: + if (c.getAgility().checkLevel(objectId)) { + return false; + } + c.getAgility().walk(0, -4, c.getAgility().getAnimation(objectId), -1); + if (c.getAgility().agilityProgress[5] == true) { + c.getPlayerAssistant().addSkillXP(c.getAgility().getXp(objectId), c.playerAgility); + c.getAgility().lapBonus = 2400 / 30; + c.getAgility().lapFinished(); + } else { + c.getPlayerAssistant().addSkillXP(c.getAgility().getXp(objectId), c.playerAgility); + } + return true; + } + return false; + } + +} diff --git a/2006Redone Server/src/redone/game/content/skills/cooking/Cooking.java b/2006Redone Server/src/com/rebotted/game/content/skills/cooking/Cooking.java similarity index 67% rename from 2006Redone Server/src/redone/game/content/skills/cooking/Cooking.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/cooking/Cooking.java index caaf62d0..e51191a0 100644 --- a/2006Redone Server/src/redone/game/content/skills/cooking/Cooking.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/cooking/Cooking.java @@ -1,310 +1,309 @@ -package redone.game.content.skills.cooking; - -import java.security.SecureRandom; - -import redone.Constants; -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.content.music.sound.SoundList; -import redone.game.content.randomevents.RandomEventHandler; -import redone.game.content.skills.SkillHandler; -import redone.game.items.ItemAssistant; -import redone.game.players.Client; - -public class Cooking extends SkillHandler { - - private static SecureRandom cookingRandom = new SecureRandom(); // The - // random - // factor - - private static enum CookingItems { - //raw, cooked, burnt, levelreq, exp, stopburn, stopburn w/gloves, name - SHRIMP(317, 315, 7954, 1, 30, 34, 30, "shrimp"), SARDINE(327, 325, 369, - 1, 40, 38, 38, "sardine"), HERRING(345, 347, 357, 5, 50, 41, - 41, "herring"), TROUT(335, 333, 343, 15, 70, 50, 50, "trout"), TUNA( - 359, 361, 367, 30, 100, 64, 63, "tuna"), ANCHOVIES(321, 319, - 323, 5, 45, 34, 34, "anchovies"), RAW_BEEF(2132, 2142, 2146, 1, - 30, 33, 33, "raw beef"), - RAW_RAT(2134, 2142, 2146, 1, 30, 33, 33, "raw rat meat"), - BURNT_MEAT(2142, 2146, 2146, 1, 1, 100, 100, "cooked meat"), - RAW_CHICKEN(2138, 2140, 2144, 1, 30, 33, 33, "raw chicken"), - RAW_BEAR_MEAT(2136, 2142, 2146, 1, 30, 33, 33, "raw bear meat"), - MACKERAL(353, 355, 357, 10, 60, 45, 45, "mackeral"), - SALMON(331, 329, 343, 25, 90, 58, 55, "salmon"), - UNCOOKED_BERRY_PIE(2321, 2325, 2329, 10, 78, 50, 50, "uncooked pie"), - PIKE( - 349, 351, 343, 20, 80, 59, 59, "pike"), KARAMBWAN(3142, 3144, - 3146, 1, 80, 20, 20, "karambwan"), LOBSTER(377, 379, 381, 40, - 120, 74, 68, "lobster"), SWORDFISH(371, 373, 375, 50, 140, 86, - 81, "swordfish"), MONKFISH(7944, 7946, 7948, 62, 150, 92, 90, - "monkfish"), SHARK(383, 385, 387, 76, 210, 100, 94, "shark"), MANTA_RAY( - 389, 391, 393, 91, 169, 100, 100, "manta ray"), - SEAWEED(401, 1781, 1781, 1, 1, 1, 1, "sea weed"), - CURRY(2009, 2011, 2013, 60, 280, 74, 74, "curry"); - - int rawItem, cookedItem, burntItem, levelReq, xp, stopBurn, - stopBurnGloves; - String name; - - private CookingItems(int rawItem, int cookedItem, int burntItem, - int levelReq, int xp, int stopBurn, int stopBurnGloves, - String name) { - this.rawItem = rawItem; - this.cookedItem = cookedItem; - this.burntItem = burntItem; - this.levelReq = levelReq; - this.xp = xp; - this.stopBurn = stopBurn; - this.name = name; - } - - private int getRawItem() { - return rawItem; - } - - private int getCookedItem() { - return cookedItem; - } - - private int getBurntItem() { - return burntItem; - } - - private int getLevelReq() { - return levelReq; - } - - private int getXp() { - return xp; - } - - private int getStopBurn() { - return stopBurn; - } - - @SuppressWarnings("unused") - // causes bugs - private int getStopBurnGloves() { - return stopBurnGloves; - } - - private String getName() { - return name; - } - } - - public static CookingItems forId(int itemId) { - for (CookingItems item : CookingItems.values()) { - if (itemId == item.getRawItem()) { - return item; - } - } - return null; - } - - public static void makeBreadOptions(Client c, int item) { - if (c.getItemAssistant().playerHasItem(1929) - && c.getItemAssistant().playerHasItem(1933) - && item == c.breadID) { - c.getItemAssistant().deleteItem(1929, 1); - c.getItemAssistant().deleteItem(1933, 1); - c.getItemAssistant().addItem(1925, 1); - c.getItemAssistant().addItem(1931, 1); - c.getItemAssistant().addItem(item, 1); - c.getActionSender().sendMessage( - "You make the water and flour to make some " - + ItemAssistant.getItemName(item) + "."); - } - c.getPlayerAssistant().closeAllWindows(); - } - - public static void pastryCreation(Client c, int itemID1, int itemID2, - int giveItem, String message) { - if (c.getItemAssistant().playerHasItem(itemID1) - && c.getItemAssistant().playerHasItem(itemID2)) { - c.getItemAssistant().deleteItem(itemID1, 1); - c.getItemAssistant().deleteItem(itemID2, 1); - c.getItemAssistant().addItem(giveItem, 1); - if (message.equalsIgnoreCase("")) { - c.getActionSender().sendMessage( - "You mix the two ingredients and get an " - + ItemAssistant.getItemName(giveItem) + "."); - } else { - c.getActionSender().sendMessage(message); - } - } - } - - public static void cookingAddon(Client c, int itemID1, int itemID2, - int giveItem, int requiredLevel, int expGained) { - if (c.playerLevel[7] >= requiredLevel) { - if (c.getItemAssistant().playerHasItem(itemID1) - && c.getItemAssistant().playerHasItem(itemID2)) { - c.getItemAssistant().deleteItem(itemID1, 1); - c.getItemAssistant().deleteItem(itemID2, 1); - c.getItemAssistant().addItem(giveItem, 1); - c.getPlayerAssistant().addSkillXP(expGained, 7); - c.getActionSender().sendMessage( - "You create a " + ItemAssistant.getItemName(giveItem) - + "."); - } - } else { - c.getActionSender().sendMessage( - "You don't have the required level to make an " - + ItemAssistant.getItemName(giveItem)); - } - } - - private static void setCooking(Client c) { - c.playerIsCooking = true; - c.stopPlayerSkill = true; - } - - public static void resetCooking(Client c) { - c.playerIsCooking = false; - c.stopPlayerSkill = false; - } - - private static void viewCookInterface(Client c, int item) { - c.getPlayerAssistant().sendChatInterface(1743); - c.getPlayerAssistant().sendFrame246(13716, view190 ? 190 : 170, item); - c.getPlayerAssistant().sendFrame126(getLine(c) + "" + ItemAssistant.getItemName(item) + "", 13717); - } - - public static String getLine(Client c) { - return c.below459 ? "\\n\\n\\n\\n" : "\\n\\n\\n\\n\\n"; - } - - public static boolean startCooking(Client c, int itemId, int objectId) { - CookingItems item = forId(itemId); - if (item != null) { - if (c.playerLevel[c.playerCooking] < item.getLevelReq()) { - c.getPlayerAssistant().removeAllWindows(); - c.getDialogueHandler().sendStatement( - "You need a Cooking level of " + item.getLevelReq() - + " to cook this."); - c.nextChat = 0; - return false; - } - if (c.playerIsCooking) { - c.getPlayerAssistant().removeAllWindows(); - return false; - } - if (!COOKING) { - c.getActionSender().sendMessage( - "This skill is currently disabled."); - return false; - } - // save the id of the item and object for the cooking interface. - c.cookingItem = itemId; - c.cookingObject = objectId; - viewCookInterface(c, item.getRawItem()); - return true; - } - return false; - } - - private static boolean getSuccess(Client c, int burnBonus, int levelReq, - int stopBurn) { - if (c.playerLevel[c.playerCooking] >= stopBurn) { - return true; - } - double burn_chance = 55.0 - burnBonus; - double cook_level = c.playerLevel[c.playerCooking]; - double lev_needed = levelReq; - double burn_stop = stopBurn; - double multi_a = burn_stop - lev_needed; - double burn_dec = burn_chance / multi_a; - double multi_b = cook_level - lev_needed; - burn_chance -= multi_b * burn_dec; - double randNum = cookingRandom.nextDouble() * 100.0; - return burn_chance <= randNum; - } - - public static void cookItem(final Client c, final int itemId, - final int amount, final int objectId) { - final CookingItems item = forId(itemId); - - if (item != null) { - setCooking(c); - RandomEventHandler.addRandom(c); - c.getPlayerAssistant().removeAllWindows(); - c.doAmount = amount; - if (c.doAmount > c.getItemAssistant().getItemAmount(itemId)) { - c.doAmount = c.getItemAssistant().getItemAmount(itemId); - } - if (objectId > 0) { - c.startAnimation(objectId == 2732 ? 897 : 896); - } - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (!c.playerIsCooking) { - resetCooking(c); - container.stop(); - return; - } - if (!c.getItemAssistant().playerHasItem(item.getRawItem(), - 1)) { - c.getActionSender().sendMessage( - "You have run out of " + item.getName() - + " to cook."); - resetCooking(c); - container.stop(); - return; - } - - // if (c.playerEquipment[c.playerHands] != 775) - boolean burn = !getSuccess(c, 3, item.getLevelReq(), - item.getStopBurn()); - /* - * else burn = !getSuccess(c, 3, item.getLevelReq(), item - * .getStopBurnGloves()); - */ - c.getItemAssistant().deleteItem(item.getRawItem(), - c.getItemAssistant().getItemSlot(itemId), 1); - if (!burn) { - c.getActionSender().sendMessage( - "You successfully cook the " - + item.getName().toLowerCase() + "."); - if (Constants.SOUND) { - c.getActionSender().sendSound( - SoundList.COOK_ITEM, 100, 0); - } - c.getPlayerAssistant().addSkillXP(item.getXp(), - c.playerCooking); - c.getItemAssistant().addItem(item.getCookedItem(), 1); - } else { - c.getActionSender().sendMessage( - "Oops! You accidentally burnt the " - + item.getName().toLowerCase() + "!"); - c.getItemAssistant().addItem(item.getBurntItem(), 1); - } - c.doAmount--; - if (c.disconnected) { - container.stop(); - return; - } - if (objectId < 0) { - container.stop(); - return; - } - if (c.doAmount > 0) { - if (objectId > 0) { - c.startAnimation(objectId == 2732 ? 897 : 896); - } - } else if (c.doAmount == 0) { - resetCooking(c); - container.stop(); - } - } - - @Override - public void stop() { - - } - }, 4); - } - } -} +package com.rebotted.game.content.skills.cooking; + +import java.security.SecureRandom; +import com.rebotted.GameConstants; +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.content.music.sound.SoundList; +import com.rebotted.game.content.randomevents.RandomEventHandler; +import com.rebotted.game.content.skills.SkillHandler; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Player; + +public class Cooking extends SkillHandler { + + private static SecureRandom cookingRandom = new SecureRandom(); // The + // random + // factor + + private static enum CookingItems { + //raw, cooked, burnt, levelreq, exp, stopburn, stopburn w/gloves, name + SHRIMP(317, 315, 7954, 1, 30, 34, 30, "shrimp"), SARDINE(327, 325, 369, + 1, 40, 38, 38, "sardine"), HERRING(345, 347, 357, 5, 50, 41, + 41, "herring"), TROUT(335, 333, 343, 15, 70, 50, 50, "trout"), TUNA( + 359, 361, 367, 30, 100, 64, 63, "tuna"), ANCHOVIES(321, 319, + 323, 5, 45, 34, 34, "anchovies"), RAW_BEEF(2132, 2142, 2146, 1, + 30, 33, 33, "raw beef"), + RAW_RAT(2134, 2142, 2146, 1, 30, 33, 33, "raw rat meat"), + BURNT_MEAT(2142, 2146, 2146, 1, 1, 100, 100, "cooked meat"), + RAW_CHICKEN(2138, 2140, 2144, 1, 30, 33, 33, "raw chicken"), + RAW_BEAR_MEAT(2136, 2142, 2146, 1, 30, 33, 33, "raw bear meat"), + MACKERAL(353, 355, 357, 10, 60, 45, 45, "mackeral"), + SALMON(331, 329, 343, 25, 90, 58, 55, "salmon"), + UNCOOKED_BERRY_PIE(2321, 2325, 2329, 10, 78, 50, 50, "uncooked pie"), + PIKE( + 349, 351, 343, 20, 80, 59, 59, "pike"), KARAMBWAN(3142, 3144, + 3146, 1, 80, 20, 20, "karambwan"), LOBSTER(377, 379, 381, 40, + 120, 74, 68, "lobster"), SWORDFISH(371, 373, 375, 50, 140, 86, + 81, "swordfish"), MONKFISH(7944, 7946, 7948, 62, 150, 92, 90, + "monkfish"), SHARK(383, 385, 387, 76, 210, 100, 94, "shark"), MANTA_RAY( + 389, 391, 393, 91, 169, 100, 100, "manta ray"), + SEAWEED(401, 1781, 1781, 1, 1, 1, 1, "sea weed"), + CURRY(2009, 2011, 2013, 60, 280, 74, 74, "curry"); + + int rawItem, cookedItem, burntItem, levelReq, xp, stopBurn, + stopBurnGloves; + String name; + + private CookingItems(int rawItem, int cookedItem, int burntItem, + int levelReq, int xp, int stopBurn, int stopBurnGloves, + String name) { + this.rawItem = rawItem; + this.cookedItem = cookedItem; + this.burntItem = burntItem; + this.levelReq = levelReq; + this.xp = xp; + this.stopBurn = stopBurn; + this.name = name; + } + + private int getRawItem() { + return rawItem; + } + + private int getCookedItem() { + return cookedItem; + } + + private int getBurntItem() { + return burntItem; + } + + private int getLevelReq() { + return levelReq; + } + + private int getXp() { + return xp; + } + + private int getStopBurn() { + return stopBurn; + } + + @SuppressWarnings("unused") + // causes bugs + private int getStopBurnGloves() { + return stopBurnGloves; + } + + private String getName() { + return name; + } + } + + public static CookingItems forId(int itemId) { + for (CookingItems item : CookingItems.values()) { + if (itemId == item.getRawItem()) { + return item; + } + } + return null; + } + + public static void makeBreadOptions(Player c, int item) { + if (c.getItemAssistant().playerHasItem(1929) + && c.getItemAssistant().playerHasItem(1933) + && item == c.breadID) { + c.getItemAssistant().deleteItem(1929, 1); + c.getItemAssistant().deleteItem(1933, 1); + c.getItemAssistant().addItem(1925, 1); + c.getItemAssistant().addItem(1931, 1); + c.getItemAssistant().addItem(item, 1); + c.getPacketSender().sendMessage( + "You make the water and flour to make some " + + ItemAssistant.getItemName(item) + "."); + } + c.getPacketSender().closeAllWindows(); + } + + public static void pastryCreation(Player c, int itemID1, int itemID2, + int giveItem, String message) { + if (c.getItemAssistant().playerHasItem(itemID1) + && c.getItemAssistant().playerHasItem(itemID2)) { + c.getItemAssistant().deleteItem(itemID1, 1); + c.getItemAssistant().deleteItem(itemID2, 1); + c.getItemAssistant().addItem(giveItem, 1); + if (message.equalsIgnoreCase("")) { + c.getPacketSender().sendMessage( + "You mix the two ingredients and get an " + + ItemAssistant.getItemName(giveItem) + "."); + } else { + c.getPacketSender().sendMessage(message); + } + } + } + + public static void cookingAddon(Player c, int itemID1, int itemID2, + int giveItem, int requiredLevel, int expGained) { + if (c.playerLevel[7] >= requiredLevel) { + if (c.getItemAssistant().playerHasItem(itemID1) + && c.getItemAssistant().playerHasItem(itemID2)) { + c.getItemAssistant().deleteItem(itemID1, 1); + c.getItemAssistant().deleteItem(itemID2, 1); + c.getItemAssistant().addItem(giveItem, 1); + c.getPlayerAssistant().addSkillXP(expGained, 7); + c.getPacketSender().sendMessage( + "You create a " + ItemAssistant.getItemName(giveItem) + + "."); + } + } else { + c.getPacketSender().sendMessage( + "You don't have the required level to make an " + + ItemAssistant.getItemName(giveItem)); + } + } + + private static void setCooking(Player player) { + player.playerIsCooking = true; + player.stopPlayerSkill = true; + } + + public static void resetCooking(Player player) { + player.playerIsCooking = false; + player.stopPlayerSkill = false; + } + + private static void viewCookInterface(Player c, int item) { + c.getPacketSender().sendChatInterface(1743); + c.getPacketSender().sendFrame246(13716, view190 ? 190 : 170, item); + c.getPacketSender().sendFrame126(getLine(c) + "" + ItemAssistant.getItemName(item) + "", 13717); + } + + public static String getLine(Player c) { + return c.below459 ? "\\n\\n\\n\\n" : "\\n\\n\\n\\n\\n"; + } + + public static boolean startCooking(Player c, int itemId, int objectId) { + CookingItems item = forId(itemId); + if (item != null) { + if (c.playerLevel[c.playerCooking] < item.getLevelReq()) { + c.getPacketSender().closeAllWindows(); + c.getDialogueHandler().sendStatement( + "You need a Cooking level of " + item.getLevelReq() + + " to cook this."); + c.nextChat = 0; + return false; + } + if (c.playerIsCooking) { + c.getPacketSender().closeAllWindows(); + return false; + } + if (!COOKING) { + c.getPacketSender().sendMessage( + "This skill is currently disabled."); + return false; + } + // save the id of the item and object for the cooking interface. + c.cookingItem = itemId; + c.cookingObject = objectId; + viewCookInterface(c, item.getRawItem()); + return true; + } + return false; + } + + private static boolean getSuccess(Player c, int burnBonus, int levelReq, + int stopBurn) { + if (c.playerLevel[c.playerCooking] >= stopBurn) { + return true; + } + double burn_chance = 55.0 - burnBonus; + double cook_level = c.playerLevel[c.playerCooking]; + double lev_needed = levelReq; + double burn_stop = stopBurn; + double multi_a = burn_stop - lev_needed; + double burn_dec = burn_chance / multi_a; + double multi_b = cook_level - lev_needed; + burn_chance -= multi_b * burn_dec; + double randNum = cookingRandom.nextDouble() * 100.0; + return burn_chance <= randNum; + } + + public static void cookItem(final Player player, final int itemId, + final int amount, final int objectId) { + final CookingItems item = forId(itemId); + + if (item != null) { + setCooking(player); + RandomEventHandler.addRandom(player); + player.getPacketSender().closeAllWindows(); + player.doAmount = amount; + if (player.doAmount > player.getItemAssistant().getItemAmount(itemId)) { + player.doAmount = player.getItemAssistant().getItemAmount(itemId); + } + if (objectId > 0) { + player.startAnimation(objectId == 2732 ? 897 : 896); + } + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (!player.playerIsCooking) { + resetCooking(player); + container.stop(); + return; + } + if (!player.getItemAssistant().playerHasItem(item.getRawItem(), + 1)) { + player.getPacketSender().sendMessage( + "You have run out of " + item.getName() + + " to cook."); + resetCooking(player); + container.stop(); + return; + } + + // if (c.playerEquipment[c.playerHands] != 775) + boolean burn = !getSuccess(player, 3, item.getLevelReq(), + item.getStopBurn()); + /* + * else burn = !getSuccess(c, 3, item.getLevelReq(), item + * .getStopBurnGloves()); + */ + player.getItemAssistant().deleteItem(item.getRawItem(), + player.getItemAssistant().getItemSlot(itemId), 1); + if (!burn) { + player.getPacketSender().sendMessage( + "You successfully cook the " + + item.getName().toLowerCase() + "."); + if (GameConstants.SOUND) { + player.getPacketSender().sendSound( + SoundList.COOK_ITEM, 100, 0); + } + player.getPlayerAssistant().addSkillXP(item.getXp(), + player.playerCooking); + player.getItemAssistant().addItem(item.getCookedItem(), 1); + } else { + player.getPacketSender().sendMessage( + "Oops! You accidentally burnt the " + + item.getName().toLowerCase() + "!"); + player.getItemAssistant().addItem(item.getBurntItem(), 1); + } + player.doAmount--; + if (player.disconnected) { + container.stop(); + return; + } + if (objectId < 0) { + container.stop(); + return; + } + if (player.doAmount > 0) { + if (objectId > 0) { + player.startAnimation(objectId == 2732 ? 897 : 896); + } + } else if (player.doAmount == 0) { + resetCooking(player); + container.stop(); + } + } + + @Override + public void stop() { + + } + }, 4); + } + } +} diff --git a/2006Redone Server/src/redone/game/content/skills/cooking/CookingTutorialIsland.java b/2006Redone Server/src/com/rebotted/game/content/skills/cooking/CookingTutorialIsland.java similarity index 68% rename from 2006Redone Server/src/redone/game/content/skills/cooking/CookingTutorialIsland.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/cooking/CookingTutorialIsland.java index ceeddc42..f0ca44ae 100644 --- a/2006Redone Server/src/redone/game/content/skills/cooking/CookingTutorialIsland.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/cooking/CookingTutorialIsland.java @@ -1,183 +1,183 @@ -package redone.game.content.skills.cooking; - -import redone.Constants; -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.content.music.sound.SoundList; -import redone.game.content.skills.SkillHandler; -import redone.game.items.ItemAssistant; -import redone.game.players.Client; -import redone.util.Misc; - -public class CookingTutorialIsland extends SkillHandler { - - public static void cookThisFood(Client p, int i, int object) { - switch (i) { - case 317: - cookFish(p, i, 30, 1, 323, 315, object); - break; - default: - p.getActionSender().sendMessage("Nothing interesting happens."); - break; - } - } - - private static void cookFish(Client c, int itemID, int xpRecieved, - int levelRequired, int burntFish, int cookedFish, int object) { - if (!COOKING) { - c.getActionSender().sendMessage( - "Cooking is currently disabled."); - return; - } - if (!hasRequiredLevel(c, 7, levelRequired, "cooking", "cook this")) { - return; - } - int chance = c.playerLevel[7]; - if (c.playerEquipment[c.playerHands] == 775) { - chance = c.playerLevel[7] + 8; - } - if (chance <= 0) { - chance = Misc.random(5); - } - c.playerSkillProp[7][0] = itemID; - c.playerSkillProp[7][1] = xpRecieved; - c.playerSkillProp[7][2] = levelRequired; - c.playerSkillProp[7][3] = burntFish; - c.playerSkillProp[7][4] = cookedFish; - c.playerSkillProp[7][5] = object; - c.playerSkillProp[7][6] = chance; - c.stopPlayerSkill = false; - int item = c.getItemAssistant().getItemAmount(c.playerSkillProp[7][0]); - if (item == 1) { - c.doAmount = 1; - cookTutFish(c); - return; - } - viewCookInterface(c, itemID); - } - - public static void getAmount(Client c, int amount) { - int item = c.getItemAssistant().getItemAmount(c.playerSkillProp[7][0]); - if (amount > item) { - amount = item; - } - c.doAmount = amount; - cookTutFish(c); - } - - public static void resetCooking(Client c) { - c.playerSkilling[7] = false; - c.stopPlayerSkill = false; - for (int i = 0; i < 6; i++) { - c.playerSkillProp[7][i] = -1; - } - } - - private static void viewCookInterface(Client c, int item) { - c.getPlayerAssistant().sendChatInterface(1743); - c.getPlayerAssistant().sendFrame246(13716, 190, item); - c.getPlayerAssistant().sendFrame126( - "" + ItemAssistant.getItemName(item) + "", 13717); - } - - private static void cookTutFish(final Client c) { - if (c.playerSkilling[7]) { - return; - } - if (c.tutorialProgress == 6) { - c.playerSkilling[7] = true; - c.stopPlayerSkill = true; - c.getPlayerAssistant().removeAllWindows(); - if (c.playerSkillProp[7][5] > 0) { - // c.startAnimation(c.playerSkillProp[7][5] == 2732 ? 897 : - // 896); - c.startAnimation(c.playerSkillProp[7][5] == 2732 ? 897 - : c.playerSkillProp[7][5] == 12269 ? 897 : 896); - if (Constants.SOUND) { - c.getActionSender().sendSound(SoundList.COOK_ITEM, 100, - 0); - } - - } - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - - @Override - public void execute(CycleEventContainer container) { - c.getItemAssistant().deleteItem( - c.playerSkillProp[7][0], - c.getItemAssistant().getItemSlot( - c.playerSkillProp[7][0]), 1); - if (c.Cookstage1 == 1) { - c.getActionSender().chatbox(6180); - c.getDialogueHandler() - .chatboxText( - c, - "You have just burned your first shrimp. This is normal. As you", - "get more experience in Cooking, you will burn stuff less often.", - "Let's try cooking without burning it this time. First catch some", - "more shrimp then use them on a fire.", - "Burning your shrimp."); - c.getActionSender().chatbox(6179); - c.Cookstage1 = 0; - c.getItemAssistant() - .addItem(c.playerSkillProp[7][3], 1); - } else { - c.getActionSender().chatbox(6180); - c.getDialogueHandler() - .chatboxText( - c, - "If you'd like a recap on anything you've learnt so far, speak to", - "the Survival Expert. You can now move on to the next", - "instructor. Click on the gate shown and follow the path.", - "Remember, you can move the camera with the arrow keys.", - "Well done, you've just cooked your first RuneScape meal"); - c.getActionSender().chatbox(6179); - c.getActionSender().createArrow(3089, 3092, - c.getH(), 2); - c.getPlayerAssistant().addSkillXP( - c.playerSkillProp[7][1], 7); - c.getItemAssistant() - .addItem(c.playerSkillProp[7][4], 1); - c.tutorialProgress = 7; - } - deleteTime(c); - if (!c.getItemAssistant().playerHasItem( - c.playerSkillProp[7][0], 1) - || c.doAmount <= 0) { - container.stop(); - } - if (!c.stopPlayerSkill) { - container.stop(); - } - } - - @Override - public void stop() { - resetCooking(c); - } - }, 4); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - - @Override - public void execute(CycleEventContainer container) { - if (c.playerSkillProp[7][5] > 0) { - // c.getPlayerAssistant().sendSound(357, 100, 1); // - // cook sound - c.startAnimation(c.playerSkillProp[7][5] == 2732 ? 897 - : 896); - } - if (!c.stopPlayerSkill) { - container.stop(); - } - } - - @Override - public void stop() { - - } - }, 4); - return; - } - } -} +package com.rebotted.game.content.skills.cooking; + +import com.rebotted.GameConstants; +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.content.music.sound.SoundList; +import com.rebotted.game.content.skills.SkillHandler; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +public class CookingTutorialIsland extends SkillHandler { + + public static void cookThisFood(Player p, int i, int object) { + switch (i) { + case 317: + cookFish(p, i, 30, 1, 323, 315, object); + break; + default: + p.getPacketSender().sendMessage("Nothing interesting happens."); + break; + } + } + + private static void cookFish(Player c, int itemID, int xpRecieved, + int levelRequired, int burntFish, int cookedFish, int object) { + if (!COOKING) { + c.getPacketSender().sendMessage( + "Cooking is currently disabled."); + return; + } + if (!hasRequiredLevel(c, 7, levelRequired, "cooking", "cook this")) { + return; + } + int chance = c.playerLevel[7]; + if (c.playerEquipment[c.playerHands] == 775) { + chance = c.playerLevel[7] + 8; + } + if (chance <= 0) { + chance = Misc.random(5); + } + c.playerSkillProp[7][0] = itemID; + c.playerSkillProp[7][1] = xpRecieved; + c.playerSkillProp[7][2] = levelRequired; + c.playerSkillProp[7][3] = burntFish; + c.playerSkillProp[7][4] = cookedFish; + c.playerSkillProp[7][5] = object; + c.playerSkillProp[7][6] = chance; + c.stopPlayerSkill = false; + int item = c.getItemAssistant().getItemAmount(c.playerSkillProp[7][0]); + if (item == 1) { + c.doAmount = 1; + cookTutFish(c); + return; + } + viewCookInterface(c, itemID); + } + + public static void getAmount(Player player, int amount) { + int item = player.getItemAssistant().getItemAmount(player.playerSkillProp[7][0]); + if (amount > item) { + amount = item; + } + player.doAmount = amount; + cookTutFish(player); + } + + public static void resetCooking(Player c) { + c.playerSkilling[7] = false; + c.stopPlayerSkill = false; + for (int i = 0; i < 6; i++) { + c.playerSkillProp[7][i] = -1; + } + } + + private static void viewCookInterface(Player c, int item) { + c.getPacketSender().sendChatInterface(1743); + c.getPacketSender().sendFrame246(13716, 190, item); + c.getPacketSender().sendFrame126( + "" + ItemAssistant.getItemName(item) + "", 13717); + } + + private static void cookTutFish(final Player c) { + if (c.playerSkilling[7]) { + return; + } + if (c.tutorialProgress == 6) { + c.playerSkilling[7] = true; + c.stopPlayerSkill = true; + c.getPacketSender().closeAllWindows(); + if (c.playerSkillProp[7][5] > 0) { + // c.startAnimation(c.playerSkillProp[7][5] == 2732 ? 897 : + // 896); + c.startAnimation(c.playerSkillProp[7][5] == 2732 ? 897 + : c.playerSkillProp[7][5] == 12269 ? 897 : 896); + if (GameConstants.SOUND) { + c.getPacketSender().sendSound(SoundList.COOK_ITEM, 100, + 0); + } + + } + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + + @Override + public void execute(CycleEventContainer container) { + c.getItemAssistant().deleteItem( + c.playerSkillProp[7][0], + c.getItemAssistant().getItemSlot( + c.playerSkillProp[7][0]), 1); + if (c.cookStage1 == 1) { + c.getPacketSender().chatbox(6180); + c.getDialogueHandler() + .chatboxText( + c, + "You have just burned your first shrimp. This is normal. As you", + "get more experience in Cooking, you will burn stuff less often.", + "Let's try cooking without burning it this time. First catch some", + "more shrimp then use them on a fire.", + "Burning your shrimp."); + c.getPacketSender().chatbox(6179); + c.cookStage1 = 0; + c.getItemAssistant() + .addItem(c.playerSkillProp[7][3], 1); + } else { + c.getPacketSender().chatbox(6180); + c.getDialogueHandler() + .chatboxText( + c, + "If you'd like a recap on anything you've learnt so far, speak to", + "the Survival Expert. You can now move on to the next", + "instructor. Click on the gate shown and follow the path.", + "Remember, you can move the camera with the arrow keys.", + "Well done, you've just cooked your first RuneScape meal"); + c.getPacketSender().chatbox(6179); + c.getPacketSender().createArrow(3089, 3092, + c.getH(), 2); + c.getPlayerAssistant().addSkillXP( + c.playerSkillProp[7][1], 7); + c.getItemAssistant() + .addItem(c.playerSkillProp[7][4], 1); + c.tutorialProgress = 7; + } + deleteTime(c); + if (!c.getItemAssistant().playerHasItem( + c.playerSkillProp[7][0], 1) + || c.doAmount <= 0) { + container.stop(); + } + if (!c.stopPlayerSkill) { + container.stop(); + } + } + + @Override + public void stop() { + resetCooking(c); + } + }, 4); + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + + @Override + public void execute(CycleEventContainer container) { + if (c.playerSkillProp[7][5] > 0) { + // c.getPacketSender().sendSound(357, 100, 1); // + // cook sound + c.startAnimation(c.playerSkillProp[7][5] == 2732 ? 897 + : 896); + } + if (!c.stopPlayerSkill) { + container.stop(); + } + } + + @Override + public void stop() { + + } + }, 4); + return; + } + } +} diff --git a/2006Redone Server/src/redone/game/content/skills/cooking/Potatoes.java b/2006Redone Server/src/com/rebotted/game/content/skills/cooking/Potatoes.java similarity index 80% rename from 2006Redone Server/src/redone/game/content/skills/cooking/Potatoes.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/cooking/Potatoes.java index 1ee6682b..5f1e5189 100644 --- a/2006Redone Server/src/redone/game/content/skills/cooking/Potatoes.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/cooking/Potatoes.java @@ -1,118 +1,117 @@ -package redone.game.content.skills.cooking; - -import java.util.HashMap; -import java.util.Map; - -import redone.game.content.randomevents.RandomEventHandler; -import redone.game.content.skills.SkillHandler; -import redone.game.players.Client; - -public class Potatoes extends SkillHandler { - - Client c; - - public Potatoes(Client c) { - this.c = c; - } - - public enum PotatoMaking { - // first item, new item, xp, level required - // BUTTERED(6701, 6703, 6697, 95, 39), - CHILLI(7062, 7054, 165, 41), CHEESE(1985, 6705, 199, 47), EGG(7064, - 7056, 195, 51), MUSHROOM(7066, 7058, 27, 64), TUNA(7068, 7060, - 309, 68); - - /** - * Seperate integers for the id's. - */ - private int newPotatoID, ingredient, XP, levelReq; - - /** - * @param ingredient - * @param newPotatoID - * @param XP - * @param levelReq - */ - private PotatoMaking(int ingredient, int newPotatoID, int XP, - int levelReq) { - // this.potatoID = potatoID; - this.ingredient = ingredient; - this.newPotatoID = newPotatoID; - this.levelReq = levelReq; - this.XP = XP; - } - - public int getNewPotatoID() { - return newPotatoID; - } - - public int getIngredient() { - return ingredient; - } - - public int getReq() { - return levelReq; - } - - public int getXP() { - return XP; - } - - private static final Map potato = new HashMap(); - - public static PotatoMaking forId(int id) { - return potato.get(id); - } - - static { - for (PotatoMaking p : PotatoMaking.values()) { - potato.put(p.getIngredient(), p); - } - } - } - - /** - * Id used with one or the other - * - * @param id1 - * @param id2 - */ - public void handlePotato(int id1, int id2) { - makePotato(id1 == 6703 ? id2 : id1); - } - - /** - * Creating the actual item and replacing the id's - * - * @param id - * @return - */ - public boolean makePotato(int id) { - PotatoMaking potato = PotatoMaking.forId(id); - if (potato == null) { - return false; - } - if (!COOKING) { - c.getActionSender().sendMessage( - "This skill is currently disabled."); - return false; - } - if (c.getItemAssistant().playerHasItem(potato.getIngredient(), 1)) { - if (c.playerLevel[c.playerCooking] >= potato.getReq()) { - c.getItemAssistant().deleteItem(potato.getIngredient(), 1); - c.getItemAssistant().deleteItem(6703, 1); - c.getActionSender().sendMessage("You put the topping on."); - c.getItemAssistant().addItem(potato.getNewPotatoID(), 1); - c.getPlayerAssistant().addSkillXP( - potato.getXP() * COOKING_EXPERIENCE, c.playerCooking); - RandomEventHandler.addRandom(c); - } else { - c.getActionSender().sendMessage( - "You need a cooking level of " + potato.getReq() - + " to make this potato."); - } - } - return false; - } - -} +package com.rebotted.game.content.skills.cooking; + +import java.util.HashMap; +import java.util.Map; +import com.rebotted.game.content.randomevents.RandomEventHandler; +import com.rebotted.game.content.skills.SkillHandler; +import com.rebotted.game.players.Player; + +public class Potatoes extends SkillHandler { + + Player c; + + public Potatoes(Player player) { + this.c = player; + } + + public enum PotatoMaking { + // first item, new item, xp, level required + // BUTTERED(6701, 6703, 6697, 95, 39), + CHILLI(7062, 7054, 165, 41), CHEESE(1985, 6705, 199, 47), EGG(7064, + 7056, 195, 51), MUSHROOM(7066, 7058, 27, 64), TUNA(7068, 7060, + 309, 68); + + /** + * Seperate integers for the id's. + */ + private int newPotatoID, ingredient, XP, levelReq; + + /** + * @param ingredient + * @param newPotatoID + * @param XP + * @param levelReq + */ + private PotatoMaking(int ingredient, int newPotatoID, int XP, + int levelReq) { + // this.potatoID = potatoID; + this.ingredient = ingredient; + this.newPotatoID = newPotatoID; + this.levelReq = levelReq; + this.XP = XP; + } + + public int getNewPotatoID() { + return newPotatoID; + } + + public int getIngredient() { + return ingredient; + } + + public int getReq() { + return levelReq; + } + + public int getXP() { + return XP; + } + + private static final Map potato = new HashMap(); + + public static PotatoMaking forId(int id) { + return potato.get(id); + } + + static { + for (PotatoMaking p : PotatoMaking.values()) { + potato.put(p.getIngredient(), p); + } + } + } + + /** + * Id used with one or the other + * + * @param id1 + * @param id2 + */ + public void handlePotato(int id1, int id2) { + makePotato(id1 == 6703 ? id2 : id1); + } + + /** + * Creating the actual item and replacing the id's + * + * @param id + * @return + */ + public boolean makePotato(int id) { + PotatoMaking potato = PotatoMaking.forId(id); + if (potato == null) { + return false; + } + if (!COOKING) { + c.getPacketSender().sendMessage( + "This skill is currently disabled."); + return false; + } + if (c.getItemAssistant().playerHasItem(potato.getIngredient(), 1)) { + if (c.playerLevel[c.playerCooking] >= potato.getReq()) { + c.getItemAssistant().deleteItem(potato.getIngredient(), 1); + c.getItemAssistant().deleteItem(6703, 1); + c.getPacketSender().sendMessage("You put the topping on."); + c.getItemAssistant().addItem(potato.getNewPotatoID(), 1); + c.getPlayerAssistant().addSkillXP( + potato.getXP(), c.playerCooking); + RandomEventHandler.addRandom(c); + } else { + c.getPacketSender().sendMessage( + "You need a cooking level of " + potato.getReq() + + " to make this potato."); + } + } + return false; + } + +} diff --git a/2006Redone Server/src/redone/game/content/skills/core/Fishing.java b/2006Redone Server/src/com/rebotted/game/content/skills/core/Fishing.java similarity index 83% rename from 2006Redone Server/src/redone/game/content/skills/core/Fishing.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/core/Fishing.java index 14337175..ce1a2afc 100644 --- a/2006Redone Server/src/redone/game/content/skills/core/Fishing.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/core/Fishing.java @@ -1,558 +1,545 @@ -package redone.game.content.skills.core; - -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.content.randomevents.RandomEventHandler; -import redone.game.content.randomevents.RiverTroll; -import redone.game.content.skills.SkillHandler; -import redone.game.items.ItemAssistant; -import redone.game.players.Client; -import redone.game.players.antimacro.AntiBotting; -import redone.util.Misc; - - -public class Fishing extends SkillHandler { - - public static void randomEvents(Client client) { - if (Misc.random(350) == 5) { - RiverTroll.spawnRiverTroll(client); - } - if (Misc.random(350) == 0 && RiverTroll.hasRiverTroll == false) { - AntiBotting.botCheckInterface(client); - } - if (RiverTroll.hasRiverTroll == false) { - RandomEventHandler.addRandom(client); - } - } - - /** - * Resets the Event according to the ID. id = 10 (According to skill.) - */ - protected static int eventId = 10; - - public static int[][] data = { - // dataid, levelreq, item needed, bait, item recieved, exp, - // animation, - // secondfish, levelreq, secondexp - { 1, 1, 303, -1, 317, 10, 621, 321, 15, 40 }, // SHRIMP + ANCHOVIES - { 2, 5, 307, 313, 327, 20, 622, 345, 10, 30 }, // SARDINE + HERRING - { 3, 16, 305, -1, 353, 20, 620, -1, -1, -1 }, // MACKEREL - { 4, 20, 309, 314, 335, 50, 622, 331, 30, 70 }, // TROUT - { 5, 23, 305, -1, 341, 45, 619, 363, 46, 100 }, // BASS + COD - { 6, 25, 307, 313, 349, 60, 622, -1, -1, -1 }, // PIKE - { 7, 35, 311, -1, 359, 80, 618, 371, 50, 100 }, // TUNA + SWORDIE - { 8, 40, 301, -1, 377, 90, 619, -1, -1, -1 }, // LOBSTER - { 9, 62, 303, -1, 7944, 120, 621, -1, -1, -1 }, // Monkfish - { 10, 76, 311, -1, 383, 110, 618, -1, -1, -1 } // Shark - }; - - private static String[][] messages = { { "You cast out your net." }, // SHRIMP - // + - // ANCHOVIES - { "You cast out your line." }, // SARDINE + HERRING - { "You start harpooning fish." }, // TUNA + SWORDIE - { "You attempt to catch a lobster." }, // LOBSTER - }; - - private static void attemptdata(final Client c, final int npcId) { - if (!FISHING) { - c.getActionSender().sendMessage(c.disabled()); - return; - } - if (c.isBotting == true) { - c.getActionSender().sendMessage("You can't fish right now!"); - return; - } - if (c.playerSkillProp[10][4] > 0) { - c.playerSkilling[10] = false; - return; - } - if (!noInventorySpace(c, "fishing")) { - return; - } - resetFishing(c); - for (int i = 0; i < data.length; i++) { - if (npcId == data[i][0]) { - if (c.playerLevel[c.playerFishing] < data[i][1]) { - c.getDialogueHandler().sendStatement( - "You need a fishing level of at least " - + data[i][1] - + " in order to fish at this spot."); - return; - } - if (!hasFishingEquipment(c, data[i][2])) { - return; - } - if (data[i][3] > 0) { - if (!c.getItemAssistant().playerHasItem(data[i][3])) { - c.getDialogueHandler().sendStatement( - "You need more " - + ItemAssistant.getItemName(data[i][3]) - .toLowerCase().toLowerCase() - + " in order to fish at this spot."); - return; - } - } - c.playerSkillProp[10][0] = data[i][6]; // ANIM - c.playerSkillProp[10][1] = data[i][4]; // FISH - c.playerSkillProp[10][2] = data[i][5]; // XP - c.playerSkillProp[10][3] = data[i][3]; // BAIT - c.playerSkillProp[10][4] = data[i][2]; // EQUIP - c.playerSkillProp[10][5] = data[i][7]; // sFish - c.playerSkillProp[10][6] = data[i][8]; // sLvl - c.playerSkillProp[10][7] = data[i][4]; // FISH - c.playerSkillProp[10][8] = data[i][9]; // sXP - c.playerSkillProp[10][9] = Misc.random(1) == 0 ? 7 : 5; - c.playerSkillProp[10][10] = data[i][0]; // INDEX - - if (c.playerSkilling[10]) { - return; - } - c.playerSkilling[10] = true; - if (c.tutorialProgress == 6) { // if tutorial prog = 6 - c.startAnimation(c.playerSkillProp[10][0]); - c.stopPlayerSkill = true; - c.getActionSender().drawHeadicon(0, 0, 0, 0); // deletes - // headicon - c.getActionSender().chatbox(6180); - c.getDialogueHandler() - .chatboxText( - c, - "This should only take a few seconds.", - "As you gain Fishing experience you'll find that there are many", - "types of fish and many ways to catch them.", - "", "Please wait"); - c.getActionSender().chatbox(6179); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - - if (c.playerSkillProp[10][5] > 0) { - if (c.playerLevel[c.playerFishing] >= c.playerSkillProp[10][6]) { - c.playerSkillProp[10][1] = c.playerSkillProp[10][Misc - .random(1) == 0 ? 7 : 5]; - } - } - - if (!c.stopPlayerSkill) { - container.stop(); - } - if (!c.playerSkilling[10]) { - container.stop(); - } - - if (c.playerSkillProp[10][1] > 0) { - c.startAnimation(c.playerSkillProp[10][0]); - } - - } - - @Override - public void stop() { - resetFishing(c); - } - }, 5); - CycleEventHandler.getSingleton().addEvent(c, - new CycleEvent() { - - @Override - public void execute( - CycleEventContainer container) { - if (c.playerSkillProp[10][5] > 0) { - if (c.playerLevel[c.playerFishing] >= c.playerSkillProp[10][6]) { - c.playerSkillProp[10][1] = c.playerSkillProp[10][Misc - .random(1) == 0 ? 7 : 5]; - } - } - if (c.playerSkillProp[10][2] > 0) { - c.getPlayerAssistant().addSkillXP( - c.playerSkillProp[10][2], - c.playerFishing); - } - if (c.playerSkillProp[10][1] > 0) { - c.getItemAssistant().addItem(c.playerSkillProp[10][1], 1); - c.startAnimation(c.playerSkillProp[10][0]); - c.getDialogueHandler().sendDialogues(3019, -1); - container.stop(); - } - if (!noInventorySpace(c, "fishing")) { - container.stop(); - } - if (!c.stopPlayerSkill) { - container.stop(); - } - if (!c.playerSkilling[10]) { - container.stop(); - } - } - - @Override - public void stop() { - resetFishing(c); - } - }, getTimer(c, npcId) + 5 + playerFishingLevel(c)); - return; - } - - // end of tutorial island fishing - - c.getActionSender().sendMessage("" + messages(c)); - // c.getPA().sendSound(379, 100, 1); // fishing - c.startAnimation(c.playerSkillProp[10][0]); - c.stopPlayerSkill = true; - CycleEventHandler.getSingleton().addEvent(eventId, c, - new CycleEvent() { - - @Override - public void execute(CycleEventContainer container) { - if (c.playerSkillProp[10][3] > 0) { - - if (!c.getItemAssistant().playerHasItem( - c.playerSkillProp[10][3])) { - c.getActionSender() - .sendMessage( - "You don't have any " - + ItemAssistant - .getItemName(c.playerSkillProp[10][3]) - + " left!"); - c.getActionSender() - .sendMessage( - "You need " - + ItemAssistant - .getItemName(c.playerSkillProp[10][3]) - + " to fish here."); - resetFishing(c); - container.stop(); - } - } - if (c.playerSkillProp[10][5] > 0) { - if (c.playerLevel[c.playerFishing] >= c.playerSkillProp[10][6]) { - c.playerSkillProp[10][1] = c.playerSkillProp[10][Misc - .random(1) == 0 ? 7 : 5]; - } - } - if (!hasFishingEquipment(c, - c.playerSkillProp[10][4])) { - resetFishing(c); - container.stop(); - } - if (!noInventorySpace(c, "fishing")) { - resetFishing(c); - container.stop(); - } - if (!c.stopPlayerSkill) { - container.stop(); - } - if (!c.playerSkilling[10]) { - resetFishing(c); - container.stop(); - } - if (c.playerSkillProp[10][1] > 0) { - c.startAnimation(c.playerSkillProp[10][0]); - // c.getPA().sendSound(379, 100, 1); // - // fishing - } - - } - - @Override - public void stop() { - } - }, 5); - CycleEventHandler.getSingleton().addEvent(eventId, c, - new CycleEvent() { - - @Override - public void execute(CycleEventContainer container) { - if (c.playerSkillProp[10][5] > 0) { - if (c.playerLevel[c.playerFishing] >= c.playerSkillProp[10][6]) { - c.playerSkillProp[10][1] = c.playerSkillProp[10][Misc - .random(1) == 0 ? 7 : 5]; - } - } - if (c.playerSkillProp[10][1] > 0) { - c.getActionSender() - .sendMessage( - "You catch " - + (c.playerSkillProp[10][1] == 321 - || c.playerSkillProp[10][1] == 317 - || c.playerSkillProp[10][1] == 7944 ? "some " - : "a ") - + ItemAssistant - .getItemName( - c.playerSkillProp[10][1]) - .toLowerCase() - .replace( - "raw ", - "") - + "."); - } - if (c.playerSkillProp[10][1] > 0 && c.randomEventsEnabled) { - randomEvents(c); - } - if (c.isBotting == true) { - c.getActionSender().sendMessage("You can't get any items, until you confirm you are not a bot."); - c.getActionSender().sendMessage("If you need to relog you can do so."); - container.stop(); - } - if (c.playerSkillProp[10][1] > 0) { - c.getItemAssistant().deleteItem(c.playerSkillProp[10][3], c.getItemAssistant().getItemSlot(c.playerSkillProp[10][3]), 1); - c.getItemAssistant().addItem(c.playerSkillProp[10][1], 1); - c.startAnimation(c.playerSkillProp[10][0]); - } - if (c.playerSkillProp[10][5] > 0 - && c.playerLevel[c.playerFishing] >= c.playerSkillProp[10][6]) { - c.getPlayerAssistant().addSkillXP( - c.playerSkillProp[10][8], - c.playerFishing); - } else if (c.playerSkillProp[10][7] > 0) { - c.getPlayerAssistant().addSkillXP( - c.playerSkillProp[10][2], - c.playerFishing); - } - if (c.playerSkillProp[10][3] > 0) { - if (!c.getItemAssistant().playerHasItem( - c.playerSkillProp[10][3])) { - c.getDialogueHandler() - .sendStatement( - "You have run out of " - + ItemAssistant - .getItemName( - c.playerSkillProp[10][3]) - .toLowerCase() - .toLowerCase() - + "."); - // c.getPacketDispatcher().sendMessage("You don't have any "+ - // ItemAssistant.getItemName(c.playerSkillProp[10][3]) - // +" left!"); - // c.getPacketDispatcher().sendMessage("You need "+ - // ItemAssistant.getItemName(c.playerSkillProp[10][3]) - // +" to fish here."); - container.stop(); - } - } - if (!hasFishingEquipment(c, - c.playerSkillProp[10][4])) { - resetFishing(c); - container.stop(); - } - if (!noInventorySpace(c, "fishing")) { - resetFishing(c); - container.stop(); - } - if (!c.stopPlayerSkill) { - container.stop(); - } - if (!c.playerSkilling[10]) { - resetFishing(c); - container.stop(); - } - } - - @Override - public void stop() { - } - }, getTimer(c, npcId) + 5 + playerFishingLevel(c)); - } - } - } - - public static boolean hasFishingEquipment(Client c, int equipment) { - if (!c.getItemAssistant().playerHasItem(equipment)) { - if (equipment == 311) { - if (!c.getItemAssistant().playerHasItem(311) - && !c.getItemAssistant().playerHasItem(10129) - && c.playerEquipment[3] != 10129) { - c.getActionSender().sendMessage( - "You need a " - + ItemAssistant.getItemName(equipment) - .toLowerCase() + " to fish here."); - resetFishing(c); - return false; - } - } else { - resetFishing(c); - c.getActionSender().sendMessage( - "You need a " + ItemAssistant.getItemName(equipment) - + " to fish here."); - return false; - } - } - return true; - } - - public static void resetFishing(Client c) { - c.startAnimation(65535); - c.stopPlayerSkill = false; - c.playerSkilling[10] = false; - c.fishingWhirlPool = false; - stopEvents(c, eventId); - for (int i = 0; i < 11; i++) { - c.playerSkillProp[10][i] = -1; - } - } - - public static String messages(Client c) { - if (c.playerSkillProp[10][10] == 1 || c.playerSkillProp[10][10] == 9) { - // etc - return messages[0][0]; - } - - if (c.playerSkillProp[10][10] == 2 || c.playerSkillProp[10][10] == 3 - || c.playerSkillProp[10][10] == 4 - || c.playerSkillProp[10][10] == 5 - || c.playerSkillProp[10][10] == 6) { - return messages[1][0]; - } - - if (c.playerSkillProp[10][10] == 7 || c.playerSkillProp[10][10] == 10) { - return messages[2][0]; - } - - if (c.playerSkillProp[10][10] == 8) { - return messages[3][0]; - } - - return null; - } - - private static int playerFishingLevel(Client c) { - return 10 - (int) Math.floor(c.playerLevel[c.playerFishing] / 10); - } - - private final static int getTimer(Client c, int npcId) { - switch (npcId) { - case 1: - return 2; - case 2: - return 3; - case 3: - return 4; - case 4: - return 4; - case 5: - return 4; - case 6: - return 5; - case 7: - return 5; - case 8: - return 5; - case 9: - return 8; - case 10: - return 12; - case 11: - return 13; - case 12: - return 13; - default: - return -1; - } - } - - public static void fishingNPC(Client c, int i, int l) { - switch (i) { - case 1: - switch (l) { - case 319: - case 329: - case 323: - case 325: - case 326: - case 327: - case 330: - case 332: - case 404: - case 316: // NET + BAIT - Fishing.attemptdata(c, 1); - break; - case 334: - case 313: // NET + HARPOON - Fishing.attemptdata(c, 3); - break; - case 322: // NET + HARPOON - Fishing.attemptdata(c, 5); - break; - - case 309: // LURE - case 310: - case 403: - case 311: - case 314: - case 315: - case 317: - case 318: - case 328: - case 331: - Fishing.attemptdata(c, 4); - break; - case 1191: - Fishing.attemptdata(c, 9); - break; - case 312: - case 321: - case 405: - case 324: // CAGE + HARPOON - Fishing.attemptdata(c, 8); - break; - } - break; - case 2: - switch (l) { - case 326: - case 327: - case 330: - case 332: - case 404: - case 316: // BAIT + NET - Fishing.attemptdata(c, 2); - break; - case 319: - case 323: - case 325: // BAIT + NET - Fishing.attemptdata(c, 9); - break; - case 310: - case 311: - case 314: - case 315: - case 317: - case 318: - case 328: - case 329: - case 331: - case 403: - case 309: // BAIT + LURE - Fishing.attemptdata(c, 6); - break; - case 312: - case 321: - case 405: - case 1191: - case 324:// SWORDIES+TUNA-CAGE+HARPOON - Fishing.attemptdata(c, 7); - break; - case 313: - case 322: - case 334: // NET+HARPOON - Fishing.attemptdata(c, 10); - break; - } - break; - } - } - - public static boolean fishingNPC(Client c, int npc) { - for (int i = 308; i < 335; i++) { - if (npc == i) { - return true; - } - if (npc == 1191) { - return true; - } - } - return false; - } -} +package com.rebotted.game.content.skills.core; + +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.content.randomevents.RandomEventHandler; +import com.rebotted.game.content.randomevents.RiverTroll; +import com.rebotted.game.content.skills.SkillHandler; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + + +public class Fishing extends SkillHandler { + + public static void randomEvents(Player client) { + if (Misc.random(350) == 5) { + RiverTroll.spawnRiverTroll(client); + } + if (RiverTroll.hasRiverTroll == false) { + RandomEventHandler.addRandom(client); + } + } + + /** + * Resets the Event according to the ID. id = 10 (According to skill.) + */ + protected static int eventId = 10; + + public static int[][] data = { + // dataid, levelreq, item needed, bait, item recieved, exp, + // animation, + // secondfish, levelreq, secondexp + { 1, 1, 303, -1, 317, 10, 621, 321, 15, 40 }, // SHRIMP + ANCHOVIES + { 2, 5, 307, 313, 327, 20, 622, 345, 10, 30 }, // SARDINE + HERRING + { 3, 16, 305, -1, 353, 20, 620, -1, -1, -1 }, // MACKEREL + { 4, 20, 309, 314, 335, 50, 622, 331, 30, 70 }, // TROUT + { 5, 23, 305, -1, 341, 45, 619, 363, 46, 100 }, // BASS + COD + { 6, 25, 307, 313, 349, 60, 622, -1, -1, -1 }, // PIKE + { 7, 35, 311, -1, 359, 80, 618, 371, 50, 100 }, // TUNA + SWORDIE + { 8, 40, 301, -1, 377, 90, 619, -1, -1, -1 }, // LOBSTER + { 9, 62, 303, -1, 7944, 120, 621, -1, -1, -1 }, // Monkfish + { 10, 76, 311, -1, 383, 110, 618, -1, -1, -1 } // Shark + }; + + private static String[][] messages = { { "You cast out your net." }, // SHRIMP + // + + // ANCHOVIES + { "You cast out your line." }, // SARDINE + HERRING + { "You start harpooning fish." }, // TUNA + SWORDIE + { "You attempt to catch a lobster." }, // LOBSTER + }; + + private static void attemptdata(final Player c, final int npcId) { + if (!FISHING) { + c.getPacketSender().sendMessage(c.disabled()); + return; + } + if (c.playerSkillProp[10][4] > 0) { + c.playerSkilling[10] = false; + return; + } + if (!noInventorySpace(c, "fishing")) { + return; + } + resetFishing(c); + for (int i = 0; i < data.length; i++) { + if (npcId == data[i][0]) { + if (c.playerLevel[c.playerFishing] < data[i][1]) { + c.getDialogueHandler().sendStatement( + "You need a fishing level of at least " + + data[i][1] + + " in order to fish at this spot."); + return; + } + if (!hasFishingEquipment(c, data[i][2])) { + return; + } + if (data[i][3] > 0) { + if (!c.getItemAssistant().playerHasItem(data[i][3])) { + c.getDialogueHandler().sendStatement( + "You need more " + + ItemAssistant.getItemName(data[i][3]) + .toLowerCase().toLowerCase() + + " in order to fish at this spot."); + return; + } + } + c.playerSkillProp[10][0] = data[i][6]; // ANIM + c.playerSkillProp[10][1] = data[i][4]; // FISH + c.playerSkillProp[10][2] = data[i][5]; // XP + c.playerSkillProp[10][3] = data[i][3]; // BAIT + c.playerSkillProp[10][4] = data[i][2]; // EQUIP + c.playerSkillProp[10][5] = data[i][7]; // sFish + c.playerSkillProp[10][6] = data[i][8]; // sLvl + c.playerSkillProp[10][7] = data[i][4]; // FISH + c.playerSkillProp[10][8] = data[i][9]; // sXP + c.playerSkillProp[10][9] = Misc.random(1) == 0 ? 7 : 5; + c.playerSkillProp[10][10] = data[i][0]; // INDEX + + if (c.playerSkilling[10]) { + return; + } + c.playerSkilling[10] = true; + if (c.tutorialProgress == 6) { // if tutorial prog = 6 + c.startAnimation(c.playerSkillProp[10][0]); + c.stopPlayerSkill = true; + c.getPacketSender().drawHeadicon(0, 0, 0, 0); // deletes + // headicon + c.getPacketSender().chatbox(6180); + c.getDialogueHandler() + .chatboxText( + c, + "This should only take a few seconds.", + "As you gain Fishing experience you'll find that there are many", + "types of fish and many ways to catch them.", + "", "Please wait"); + c.getPacketSender().chatbox(6179); + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + + if (c.playerSkillProp[10][5] > 0) { + if (c.playerLevel[c.playerFishing] >= c.playerSkillProp[10][6]) { + c.playerSkillProp[10][1] = c.playerSkillProp[10][Misc + .random(1) == 0 ? 7 : 5]; + } + } + + if (!c.stopPlayerSkill) { + container.stop(); + } + if (!c.playerSkilling[10]) { + container.stop(); + } + + if (c.playerSkillProp[10][1] > 0) { + c.startAnimation(c.playerSkillProp[10][0]); + } + + } + + @Override + public void stop() { + resetFishing(c); + } + }, 5); + CycleEventHandler.getSingleton().addEvent(c, + new CycleEvent() { + + @Override + public void execute( + CycleEventContainer container) { + if (c.playerSkillProp[10][5] > 0) { + if (c.playerLevel[c.playerFishing] >= c.playerSkillProp[10][6]) { + c.playerSkillProp[10][1] = c.playerSkillProp[10][Misc + .random(1) == 0 ? 7 : 5]; + } + } + if (c.playerSkillProp[10][2] > 0) { + c.getPlayerAssistant().addSkillXP( + c.playerSkillProp[10][2], + c.playerFishing); + } + if (c.playerSkillProp[10][1] > 0) { + c.getItemAssistant().addItem(c.playerSkillProp[10][1], 1); + c.startAnimation(c.playerSkillProp[10][0]); + c.getDialogueHandler().sendDialogues(3019, -1); + container.stop(); + } + if (!noInventorySpace(c, "fishing")) { + container.stop(); + } + if (!c.stopPlayerSkill) { + container.stop(); + } + if (!c.playerSkilling[10]) { + container.stop(); + } + } + + @Override + public void stop() { + resetFishing(c); + } + }, getTimer(c, npcId) + 5 + playerFishingLevel(c)); + return; + } + + // end of tutorial island fishing + + c.getPacketSender().sendMessage("" + messages(c)); + // c.getPA().sendSound(379, 100, 1); // fishing + c.startAnimation(c.playerSkillProp[10][0]); + c.stopPlayerSkill = true; + CycleEventHandler.getSingleton().addEvent(eventId, c, + new CycleEvent() { + + @Override + public void execute(CycleEventContainer container) { + if (c.playerSkillProp[10][3] > 0) { + + if (!c.getItemAssistant().playerHasItem( + c.playerSkillProp[10][3])) { + c.getPacketSender() + .sendMessage( + "You don't have any " + + ItemAssistant + .getItemName(c.playerSkillProp[10][3]) + + " left!"); + c.getPacketSender() + .sendMessage( + "You need " + + ItemAssistant + .getItemName(c.playerSkillProp[10][3]) + + " to fish here."); + resetFishing(c); + container.stop(); + } + } + if (c.playerSkillProp[10][5] > 0) { + if (c.playerLevel[c.playerFishing] >= c.playerSkillProp[10][6]) { + c.playerSkillProp[10][1] = c.playerSkillProp[10][Misc + .random(1) == 0 ? 7 : 5]; + } + } + if (!hasFishingEquipment(c, + c.playerSkillProp[10][4])) { + resetFishing(c); + container.stop(); + } + if (!noInventorySpace(c, "fishing")) { + resetFishing(c); + container.stop(); + } + if (!c.stopPlayerSkill) { + container.stop(); + } + if (!c.playerSkilling[10]) { + resetFishing(c); + container.stop(); + } + if (c.playerSkillProp[10][1] > 0) { + c.startAnimation(c.playerSkillProp[10][0]); + // c.getPA().sendSound(379, 100, 1); // + // fishing + } + + } + + @Override + public void stop() { + } + }, 5); + CycleEventHandler.getSingleton().addEvent(eventId, c, + new CycleEvent() { + + @Override + public void execute(CycleEventContainer container) { + if (c.playerSkillProp[10][5] > 0) { + if (c.playerLevel[c.playerFishing] >= c.playerSkillProp[10][6]) { + c.playerSkillProp[10][1] = c.playerSkillProp[10][Misc + .random(1) == 0 ? 7 : 5]; + } + } + if (c.playerSkillProp[10][1] > 0) { + c.getPacketSender() + .sendMessage( + "You catch " + + (c.playerSkillProp[10][1] == 321 + || c.playerSkillProp[10][1] == 317 + || c.playerSkillProp[10][1] == 7944 ? "some " + : "a ") + + ItemAssistant + .getItemName( + c.playerSkillProp[10][1]) + .toLowerCase() + .replace( + "raw ", + "") + + "."); + } + if (c.playerSkillProp[10][1] > 0 && c.randomEventsEnabled) { + randomEvents(c); + } + if (c.playerSkillProp[10][1] > 0) { + c.getItemAssistant().deleteItem(c.playerSkillProp[10][3], c.getItemAssistant().getItemSlot(c.playerSkillProp[10][3]), 1); + c.getItemAssistant().addItem(c.playerSkillProp[10][1], 1); + c.startAnimation(c.playerSkillProp[10][0]); + } + if (c.playerSkillProp[10][5] > 0 + && c.playerLevel[c.playerFishing] >= c.playerSkillProp[10][6]) { + c.getPlayerAssistant().addSkillXP( + c.playerSkillProp[10][8], + c.playerFishing); + } else if (c.playerSkillProp[10][7] > 0) { + c.getPlayerAssistant().addSkillXP( + c.playerSkillProp[10][2], + c.playerFishing); + } + if (c.playerSkillProp[10][3] > 0) { + if (!c.getItemAssistant().playerHasItem( + c.playerSkillProp[10][3])) { + c.getDialogueHandler() + .sendStatement( + "You have run out of " + + ItemAssistant + .getItemName( + c.playerSkillProp[10][3]) + .toLowerCase() + .toLowerCase() + + "."); + // c.getPacketDispatcher().sendMessage("You don't have any "+ + // ItemAssistant.getItemName(c.playerSkillProp[10][3]) + // +" left!"); + // c.getPacketDispatcher().sendMessage("You need "+ + // ItemAssistant.getItemName(c.playerSkillProp[10][3]) + // +" to fish here."); + container.stop(); + } + } + if (!hasFishingEquipment(c, + c.playerSkillProp[10][4])) { + resetFishing(c); + container.stop(); + } + if (!noInventorySpace(c, "fishing")) { + resetFishing(c); + container.stop(); + } + if (!c.stopPlayerSkill) { + container.stop(); + } + if (!c.playerSkilling[10]) { + resetFishing(c); + container.stop(); + } + } + + @Override + public void stop() { + } + }, getTimer(c, npcId) + 5 + playerFishingLevel(c)); + } + } + } + + public static boolean hasFishingEquipment(Player c, int equipment) { + if (!c.getItemAssistant().playerHasItem(equipment)) { + if (equipment == 311) { + if (!c.getItemAssistant().playerHasItem(311) + && !c.getItemAssistant().playerHasItem(10129) + && c.playerEquipment[3] != 10129) { + c.getPacketSender().sendMessage( + "You need a " + + ItemAssistant.getItemName(equipment) + .toLowerCase() + " to fish here."); + resetFishing(c); + return false; + } + } else { + resetFishing(c); + c.getPacketSender().sendMessage( + "You need a " + ItemAssistant.getItemName(equipment) + + " to fish here."); + return false; + } + } + return true; + } + + public static void resetFishing(Player player) { + player.startAnimation(65535); + player.stopPlayerSkill = false; + player.playerSkilling[10] = false; + player.fishingWhirlPool = false; + stopEvents(player, eventId); + for (int i = 0; i < 11; i++) { + player.playerSkillProp[10][i] = -1; + } + } + + public static String messages(Player c) { + if (c.playerSkillProp[10][10] == 1 || c.playerSkillProp[10][10] == 9) { + // etc + return messages[0][0]; + } + + if (c.playerSkillProp[10][10] == 2 || c.playerSkillProp[10][10] == 3 + || c.playerSkillProp[10][10] == 4 + || c.playerSkillProp[10][10] == 5 + || c.playerSkillProp[10][10] == 6) { + return messages[1][0]; + } + + if (c.playerSkillProp[10][10] == 7 || c.playerSkillProp[10][10] == 10) { + return messages[2][0]; + } + + if (c.playerSkillProp[10][10] == 8) { + return messages[3][0]; + } + + return null; + } + + private static int playerFishingLevel(Player c) { + return 10 - (int) Math.floor(c.playerLevel[c.playerFishing] / 10); + } + + private final static int getTimer(Player c, int npcId) { + switch (npcId) { + case 1: + return 2; + case 2: + return 3; + case 3: + return 4; + case 4: + return 4; + case 5: + return 4; + case 6: + return 5; + case 7: + return 5; + case 8: + return 5; + case 9: + return 8; + case 10: + return 12; + case 11: + return 13; + case 12: + return 13; + default: + return -1; + } + } + + public static void fishingNPC(Player c, int i, int l) { + switch (i) { + case 1: + switch (l) { + case 319: + case 329: + case 323: + case 325: + case 326: + case 327: + case 330: + case 332: + case 404: + case 316: // NET + BAIT + Fishing.attemptdata(c, 1); + break; + case 334: + case 313: // NET + HARPOON + Fishing.attemptdata(c, 3); + break; + case 322: // NET + HARPOON + Fishing.attemptdata(c, 5); + break; + + case 309: // LURE + case 310: + case 403: + case 311: + case 314: + case 315: + case 317: + case 318: + case 328: + case 331: + Fishing.attemptdata(c, 4); + break; + case 1191: + Fishing.attemptdata(c, 9); + break; + case 312: + case 321: + case 405: + case 324: // CAGE + HARPOON + Fishing.attemptdata(c, 8); + break; + } + break; + case 2: + switch (l) { + case 326: + case 327: + case 330: + case 332: + case 404: + case 316: // BAIT + NET + Fishing.attemptdata(c, 2); + break; + case 319: + case 323: + case 325: // BAIT + NET + Fishing.attemptdata(c, 9); + break; + case 310: + case 311: + case 314: + case 315: + case 317: + case 318: + case 328: + case 329: + case 331: + case 403: + case 309: // BAIT + LURE + Fishing.attemptdata(c, 6); + break; + case 312: + case 321: + case 405: + case 1191: + case 324:// SWORDIES+TUNA-CAGE+HARPOON + Fishing.attemptdata(c, 7); + break; + case 313: + case 322: + case 334: // NET+HARPOON + Fishing.attemptdata(c, 10); + break; + } + break; + } + } + + public static boolean fishingNPC(Player c, int npc) { + for (int i = 308; i < 335; i++) { + if (npc == i) { + return true; + } + if (npc == 1191) { + return true; + } + } + return false; + } +} diff --git a/2006Redone Server/src/redone/game/content/skills/core/Mining.java b/2006Redone Server/src/com/rebotted/game/content/skills/core/Mining.java similarity index 77% rename from 2006Redone Server/src/redone/game/content/skills/core/Mining.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/core/Mining.java index 5d55e3a1..a6267e52 100644 --- a/2006Redone Server/src/redone/game/content/skills/core/Mining.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/core/Mining.java @@ -1,12 +1,12 @@ -package redone.game.content.skills.core; +package com.rebotted.game.content.skills.core; -import redone.event.*; -import redone.game.items.ItemAssistant; -import redone.game.objects.Object; -import redone.game.players.Client; -import redone.game.players.PlayerHandler; -import redone.util.Misc; -import redone.world.clip.Region; +import com.rebotted.event.*; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.objects.Object; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerHandler; +import com.rebotted.util.Misc; +import com.rebotted.world.clip.Region; public class Mining { @@ -119,9 +119,9 @@ public class Mining { } public int getOre(int playerLevel){ - if (this == this.ESSENCE) + if (this == rockData.ESSENCE) return playerLevel < 30 ? oreIds[0] : oreIds[1]; - if (this == this.GEM) + if (this == rockData.GEM) return gems.getRandom(); // return a random ore from the possibilities @@ -131,7 +131,7 @@ public class Mining { int pickaxe = -1; - public void repeatAnimation(final Client c) { + public void repeatAnimation(final Player c) { CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { @Override public void execute(CycleEventContainer container) { @@ -150,7 +150,7 @@ public class Mining { }, 3); } - public void startMining(final Client player, final int objectID, final int objectX, final int objectY, final int type) { + public void startMining(final Player player, final int objectID, final int objectX, final int objectY, final int type) { if (player.isMining || player.miningRock) return; int miningLevel = player.playerLevel[player.playerMining]; @@ -159,7 +159,7 @@ public class Mining { player.turnPlayerTo(objectX, objectY); // check if the player has required level for this rock if (rock.getRequiredLevel() > miningLevel) { - player.getActionSender().sendMessage("You need a Mining level of " + rock.getRequiredLevel() + " to mine this rock."); + player.getPacketSender().sendMessage("You need a Mining level of " + rock.getRequiredLevel() + " to mine this rock."); return; } // check id the player has a pickaxe they can use on them @@ -171,11 +171,11 @@ public class Mining { } } if (pickaxe == -1) { - player.getActionSender().sendMessage("You need a pickaxe to mine this rock."); + player.getPacketSender().sendMessage("You need a pickaxe to mine this rock."); return; } if (player.getItemAssistant().freeSlots() < 1) { - player.getActionSender().sendMessage("You do not have enough inventory slots to do that."); + player.getPacketSender().sendMessage("You do not have enough inventory slots to do that."); return; } @@ -188,11 +188,11 @@ public class Mining { // Tutorial only stuff if (player.tutorialProgress == 17 || player.tutorialProgress == 18) { - player.getActionSender().chatbox(6180); + player.getPacketSender().chatbox(6180); player.getDialogueHandler().chatboxText(player, "", "Your character is now attempting to mine the rock.", "This should only take a few seconds.", "", "Please wait"); - player.getActionSender().chatbox(6179); + player.getPacketSender().chatbox(6179); } else { - player.getActionSender().sendMessage("You swing your pick at the rock."); + player.getPacketSender().sendMessage("You swing your pick at the rock."); } CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { @@ -207,7 +207,7 @@ public class Mining { if (player.isMining) { player.getItemAssistant().addItem(oreID, 1); player.getPlayerAssistant().addSkillXP(rock.getXp(), player.playerMining); - player.getActionSender().sendMessage("You manage to mine some " + ItemAssistant.getItemName(oreID).toLowerCase() + "."); + player.getPacketSender().sendMessage("You manage to mine some " + ItemAssistant.getItemName(oreID).toLowerCase() + "."); } if (player.tutorialProgress == 17) { if (rock != rockData.TIN) { @@ -216,7 +216,7 @@ public class Mining { return; } if (player.getItemAssistant().playerHasItem(438)) { - player.getActionSender().createArrow(3086, 9501, player.getH(), 2); + player.getPacketSender().createArrow(3086, 9501, player.getH(), 2); player.getDialogueHandler().chatboxText(player, "Now you have some tin ore you must need some copper ore, then", "you'll have all you need to create a bronze bar. As you did before", "riger click on the copper rock and select 'mine'.", "", "Mining"); player.tutorialProgress = 18; } @@ -227,12 +227,12 @@ public class Mining { return; } if (player.getItemAssistant().playerHasItem(436)) { - player.getActionSender().createArrow(3078, 9495, 0, 2); + player.getPacketSender().createArrow(3078, 9495, 0, 2); player.getDialogueHandler().sendDialogues(3061, -1); } } if (player.getItemAssistant().freeSlots() < 1) { - player.getActionSender().sendMessage("You have ran out of inventory slots."); + player.getPacketSender().sendMessage("You have ran out of inventory slots."); container.stop(); } mineRock(rock.getRespawnTimer(), objectX, objectY, type, objectID); @@ -242,7 +242,7 @@ public class Mining { } @Override public void stop() { - player.getPlayerAssistant().removeAllWindows(); + player.getPacketSender().closeAllWindows(); player.startAnimation(65535); player.isMining = false; player.rockX = 0; @@ -253,13 +253,13 @@ public class Mining { }, getTimer(rock, pickaxe, miningLevel)); } - public static void resetMining(Client c) { - c.getPlayerAssistant().removeAllWindows(); - c.startAnimation(65535); - c.isMining = false; - c.rockX = 0; - c.rockY = 0; - c.miningRock = false; + public static void resetMining(Player player) { + player.getPacketSender().closeAllWindows(); + player.startAnimation(65535); + player.isMining = false; + player.rockX = 0; + player.rockY = 0; + player.miningRock = false; } public int getTimer(rockData rock, int pick, int level) { @@ -290,56 +290,56 @@ public class Mining { } } - public static void prospectRock(final Client c, final String itemName) { - if (c.tutorialProgress == 15 || c.tutorialProgress == 16) { - c.getPlayerAssistant().removeAllWindows(); - c.getActionSender().chatbox(6180); - c.getDialogueHandler() + public static void prospectRock(final Player player, final String itemName) { + if (player.tutorialProgress == 15 || player.tutorialProgress == 16) { + player.getPacketSender().closeAllWindows(); + player.getPacketSender().chatbox(6180); + player.getDialogueHandler() .chatboxText( - c, + player, "Please wait.", "Your character is now attempting to prospect the rock. This should", "only take a few seconds.", "", ""); - c.getActionSender().chatbox(6179); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + player.getPacketSender().chatbox(6179); + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { @Override public void execute(CycleEventContainer container) { - if (c.tutorialProgress == 15) { - c.getActionSender().sendMessage( + if (player.tutorialProgress == 15) { + player.getPacketSender().sendMessage( "This rock contains " + itemName.toLowerCase() + "."); - c.getActionSender().chatbox(6180); - c.getDialogueHandler() + player.getPacketSender().chatbox(6180); + player.getDialogueHandler() .chatboxText( - c, + player, "", "So now you know there's tin in the grey rocks. Try prospecting", "the brown ones next.", "", "It's tin"); - c.getActionSender().createArrow(3086, 9501, - c.getH(), 2); - c.getActionSender().chatbox(6179); - c.tutorialProgress = 16; + player.getPacketSender().createArrow(3086, 9501, + player.getH(), 2); + player.getPacketSender().chatbox(6179); + player.tutorialProgress = 16; container.stop(); return; - } else if (c.tutorialProgress == 16) { - c.getActionSender().sendMessage( + } else if (player.tutorialProgress == 16) { + player.getPacketSender().sendMessage( "This rock contains " + itemName.toLowerCase() + "."); - c.getActionSender().chatbox(6180); - c.getDialogueHandler() + player.getPacketSender().chatbox(6180); + player.getDialogueHandler() .chatboxText( - c, + player, "Talk to the Mining Instructor to find out about these types of", "ore and how you can mine them. He'll even give you the", "required tools.", "", "It's copper"); - c.getActionSender().createArrow(1, 5); - c.getActionSender().chatbox(6179); + player.getPacketSender().createArrow(1, 5); + player.getPacketSender().chatbox(6179); container.stop(); return; } - c.getActionSender().sendMessage( + player.getPacketSender().sendMessage( "This rock contains " + itemName.toLowerCase() + "."); stop(); @@ -353,11 +353,11 @@ public class Mining { }, 3); return; } - c.getActionSender().sendMessage("You examine the rock for ores..."); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + player.getPacketSender().sendMessage("You examine the rock for ores..."); + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { @Override public void execute(CycleEventContainer container) { - c.getActionSender().sendMessage("This rock contains " + itemName + "."); + player.getPacketSender().sendMessage("This rock contains " + itemName + "."); container.stop(); } @Override @@ -367,12 +367,12 @@ public class Mining { }, 3); } - public static void prospectNothing(final Client c) { - c.getActionSender().sendMessage("You examine the rock for ores..."); + public static void prospectNothing(final Player c) { + c.getPacketSender().sendMessage("You examine the rock for ores..."); CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { @Override public void execute(CycleEventContainer container) { - c.getActionSender().sendMessage("There is no ore left in this rock."); + c.getPacketSender().sendMessage("There is no ore left in this rock."); container.stop(); } @Override diff --git a/2006Redone Server/src/redone/game/content/skills/core/Prayer.java b/2006Redone Server/src/com/rebotted/game/content/skills/core/Prayer.java similarity index 67% rename from 2006Redone Server/src/redone/game/content/skills/core/Prayer.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/core/Prayer.java index d20c1514..1fff3196 100644 --- a/2006Redone Server/src/redone/game/content/skills/core/Prayer.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/core/Prayer.java @@ -1,97 +1,97 @@ -package redone.game.content.skills.core; - -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.content.music.sound.SoundList; -import redone.game.content.randomevents.Shade; -import redone.game.content.randomevents.Zombie; -import redone.game.content.skills.SkillHandler; -import redone.game.items.ItemAssistant; -import redone.game.players.Client; -import redone.util.Misc; - -/** - * Class Prayer Handles Prayer - * @author 2012 23:56 29/12/2010 - */ - -public class Prayer { - - private static int[][] data = { - { 526, 5 }, // NPC BONES - { 528, 5 }, // BURNT BONES - { 530, 5 }, // BAT BONES - { 2859, 5 }, // WOLF BONES - { 3179, 5 }, // MONKEY BONES - { 3180, 5 }, // MONKEY BONES - { 3181, 5 }, // MONKEY BONES - { 3182, 5 }, // MONKEY BONES - { 3183, 5 }, // MONKEY BONES - { 3185, 5 }, // MONKEY BONES - { 3186, 5 }, // MONKEY BONES - { 3187, 5 }, // MONKEY BONES - { 532, 15 }, // BIG BONES - { 534, 30 }, // BABY DRAGON BONES - { 536, 72 }, // DRAGON BONES - { 2530, 5 }, // PLAYER BONES - { 3123, 25 }, // SHAIKAHAN BONES - { 3125, 23 }, // JOGRE BONES - { 3127, 25 }, // BURNT JOGRE BONES - { 4812, 82 }, // ZOGRE BONES - { 4830, 84 }, // FAYGR BONES - { 4832, 96 }, // RAURG BONES - { 4834, 140 }, // OURG BONES - { 6729, 125 }, // DAGANNOTH BONES - { 6812, 50 }, // WYVERN BONES - }; - - public static boolean playerBones(Client c, int item) { - for (int[] element : data) { - if (item == element[0]) { - return true; - } - } - return false; - } - - private static void handleBones(final Client c, int i, int slot) { - if(c.randomEventsEnabled) { - if (Misc.random(300) == 4 && c.shadeSpawned == false) { - Zombie.spawnZombie(c); - } else if (Misc.random(300) == 2 && c.zombieSpawned == false) { - Shade.spawnShade(c); - } - } - for (final int[] element : data) { - if (i == element[0]) { - if (!SkillHandler.PRAYER) { - c.getActionSender().sendMessage("This skill is currently disabled."); - } - if (System.currentTimeMillis() - c.buryDelay > 800) { - c.getItemAssistant().deleteItem(element[0], slot, 1); - c.getPlayerAssistant().addSkillXP(element[1], 5); - c.buryDelay = System.currentTimeMillis(); - c.startAnimation(827); - c.getActionSender().sendSound(SoundList.BONE_BURY, 100, 0); - c.getActionSender().sendMessage("You dig a hole in the ground..."); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - c.getActionSender().sendMessage("You bury the " + ItemAssistant.getItemName(element[0]).toLowerCase() + "."); - container.stop(); - } - @Override - public void stop() { - - } - }, 1); - } - } - } - } - - public static void buryBones(Client c, int i, int slot) { - handleBones(c, i, slot); - } -} +package com.rebotted.game.content.skills.core; + +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.content.music.sound.SoundList; +import com.rebotted.game.content.randomevents.Shade; +import com.rebotted.game.content.randomevents.Zombie; +import com.rebotted.game.content.skills.SkillHandler; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +/** + * Class Prayer Handles Prayer + * @author 2012 23:56 29/12/2010 + */ + +public class Prayer { + + private static int[][] data = { + { 526, 5 }, // NPC BONES + { 528, 5 }, // BURNT BONES + { 530, 5 }, // BAT BONES + { 2859, 5 }, // WOLF BONES + { 3179, 5 }, // MONKEY BONES + { 3180, 5 }, // MONKEY BONES + { 3181, 5 }, // MONKEY BONES + { 3182, 5 }, // MONKEY BONES + { 3183, 5 }, // MONKEY BONES + { 3185, 5 }, // MONKEY BONES + { 3186, 5 }, // MONKEY BONES + { 3187, 5 }, // MONKEY BONES + { 532, 15 }, // BIG BONES + { 534, 30 }, // BABY DRAGON BONES + { 536, 72 }, // DRAGON BONES + { 2530, 5 }, // PLAYER BONES + { 3123, 25 }, // SHAIKAHAN BONES + { 3125, 23 }, // JOGRE BONES + { 3127, 25 }, // BURNT JOGRE BONES + { 4812, 82 }, // ZOGRE BONES + { 4830, 84 }, // FAYGR BONES + { 4832, 96 }, // RAURG BONES + { 4834, 140 }, // OURG BONES + { 6729, 125 }, // DAGANNOTH BONES + { 6812, 50 }, // WYVERN BONES + }; + + public static boolean playerBones(Player player, int item) { + for (int[] element : data) { + if (item == element[0]) { + return true; + } + } + return false; + } + + private static void handleBones(final Player c, int i, int slot) { + if(c.randomEventsEnabled) { + if (Misc.random(300) == 4 && c.shadeSpawned == false) { + Zombie.spawnZombie(c); + } else if (Misc.random(300) == 2 && c.zombieSpawned == false) { + Shade.spawnShade(c); + } + } + for (final int[] element : data) { + if (i == element[0]) { + if (!SkillHandler.PRAYER) { + c.getPacketSender().sendMessage("This skill is currently disabled."); + } + if (System.currentTimeMillis() - c.buryDelay > 800) { + c.getItemAssistant().deleteItem(element[0], slot, 1); + c.getPlayerAssistant().addSkillXP(element[1], 5); + c.buryDelay = System.currentTimeMillis(); + c.startAnimation(827); + c.getPacketSender().sendSound(SoundList.BONE_BURY, 100, 0); + c.getPacketSender().sendMessage("You dig a hole in the ground..."); + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + c.getPacketSender().sendMessage("You bury the " + ItemAssistant.getItemName(element[0]).toLowerCase() + "."); + container.stop(); + } + @Override + public void stop() { + + } + }, 1); + } + } + } + } + + public static void buryBones(Player c, int i, int slot) { + handleBones(c, i, slot); + } +} diff --git a/2006Redone Server/src/redone/game/content/skills/core/Woodcutting.java b/2006Redone Server/src/com/rebotted/game/content/skills/core/Woodcutting.java similarity index 58% rename from 2006Redone Server/src/redone/game/content/skills/core/Woodcutting.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/core/Woodcutting.java index ae1b006e..0e5d8a11 100644 --- a/2006Redone Server/src/redone/game/content/skills/core/Woodcutting.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/core/Woodcutting.java @@ -1,411 +1,406 @@ -package redone.game.content.skills.core; - -import redone.Server; -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.content.music.sound.SoundList; -import redone.game.content.randomevents.RandomEventHandler; -import redone.game.content.randomevents.TreeSpirit; -import redone.game.content.skills.SkillHandler; -import redone.game.items.ItemAssistant; -import redone.game.objects.Object; -import redone.game.players.Client; -import redone.game.players.Player; -import redone.game.players.PlayerHandler; -import redone.util.Misc; - -/** - * Woodcutting - */ - -public class Woodcutting { - - public final static int[][] Axe_Settings = { - {1351, 1, 1, 879}, - {1349, 1, 2, 877}, - {1353, 6, 3, 875}, - {1361, 6, 4, 873}, - {1355, 21, 5, 871}, - {1357, 31, 6, 869}, - {1359, 41, 7, 867}, - {6739, 61, 8, 2846}, - {13661, 41, 8, 10251} - }; - - public final static int[][] Tree_Settings = { - { 1276, 1342, 1, 25, 1511, 45, 100 }, - { 1278, 1342, 1, 25, 1511, 45, 100 }, - { 1286, 1342, 1, 25, 1511, 45, 100 }, - { 1281, 1356, 15, 38, 1521, 11, 20 }, - { 1308, 7399, 30, 68, 1519, 11, 8 }, - { 5552, 7399, 30, 68, 1519, 11, 8 }, - { 1307, 1343, 45, 100, 1517, 48, 8 }, - { 1309, 7402, 60, 175, 1515, 79, 5 }, - { 1306, 7401, 75, 250, 1513, 150, 3 }, - { 5551, 7399, 30, 68, 1519, 11, 8 }, - { 5553, 7399, 30, 68, 1519, 11, 8 }, - { 3033, 1342, 1, 25, 1511, 45, 100 }, - { 3037, 1356, 15, 38, 1521, 11, 20 }, - { 1282, 1342, 1, 25, 1511, 45, 100 }, - { 1383, 1342, 1, 25, 1511, 45, 100 }, - { 2023, 3371, 1, 25, 2862, 45, 100 }, - { 1319, 1341, 1, 25, 1511, 45, 100 }, - { 1318, 1341, 1, 25, 1511, 45, 100 }, - { 1315, 1341, 1, 25, 1511, 45, 100 }, - { 1316, 1341, 1, 25, 1511, 45, 100 }, - { 1332, 1341, 1, 25, 1511, 45, 100 }, - { 1292, 1341, 36, 1, 771, 45, 100 } - }; - - public static int[][] FIX_AXE = { { 492, 508, 1351 }, { 492, 510, 1349 }, - { 492, 512, 1353 }, { 492, 514, 1361 }, { 492, 516, 1355 }, - { 492, 518, 1357 }, { 492, 520, 1359 }, }; - - private static int a = -1; - - public static void repeatAnimation(final Client player) { - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (player.isWoodcutting) - { - if ((a >= 0) && (a < Axe_Settings.length)) - { - try - { - player.startAnimation(Axe_Settings[a][3]); - } catch (ArrayIndexOutOfBoundsException exception) - { - System.out.println("LOL this happend again: " + exception); - } - player.getActionSender().sendSound(SoundList.TREE_CUTTING, 100, 0); - } - } - else - { - container.stop(); - } - } - - @Override - public void stop() { - stopWoodcutting(player); - } - }, 3); - } - - public static void handleCanoe(final Client player, final int objectId) { - Boolean gotAxe = false; - if (player.playerLevel[player.playerWoodcutting] < 12) { - player.getActionSender().sendMessage("You need a woodcutting level of at least 12 to use the canoe station."); - return; - } - - for (int axes[] : Axe_Settings) { - int type = axes[0]; - if ( player.getItemAssistant().playerHasItem(type) || player.playerEquipment[player.playerWeapon] == type) - { - gotAxe = true; - } - } - if (gotAxe) - { - player.getActionSender().sendMessage("You swing your axe at the station."); - } - else - { - player.getActionSender().sendMessage("You need an axe to cut the station."); - return; - } - for (int axes[] : Axe_Settings) { - int type = axes[0]; - int level = axes[1]; - int anim = axes[3]; - if (player.playerLevel[player.playerWoodcutting] >= level && player.getItemAssistant().playerHasItem(type) || player.playerLevel[player.playerWoodcutting] >= level && player.playerEquipment[player.playerWeapon] == type) { - player.turnPlayerTo(player.objectX, player.objectY); - player.startAnimation(anim); - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - addFallenTree(player, objectId); - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - player.getPlayerAssistant().handleCanoe(); - container.stop(); - } - - @Override - public void stop() { - - } - - }, 1); - player.getActionSender().sendMessage("You cut down the canoe. Please wait..."); - container.stop(); - } - - @Override - public void stop() { - - } - }, 4); - } - } - } - - public void fixAxe(final Client player) { - for (int fix[] : FIX_AXE) { - int axeHandle = fix[0]; - int axeHead = fix[1]; - final int fixedAxe = fix[2]; - if (player.getItemAssistant().playerHasItem(axeHandle) && player.getItemAssistant().playerHasItem(axeHead)) { - player.isWoodcutting = true; - player.getItemAssistant().deleteItem(axeHandle, 1); - player.getItemAssistant().deleteItem(axeHead, 1); - player.getPlayerAssistant().removeAllWindows(); - player.getActionSender().sendMessage("Your axe handle and axe head have been taken."); - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - player.getItemAssistant().addItem(fixedAxe, 1); - player.getActionSender().sendMessage("Your axe has been fixed."); - container.stop(); - } - @Override - public void stop() { - - } - }, 1); - } - } - } - - public static void addFallenTree(Client player, int canoe) { - if (canoe == player.objectId) { - for (Player players : PlayerHandler.players) { - if (players != null) { - new Object(1296, player.objectX, player.objectY, 0, 0, 10, canoe, 20 + Misc.random(40)); - } - } - } - } - - public static boolean hasAxe(Client player) { - for (int i = 0; i < Axe_Settings.length; i++) { - if (player.getItemAssistant().playerHasItem(Axe_Settings[i][0]) || player.playerEquipment[player.playerWeapon] == Axe_Settings[i][0]) { - return true; - } - } - return false; - } - - public static void startWoodcutting(final Client player, final int j, final int x, final int y, final int type) { - CycleEventHandler.getSingleton().stopEvents(player, "WoodcuttingEvent".hashCode()); - if (player.isWoodcutting || player.isFletching || player.isFiremaking || player.playerIsFletching) { - return; - } - if (player.absX == 2717 && player.absY == 3461) { - player.getActionSender().sendMessage("You can't cut the tree from here!"); - return; - } - if (!SkillHandler.WOODCUTTING) { - player.getActionSender().sendMessage("This skill is currently disabled."); - return; - } - int wcLevel = player.playerLevel[8]; - a = -1; - player.turnPlayerTo(x, y); - if (Tree_Settings[j][2] > wcLevel) { - player.getActionSender().sendMessage("You need a Woodcutting level of " + Tree_Settings[j][2] + " to cut this tree."); - return; - } - for (int i = 0; i < Axe_Settings.length; i++) { - if (player.getItemAssistant().playerHasItem(Axe_Settings[i][0]) || player.playerEquipment[player.playerWeapon] == Axe_Settings[i][0]) { - if (Axe_Settings[i][1] <= wcLevel) { - a = i; - } - } - } - if (a == -1) { - player.getActionSender().sendMessage("You need an axe to cut this tree."); - return; - } - if (player.getItemAssistant().freeSlots() < 1) { - player.getActionSender().sendMessage("You do not have enough inventory slots to do that."); - return; - } - if (Misc.goodDistance(player.objectX, player.objectY, player.absX, player.absY, 3)) { - if (player.isWoodcutting) { - player.getActionSender().sendMessage("You are already woodcutting!"); - return; - } - player.startAnimation(Axe_Settings[a][3]); - player.isWoodcutting = true; - player.getActionSender().sendSound(SoundList.TREE_CUT_BEGIN, 100, 0); - repeatAnimation(player); - player.treeX = x; - player.treeY = y; - if (player.tutorialProgress == 3) { - player.getPlayerAssistant().removeAllWindows(); - player.getActionSender().chatbox(6180); - if (player.playerAppearance[0] == 0) { - player.getDialogueHandler().chatboxText(player, "", "Your character is now attempting to cut down the tree. Sit back", "for a moment while he does all the hard work.", "", "Please wait"); - } else { - player.getDialogueHandler().chatboxText(player, "", "Your character is now attempting to cut down the tree. Sit back", "for a moment while she does all the hard work.", "", "Please wait"); - } - player.getActionSender().chatbox(6179); - } else { - player.getActionSender().sendMessage("You swing your axe at the tree."); - } - CycleEventHandler.getSingleton().addEvent("WoodcuttingEvent".hashCode(), player, new CycleEvent() { - - @Override - public void execute(CycleEventContainer container) { - if (a <= -1) - { - container.stop(); - return; - } - if (!player.isWoodcutting) { - container.stop(); - return; - } - if (player.disconnected) { - container.stop(); - return; - } - if (player.isWoodcutting) { - player.startAnimation(Axe_Settings[a][3]); - } - if (player.getItemAssistant().freeSlots() < 1) { - player.getActionSender().sendMessage("You have ran out of inventory slots."); - container.stop(); - } - int XP = Tree_Settings[j][3]; - if (player.isWoodcutting) { - player.getItemAssistant().addItem(Tree_Settings[j][4], 1); - player.getPlayerAssistant().addSkillXP(XP, 8); - player.getActionSender().sendMessage("You manage to get some " + ItemAssistant.getItemName(Tree_Settings[j][4]).toLowerCase() + " from the tree."); - } - if (player.tutorialProgress == 3) { - player.getDialogueHandler().sendDialogues(3014, 0); - } - if (player.isWoodcutting) { - birdNests(player); - } - if (player.isWoodcutting && player.tutorialProgress >= 36 && player.treeSpiritSpawned == false) { - RandomEventHandler.addRandom(player); - } - if (player.isWoodcutting && Misc.random(350) == 69 && player.tutorialProgress >= 36 && player.randomEventsEnabled) { - TreeSpirit.spawnTreeSpirit(player); - } - if (player.playerIsFletching || player.isFiremaking) { - container.stop(); - } - if (Misc.random(100) <= Tree_Settings[j][6]) { - cutDownTree(Tree_Settings[j][5], x, y, type, Tree_Settings[j][1], Tree_Settings[j][0]); - player.getActionSender().sendSound(SoundList.TREE_EMPTY, 100, 0); - container.stop(); - } - } - @Override - public void stop() { - player.startAnimation(65535); - player.isWoodcutting = false; - player.treeX = 0; - player.treeY = 0; - } - }, getTimer(j, a, wcLevel)); - } - } - - public static void stopWoodcutting(Client player) { - player.startAnimation(65535); - player.isWoodcutting = false; - player.treeX = 0; - player.treeY = 0; - } - - public static int getTimer(int b, int c, int level) { - double timer = (int)((Tree_Settings[b][2] * 2) + 20 + Misc.random(20))-((Axe_Settings[c][2] * (Axe_Settings[c][2] * 0.75)) + level); - if (timer < 3.0) { - return 3; - } else { - return (int)timer; - } - } - - public static void birdNests(Client player) { - if (Misc.random(200) == 69 && player.tutorialProgress >= 36) { - player.getActionSender().sendMessage("A birds nest falls from the branches."); - dropNest(player); - } - } - - public static void dropNest(Client player) { - Server.itemHandler.createGroundItem(player, 5070 + Misc.random(4), player.getX(), player.getY(), 1, player.getId()); - } - - public static boolean playerTrees(Client player, int tree) { - boolean trees2 = false; - for (int i = 0; i < trees.length; i++) { - for (int i1 = 0; i1 < 6; i1++) { - if (tree == trees[i1][i]) { - trees2 = true; - } - } - } - return trees2; - } - - public static int[][] trees = { - { // NORMAL - 1276, 1277, 1278, 1279, 1280, 1282, 1283, 1284, 1285, 1286, 1287, - 1288, 1289, 1290, 1291, 1301, 1303, 1304, 1305, 1318, 1319, - 1315, 1316, 1330, 1331, 1332, 1333, 1383, 1384, 2409, 2447, - 2448, 3033, 3034, 3035, 3036, 3879, 3881, 3883, 3893, 3885, - 3886, 3887, 3888, 3892, 3889, 3890, 3891, 3928, 3967, 3968, - 4048, 4049, 4050, 4051, 4052, 4053, 4054, 4060, 5004, 5005, - 5045, 5902, 5903, 5904, 8973, 8974, 10041, 10081, 10082, - 10664, 11112, 11510, 12559, 12560, 12732, 12895, 12896, - 13412, 13411, 13419, 13843, 13844, 13845, 13847, 13848, - 13849, 13850, 14308, 14309, 14513, 14514, 14515, 14521, - 14564, 14565, 14566, 14593, 14594, 14595, 14600, 14635, - 14636, 14637, 14642, 14664, 14665, 14666, 14693, 14694, - 14695, 14696, 14701, 14738, 14796, 14797, 14798, 14799, - 14800, 14801, 14802, 14803, 14804, 14805, 14806, 14807, - 15489, 15776, 15777, 16264, 16265, 19165, 19166, 19167, - 23381, - - }, - { // OAK - 1281, 3037, 8462, 8463, 8464, 8465, 8466, 8467, 10083, 13413, - 13420, }, - { // WILLOW - 1308, 5551, 5552, 5553, 8481, 8482, 8483, 8484, 8485, 8486, 8487, - 8488, 8496, 8497, 8498, 8499, 8500, 8501, 13414, 13421, }, - { // MAPLE - 1307, 4674, 8435, 8436, 8437, 8438, 8439, 8440, 8441, 8442, 8443, - 8444, 8454, 8455, 8456, 8457, 8458, 8459, 8460, 8461, - 13415, 13423, }, { // YEW - 1309, 8503, 8504, 8505, 8506, 8507, 8508, 8509, 8510, 8511, 8512, - 8513, 13416, 13422, }, { // MAGIC - 1306, 8396, 8397, 8398, 8399, 8400, 8401, 8402, 8403, 8404, 8405, - 8406, 8407, 8408, 8409, 13417, 13424, } }; - - public static void cutDownTree(int respawnTime, int x, int y, int type, int i, int j) { - new Object(i, x, y, 0, type, 10, j, respawnTime); - for (int t = 0; t < PlayerHandler.players.length; t++) { - if (PlayerHandler.players[t] != null) { - if (PlayerHandler.players[t].treeX == x && PlayerHandler.players[t].treeY == y) { - PlayerHandler.players[t].isWoodcutting = false; - PlayerHandler.players[t].startAnimation(65535); - PlayerHandler.players[t].treeX = 0; - PlayerHandler.players[t].treeY = 0; - } - } - } - } -} +package com.rebotted.game.content.skills.core; + +import com.rebotted.GameEngine; +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.content.music.sound.SoundList; +import com.rebotted.game.content.randomevents.RandomEventHandler; +import com.rebotted.game.content.randomevents.TreeSpirit; +import com.rebotted.game.content.skills.SkillHandler; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.objects.Object; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerHandler; +import com.rebotted.util.Misc; + +public class Woodcutting { + + public final static int[][] Axe_Settings = { + {1351, 1, 1, 879}, + {1349, 1, 2, 877}, + {1353, 6, 3, 875}, + {1361, 6, 4, 873}, + {1355, 21, 5, 871}, + {1357, 31, 6, 869}, + {1359, 41, 7, 867}, + {6739, 61, 8, 2846}, + {13661, 41, 8, 10251} + }; + + public final static int[][] Tree_Settings = { + { 1276, 1342, 1, 25, 1511, 45, 100 }, + { 1278, 1342, 1, 25, 1511, 45, 100 }, + { 1286, 1342, 1, 25, 1511, 45, 100 }, + { 1281, 1356, 15, 38, 1521, 11, 20 }, + { 1308, 7399, 30, 68, 1519, 11, 8 }, + { 5552, 7399, 30, 68, 1519, 11, 8 }, + { 1307, 1343, 45, 100, 1517, 48, 8 }, + { 1309, 7402, 60, 175, 1515, 79, 5 }, + { 1306, 7401, 75, 250, 1513, 150, 3 }, + { 5551, 7399, 30, 68, 1519, 11, 8 }, + { 5553, 7399, 30, 68, 1519, 11, 8 }, + { 3033, 1342, 1, 25, 1511, 45, 100 }, + { 3037, 1356, 15, 38, 1521, 11, 20 }, + { 1282, 1342, 1, 25, 1511, 45, 100 }, + { 1383, 1342, 1, 25, 1511, 45, 100 }, + { 2023, 3371, 1, 25, 2862, 45, 100 }, + { 1319, 1341, 1, 25, 1511, 45, 100 }, + { 1318, 1341, 1, 25, 1511, 45, 100 }, + { 1315, 1341, 1, 25, 1511, 45, 100 }, + { 1316, 1341, 1, 25, 1511, 45, 100 }, + { 1332, 1341, 1, 25, 1511, 45, 100 }, + { 1292, 1341, 36, 1, 771, 45, 100 } + }; + + public static int[][] FIX_AXE = { { 492, 508, 1351 }, { 492, 510, 1349 }, + { 492, 512, 1353 }, { 492, 514, 1361 }, { 492, 516, 1355 }, + { 492, 518, 1357 }, { 492, 520, 1359 }, }; + + private static int a = -1; + + public static void repeatAnimation(final Player p) { + CycleEventHandler.getSingleton().addEvent(p, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (p.isWoodcutting) + { + if ((a >= 0) && (a < Axe_Settings.length)) + { + try + { + p.startAnimation(Axe_Settings[a][3]); + } catch (ArrayIndexOutOfBoundsException exception) + { + System.out.println("LOL this happend again: " + exception); + } + p.getPacketSender().sendSound(SoundList.TREE_CUTTING, 100, 0); + } + } + else + { + container.stop(); + } + } + + @Override + public void stop() { + stopWoodcutting(p); + } + }, 3); + } + + public static void handleCanoe(final Player player, final int objectId) { + Boolean gotAxe = false; + if (player.playerLevel[player.playerWoodcutting] < 12) { + player.getPacketSender().sendMessage("You need a woodcutting level of at least 12 to use the canoe station."); + return; + } + + for (int axes[] : Axe_Settings) { + int type = axes[0]; + if ( player.getItemAssistant().playerHasItem(type) || player.playerEquipment[player.playerWeapon] == type) + { + gotAxe = true; + } + } + if (gotAxe) + { + player.getPacketSender().sendMessage("You swing your axe at the station."); + } + else + { + player.getPacketSender().sendMessage("You need an axe to cut the station."); + return; + } + for (int axes[] : Axe_Settings) { + int type = axes[0]; + int level = axes[1]; + int anim = axes[3]; + if (player.playerLevel[player.playerWoodcutting] >= level && player.getItemAssistant().playerHasItem(type) || player.playerLevel[player.playerWoodcutting] >= level && player.playerEquipment[player.playerWeapon] == type) { + player.turnPlayerTo(player.objectX, player.objectY); + player.startAnimation(anim); + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + addFallenTree(player, objectId); + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + player.getPlayerAssistant().handleCanoe(); + container.stop(); + } + + @Override + public void stop() { + + } + + }, 1); + player.getPacketSender().sendMessage("You cut down the canoe. Please wait..."); + container.stop(); + } + + @Override + public void stop() { + + } + }, 4); + } + } + } + + public void fixAxe(final Player player) { + for (int fix[] : FIX_AXE) { + int axeHandle = fix[0]; + int axeHead = fix[1]; + final int fixedAxe = fix[2]; + if (player.getItemAssistant().playerHasItem(axeHandle) && player.getItemAssistant().playerHasItem(axeHead)) { + player.isWoodcutting = true; + player.getItemAssistant().deleteItem(axeHandle, 1); + player.getItemAssistant().deleteItem(axeHead, 1); + player.getPacketSender().closeAllWindows(); + player.getPacketSender().sendMessage("Your axe handle and axe head have been taken."); + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + player.getItemAssistant().addItem(fixedAxe, 1); + player.getPacketSender().sendMessage("Your axe has been fixed."); + container.stop(); + } + @Override + public void stop() { + + } + }, 1); + } + } + } + + public static void addFallenTree(Player player, int canoe) { + if (canoe == player.objectId) { + for (Player players : PlayerHandler.players) { + if (players != null) { + new Object(1296, player.objectX, player.objectY, 0, 0, 10, canoe, 20 + Misc.random(40)); + } + } + } + } + + public static boolean hasAxe(Player player) { + for (int i = 0; i < Axe_Settings.length; i++) { + if (player.getItemAssistant().playerHasItem(Axe_Settings[i][0]) || player.playerEquipment[player.playerWeapon] == Axe_Settings[i][0]) { + return true; + } + } + return false; + } + + public static void startWoodcutting(final Player p, final int j, final int x, final int y, final int type) { + CycleEventHandler.getSingleton().stopEvents(p, "WoodcuttingEvent".hashCode()); + if (p.isWoodcutting || p.isFletching || p.isFiremaking || p.playerIsFletching) { + return; + } + if (p.absX == 2717 && p.absY == 3461) { + p.getPacketSender().sendMessage("You can't cut the tree from here!"); + return; + } + if (!SkillHandler.WOODCUTTING) { + p.getPacketSender().sendMessage("This skill is currently disabled."); + return; + } + int wcLevel = p.playerLevel[8]; + a = -1; + p.turnPlayerTo(x, y); + if (Tree_Settings[j][2] > wcLevel) { + p.getPacketSender().sendMessage("You need a Woodcutting level of " + Tree_Settings[j][2] + " to cut this tree."); + return; + } + for (int i = 0; i < Axe_Settings.length; i++) { + if (p.getItemAssistant().playerHasItem(Axe_Settings[i][0]) || p.playerEquipment[p.playerWeapon] == Axe_Settings[i][0]) { + if (Axe_Settings[i][1] <= wcLevel) { + a = i; + } + } + } + if (a == -1) { + p.getPacketSender().sendMessage("You need an axe to cut this tree."); + return; + } + if (p.getItemAssistant().freeSlots() < 1) { + p.getPacketSender().sendMessage("You do not have enough inventory slots to do that."); + return; + } + if (Misc.goodDistance(p.objectX, p.objectY, p.absX, p.absY, 3)) { + if (p.isWoodcutting) { + p.getPacketSender().sendMessage("You are already woodcutting!"); + return; + } + p.startAnimation(Axe_Settings[a][3]); + p.isWoodcutting = true; + p.getPacketSender().sendSound(SoundList.TREE_CUT_BEGIN, 100, 0); + repeatAnimation(p); + p.treeX = x; + p.treeY = y; + if (p.tutorialProgress == 3) { + p.getPacketSender().closeAllWindows(); + p.getPacketSender().chatbox(6180); + if (p.playerAppearance[0] == 0) { + p.getDialogueHandler().chatboxText(p, "", "Your character is now attempting to cut down the tree. Sit back", "for a moment while he does all the hard work.", "", "Please wait"); + } else { + p.getDialogueHandler().chatboxText(p, "", "Your character is now attempting to cut down the tree. Sit back", "for a moment while she does all the hard work.", "", "Please wait"); + } + p.getPacketSender().chatbox(6179); + } else { + p.getPacketSender().sendMessage("You swing your axe at the tree."); + } + CycleEventHandler.getSingleton().addEvent("WoodcuttingEvent".hashCode(), p, new CycleEvent() { + + @Override + public void execute(CycleEventContainer container) { + if (a <= -1) + { + container.stop(); + return; + } + if (!p.isWoodcutting) { + container.stop(); + return; + } + if (p.disconnected) { + container.stop(); + return; + } + if (p.isWoodcutting) { + p.startAnimation(Axe_Settings[a][3]); + } + if (p.getItemAssistant().freeSlots() < 1) { + p.getPacketSender().sendMessage("You have ran out of inventory slots."); + container.stop(); + } + int XP = Tree_Settings[j][3]; + if (p.isWoodcutting) { + p.getItemAssistant().addItem(Tree_Settings[j][4], 1); + p.getPlayerAssistant().addSkillXP(XP, 8); + p.getPacketSender().sendMessage("You manage to get some " + ItemAssistant.getItemName(Tree_Settings[j][4]).toLowerCase() + " from the tree."); + } + if (p.tutorialProgress == 3) { + p.getDialogueHandler().sendDialogues(3014, 0); + } + if (p.isWoodcutting) { + birdNests(p); + } + if (p.isWoodcutting && p.tutorialProgress >= 36 && p.treeSpiritSpawned == false) { + RandomEventHandler.addRandom(p); + } + if (p.isWoodcutting && Misc.random(350) == 69 && p.tutorialProgress >= 36 && p.randomEventsEnabled) { + TreeSpirit.spawnTreeSpirit(p); + } + if (p.playerIsFletching || p.isFiremaking) { + container.stop(); + } + if (Misc.random(100) <= Tree_Settings[j][6]) { + cutDownTree(Tree_Settings[j][5], x, y, type, Tree_Settings[j][1], Tree_Settings[j][0]); + p.getPacketSender().sendSound(SoundList.TREE_EMPTY, 100, 0); + container.stop(); + } + } + @Override + public void stop() { + p.startAnimation(65535); + p.isWoodcutting = false; + p.treeX = 0; + p.treeY = 0; + } + }, getTimer(j, a, wcLevel)); + } + } + + public static void stopWoodcutting(Player player) { + player.startAnimation(65535); + player.isWoodcutting = false; + player.treeX = 0; + player.treeY = 0; + } + + public static int getTimer(int b, int c, int level) { + double timer = (int)((Tree_Settings[b][2] * 2) + 20 + Misc.random(20))-((Axe_Settings[c][2] * (Axe_Settings[c][2] * 0.75)) + level); + if (timer < 3.0) { + return 3; + } else { + return (int)timer; + } + } + + public static void birdNests(Player p) { + if (Misc.random(200) == 69 && p.tutorialProgress >= 36) { + p.getPacketSender().sendMessage("A birds nest falls from the branches."); + dropNest(p); + } + } + + public static void dropNest(Player p) { + GameEngine.itemHandler.createGroundItem(p, 5070 + Misc.random(4), p.getX(), p.getY(), 1, p.getId()); + } + + public static boolean playerTrees(Player player, int tree) { + boolean trees2 = false; + for (int i = 0; i < trees.length; i++) { + for (int i1 = 0; i1 < 6; i1++) { + if (tree == trees[i1][i]) { + trees2 = true; + } + } + } + return trees2; + } + + public static int[][] trees = { + { // NORMAL + 1276, 1277, 1278, 1279, 1280, 1282, 1283, 1284, 1285, 1286, 1287, + 1288, 1289, 1290, 1291, 1301, 1303, 1304, 1305, 1318, 1319, + 1315, 1316, 1330, 1331, 1332, 1333, 1383, 1384, 2409, 2447, + 2448, 3033, 3034, 3035, 3036, 3879, 3881, 3883, 3893, 3885, + 3886, 3887, 3888, 3892, 3889, 3890, 3891, 3928, 3967, 3968, + 4048, 4049, 4050, 4051, 4052, 4053, 4054, 4060, 5004, 5005, + 5045, 5902, 5903, 5904, 8973, 8974, 10041, 10081, 10082, + 10664, 11112, 11510, 12559, 12560, 12732, 12895, 12896, + 13412, 13411, 13419, 13843, 13844, 13845, 13847, 13848, + 13849, 13850, 14308, 14309, 14513, 14514, 14515, 14521, + 14564, 14565, 14566, 14593, 14594, 14595, 14600, 14635, + 14636, 14637, 14642, 14664, 14665, 14666, 14693, 14694, + 14695, 14696, 14701, 14738, 14796, 14797, 14798, 14799, + 14800, 14801, 14802, 14803, 14804, 14805, 14806, 14807, + 15489, 15776, 15777, 16264, 16265, 19165, 19166, 19167, + 23381, + + }, + { // OAK + 1281, 3037, 8462, 8463, 8464, 8465, 8466, 8467, 10083, 13413, + 13420, }, + { // WILLOW + 1308, 5551, 5552, 5553, 8481, 8482, 8483, 8484, 8485, 8486, 8487, + 8488, 8496, 8497, 8498, 8499, 8500, 8501, 13414, 13421, }, + { // MAPLE + 1307, 4674, 8435, 8436, 8437, 8438, 8439, 8440, 8441, 8442, 8443, + 8444, 8454, 8455, 8456, 8457, 8458, 8459, 8460, 8461, + 13415, 13423, }, { // YEW + 1309, 8503, 8504, 8505, 8506, 8507, 8508, 8509, 8510, 8511, 8512, + 8513, 13416, 13422, }, { // MAGIC + 1306, 8396, 8397, 8398, 8399, 8400, 8401, 8402, 8403, 8404, 8405, + 8406, 8407, 8408, 8409, 13417, 13424, } }; + + public static void cutDownTree(int respawnTime, int x, int y, int type, int i, int j) { + new Object(i, x, y, 0, type, 10, j, respawnTime); + for (int t = 0; t < PlayerHandler.players.length; t++) { + if (PlayerHandler.players[t] != null) { + if (PlayerHandler.players[t].treeX == x && PlayerHandler.players[t].treeY == y) { + PlayerHandler.players[t].isWoodcutting = false; + PlayerHandler.players[t].startAnimation(65535); + PlayerHandler.players[t].treeX = 0; + PlayerHandler.players[t].treeY = 0; + } + } + } + } +} diff --git a/2006Redone Server/src/redone/game/content/skills/crafting/CraftingData.java b/2006Redone Server/src/com/rebotted/game/content/skills/crafting/CraftingData.java similarity index 95% rename from 2006Redone Server/src/redone/game/content/skills/crafting/CraftingData.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/crafting/CraftingData.java index 41c3cdfd..c4c4db36 100644 --- a/2006Redone Server/src/redone/game/content/skills/crafting/CraftingData.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/crafting/CraftingData.java @@ -1,367 +1,367 @@ -package redone.game.content.skills.crafting; - -import redone.game.content.skills.SkillHandler; - -public class CraftingData extends SkillHandler { - - public static enum tanningData { - - SOFT_LEATHER(new int[][] { { 57225, 1 }, { 57217, 5 }, { 57201, 28 } }, - 1739, 1741, 1, new int[] { 14777, 14785, 14769 }, - "Soft leather"), HARD_LEATHER(new int[][] { { 57226, 1 }, - { 57218, 5 }, { 57202, 28 } }, 1739, 1743, 3, new int[] { - 14778, 14786, 14770 }, "Hard leather"), SNAKESKIN(new int[][] { - { 57227, 1 }, { 57219, 5 }, { 57203, 28 } }, 6287, 6289, 15, - new int[] { 14779, 14787, 14771 }, "Snakeskin"), SNAKESKIN2( - new int[][] { { 57228, 1 }, { 57220, 5 }, { 57204, 28 } }, - 6287, 6289, 20, new int[] { 14780, 14788, 14772 }, "Snakeskin"), GREEN_DRAGON_LEATHER( - new int[][] { { 57229, 1 }, { 57221, 5 }, { 57205, 28 } }, - 1753, 1745, 20, new int[] { 14781, 14789, 14773 }, - "Green d'hide"), BLUE_DRAGON_LEATHER(new int[][] { - { 57230, 1 }, { 57222, 5 }, { 57206, 28 } }, 1751, 2505, 20, - new int[] { 14782, 14790, 14774 }, "Blue d'hide"), RED_DRAGON_LEATHER( - new int[][] { { 57231, 1 }, { 57223, 5 }, { 57207, 28 } }, - 1749, 2507, 20, new int[] { 14783, 14791, 14775 }, "Red d'hide"), BLACK_DRAGON_LEATHER( - new int[][] { { 57232, 1 }, { 57224, 5 }, { 57208, 28 } }, - 1747, 2509, 20, new int[] { 14784, 14792, 14776 }, - "Black d'hide"); - - private final int[][] buttonId; - private final int hideId, leatherId, price; - private final int[] frameId; - private final String name; - - private tanningData(final int[][] buttonId, final int hideId, - final int leatherId, final int price, final int[] frameId, - final String name) { - this.buttonId = buttonId; - this.hideId = hideId; - this.leatherId = leatherId; - this.price = price; - this.frameId = frameId; - this.name = name; - } - - public int getButtonId(final int button) { - for (int[] element : buttonId) { - if (button == element[0]) { - return element[0]; - } - } - return -1; - } - - public int getAmount(final int button) { - for (int[] element : buttonId) { - if (button == element[0]) { - return element[1]; - } - } - return -1; - } - - public int getHideId() { - return hideId; - } - - public int getLeatherId() { - return leatherId; - } - - public int getPrice() { - return price; - } - - public int getNameFrame() { - return frameId[0]; - } - - public int getCostFrame() { - return frameId[1]; - } - - public int getItemFrame() { - return frameId[2]; - } - - public String getName() { - return name; - } - } - - public static enum leatherDialogueData { - - GREEN_LEATHER(1745, 1065, 1135, 1099), BLUE_LEATHER(2505, 2487, 2499, - 2493), RED_LEATHER(2507, 2489, 2501, 2495), BLACK_LEATHER(2509, - 2491, 2503, 2497); - - private final int leather, vambraces, chaps, body; - - private leatherDialogueData(final int leather, final int vambraces, - final int chaps, final int body) { - this.leather = leather; - this.vambraces = vambraces; - this.chaps = chaps; - this.body = body; - } - - public int getLeather() { - return leather; - } - - public int getVamb() { - return vambraces; - } - - public int getChaps() { - return chaps; - } - - public int getBody() { - return body; - } - } - - public enum Leather { - - LEATHER_GLOVES(1733, 1741, 1059, 1, 1, 13.75), LEATHER_BOOTS(1733, - 1741, 1061, 1, 7, 16.25); - - public int item1, leatherId, product, amountOfLeather, level; - public double xp; - - public static Leather forId(int itemUsed, int usedWith) { - for (Leather Data : Leather.values()) { - if (Data.item1 == itemUsed && Data.leatherId == usedWith - || Data.leatherId == itemUsed && Data.item1 == usedWith) { - return Data; - } - } - return null; - } - - private Leather(int item1, int leatherId, int product, - int amountOfLeather, int level, double xp) { - this.leatherId = leatherId; - this.product = product; - this.amountOfLeather = amountOfLeather; - this.level = level; - this.xp = xp; - } - - public int needle() { - return item1; - } - - public int getLeather() { - return leatherId; - } - - public int getProduct() { - return product; - } - - public int amountOfLeather4Product() { - return amountOfLeather; - } - - public int getLevel() { - return level; - } - - public double getXp() { - return xp; - } - } - - public static enum leatherData { - - LEATHER_BODY(new int[][] { { 33187, 1 }, { 33186, 5 }, { 33185, 10 } }, - 1741, 1129, 14, 25, 1), LEATHER_GLOVES(new int[][] { - { 33190, 1 }, { 33189, 5 }, { 33188, 10 } }, 1741, 1059, 1, - 13.8, 1), LEATHER_BOOTS(new int[][] { { 33193, 1 }, - { 33192, 5 }, { 33191, 10 } }, 1741, 1061, 7, 16.25, 1), LEATHER_VAMBRACES( - new int[][] { { 33196, 1 }, { 33195, 5 }, { 33194, 10 } }, 1741, - 1063, 11, 22, 1), LEATHER_CHAPS(new int[][] { { 33199, 1 }, - { 33198, 5 }, { 33197, 10 } }, 1741, 1095, 18, 27, 1), LEATHER_COIF( - new int[][] { { 33202, 1 }, { 33201, 5 }, { 33200, 10 } }, - 1741, 1169, 38, 37, 1), LEATHER_COWL(new int[][] { - { 33205, 1 }, { 33204, 5 }, { 33203, 10 } }, 1741, 1167, 9, - 18.5, 1), HARD_LEATHER_BODY(new int[][] { { 10239, 1 }, - { 10238, 5 }, { 6212, 28 } }, 1743, 1131, 28, 35, 1), SNAKESKIN_BODY( - new int[][] { { 34245, 1 }, { 34244, 5 }, { 34243, 10 }, - { 34242, 28 } }, 6289, 6322, 53, 55, 15), SNAKESKIN_CHAPS( - new int[][] { { 34249, 1 }, { 34248, 5 }, { 34247, 10 }, - { 34246, 28 } }, 6289, 6324, 51, 50, 12), SNAKESKIN_BANDANA( - new int[][] { { 34253, 1 }, { 34252, 5 }, { 34251, 10 }, - { 34250, 28 } }, 6289, 6326, 48, 45, 5), SNAKESKIN_BOOTS( - new int[][] { { 35001, 1 }, { 35000, 5 }, { 34255, 10 }, - { 34254, 28 } }, 6289, 6328, 45, 30, 6), SNAKESKIN_VAMBRACES( - new int[][] { { 35005, 1 }, { 35004, 5 }, { 35003, 10 }, - { 35002, 28 } }, 6289, 6330, 47, 35, 8), GREEN_DHIDE_VAMBRACES( - new int[][] { { 34185, 1 }, { 34184, 5 }, { 34183, 10 }, - { 34182, 28 } }, 1745, 1065, 57, 62, 1), GREEN_DHIDE_BODY( - new int[][] { { 34189, 1 }, { 34188, 5 }, { 34187, 10 }, - { 34186, 28 } }, 1745, 1135, 63, 186, 3), GREEN_DHIDE_CHAPS( - new int[][] { { 34193, 1 }, { 34192, 5 }, { 34191, 10 }, - { 34190, 28 } }, 1745, 1099, 60, 124, 2), BLUE_DHIDE_VAMBRACES( - new int[][] { { 34185, 1 }, { 34184, 5 }, { 34183, 10 }, - { 34182, 28 } }, 2505, 2487, 66, 70, 1), BLUE_DHIDE_BODY( - new int[][] { { 34189, 1 }, { 34188, 5 }, { 34187, 10 }, - { 34186, 28 } }, 2505, 2499, 71, 210, 3), BLUE_DHIDE_CHAPS( - new int[][] { { 34193, 1 }, { 34192, 5 }, { 34191, 10 }, - { 34190, 28 } }, 2505, 2493, 68, 140, 2), RED_DHIDE_VAMBRACES( - new int[][] { { 34185, 1 }, { 34184, 5 }, { 34183, 10 }, - { 34182, 28 } }, 2507, 2489, 73, 78, 1), RED_DHIDE_BODY( - new int[][] { { 34189, 1 }, { 34188, 5 }, { 34187, 10 }, - { 34186, 28 } }, 2507, 2501, 77, 234, 3), RED_DHIDE_CHAPS( - new int[][] { { 34193, 1 }, { 34192, 5 }, { 34191, 10 }, - { 34190, 28 } }, 2507, 2495, 75, 156, 2), BLACK_DHIDE_VAMBRACES( - new int[][] { { 34185, 1 }, { 34184, 5 }, { 34183, 10 }, - { 34182, 28 } }, 2509, 2491, 79, 86, 1), BLACK_DHIDE_BODY( - new int[][] { { 34189, 1 }, { 34188, 5 }, { 34187, 10 }, - { 34186, 28 } }, 2509, 2503, 84, 258, 3), BLACK_DHIDE_CHAPS( - new int[][] { { 34193, 1 }, { 34192, 5 }, { 34191, 10 }, - { 34190, 28 } }, 2509, 2497, 82, 172, 2); - - private final int[][] buttonId; - private final int leather, product, level, amount; - private final double xp; - - private leatherData(final int[][] buttonId, final int leather, - final int product, final int level, final double xp, - final int amount) { - this.buttonId = buttonId; - this.leather = leather; - this.product = product; - this.level = level; - this.xp = xp; - this.amount = amount; - } - - public int getButtonId(final int button) { - for (int[] element : buttonId) { - if (button == element[0]) { - return element[0]; - } - } - return -1; - } - - public int getAmount(final int button) { - for (int[] element : buttonId) { - if (button == element[0]) { - return element[1]; - } - } - return -1; - } - - public int getLeather() { - return leather; - } - - public int getProduct() { - return product; - } - - public int getLevel() { - return level; - } - - public double getXP() { - return xp; - } - - public int getHideAmount() { - return amount; - } - } - - public static enum cutGemData { - - SAPPHIRE(1623, 1607, 20, 50, 888), EMERALD(1621, 1605, 27, 67, 889), RUBY( - 1619, 1603, 34, 85, 887), DIAMOND(1617, 1601, 43, 107.5, 886), DRAGONSTONE( - 1631, 1615, 55, 137.5, 885), ONYX(6571, 6573, 67, 168, 885), /** - * - * Need correct animation ID - **/ - OPAL(1625, 1609, 1, 12, 890), JADE(1627, 1611, 13, 20, 891), RED_TOPAZ( - 1629, 1613, 16, 25, 892); - - private final int uncut, cut, level, animation; - private final double xp; - - private cutGemData(final int uncut, final int cut, final int level, - final double xp, final int animation) { - this.uncut = uncut; - this.cut = cut; - this.level = level; - this.xp = xp; - this.animation = animation; - } - - public int getUncut() { - return uncut; - } - - public int getCut() { - return cut; - } - - public int getLevel() { - return level; - } - - public double getXP() { - return xp; - } - - public int getAnimation() { - return animation; - } - } - - public static enum jewelryData { - - RINGS(new int[][] { { 2357, 1635, 5, 15 }, { 1607, 1637, 20, 40 }, - { 1605, 1639, 27, 55 }, { 1603, 1641, 34, 70 }, - { 1601, 1643, 43, 85 }, { 1615, 1645, 55, 100 }, - { 6573, 6575, 67, 115 } }), NECKLACE(new int[][] { - { 2357, 1654, 6, 20 }, { 1607, 1656, 22, 55 }, - { 1605, 1658, 29, 60 }, { 1603, 1660, 40, 75 }, - { 1601, 1662, 56, 90 }, { 1615, 1664, 72, 105 }, - { 6573, 6577, 82, 120 } }), AMULETS(new int[][] { - { 2357, 1673, 8, 30 }, { 1607, 1675, 24, 65 }, - { 1605, 1677, 31, 70 }, { 1603, 1679, 50, 85 }, - { 1601, 1681, 70, 100 }, { 1615, 1683, 80, 150 }, - { 6573, 6579, 90, 165 } }); - - public int[][] item; - - private jewelryData(final int[][] item) { - this.item = item; - } - } - - public static enum amuletData { - GOLD(1673, 1692), SAPPHIRE(1675, 1694), EMERALD(1677, 1696), RUBY(1679, - 1698), DIAMOND(1681, 1700), DRAGONSTONE(1683, 1702), ONYX(6579, - 6581); - - private final int amuletId, product; - - private amuletData(final int amuletId, final int product) { - this.amuletId = amuletId; - this.product = product; - } - - public int getAmuletId() { - return amuletId; - } - - public int getProduct() { - return product; - } - } -} +package com.rebotted.game.content.skills.crafting; + +import com.rebotted.game.content.skills.SkillHandler; + +public class CraftingData extends SkillHandler { + + public static enum tanningData { + + SOFT_LEATHER(new int[][] { { 57225, 1 }, { 57217, 5 }, { 57201, 28 } }, + 1739, 1741, 1, new int[] { 14777, 14785, 14769 }, + "Soft leather"), HARD_LEATHER(new int[][] { { 57226, 1 }, + { 57218, 5 }, { 57202, 28 } }, 1739, 1743, 3, new int[] { + 14778, 14786, 14770 }, "Hard leather"), SNAKESKIN(new int[][] { + { 57227, 1 }, { 57219, 5 }, { 57203, 28 } }, 6287, 6289, 15, + new int[] { 14779, 14787, 14771 }, "Snakeskin"), SNAKESKIN2( + new int[][] { { 57228, 1 }, { 57220, 5 }, { 57204, 28 } }, + 6287, 6289, 20, new int[] { 14780, 14788, 14772 }, "Snakeskin"), GREEN_DRAGON_LEATHER( + new int[][] { { 57229, 1 }, { 57221, 5 }, { 57205, 28 } }, + 1753, 1745, 20, new int[] { 14781, 14789, 14773 }, + "Green d'hide"), BLUE_DRAGON_LEATHER(new int[][] { + { 57230, 1 }, { 57222, 5 }, { 57206, 28 } }, 1751, 2505, 20, + new int[] { 14782, 14790, 14774 }, "Blue d'hide"), RED_DRAGON_LEATHER( + new int[][] { { 57231, 1 }, { 57223, 5 }, { 57207, 28 } }, + 1749, 2507, 20, new int[] { 14783, 14791, 14775 }, "Red d'hide"), BLACK_DRAGON_LEATHER( + new int[][] { { 57232, 1 }, { 57224, 5 }, { 57208, 28 } }, + 1747, 2509, 20, new int[] { 14784, 14792, 14776 }, + "Black d'hide"); + + private final int[][] buttonId; + private final int hideId, leatherId, price; + private final int[] frameId; + private final String name; + + private tanningData(final int[][] buttonId, final int hideId, + final int leatherId, final int price, final int[] frameId, + final String name) { + this.buttonId = buttonId; + this.hideId = hideId; + this.leatherId = leatherId; + this.price = price; + this.frameId = frameId; + this.name = name; + } + + public int getButtonId(final int button) { + for (int[] element : buttonId) { + if (button == element[0]) { + return element[0]; + } + } + return -1; + } + + public int getAmount(final int button) { + for (int[] element : buttonId) { + if (button == element[0]) { + return element[1]; + } + } + return -1; + } + + public int getHideId() { + return hideId; + } + + public int getLeatherId() { + return leatherId; + } + + public int getPrice() { + return price; + } + + public int getNameFrame() { + return frameId[0]; + } + + public int getCostFrame() { + return frameId[1]; + } + + public int getItemFrame() { + return frameId[2]; + } + + public String getName() { + return name; + } + } + + public static enum leatherDialogueData { + + GREEN_LEATHER(1745, 1065, 1135, 1099), BLUE_LEATHER(2505, 2487, 2499, + 2493), RED_LEATHER(2507, 2489, 2501, 2495), BLACK_LEATHER(2509, + 2491, 2503, 2497); + + private final int leather, vambraces, chaps, body; + + private leatherDialogueData(final int leather, final int vambraces, + final int chaps, final int body) { + this.leather = leather; + this.vambraces = vambraces; + this.chaps = chaps; + this.body = body; + } + + public int getLeather() { + return leather; + } + + public int getVamb() { + return vambraces; + } + + public int getChaps() { + return chaps; + } + + public int getBody() { + return body; + } + } + + public enum Leather { + + LEATHER_GLOVES(1733, 1741, 1059, 1, 1, 13.75), LEATHER_BOOTS(1733, + 1741, 1061, 1, 7, 16.25); + + public int item1, leatherId, product, amountOfLeather, level; + public double xp; + + public static Leather forId(int itemUsed, int usedWith) { + for (Leather Data : Leather.values()) { + if (Data.item1 == itemUsed && Data.leatherId == usedWith + || Data.leatherId == itemUsed && Data.item1 == usedWith) { + return Data; + } + } + return null; + } + + private Leather(int item1, int leatherId, int product, + int amountOfLeather, int level, double xp) { + this.leatherId = leatherId; + this.product = product; + this.amountOfLeather = amountOfLeather; + this.level = level; + this.xp = xp; + } + + public int needle() { + return item1; + } + + public int getLeather() { + return leatherId; + } + + public int getProduct() { + return product; + } + + public int amountOfLeather4Product() { + return amountOfLeather; + } + + public int getLevel() { + return level; + } + + public double getXp() { + return xp; + } + } + + public static enum leatherData { + + LEATHER_BODY(new int[][] { { 33187, 1 }, { 33186, 5 }, { 33185, 10 } }, + 1741, 1129, 14, 25, 1), LEATHER_GLOVES(new int[][] { + { 33190, 1 }, { 33189, 5 }, { 33188, 10 } }, 1741, 1059, 1, + 13.8, 1), LEATHER_BOOTS(new int[][] { { 33193, 1 }, + { 33192, 5 }, { 33191, 10 } }, 1741, 1061, 7, 16.25, 1), LEATHER_VAMBRACES( + new int[][] { { 33196, 1 }, { 33195, 5 }, { 33194, 10 } }, 1741, + 1063, 11, 22, 1), LEATHER_CHAPS(new int[][] { { 33199, 1 }, + { 33198, 5 }, { 33197, 10 } }, 1741, 1095, 18, 27, 1), LEATHER_COIF( + new int[][] { { 33202, 1 }, { 33201, 5 }, { 33200, 10 } }, + 1741, 1169, 38, 37, 1), LEATHER_COWL(new int[][] { + { 33205, 1 }, { 33204, 5 }, { 33203, 10 } }, 1741, 1167, 9, + 18.5, 1), HARD_LEATHER_BODY(new int[][] { { 10239, 1 }, + { 10238, 5 }, { 6212, 28 } }, 1743, 1131, 28, 35, 1), SNAKESKIN_BODY( + new int[][] { { 34245, 1 }, { 34244, 5 }, { 34243, 10 }, + { 34242, 28 } }, 6289, 6322, 53, 55, 15), SNAKESKIN_CHAPS( + new int[][] { { 34249, 1 }, { 34248, 5 }, { 34247, 10 }, + { 34246, 28 } }, 6289, 6324, 51, 50, 12), SNAKESKIN_BANDANA( + new int[][] { { 34253, 1 }, { 34252, 5 }, { 34251, 10 }, + { 34250, 28 } }, 6289, 6326, 48, 45, 5), SNAKESKIN_BOOTS( + new int[][] { { 35001, 1 }, { 35000, 5 }, { 34255, 10 }, + { 34254, 28 } }, 6289, 6328, 45, 30, 6), SNAKESKIN_VAMBRACES( + new int[][] { { 35005, 1 }, { 35004, 5 }, { 35003, 10 }, + { 35002, 28 } }, 6289, 6330, 47, 35, 8), GREEN_DHIDE_VAMBRACES( + new int[][] { { 34185, 1 }, { 34184, 5 }, { 34183, 10 }, + { 34182, 28 } }, 1745, 1065, 57, 62, 1), GREEN_DHIDE_BODY( + new int[][] { { 34189, 1 }, { 34188, 5 }, { 34187, 10 }, + { 34186, 28 } }, 1745, 1135, 63, 186, 3), GREEN_DHIDE_CHAPS( + new int[][] { { 34193, 1 }, { 34192, 5 }, { 34191, 10 }, + { 34190, 28 } }, 1745, 1099, 60, 124, 2), BLUE_DHIDE_VAMBRACES( + new int[][] { { 34185, 1 }, { 34184, 5 }, { 34183, 10 }, + { 34182, 28 } }, 2505, 2487, 66, 70, 1), BLUE_DHIDE_BODY( + new int[][] { { 34189, 1 }, { 34188, 5 }, { 34187, 10 }, + { 34186, 28 } }, 2505, 2499, 71, 210, 3), BLUE_DHIDE_CHAPS( + new int[][] { { 34193, 1 }, { 34192, 5 }, { 34191, 10 }, + { 34190, 28 } }, 2505, 2493, 68, 140, 2), RED_DHIDE_VAMBRACES( + new int[][] { { 34185, 1 }, { 34184, 5 }, { 34183, 10 }, + { 34182, 28 } }, 2507, 2489, 73, 78, 1), RED_DHIDE_BODY( + new int[][] { { 34189, 1 }, { 34188, 5 }, { 34187, 10 }, + { 34186, 28 } }, 2507, 2501, 77, 234, 3), RED_DHIDE_CHAPS( + new int[][] { { 34193, 1 }, { 34192, 5 }, { 34191, 10 }, + { 34190, 28 } }, 2507, 2495, 75, 156, 2), BLACK_DHIDE_VAMBRACES( + new int[][] { { 34185, 1 }, { 34184, 5 }, { 34183, 10 }, + { 34182, 28 } }, 2509, 2491, 79, 86, 1), BLACK_DHIDE_BODY( + new int[][] { { 34189, 1 }, { 34188, 5 }, { 34187, 10 }, + { 34186, 28 } }, 2509, 2503, 84, 258, 3), BLACK_DHIDE_CHAPS( + new int[][] { { 34193, 1 }, { 34192, 5 }, { 34191, 10 }, + { 34190, 28 } }, 2509, 2497, 82, 172, 2); + + private final int[][] buttonId; + private final int leather, product, level, amount; + private final double xp; + + private leatherData(final int[][] buttonId, final int leather, + final int product, final int level, final double xp, + final int amount) { + this.buttonId = buttonId; + this.leather = leather; + this.product = product; + this.level = level; + this.xp = xp; + this.amount = amount; + } + + public int getButtonId(final int button) { + for (int[] element : buttonId) { + if (button == element[0]) { + return element[0]; + } + } + return -1; + } + + public int getAmount(final int button) { + for (int[] element : buttonId) { + if (button == element[0]) { + return element[1]; + } + } + return -1; + } + + public int getLeather() { + return leather; + } + + public int getProduct() { + return product; + } + + public int getLevel() { + return level; + } + + public double getXP() { + return xp; + } + + public int getHideAmount() { + return amount; + } + } + + public static enum cutGemData { + + SAPPHIRE(1623, 1607, 20, 50, 888), EMERALD(1621, 1605, 27, 67, 889), RUBY( + 1619, 1603, 34, 85, 887), DIAMOND(1617, 1601, 43, 107.5, 886), DRAGONSTONE( + 1631, 1615, 55, 137.5, 885), ONYX(6571, 6573, 67, 168, 885), /** + * + * Need correct animation ID + **/ + OPAL(1625, 1609, 1, 12, 890), JADE(1627, 1611, 13, 20, 891), RED_TOPAZ( + 1629, 1613, 16, 25, 892); + + private final int uncut, cut, level, animation; + private final double xp; + + private cutGemData(final int uncut, final int cut, final int level, + final double xp, final int animation) { + this.uncut = uncut; + this.cut = cut; + this.level = level; + this.xp = xp; + this.animation = animation; + } + + public int getUncut() { + return uncut; + } + + public int getCut() { + return cut; + } + + public int getLevel() { + return level; + } + + public double getXP() { + return xp; + } + + public int getAnimation() { + return animation; + } + } + + public static enum jewelryData { + + RINGS(new int[][] { { 2357, 1635, 5, 15 }, { 1607, 1637, 20, 40 }, + { 1605, 1639, 27, 55 }, { 1603, 1641, 34, 70 }, + { 1601, 1643, 43, 85 }, { 1615, 1645, 55, 100 }, + { 6573, 6575, 67, 115 } }), NECKLACE(new int[][] { + { 2357, 1654, 6, 20 }, { 1607, 1656, 22, 55 }, + { 1605, 1658, 29, 60 }, { 1603, 1660, 40, 75 }, + { 1601, 1662, 56, 90 }, { 1615, 1664, 72, 105 }, + { 6573, 6577, 82, 120 } }), AMULETS(new int[][] { + { 2357, 1673, 8, 30 }, { 1607, 1675, 24, 65 }, + { 1605, 1677, 31, 70 }, { 1603, 1679, 50, 85 }, + { 1601, 1681, 70, 100 }, { 1615, 1683, 80, 150 }, + { 6573, 6579, 90, 165 } }); + + public int[][] item; + + private jewelryData(final int[][] item) { + this.item = item; + } + } + + public static enum amuletData { + GOLD(1673, 1692), SAPPHIRE(1675, 1694), EMERALD(1677, 1696), RUBY(1679, + 1698), DIAMOND(1681, 1700), DRAGONSTONE(1683, 1702), ONYX(6579, + 6581); + + private final int amuletId, product; + + private amuletData(final int amuletId, final int product) { + this.amuletId = amuletId; + this.product = product; + } + + public int getAmuletId() { + return amuletId; + } + + public int getProduct() { + return product; + } + } +} diff --git a/2006Redone Server/src/com/rebotted/game/content/skills/crafting/GemCutting.java b/2006Redone Server/src/com/rebotted/game/content/skills/crafting/GemCutting.java new file mode 100644 index 00000000..a2f8acd1 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/skills/crafting/GemCutting.java @@ -0,0 +1,76 @@ +package com.rebotted.game.content.skills.crafting; + +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.content.music.sound.SoundList; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +public class GemCutting extends CraftingData { + + public static boolean cutGem(final Player player, final int itemUsed, + final int usedWith) { + /* + * if (c.isCrafting == true) { return false; } + */ + final int itemId = itemUsed == 1755 ? usedWith : itemUsed; + for (final cutGemData g : cutGemData.values()) { + if (itemId == g.getUncut()) { + if (player.playerLevel[12] < g.getLevel()) { + player.getPacketSender().sendMessage( + "You need a crafting level of " + g.getLevel() + + " to cut this gem."); + return false; + } + if (!player.getItemAssistant().playerHasItem(itemId)) { + return false; + } + if (!CRAFTING) { + player.getPacketSender().sendMessage( + "This skill is currently disabled."); + return false; + } + player.isCrafting = true; + player.startAnimation(g.getAnimation()); + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (Misc.random(2) == 0 && itemUsed > 1624 && itemUsed < 1630 || usedWith > 1624 && usedWith < 1630 && Misc.random(2) == 0) { + player.getPacketSender().sendMessage("You fail to cut the gem."); + player.getItemAssistant().addItem(1633, 1); + player.getItemAssistant().deleteItem(itemId, 1); + player.getPlayerAssistant().addSkillXP(1, 12); + } + if (player.isCrafting == true) { + if (player.getItemAssistant().playerHasItem(itemId)) { + player.getItemAssistant().deleteItem(itemId, 1); + player.getItemAssistant().addItem(g.getCut(), 1); + player.getPlayerAssistant().addSkillXP((int) g.getXP(), 12); + player.getItemAssistant(); + player.getPacketSender().sendMessage( + "You cut the " + + ItemAssistant.getItemName( + itemId).toLowerCase() + + "."); + player.startAnimation(g.getAnimation()); + player.getPacketSender().sendSound( + SoundList.CUT_GEM, 100, 0); + } else { + container.stop(); + } + } else { + container.stop(); + } + } + @Override + public void stop() { + + } + }, 4); + } + } + return false; + } +} diff --git a/2006Redone Server/src/redone/game/content/skills/crafting/GlassBlowing.java b/2006Redone Server/src/com/rebotted/game/content/skills/crafting/GlassBlowing.java similarity index 81% rename from 2006Redone Server/src/redone/game/content/skills/crafting/GlassBlowing.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/crafting/GlassBlowing.java index df4f1548..2c4abb31 100644 --- a/2006Redone Server/src/redone/game/content/skills/crafting/GlassBlowing.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/crafting/GlassBlowing.java @@ -1,19 +1,20 @@ -package redone.game.content.skills.crafting; +package com.rebotted.game.content.skills.crafting; -import redone.Constants; -import redone.event.*; -import redone.game.items.ItemAssistant; -import redone.game.players.Client; +import com.rebotted.GameConstants; +import com.rebotted.event.*; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Player; /** * @author Arrowz flame */ + public class GlassBlowing { - private Client c; + private Player c; - public GlassBlowing(Client c) { - this.c = c; + public GlassBlowing(Player player) { + this.c = player; } public int[][] data = { @@ -38,7 +39,7 @@ public class GlassBlowing { public void showInterface() { if(!started) { - c.getPlayerAssistant().showInterface(11462); + c.getPacketSender().showInterface(11462); } } @@ -55,25 +56,25 @@ public class GlassBlowing { for(int i = 0; i < data.length; i++) { if(data[i][0] == buttonId) { makeItem(data[i][1], 1, i); - c.getPlayerAssistant().closeAllWindows(); + c.getPacketSender().closeAllWindows(); break; } if(data[i][0] == buttonId+1) { makeItem(data[i][1], 5, i); - c.getPlayerAssistant().closeAllWindows(); + c.getPacketSender().closeAllWindows(); break; } if(data[i][0] == buttonId+2) { makeItem(data[i][1], 10, i); - c.getPlayerAssistant().closeAllWindows(); + c.getPacketSender().closeAllWindows(); break; } if(data[i][0] == buttonId+3) { makeItem(data[i][1], 28, i); - c.getPlayerAssistant().closeAllWindows(); + c.getPacketSender().closeAllWindows(); break; } } @@ -81,8 +82,8 @@ public class GlassBlowing { } public void makeItem(final int id, final int amount, final int slot) { - if(c.playerLevel[Constants.CRAFTING] < data[slot][2]) { - c.getActionSender().sendMessage("You need a crafting level of "+data[slot][2]+" make a "+ItemAssistant.getItemName(id)+""); + if(c.playerLevel[GameConstants.CRAFTING] < data[slot][2]) { + c.getPacketSender().sendMessage("You need a crafting level of "+data[slot][2]+" make a "+ItemAssistant.getItemName(id)+""); return; } if(!started) { @@ -99,7 +100,7 @@ public class GlassBlowing { if(c.getItemAssistant().playerHasItem(1785)) { c.getItemAssistant().deleteItem(1775, 1); c.getItemAssistant().addItem(id, 1); - c.getPlayerAssistant().addSkillXP(data[slot][3], Constants.CRAFTING); + c.getPlayerAssistant().addSkillXP(data[slot][3], GameConstants.CRAFTING); c.startAnimation(884); made++; if(made >= amount) { diff --git a/2006Redone Server/src/redone/game/content/skills/crafting/JewelryMaking.java b/2006Redone Server/src/com/rebotted/game/content/skills/crafting/JewelryMaking.java similarity index 61% rename from 2006Redone Server/src/redone/game/content/skills/crafting/JewelryMaking.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/crafting/JewelryMaking.java index f15407dc..9572dbe5 100644 --- a/2006Redone Server/src/redone/game/content/skills/crafting/JewelryMaking.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/crafting/JewelryMaking.java @@ -1,194 +1,194 @@ -package redone.game.content.skills.crafting; - -import redone.game.items.ItemAssistant; -import redone.game.players.Client; - -public class JewelryMaking { - - private final static int[][] RINGS = { // Ring, Gem, Level, XP - { 1635, -1, 5, 15 }, { 1637, 1607, 20, 40 }, { 1639, 1605, 27, 55 }, - { 1641, 1603, 34, 70 }, { 1643, 1601, 43, 85 }, - { 1645, 1615, 55, 100 }, { 6575, 6573, 67, 115 } }; - private final static int[][] NECKLACES = { { 1654, -1, 6, 20 }, - { 1656, 1607, 22, 55 }, { 1658, 1605, 29, 60 }, - { 1660, 1603, 40, 75 }, { 1662, 1601, 56, 90 }, - { 1664, 1615, 72, 105 }, { 6577, 6573, 82, 120 } }; - private static int[][] AMULETS = { { 1673, -1, 8, 30 }, - { 1675, 1607, 24, 65 }, { 1677, 1605, 31, 70 }, - { 1679, 1603, 50, 85 }, { 1681, 1601, 70, 100 }, - { 1683, 1615, 80, 150 }, { 6579, 6573, 90, 165 } }; - - private final static int[][] MOULD_INTERFACE_IDS = { - /* Rings */ - { 1635, 1637, 1639, 1641, 1643, 1645, 6575 }, - /* Neclece */ - { 1654, 1656, 1658, 1660, 1662, 1664, 6577 }, - /* amulet */ - { 1673, 1675, 1677, 1679, 1681, 1683, 6579 } - - }; - - public static void mouldInterface(Client c) { - c.getPlayerAssistant().showInterface(4161); - /* Rings */ - if (c.getItemAssistant().playerHasItem(1592, 1)) { - for (int i = 0; i < MOULD_INTERFACE_IDS[0].length; i++) { - c.getPlayerAssistant().sendFrame34(MOULD_INTERFACE_IDS[0][i], - i, 4233, 1); - } - c.getPlayerAssistant().sendFrame34(1643, 4, 4233, 1); - c.getPlayerAssistant().sendFrame126("", 4230); - c.getPlayerAssistant().sendFrame246(4229, 0, -1); - } else { - c.getPlayerAssistant().sendFrame246(4229, 120, 1592); - for (int i = 0; i < MOULD_INTERFACE_IDS[0].length; i++) { - c.getPlayerAssistant().sendFrame34(-1, i, 4233, 1); - } - c.getPlayerAssistant().sendFrame126( - "You need a ring mould to craft rings.", 4230); - } - /* Necklace */ - if (c.getItemAssistant().playerHasItem(1597, 1)) { - for (int i = 0; i < MOULD_INTERFACE_IDS[1].length; i++) { - c.getPlayerAssistant().sendFrame34(MOULD_INTERFACE_IDS[1][i], - i, 4239, 1); - } - c.getPlayerAssistant().sendFrame34(1662, 4, 4239, 1); - c.getPlayerAssistant().sendFrame246(4235, 0, -1); - c.getPlayerAssistant().sendFrame126("", 4236); - } else { - c.getPlayerAssistant().sendFrame246(4235, 120, 1597); - c.getPlayerAssistant().sendFrame126( - "You need a necklace mould to craft necklaces", 4236); - for (int i = 0; i < MOULD_INTERFACE_IDS[1].length; i++) { - c.getPlayerAssistant().sendFrame34(-1, i, 4239, 1); - } - } - /* Amulets */ - if (c.getItemAssistant().playerHasItem(1595, 1)) { - for (int i = 0; i < MOULD_INTERFACE_IDS[2].length; i++) { - c.getPlayerAssistant().sendFrame34(MOULD_INTERFACE_IDS[2][i], - i, 4245, 1); - } - c.getPlayerAssistant().sendFrame34(1681, 4, 4245, 1); - c.getPlayerAssistant().sendFrame246(4241, 0, -1); - c.getPlayerAssistant().sendFrame126("", 4242); - } else { - c.getPlayerAssistant().sendFrame246(4241, 120, 1595); - c.getPlayerAssistant().sendFrame126( - "You need a amulet mould to craft necklaces", 4242); - for (int i = 0; i < MOULD_INTERFACE_IDS[2].length; i++) { - c.getPlayerAssistant().sendFrame34(-1, i, 4245, 1); - } - } - } - - public static void stringAmulet(final Client c, final int itemUsed, - final int usedWith) { - final int amuletId = itemUsed == 1759 ? usedWith : itemUsed; - for (final CraftingData.amuletData a : CraftingData.amuletData.values()) { - if (amuletId == a.getAmuletId()) { - c.getItemAssistant().deleteItem(1759, 1); - c.getItemAssistant().deleteItem(amuletId, 1); - c.getItemAssistant().addItem(a.getProduct(), 1); - c.getPlayerAssistant().addSkillXP(4, 12); - } - } - } - - public static void mouldItem(Client c, int item, int amount) { - int done = 0; - - final int GOLD_BAR = 2357; - - boolean isRing = false; - boolean isNeck = false; - boolean isAmulet = false; - int gem = 0; - int itemAdd = -1; - int xp = 0; - int lvl = 1; - for (int i = 0; i < 7; i++) { - if (item == RINGS[i][0]) { - isRing = true; - itemAdd = RINGS[i][0]; - gem = RINGS[i][1]; - lvl = RINGS[i][2]; - xp = RINGS[i][3]; - break; - } - if (item == NECKLACES[i][0]) { - isNeck = true; - itemAdd = NECKLACES[i][0]; - gem = NECKLACES[i][1]; - lvl = NECKLACES[i][2]; - xp = NECKLACES[i][3]; - break; - } - if (item == AMULETS[i][0]) { - isAmulet = true; - itemAdd = AMULETS[i][0]; - gem = AMULETS[i][1]; - lvl = AMULETS[i][2]; - xp = AMULETS[i][3]; - break; - } - } - if (!isRing && !isNeck && !isAmulet) { - return; - } - if (c.playerLevel[c.playerCrafting] >= lvl) { - if (ItemAssistant.getItemName(itemAdd).toLowerCase() - .contains("gold") - && !c.getItemAssistant().playerHasItem(GOLD_BAR, 1) - || !c.getItemAssistant().playerHasItem(GOLD_BAR, 1)) { - c.getActionSender().sendMessage( - "You need a Gold bar to make this."); - return; - } else if (!c.getItemAssistant().playerHasItem(gem, 1) - && c.getItemAssistant().playerHasItem(GOLD_BAR, 1)) { - c.getActionSender().sendMessage( - getRequiredMessage(ItemAssistant.getItemName(gem))); - return; - } - c.getPlayerAssistant().removeAllWindows(); - while (done < amount - && (ItemAssistant.getItemName(gem).toLowerCase() - .contains("unarmed") - && c.getItemAssistant().playerHasItem(GOLD_BAR, 1) || c - .getItemAssistant().playerHasItem(gem, 1) - && c.getItemAssistant().playerHasItem(GOLD_BAR, 1))) { - c.getItemAssistant().deleteItem(gem, 1); - c.getItemAssistant().deleteItem(GOLD_BAR, 1); - c.getItemAssistant().addItem(itemAdd, 1); - c.getPlayerAssistant().addSkillXP(xp, c.playerCrafting); - c.getPlayerAssistant().refreshSkill(c.playerCrafting); - done++; - } - if (done == 1) { - c.getActionSender().sendMessage( - "You craft the gold to form a " - + ItemAssistant.getItemName(itemAdd) + "."); - } else if (done > 1) { - c.getActionSender().sendMessage( - "You craft the gold to form " + done - + " " + ItemAssistant.getItemName(itemAdd) - + "'s."); - } - } else { - c.getActionSender().sendMessage( - "You need a Crafting level of " + lvl + " to craft this."); - return; - } - } - - public static String getRequiredMessage(String item) { - if (item.startsWith("A") || item.startsWith("E") - || item.startsWith("I") || item.startsWith("O") - || item.startsWith("U")) { - return "You need a Gold bar and an " + item + " to make this."; - } else { - return "You need a Gold bar and a " + item + " to make this."; - } - } -} +package com.rebotted.game.content.skills.crafting; + +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Player; + +public class JewelryMaking { + + private final static int[][] RINGS = { // Ring, Gem, Level, XP + { 1635, -1, 5, 15 }, { 1637, 1607, 20, 40 }, { 1639, 1605, 27, 55 }, + { 1641, 1603, 34, 70 }, { 1643, 1601, 43, 85 }, + { 1645, 1615, 55, 100 }, { 6575, 6573, 67, 115 } }; + private final static int[][] NECKLACES = { { 1654, -1, 6, 20 }, + { 1656, 1607, 22, 55 }, { 1658, 1605, 29, 60 }, + { 1660, 1603, 40, 75 }, { 1662, 1601, 56, 90 }, + { 1664, 1615, 72, 105 }, { 6577, 6573, 82, 120 } }; + private static int[][] AMULETS = { { 1673, -1, 8, 30 }, + { 1675, 1607, 24, 65 }, { 1677, 1605, 31, 70 }, + { 1679, 1603, 50, 85 }, { 1681, 1601, 70, 100 }, + { 1683, 1615, 80, 150 }, { 6579, 6573, 90, 165 } }; + + private final static int[][] MOULD_INTERFACE_IDS = { + /* Rings */ + { 1635, 1637, 1639, 1641, 1643, 1645, 6575 }, + /* Neclece */ + { 1654, 1656, 1658, 1660, 1662, 1664, 6577 }, + /* amulet */ + { 1673, 1675, 1677, 1679, 1681, 1683, 6579 } + + }; + + public static void mouldInterface(Player c) { + c.getPacketSender().showInterface(4161); + /* Rings */ + if (c.getItemAssistant().playerHasItem(1592, 1)) { + for (int i = 0; i < MOULD_INTERFACE_IDS[0].length; i++) { + c.getPacketSender().sendFrame34(MOULD_INTERFACE_IDS[0][i], + i, 4233, 1); + } + c.getPacketSender().sendFrame34(1643, 4, 4233, 1); + c.getPacketSender().sendFrame126("", 4230); + c.getPacketSender().sendFrame246(4229, 0, -1); + } else { + c.getPacketSender().sendFrame246(4229, 120, 1592); + for (int i = 0; i < MOULD_INTERFACE_IDS[0].length; i++) { + c.getPacketSender().sendFrame34(-1, i, 4233, 1); + } + c.getPacketSender().sendFrame126( + "You need a ring mould to craft rings.", 4230); + } + /* Necklace */ + if (c.getItemAssistant().playerHasItem(1597, 1)) { + for (int i = 0; i < MOULD_INTERFACE_IDS[1].length; i++) { + c.getPacketSender().sendFrame34(MOULD_INTERFACE_IDS[1][i], + i, 4239, 1); + } + c.getPacketSender().sendFrame34(1662, 4, 4239, 1); + c.getPacketSender().sendFrame246(4235, 0, -1); + c.getPacketSender().sendFrame126("", 4236); + } else { + c.getPacketSender().sendFrame246(4235, 120, 1597); + c.getPacketSender().sendFrame126( + "You need a necklace mould to craft necklaces", 4236); + for (int i = 0; i < MOULD_INTERFACE_IDS[1].length; i++) { + c.getPacketSender().sendFrame34(-1, i, 4239, 1); + } + } + /* Amulets */ + if (c.getItemAssistant().playerHasItem(1595, 1)) { + for (int i = 0; i < MOULD_INTERFACE_IDS[2].length; i++) { + c.getPacketSender().sendFrame34(MOULD_INTERFACE_IDS[2][i], + i, 4245, 1); + } + c.getPacketSender().sendFrame34(1681, 4, 4245, 1); + c.getPacketSender().sendFrame246(4241, 0, -1); + c.getPacketSender().sendFrame126("", 4242); + } else { + c.getPacketSender().sendFrame246(4241, 120, 1595); + c.getPacketSender().sendFrame126( + "You need a amulet mould to craft necklaces", 4242); + for (int i = 0; i < MOULD_INTERFACE_IDS[2].length; i++) { + c.getPacketSender().sendFrame34(-1, i, 4245, 1); + } + } + } + + public static void stringAmulet(final Player c, final int itemUsed, + final int usedWith) { + final int amuletId = itemUsed == 1759 ? usedWith : itemUsed; + for (final CraftingData.amuletData a : CraftingData.amuletData.values()) { + if (amuletId == a.getAmuletId()) { + c.getItemAssistant().deleteItem(1759, 1); + c.getItemAssistant().deleteItem(amuletId, 1); + c.getItemAssistant().addItem(a.getProduct(), 1); + c.getPlayerAssistant().addSkillXP(4, 12); + } + } + } + + public static void mouldItem(Player player, int item, int amount) { + int done = 0; + + final int GOLD_BAR = 2357; + + boolean isRing = false; + boolean isNeck = false; + boolean isAmulet = false; + int gem = 0; + int itemAdd = -1; + int xp = 0; + int lvl = 1; + for (int i = 0; i < 7; i++) { + if (item == RINGS[i][0]) { + isRing = true; + itemAdd = RINGS[i][0]; + gem = RINGS[i][1]; + lvl = RINGS[i][2]; + xp = RINGS[i][3]; + break; + } + if (item == NECKLACES[i][0]) { + isNeck = true; + itemAdd = NECKLACES[i][0]; + gem = NECKLACES[i][1]; + lvl = NECKLACES[i][2]; + xp = NECKLACES[i][3]; + break; + } + if (item == AMULETS[i][0]) { + isAmulet = true; + itemAdd = AMULETS[i][0]; + gem = AMULETS[i][1]; + lvl = AMULETS[i][2]; + xp = AMULETS[i][3]; + break; + } + } + if (!isRing && !isNeck && !isAmulet) { + return; + } + if (player.playerLevel[player.playerCrafting] >= lvl) { + if (ItemAssistant.getItemName(itemAdd).toLowerCase() + .contains("gold") + && !player.getItemAssistant().playerHasItem(GOLD_BAR, 1) + || !player.getItemAssistant().playerHasItem(GOLD_BAR, 1)) { + player.getPacketSender().sendMessage( + "You need a Gold bar to make this."); + return; + } else if (!player.getItemAssistant().playerHasItem(gem, 1) + && player.getItemAssistant().playerHasItem(GOLD_BAR, 1)) { + player.getPacketSender().sendMessage( + getRequiredMessage(ItemAssistant.getItemName(gem))); + return; + } + player.getPacketSender().closeAllWindows(); + while (done < amount + && (ItemAssistant.getItemName(gem).toLowerCase() + .contains("unarmed") + && player.getItemAssistant().playerHasItem(GOLD_BAR, 1) || player + .getItemAssistant().playerHasItem(gem, 1) + && player.getItemAssistant().playerHasItem(GOLD_BAR, 1))) { + player.getItemAssistant().deleteItem(gem, 1); + player.getItemAssistant().deleteItem(GOLD_BAR, 1); + player.getItemAssistant().addItem(itemAdd, 1); + player.getPlayerAssistant().addSkillXP(xp, player.playerCrafting); + player.getPlayerAssistant().refreshSkill(player.playerCrafting); + done++; + } + if (done == 1) { + player.getPacketSender().sendMessage( + "You craft the gold to form a " + + ItemAssistant.getItemName(itemAdd) + "."); + } else if (done > 1) { + player.getPacketSender().sendMessage( + "You craft the gold to form " + done + + " " + ItemAssistant.getItemName(itemAdd) + + "'s."); + } + } else { + player.getPacketSender().sendMessage( + "You need a Crafting level of " + lvl + " to craft this."); + return; + } + } + + public static String getRequiredMessage(String item) { + if (item.startsWith("A") || item.startsWith("E") + || item.startsWith("I") || item.startsWith("O") + || item.startsWith("U")) { + return "You need a Gold bar and an " + item + " to make this."; + } else { + return "You need a Gold bar and a " + item + " to make this."; + } + } +} diff --git a/2006Redone Server/src/redone/game/content/skills/crafting/LeatherMaking.java b/2006Redone Server/src/com/rebotted/game/content/skills/crafting/LeatherMaking.java similarity index 53% rename from 2006Redone Server/src/redone/game/content/skills/crafting/LeatherMaking.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/crafting/LeatherMaking.java index 83148a3f..851e9db0 100644 --- a/2006Redone Server/src/redone/game/content/skills/crafting/LeatherMaking.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/crafting/LeatherMaking.java @@ -1,190 +1,189 @@ -package redone.game.content.skills.crafting; - -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.items.ItemAssistant; -import redone.game.players.Client; - -public class LeatherMaking extends CraftingData { - - public static void craftLeatherDialogue(final Client c, final int itemUsed, - final int usedWith) { - for (final leatherData l : leatherData.values()) { - final int leather = itemUsed == 1733 ? usedWith : itemUsed; - if (leather == l.getLeather()) { - if (l.getLeather() == 1741) { - c.getPlayerAssistant().showInterface(2311); - c.leatherType = leather; - return; - } - String[] name = { "Body", "Chaps", "Bandana", "Boots", "Vamb", }; - if (l.getLeather() == 1743) { - c.getPlayerAssistant().sendChatInterface(4429); - c.getPlayerAssistant().sendFrame246(1746, 200, 1131); - c.getPlayerAssistant().sendFrame126( - ItemAssistant.getItemName(1131), 2799); - c.leatherType = leather; - } - if (l.getLeather() == 6289) { - c.getPlayerAssistant().sendChatInterface(8938); - c.getActionSender().itemOnInterface(8941, 180, 6322); - c.getActionSender().itemOnInterface(8942, 180, 6324); - c.getActionSender().itemOnInterface(8943, 180, 6326); - c.getActionSender().itemOnInterface(8944, 180, 6328); - c.getActionSender().itemOnInterface(8945, 180, 6330); - for (int i = 0; i < name.length; i++) { - c.getPlayerAssistant() - .sendFrame126(name[i], 8949 + i * 4); - } - c.leatherType = leather; - return; - } - } - } - for (final leatherDialogueData d : leatherDialogueData.values()) { - final int leather = itemUsed == 1733 ? usedWith : itemUsed; - String[] name = { "Vamb", "Body", "Chaps", }; - if (leather == d.getLeather()) { - c.getPlayerAssistant().sendChatInterface(8880); - c.getActionSender().itemOnInterface(8883, 180, d.getVamb()); - c.getActionSender() - .itemOnInterface(8884, 180, d.getChaps()); - c.getActionSender().itemOnInterface(8885, 180, d.getBody()); - for (int i = 0; i < name.length; i++) { - c.getPlayerAssistant().sendFrame126(name[i], 8889 + i * 4); - } - c.leatherType = leather; - return; - } - } - } - - private static int amount; - - public static void craftLeather(final Client c, final int buttonId) { - if (c.isCrafting == true) { - return; - } - for (final leatherData l : leatherData.values()) { - if (buttonId == l.getButtonId(buttonId)) { - if (c.leatherType == l.getLeather()) { - if (c.playerLevel[12] < l.getLevel()) { - c.getActionSender().sendMessage( - "You need a crafting level of " + l.getLevel() - + " to make this."); - c.getPlayerAssistant().removeAllWindows(); - return; - } - if (!c.getItemAssistant().playerHasItem(1734)) { - c.getActionSender().sendMessage( - "You need some thread to make this."); - c.getPlayerAssistant().removeAllWindows(); - return; - } - if (!c.getItemAssistant().playerHasItem(c.leatherType, - l.getHideAmount())) { - c.getActionSender().sendMessage( - "You need " - + l.getHideAmount() - + " " - + ItemAssistant.getItemName( - c.leatherType).toLowerCase() - + " to make " - + ItemAssistant.getItemName( - l.getProduct()).toLowerCase() - + "."); - c.getPlayerAssistant().removeAllWindows(); - return; - } - c.startAnimation(1249); - c.getPlayerAssistant().removeAllWindows(); - c.isCrafting = true; - amount = l.getAmount(buttonId); - CycleEventHandler.getSingleton().addEvent(c, - new CycleEvent() { - - @Override - public void execute( - CycleEventContainer container) { - if (c.isCrafting == true) { - if (!c.getItemAssistant() - .playerHasItem(1734)) { - c.getActionSender() - .sendMessage( - "You have run out of thread."); - container.stop(); - return; - } - if (!c.getItemAssistant() - .playerHasItem(c.leatherType, - l.getHideAmount())) { - c.getActionSender() - .sendMessage( - "You have run out of leather."); - container.stop(); - return; - } - if (amount == 0) { - container.stop(); - return; - } - c.getItemAssistant().deleteItem( - 1734, - c.getItemAssistant() - .getItemSlot(1734), 1); - c.getItemAssistant().deleteItem( - c.leatherType, - l.getHideAmount()); - c.getItemAssistant().addItem( - l.getProduct(), 1); - c.getActionSender() - .sendMessage( - "You make " - + (ItemAssistant - .getItemName( - l.getProduct()) - .contains( - "body") ? "a" - : "some") - + " " - + ItemAssistant - .getItemName(l - .getProduct()) - + "."); - c.getPlayerAssistant().addSkillXP( - (int) l.getXP(), 12); - c.startAnimation(1249); - amount--; - if (!c.getItemAssistant() - .playerHasItem(1734)) { - c.getActionSender() - .sendMessage( - "You have run out of thread."); - container.stop(); - return; - } - if (!c.getItemAssistant() - .playerHasItem(c.leatherType, - l.getHideAmount())) { - c.getActionSender() - .sendMessage( - "You have run out of leather."); - container.stop(); - return; - } - } else { - container.stop(); - } - } - - @Override - public void stop() { - c.isCrafting = false; - } - }, 5); - } - } - } - } -} +package com.rebotted.game.content.skills.crafting; + +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Player; + +public class LeatherMaking extends CraftingData { + + public static void craftLeatherDialogue(final Player c, final int itemUsed, + final int usedWith) { + for (final leatherData l : leatherData.values()) { + final int leather = itemUsed == 1733 ? usedWith : itemUsed; + if (leather == l.getLeather()) { + if (l.getLeather() == 1741) { + c.getPacketSender().showInterface(2311); + c.leatherType = leather; + return; + } + String[] name = { "Body", "Chaps", "Bandana", "Boots", "Vamb", }; + if (l.getLeather() == 1743) { + c.getPacketSender().sendChatInterface(4429); + c.getPacketSender().sendFrame246(1746, 200, 1131); + c.getPacketSender().sendFrame126( + ItemAssistant.getItemName(1131), 2799); + c.leatherType = leather; + } + if (l.getLeather() == 6289) { + c.getPacketSender().sendChatInterface(8938); + c.getPacketSender().itemOnInterface(8941, 180, 6322); + c.getPacketSender().itemOnInterface(8942, 180, 6324); + c.getPacketSender().itemOnInterface(8943, 180, 6326); + c.getPacketSender().itemOnInterface(8944, 180, 6328); + c.getPacketSender().itemOnInterface(8945, 180, 6330); + for (int i = 0; i < name.length; i++) { + c.getPacketSender().sendFrame126(name[i], 8949 + i * 4); + } + c.leatherType = leather; + return; + } + } + } + for (final leatherDialogueData d : leatherDialogueData.values()) { + final int leather = itemUsed == 1733 ? usedWith : itemUsed; + String[] name = { "Vamb", "Body", "Chaps", }; + if (leather == d.getLeather()) { + c.getPacketSender().sendChatInterface(8880); + c.getPacketSender().itemOnInterface(8883, 180, d.getVamb()); + c.getPacketSender() + .itemOnInterface(8884, 180, d.getChaps()); + c.getPacketSender().itemOnInterface(8885, 180, d.getBody()); + for (int i = 0; i < name.length; i++) { + c.getPacketSender().sendFrame126(name[i], 8889 + i * 4); + } + c.leatherType = leather; + return; + } + } + } + + private static int amount; + + public static void craftLeather(final Player player, final int buttonId) { + if (player.isCrafting == true) { + return; + } + for (final leatherData l : leatherData.values()) { + if (buttonId == l.getButtonId(buttonId)) { + if (player.leatherType == l.getLeather()) { + if (player.playerLevel[12] < l.getLevel()) { + player.getPacketSender().sendMessage( + "You need a crafting level of " + l.getLevel() + + " to make this."); + player.getPacketSender().closeAllWindows(); + return; + } + if (!player.getItemAssistant().playerHasItem(1734)) { + player.getPacketSender().sendMessage( + "You need some thread to make this."); + player.getPacketSender().closeAllWindows(); + return; + } + if (!player.getItemAssistant().playerHasItem(player.leatherType, + l.getHideAmount())) { + player.getPacketSender().sendMessage( + "You need " + + l.getHideAmount() + + " " + + ItemAssistant.getItemName( + player.leatherType).toLowerCase() + + " to make " + + ItemAssistant.getItemName( + l.getProduct()).toLowerCase() + + "."); + player.getPacketSender().closeAllWindows(); + return; + } + player.startAnimation(1249); + player.getPacketSender().closeAllWindows(); + player.isCrafting = true; + amount = l.getAmount(buttonId); + CycleEventHandler.getSingleton().addEvent(player, + new CycleEvent() { + + @Override + public void execute( + CycleEventContainer container) { + if (player.isCrafting == true) { + if (!player.getItemAssistant() + .playerHasItem(1734)) { + player.getPacketSender() + .sendMessage( + "You have run out of thread."); + container.stop(); + return; + } + if (!player.getItemAssistant() + .playerHasItem(player.leatherType, + l.getHideAmount())) { + player.getPacketSender() + .sendMessage( + "You have run out of leather."); + container.stop(); + return; + } + if (amount == 0) { + container.stop(); + return; + } + player.getItemAssistant().deleteItem( + 1734, + player.getItemAssistant() + .getItemSlot(1734), 1); + player.getItemAssistant().deleteItem( + player.leatherType, + l.getHideAmount()); + player.getItemAssistant().addItem( + l.getProduct(), 1); + player.getPacketSender() + .sendMessage( + "You make " + + (ItemAssistant + .getItemName( + l.getProduct()) + .contains( + "body") ? "a" + : "some") + + " " + + ItemAssistant + .getItemName(l + .getProduct()) + + "."); + player.getPlayerAssistant().addSkillXP( + (int) l.getXP(), 12); + player.startAnimation(1249); + amount--; + if (!player.getItemAssistant() + .playerHasItem(1734)) { + player.getPacketSender() + .sendMessage( + "You have run out of thread."); + container.stop(); + return; + } + if (!player.getItemAssistant() + .playerHasItem(player.leatherType, + l.getHideAmount())) { + player.getPacketSender() + .sendMessage( + "You have run out of leather."); + container.stop(); + return; + } + } else { + container.stop(); + } + } + + @Override + public void stop() { + player.isCrafting = false; + } + }, 5); + } + } + } + } +} diff --git a/2006Redone Server/src/com/rebotted/game/content/skills/crafting/Pottery.java b/2006Redone Server/src/com/rebotted/game/content/skills/crafting/Pottery.java new file mode 100644 index 00000000..85395a43 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/skills/crafting/Pottery.java @@ -0,0 +1,190 @@ +package com.rebotted.game.content.skills.crafting; + +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Player; + +/** + * @author Tom + */ + +public class Pottery { + + public static int unFire = 896; + public static int Fire = 899; + public static int softClay = 1761; + + public static void showUnfire(Player c) { + c.getPacketSender().sendChatInterface(8938); + c.getPacketSender().sendFrame126("What would you like to make?", 8879); + c.getPacketSender().sendFrame246(8941, 120, 1787); // first + c.getPacketSender().sendFrame246(8942, 150, 1789); // second + c.getPacketSender().sendFrame246(8943, 150, 1791); // third + c.getPacketSender().sendFrame246(8944, 120, 5352); // 4th + c.getPacketSender().sendFrame246(8945, 150, 4438); // 5th + c.getPacketSender().sendFrame126("Pot", 8949); + c.getPacketSender().sendFrame126("Pie Dish", 8953); + c.getPacketSender().sendFrame126("Bowl", 8957); + c.getPacketSender().sendFrame126("Plant pot", 8961); + c.getPacketSender().sendFrame126("Pot lid", 8965); + c.showedUnfire = true; + } + + public static void showFire(Player c) { + c.getPacketSender().sendChatInterface(8938); + c.getPacketSender().sendFrame126("What would you like to make?", 8879); + c.getPacketSender().sendFrame246(8941, 120, 1931); // first + c.getPacketSender().sendFrame246(8942, 150, 2313); // second + c.getPacketSender().sendFrame246(8943, 150, 1923); // third + c.getPacketSender().sendFrame246(8944, 120, 5350); // 4th + c.getPacketSender().sendFrame246(8945, 150, 4440); // 5th + c.getPacketSender().sendFrame126("Pot", 8949); + c.getPacketSender().sendFrame126("Pie Dish", 8953); + c.getPacketSender().sendFrame126("Bowl", 8957); + c.getPacketSender().sendFrame126("Plant pot", 8961); + c.getPacketSender().sendFrame126("Pot lid", 8965); + c.showedFire = true; + } + + public static void makeUnfire(final Player c, final int id, + final double xp, final int level, int amount) { + c.getPacketSender().closeAllWindows(); + c.doAmount = amount; + c.isPotCrafting = true; + if (c.getItemAssistant().playerHasItem(softClay) + && c.playerLevel[12] >= level && c.isPotCrafting == true) { + c.startAnimation(unFire); + c.getItemAssistant().deleteItem(softClay, 1); + c.getItemAssistant().addItem(id, 1); + c.getPacketSender().sendMessage( + "You make the soft clay into a " + + ItemAssistant.getItemName(id) + "."); + c.getPlayerAssistant().addSkillXP(xp, c.playerCrafting); + c.doAmount--; + } + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + + @Override + public void execute(CycleEventContainer container) { + if (c.getItemAssistant().playerHasItem(softClay) + && c.playerLevel[12] >= level && !(c.doAmount <= 0) + && c.isPotCrafting == true) { + c.startAnimation(unFire); + c.getItemAssistant().deleteItem(softClay, 1); + c.getItemAssistant().addItem(id, 1); + c.getPacketSender().sendMessage( + "You make the soft clay into a " + + ItemAssistant.getItemName(id) + "."); + c.getPlayerAssistant().addSkillXP(xp, c.playerCrafting); + c.doAmount--; + } + + if (c.playerLevel[12] < level) { + container.stop(); + c.getPacketSender().sendMessage( + "You need a crafting level of " + level + + " to make this."); + } + + if (!c.getItemAssistant().playerHasItem(softClay)) { + container.stop(); + c.getPacketSender().sendMessage( + "You need soft clay to do this."); + } + + if (c.isPotCrafting == false) { + container.stop(); + } + + if (c.doAmount <= 0) { + container.stop(); + } + + } + + @Override + public void stop() { + c.isPotCrafting = false; + c.startAnimation(65535); + } + }, 3); + } + + public static void makeFire(final Player player, final int startId, + final int finishId, final int level, final double xp, int amount) { + player.getPacketSender().closeAllWindows(); + player.doAmount = amount; + player.isPotCrafting = true; + if (player.getItemAssistant().playerHasItem(startId) + && player.playerLevel[12] >= level && player.isPotCrafting == true) { + player.getItemAssistant().deleteItem(startId, 1); + player.getItemAssistant().addItem(finishId, 1); + player.startAnimation(Fire); + player.getPacketSender().sendSound(469, 100, 0); + player.getPacketSender().sendMessage( + "You put a " + ItemAssistant.getItemName(startId) + + " into the oven."); + player.getPacketSender().sendMessage( + "You retrieve the " + ItemAssistant.getItemName(finishId) + + " from the oven."); + player.getPlayerAssistant().addSkillXP(xp, player.playerCrafting); + player.doAmount--; + } + + if (player.playerLevel[12] < level) { + player.getPacketSender().sendMessage( + "You need a crafting level of " + level + " to make this."); + } + + if (!player.getItemAssistant().playerHasItem(startId) + && player.playerLevel[12] >= level) { + player.getPacketSender().sendMessage( + "You need an " + ItemAssistant.getItemName(startId) + + " to do this."); + } + + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + + @Override + public void execute(CycleEventContainer container) { + if (player.getItemAssistant().playerHasItem(startId) + && player.playerLevel[12] >= level + && player.isPotCrafting == true && !(player.doAmount <= 0)) { + player.getItemAssistant().deleteItem(startId, 1); + player.getItemAssistant().addItem(finishId, 1); + player.startAnimation(Fire); + player.getPacketSender().sendSound(469, 100, 0); + player.getPacketSender().sendMessage( + "You put a " + ItemAssistant.getItemName(startId) + + " into the oven."); + player.getPacketSender().sendMessage( + "You retrieve the " + + ItemAssistant.getItemName(finishId) + + " from the oven."); + player.getPlayerAssistant().addSkillXP(xp, player.playerCrafting); + player.doAmount--; + } + + if (player.isPotCrafting == false + || !player.getItemAssistant().playerHasItem(startId) + || player.playerLevel[12] < level) { + container.stop(); + } + + if (player.doAmount <= 0) { + container.stop(); + } + + } + + @Override + public void stop() { + player.isPotCrafting = false; + player.startAnimation(65535); + } + }, 5); + } + +} diff --git a/2006Redone Server/src/com/rebotted/game/content/skills/crafting/SoftClay.java b/2006Redone Server/src/com/rebotted/game/content/skills/crafting/SoftClay.java new file mode 100644 index 00000000..8ae65993 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/skills/crafting/SoftClay.java @@ -0,0 +1,52 @@ +package com.rebotted.game.content.skills.crafting; + +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.content.randomevents.RandomEventHandler; +import com.rebotted.game.players.Player; + +/** + * Soft Clay + * @author Andrew (Mr Extremez) + */ + +public class SoftClay { + + public static final int SOFT_CLAY = 1761, CLAY = 434; + + public static void makeClay(final Player c) { + if (!c.getItemAssistant().playerHasItem(CLAY)) { + c.getPacketSender().sendMessage("You need clay to do this."); + return; + } + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + int amountToSubtract = c.getItemAssistant().getItemAmount(CLAY); + int amountToAdd = amountToSubtract; + c.doAmount = amountToSubtract; + c.addAmount = amountToAdd; + if (c.getItemAssistant().playerHasItem(CLAY)) { + c.getItemAssistant().deleteItem(CLAY, c.doAmount); + c.doAmount--; + c.getItemAssistant().addItem(SOFT_CLAY, c.addAmount); + c.addAmount++; + RandomEventHandler.addRandom(c); + if (c.doAmount == 0) { + c.getPacketSender().sendMessage("You have ran out of clay to turn to soft clay."); + container.stop(); + } + if (c.disconnected) { + container.stop(); + } + } + } + @Override + public void stop() { + + } + }, 1); + } + +} diff --git a/2006Redone Server/src/redone/game/content/skills/crafting/Spinning.java b/2006Redone Server/src/com/rebotted/game/content/skills/crafting/Spinning.java similarity index 58% rename from 2006Redone Server/src/redone/game/content/skills/crafting/Spinning.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/crafting/Spinning.java index d435f506..88774ab7 100644 --- a/2006Redone Server/src/redone/game/content/skills/crafting/Spinning.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/crafting/Spinning.java @@ -1,79 +1,79 @@ -package redone.game.content.skills.crafting; - -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.items.ItemAssistant; -import redone.game.players.Client; - -public class Spinning extends CraftingData { - - public static int[][] BEFORE_AFTER = { { 1737, 1759, 3, 1 }, - { 1779, 1777, 15, 10 } }; - - public static void showSpinning(Client c) { - c.getPlayerAssistant().sendChatInterface(8880); - c.getPlayerAssistant().sendFrame126("What would you like to make?", 8879); - c.getPlayerAssistant().sendFrame246(8883, 180, 1737); // left - c.getPlayerAssistant().sendFrame246(8884, 180, 1779); // middle - c.getPlayerAssistant().sendFrame246(8885, 180, 6051); // right - c.getPlayerAssistant().sendFrame126("Wool", 8889); - c.getPlayerAssistant().sendFrame126("Flax", 8893); - c.getPlayerAssistant().sendFrame126("Magic tree", 8897); - c.clickedSpinning = true; - } - - public static void getAmount(Client c, int amount) { - c.doAmount = amount; - spinItem(c); - c.isSpinning = true; - } - - public static void spinItem(final Client c) { - c.getPlayerAssistant().removeAllWindows(); - for (int[] element : BEFORE_AFTER) { - final int before = element[0]; - final int after = element[1]; - final int exp = element[2]; - final int level = element[3]; - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - - @Override - public void execute(CycleEventContainer container) { - if (c.isSpinning == true) { - if (c.getItemAssistant().playerHasItem(before)) { - if (c.playerLevel[c.playerCrafting] < level) { - c.getDialogueHandler().sendStatement( - "You need a crafting level of " + level - + " to do this."); - return; - } - c.startAnimation(896); - int amount = c.getItemAssistant().getItemCount( before); - c.getItemAssistant().deleteItem(before, amount); - c.getItemAssistant().addItem(after, amount); - c.getPlayerAssistant().addSkillXP(exp * amount, c.playerCrafting); - c.getActionSender().sendMessage("You spin the " + ItemAssistant.getItemName(before) + " into a " + ItemAssistant.getItemName(after) + "."); - c.doAmount--; - } - - if (!c.getItemAssistant().playerHasItem(before) - || c.isSpinning == false) { - container.stop(); - } - - if (c.doAmount <= 0) { - container.stop(); - } - } - - } - - @Override - public void stop() { - c.isSpinning = false; - } - }, 2); - } - } -} +package com.rebotted.game.content.skills.crafting; + +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Player; + +public class Spinning extends CraftingData { + + public static int[][] BEFORE_AFTER = { { 1737, 1759, 3, 1 }, + { 1779, 1777, 15, 10 } }; + + public static void showSpinning(Player player) { + player.getPacketSender().sendChatInterface(8880); + player.getPacketSender().sendFrame126("What would you like to make?", 8879); + player.getPacketSender().sendFrame246(8883, 180, 1737); // left + player.getPacketSender().sendFrame246(8884, 180, 1779); // middle + player.getPacketSender().sendFrame246(8885, 180, 6051); // right + player.getPacketSender().sendFrame126("Wool", 8889); + player.getPacketSender().sendFrame126("Flax", 8893); + player.getPacketSender().sendFrame126("Magic tree", 8897); + player.clickedSpinning = true; + } + + public static void getAmount(Player c, int amount) { + c.doAmount = amount; + spinItem(c); + c.isSpinning = true; + } + + public static void spinItem(final Player c) { + c.getPacketSender().closeAllWindows(); + for (int[] element : BEFORE_AFTER) { + final int before = element[0]; + final int after = element[1]; + final int exp = element[2]; + final int level = element[3]; + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + + @Override + public void execute(CycleEventContainer container) { + if (c.isSpinning == true) { + if (c.getItemAssistant().playerHasItem(before)) { + if (c.playerLevel[c.playerCrafting] < level) { + c.getDialogueHandler().sendStatement( + "You need a crafting level of " + level + + " to do this."); + return; + } + c.startAnimation(896); + int amount = c.getItemAssistant().getItemCount( before); + c.getItemAssistant().deleteItem(before, amount); + c.getItemAssistant().addItem(after, amount); + c.getPlayerAssistant().addSkillXP(exp * amount, c.playerCrafting); + c.getPacketSender().sendMessage("You spin the " + ItemAssistant.getItemName(before) + " into a " + ItemAssistant.getItemName(after) + "."); + c.doAmount--; + } + + if (!c.getItemAssistant().playerHasItem(before) + || c.isSpinning == false) { + container.stop(); + } + + if (c.doAmount <= 0) { + container.stop(); + } + } + + } + + @Override + public void stop() { + c.isSpinning = false; + } + }, 2); + } + } +} diff --git a/2006Redone Server/src/com/rebotted/game/content/skills/crafting/Tanning.java b/2006Redone Server/src/com/rebotted/game/content/skills/crafting/Tanning.java new file mode 100644 index 00000000..1f3dd33b --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/skills/crafting/Tanning.java @@ -0,0 +1,64 @@ +package com.rebotted.game.content.skills.crafting; + +import com.rebotted.game.players.Player; + +public class Tanning extends CraftingData { + + public static void sendTanningInterface(final Player c) { + c.getPacketSender().showInterface(14670); + for (final tanningData t : tanningData.values()) { + c.getPacketSender().itemOnInterface(t.getItemFrame(), 250, + t.getLeatherId()); + c.getPacketSender().sendFrame126(t.getName(), t.getNameFrame()); + if (c.getItemAssistant().playerHasItem(995, t.getPrice())) { + c.getPacketSender().sendFrame126( + "@gre@Price: " + t.getPrice(), t.getCostFrame()); + } else { + c.getPacketSender().sendFrame126( + "@red@Price: " + t.getPrice(), t.getCostFrame()); + } + } + } + + public static void tanHide(final Player player, final int buttonId) { + for (final tanningData t : tanningData.values()) { + if (buttonId == t.getButtonId(buttonId)) { + int amount = player.getItemAssistant().getItemCount(t.getHideId()); + if (amount > t.getAmount(buttonId)) { + amount = t.getAmount(buttonId); + } + int price = amount * t.getPrice(); + int coins = player.getItemAssistant().getItemCount(995); + if (price > coins) { + price = coins - coins % t.getPrice(); + } + if (price == 0) { + player.getPacketSender().sendMessage( + "You do not have enough coins to tan this hide."); + return; + } + amount = price / t.getPrice(); + final int hide = t.getHideId(); + final int leather = t.getLeatherId(); + if (player.getItemAssistant().playerHasItem(995, price)) { + if (player.getItemAssistant().playerHasItem(hide)) { + player.getItemAssistant().deleteItem(hide, amount); + player.getItemAssistant().deleteItem(995, + player.getItemAssistant().getItemSlot(995), price); + player.getItemAssistant().addItem(leather, amount); + player.getPacketSender().sendMessage( + "The tanner tans the hides for you."); + } else { + player.getPacketSender().sendMessage( + "You do not have any hides to tan."); + return; + } + } else { + player.getPacketSender().sendMessage( + "You do not have enough coins to tan this hide."); + return; + } + } + } + } +} diff --git a/2006Redone Server/src/redone/game/content/skills/farming/Allotments.java b/2006Redone Server/src/com/rebotted/game/content/skills/farming/Allotments.java similarity index 51% rename from 2006Redone Server/src/redone/game/content/skills/farming/Allotments.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/farming/Allotments.java index 1dc8fd1b..3f30a3b7 100644 --- a/2006Redone Server/src/redone/game/content/skills/farming/Allotments.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/farming/Allotments.java @@ -1,25 +1,25 @@ -package redone.game.content.skills.farming; - -import redone.game.players.Client; - -/** - * Allotments - * @author Andrew (I'm A Boss on Rune-Server and Mr Extremez on Mopar & Runelocus) - */ - -public class Allotments { - - - private static final int[] ALLOTMENT = {8550, 8551, 8552, 8553}; - - public static boolean isAllotment(Client player, int objectType) { - for (int i = 0; i < ALLOTMENT.length; i++) { - if (objectType == ALLOTMENT[i]) { - return true; - } - } - return false; - - } - -} +package com.rebotted.game.content.skills.farming; + +import com.rebotted.game.players.Player; + +/** + * Allotments + * @author Andrew (Mr Extremez) + */ + +public class Allotments { + + + private static final int[] ALLOTMENT = {8550, 8551, 8552, 8553}; + + public static boolean isAllotment(Player player, int objectType) { + for (int i = 0; i < ALLOTMENT.length; i++) { + if (objectType == ALLOTMENT[i]) { + return true; + } + } + return false; + + } + +} diff --git a/2006Redone Server/src/redone/game/content/skills/farming/Farming.java b/2006Redone Server/src/com/rebotted/game/content/skills/farming/Farming.java similarity index 66% rename from 2006Redone Server/src/redone/game/content/skills/farming/Farming.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/farming/Farming.java index 11720224..3c157a55 100644 --- a/2006Redone Server/src/redone/game/content/skills/farming/Farming.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/farming/Farming.java @@ -1,25 +1,25 @@ -package redone.game.content.skills.farming; - -import redone.game.players.Client; - -/** - * Farming - * @author Andrew (I'm A Boss on Rune-Server and Mr Extremez on Mopar & Runelocus) - */ - -public class Farming { - - public static void openGuide(Client player, int objectType) { - if (Flowers.isFlower(player, objectType)) { - player.getSkillInterfaces().farmingComplex(6); - player.getSkillInterfaces().selected = 20; - } else if (Herbs.isHerb(player, objectType)) { - player.getSkillInterfaces().farmingComplex(7); - player.getSkillInterfaces().selected = 20; - } else if (Allotments.isAllotment(player, objectType)) { - player.getSkillInterfaces().farmingComplex(1); - player.getSkillInterfaces().selected = 20; - } - } - -} +package com.rebotted.game.content.skills.farming; + +import com.rebotted.game.players.Player; + +/** + * Farming + * @author Andrew (Mr Extremez) + */ + +public class Farming { + + public static void openGuide(Player player, int objectType) { + if (Flowers.isFlower(player, objectType)) { + player.getSkillInterfaces().farmingComplex(6); + player.getSkillInterfaces().selected = 20; + } else if (Herbs.isHerb(player, objectType)) { + player.getSkillInterfaces().farmingComplex(7); + player.getSkillInterfaces().selected = 20; + } else if (Allotments.isAllotment(player, objectType)) { + player.getSkillInterfaces().farmingComplex(1); + player.getSkillInterfaces().selected = 20; + } + } + +} diff --git a/2006Redone Server/src/redone/game/content/skills/farming/FarmingConstants.java b/2006Redone Server/src/com/rebotted/game/content/skills/farming/FarmingConstants.java similarity index 95% rename from 2006Redone Server/src/redone/game/content/skills/farming/FarmingConstants.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/farming/FarmingConstants.java index 648da29d..693c8079 100644 --- a/2006Redone Server/src/redone/game/content/skills/farming/FarmingConstants.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/farming/FarmingConstants.java @@ -1,4 +1,4 @@ -package redone.game.content.skills.farming; +package com.rebotted.game.content.skills.farming; public class FarmingConstants { diff --git a/2006Redone Server/src/redone/game/content/skills/farming/Flowers.java b/2006Redone Server/src/com/rebotted/game/content/skills/farming/Flowers.java similarity index 66% rename from 2006Redone Server/src/redone/game/content/skills/farming/Flowers.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/farming/Flowers.java index 2872f7e1..8ddf74e2 100644 --- a/2006Redone Server/src/redone/game/content/skills/farming/Flowers.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/farming/Flowers.java @@ -1,24 +1,24 @@ -package redone.game.content.skills.farming; - -import redone.game.players.Client; - - -/** - * Flowers - * @author Andrew (I'm A Boss on Rune-Server and Mr Extremez on Mopar & Runelocus) - */ - -public class Flowers { - - private static final int[] FLOWER_PATCH = {7847, 7848}; - - public static boolean isFlower(Client player, int objectType) { - for (int i = 0; i < FLOWER_PATCH.length; i++) { - if (objectType == FLOWER_PATCH[i]) { - return true; - } - } - return false; - } - -} +package com.rebotted.game.content.skills.farming; + +import com.rebotted.game.players.Player; + + +/** + * Flowers + * @author Andrew (I'm A Boss on Rune-Server and Mr Extremez on Mopar & Runelocus) + */ + +public class Flowers { + + private static final int[] FLOWER_PATCH = {7847, 7848}; + + public static boolean isFlower(Player player, int objectType) { + for (int i = 0; i < FLOWER_PATCH.length; i++) { + if (objectType == FLOWER_PATCH[i]) { + return true; + } + } + return false; + } + +} diff --git a/2006Redone Server/src/com/rebotted/game/content/skills/farming/Herbs.java b/2006Redone Server/src/com/rebotted/game/content/skills/farming/Herbs.java new file mode 100644 index 00000000..b1c02633 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/skills/farming/Herbs.java @@ -0,0 +1,24 @@ +package com.rebotted.game.content.skills.farming; + +import com.rebotted.game.players.Player; + +/** + * Herbs + * @author Andrew (Mr Extremez) + */ + +public class Herbs { + + private static final int[] HERB_PATCH = {8150, 8151}; + + public static boolean isHerb(Player player, int objectType) { + for (int i = 0; i < HERB_PATCH.length; i++) { + if (objectType == HERB_PATCH[i]) { + return true; + } + } + return false; + + } + +} diff --git a/2006Redone Server/src/redone/game/content/skills/farming/Patch.java b/2006Redone Server/src/com/rebotted/game/content/skills/farming/Patch.java similarity index 69% rename from 2006Redone Server/src/redone/game/content/skills/farming/Patch.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/farming/Patch.java index 0941085e..a023e7cf 100644 --- a/2006Redone Server/src/redone/game/content/skills/farming/Patch.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/farming/Patch.java @@ -1,11 +1,11 @@ -package redone.game.content.skills.farming; - -/** - * Patch - * @author Andrew (I'm A Boss on Rune-Server and Mr Extremez on Mopar & Runelocus) - */ - -public enum Patch { - - -} +package com.rebotted.game.content.skills.farming; + +/** + * Patch + * @author Andrew (I'm A Boss on Rune-Server and Mr Extremez on Mopar & Runelocus) + */ + +public enum Patch { + + +} diff --git a/2006Redone Server/src/redone/game/content/skills/firemaking/Firemaking.java b/2006Redone Server/src/com/rebotted/game/content/skills/firemaking/Firemaking.java similarity index 68% rename from 2006Redone Server/src/redone/game/content/skills/firemaking/Firemaking.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/firemaking/Firemaking.java index bd55392f..77a47eb1 100644 --- a/2006Redone Server/src/redone/game/content/skills/firemaking/Firemaking.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/firemaking/Firemaking.java @@ -1,163 +1,163 @@ -package redone.game.content.skills.firemaking; - -import redone.Server; -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.content.music.sound.SoundList; -import redone.game.content.skills.SkillHandler; -import redone.game.content.skills.cooking.Cooking; -import redone.game.items.ItemAssistant; -import redone.game.objects.Object; -import redone.game.players.Client; -import redone.util.Misc; -import redone.world.clip.Region; - -public class Firemaking { - - public static boolean stopFiremaking = false, pickedUpFiremakingLog = false, logLit; - - public static void stopFiremaking(Client c) { - c.startAnimation(65535); - SkillHandler.lastSkillingAction = System.currentTimeMillis(); - c.isFiremaking = false; - Cooking.resetCooking(c); - logLit = false; - } - - public static void attemptFire(final Client c, final int itemUsed, final int usedWith, final int x, final int y, final boolean groundObject) { - int firemakingItems[] = {590, 7329, 7330, 7331}; - for (int i = 0; i < firemakingItems.length; i++) { - if (Firemaking.pickedUpFiremakingLog == true) { - c.getActionSender().sendMessage("You can't do that!"); - Firemaking.pickedUpFiremakingLog = false; - return; - } - if (c.isFiremaking && logLit == false) { - return; - } - if (!SkillHandler.FIREMAKING) { - c.getActionSender().sendMessage("This skill is currently disabled."); - return; - } - for (final LogData l : LogData.values()) { - final int logId = usedWith == firemakingItems[i] ? itemUsed : usedWith; - if (logId == l.getLogId()) { - if (c.playerLevel[11] < l.getLevel()) { - c.getActionSender().sendMessage("You need a firemaking level of " + l.getLevel() + " to light " + ItemAssistant.getItemName(logId)); - return; - } - if (c.inBank() || c.inLumbBuilding() || c.inDraynorBuilding()) { - c.getActionSender().sendMessage("You cannot light a fire here."); - return; - } - if (Server.objectManager.objectExists(c.absX, c.absY)) { - c.getActionSender().sendMessage("You cannot light a fire here."); - return; - } - c.isFiremaking = true; - logLit = false; - boolean notInstant = System.currentTimeMillis() - SkillHandler.lastSkillingAction > 2500; - int cycle = 2; - if (notInstant) { - c.getActionSender().sendMessage("You attempt to light a fire."); - c.getActionSender().sendSound(SoundList.FIRE_LIGHT, 100, 0); - if (!notInstant) { - c.getActionSender().sendSound(SoundList.FIRST_ATTEMPT, 100, 0);// testing - } - if (c.tutorialProgress == 4) { - c.getActionSender().chatbox(6180); - c.getDialogueHandler().chatboxText(c, "", "Your character is now attempting to light the fire.", "This should only take a few seconds.", "", "Please wait"); - c.getActionSender().chatbox(6179); - } - if (groundObject == false) { - c.getItemAssistant().deleteItem(logId, c.getItemAssistant().getItemSlot(logId), 1); - Server.itemHandler.createGroundItem(c, logId, c.absX, c.absY, 1, c.playerId); - } - cycle = 3 + Misc.random(6); - } else { - if (groundObject == false) { - c.getItemAssistant().deleteItem(logId, c.getItemAssistant().getItemSlot(logId), 1); - } - } - final boolean walk; - if (Region.getClipping(x - 1, y, c.heightLevel, -1, 0)) { - walk = true; - } else { - walk = false; - } - c.startAnimation(733); - c.getPlayerAssistant().walkTo(walk == true ? -1 : 1, 0); - stopFiremaking = false; - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - - @Override - public void execute(CycleEventContainer container) { - if (stopFiremaking == true) { - stopFiremaking = false; - return; - } - if (c.isWoodcutting || c.playerIsFletching || c.isFletching) { - container.stop(); - } - if (c.isFiremaking == true) { - Server.itemHandler.removeGroundItem(c, logId, x, y, false); - c.getActionSender().sendSound(SoundList.FIRE_SUCCESSFUL, 100, 0); - if (itemUsed == 7331 || usedWith == 7331) - new Object(11406, x, y, 0, 0, 10, -1, 60 + Misc.random(30)); - else if (itemUsed == 7330 || usedWith == 7330) - new Object(11405, x, y, 0, 0, 10, -1, 60 + Misc.random(30)); - else if (itemUsed == 7329 || usedWith == 7329) - new Object(11404, x, y, 0, 0, 10, -1, 60 + Misc.random(30)); - else - new Object(2732, x, y, 0, 0, 10, -1, 60 + Misc.random(30)); - c.getActionSender().sendMessage("The fire catches and the log beings to burn."); - c.getPlayerAssistant().addSkillXP((int) l.getXp(), 11); - if (c.tutorialProgress == 4) { - c.getDialogueHandler().sendDialogues(3016, 943); - } - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - - @Override - public void execute(CycleEventContainer container) { - c.turnPlayerTo(walk == true ? x + 1 : x - 1, y); - logLit = true; - stopFiremaking(c); - container.stop(); - } - - @Override - public void stop() { - } - }, 2); - container.stop(); - } else { - return; - } - } - - @Override - public void stop() { - stopFiremaking(c); - } - }, cycle); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (c.playerIsCooking) { - Cooking.resetCooking(c); - } - Server.objectHandler.createAnObject(c, -1, x, y); - Server.itemHandler.createGroundItem(c, 592, x, y, 1, c.getId()); - container.stop(); - } - @Override - public void stop() { - - } - }, 60); - } - } - } - } -} +package com.rebotted.game.content.skills.firemaking; + +import com.rebotted.GameEngine; +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.content.music.sound.SoundList; +import com.rebotted.game.content.skills.SkillHandler; +import com.rebotted.game.content.skills.cooking.Cooking; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.objects.Object; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; +import com.rebotted.world.clip.Region; + +public class Firemaking { + + public static boolean stopFiremaking = false, pickedUpFiremakingLog = false, logLit; + + public static void stopFiremaking(Player c) { + c.startAnimation(65535); + SkillHandler.lastSkillingAction = System.currentTimeMillis(); + c.isFiremaking = false; + Cooking.resetCooking(c); + logLit = false; + } + + public static void attemptFire(final Player c, final int itemUsed, final int usedWith, final int x, final int y, final boolean groundObject) { + int firemakingItems[] = {590, 7329, 7330, 7331}; + for (int i = 0; i < firemakingItems.length; i++) { + if (Firemaking.pickedUpFiremakingLog == true) { + c.getPacketSender().sendMessage("You can't do that!"); + Firemaking.pickedUpFiremakingLog = false; + return; + } + if (c.isFiremaking && logLit == false) { + return; + } + if (!SkillHandler.FIREMAKING) { + c.getPacketSender().sendMessage("This skill is currently disabled."); + return; + } + for (final LogData l : LogData.values()) { + final int logId = usedWith == firemakingItems[i] ? itemUsed : usedWith; + if (logId == l.getLogId()) { + if (c.playerLevel[11] < l.getLevel()) { + c.getPacketSender().sendMessage("You need a firemaking level of " + l.getLevel() + " to light " + ItemAssistant.getItemName(logId)); + return; + } + if (c.inBank() || c.inLumbBuilding() || c.inDraynorBuilding()) { + c.getPacketSender().sendMessage("You cannot light a fire here."); + return; + } + if (GameEngine.objectManager.objectExists(c.absX, c.absY)) { + c.getPacketSender().sendMessage("You cannot light a fire here."); + return; + } + c.isFiremaking = true; + logLit = false; + boolean notInstant = System.currentTimeMillis() - SkillHandler.lastSkillingAction > 2500; + int cycle = 2; + if (notInstant) { + c.getPacketSender().sendMessage("You attempt to light a fire."); + c.getPacketSender().sendSound(SoundList.FIRE_LIGHT, 100, 0); + if (!notInstant) { + c.getPacketSender().sendSound(SoundList.FIRST_ATTEMPT, 100, 0);// testing + } + if (c.tutorialProgress == 4) { + c.getPacketSender().chatbox(6180); + c.getDialogueHandler().chatboxText(c, "", "Your character is now attempting to light the fire.", "This should only take a few seconds.", "", "Please wait"); + c.getPacketSender().chatbox(6179); + } + if (groundObject == false) { + c.getItemAssistant().deleteItem(logId, c.getItemAssistant().getItemSlot(logId), 1); + GameEngine.itemHandler.createGroundItem(c, logId, c.absX, c.absY, 1, c.playerId); + } + cycle = 3 + Misc.random(6); + } else { + if (groundObject == false) { + c.getItemAssistant().deleteItem(logId, c.getItemAssistant().getItemSlot(logId), 1); + } + } + final boolean walk; + if (Region.getClipping(x - 1, y, c.heightLevel, -1, 0)) { + walk = true; + } else { + walk = false; + } + c.startAnimation(733); + c.getPlayerAssistant().walkTo(walk == true ? -1 : 1, 0); + stopFiremaking = false; + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + + @Override + public void execute(CycleEventContainer container) { + if (stopFiremaking == true) { + stopFiremaking = false; + return; + } + if (c.isWoodcutting || c.playerIsFletching || c.isFletching) { + container.stop(); + } + if (c.isFiremaking == true) { + GameEngine.itemHandler.removeGroundItem(c, logId, x, y, false); + c.getPacketSender().sendSound(SoundList.FIRE_SUCCESSFUL, 100, 0); + if (itemUsed == 7331 || usedWith == 7331) + new Object(11406, x, y, 0, 0, 10, -1, 60 + Misc.random(30)); + else if (itemUsed == 7330 || usedWith == 7330) + new Object(11405, x, y, 0, 0, 10, -1, 60 + Misc.random(30)); + else if (itemUsed == 7329 || usedWith == 7329) + new Object(11404, x, y, 0, 0, 10, -1, 60 + Misc.random(30)); + else + new Object(2732, x, y, 0, 0, 10, -1, 60 + Misc.random(30)); + c.getPacketSender().sendMessage("The fire catches and the log beings to burn."); + c.getPlayerAssistant().addSkillXP((int) l.getXp(), 11); + if (c.tutorialProgress == 4) { + c.getDialogueHandler().sendDialogues(3016, 943); + } + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + + @Override + public void execute(CycleEventContainer container) { + c.turnPlayerTo(walk == true ? x + 1 : x - 1, y); + logLit = true; + stopFiremaking(c); + container.stop(); + } + + @Override + public void stop() { + } + }, 2); + container.stop(); + } else { + return; + } + } + + @Override + public void stop() { + stopFiremaking(c); + } + }, cycle); + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (c.playerIsCooking) { + Cooking.resetCooking(c); + } + GameEngine.objectHandler.createAnObject(c, -1, x, y); + GameEngine.itemHandler.createGroundItem(c, 592, x, y, 1, c.getId()); + container.stop(); + } + @Override + public void stop() { + + } + }, 60); + } + } + } + } +} diff --git a/2006Redone Server/src/redone/game/content/skills/firemaking/LogData.java b/2006Redone Server/src/com/rebotted/game/content/skills/firemaking/LogData.java similarity index 89% rename from 2006Redone Server/src/redone/game/content/skills/firemaking/LogData.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/firemaking/LogData.java index 30b63d2e..cd7eaf2e 100644 --- a/2006Redone Server/src/redone/game/content/skills/firemaking/LogData.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/firemaking/LogData.java @@ -1,33 +1,33 @@ -package redone.game.content.skills.firemaking; - -public enum LogData { - - LOG(1511, 1, 40), ACHEY(2862, 1, 40), OAK(1521, 15, 60), WILLOW(1519, 30, - 90), TEAK(6333, 35, 105), ARCTIC_PINE(10810, 42, 125), MAPLE(1517, - 45, 135), MAHOGANY(6332, 50, 157.5), EUCALYPTUS(12581, 58, 193.5), YEW( - 1515, 60, 202.5), MAGIC(1513, 75, 303.8), RED(7406, 1, 250), // RED - // LOG - BLUE(7405, 1, 250), // BLUE LOG - RED2(7404, 1, 250); // RED LOG; - - private int logId, level; - private double xp; - - private LogData(int logId, int level, double xp) { - this.logId = logId; - this.level = level; - this.xp = xp; - } - - public int getLogId() { - return logId; - } - - public int getLevel() { - return level; - } - - public double getXp() { - return xp; - } -} +package com.rebotted.game.content.skills.firemaking; + +public enum LogData { + + LOG(1511, 1, 40), ACHEY(2862, 1, 40), OAK(1521, 15, 60), WILLOW(1519, 30, + 90), TEAK(6333, 35, 105), ARCTIC_PINE(10810, 42, 125), MAPLE(1517, + 45, 135), MAHOGANY(6332, 50, 157.5), EUCALYPTUS(12581, 58, 193.5), YEW( + 1515, 60, 202.5), MAGIC(1513, 75, 303.8), RED(7406, 1, 250), // RED + // LOG + BLUE(7405, 1, 250), // BLUE LOG + RED2(7404, 1, 250); // RED LOG; + + private int logId, level; + private double xp; + + private LogData(int logId, int level, double xp) { + this.logId = logId; + this.level = level; + this.xp = xp; + } + + public int getLogId() { + return logId; + } + + public int getLevel() { + return level; + } + + public double getXp() { + return xp; + } +} diff --git a/2006Redone Server/src/redone/game/content/skills/fletching/ArrowMaking.java b/2006Redone Server/src/com/rebotted/game/content/skills/fletching/ArrowMaking.java similarity index 63% rename from 2006Redone Server/src/redone/game/content/skills/fletching/ArrowMaking.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/fletching/ArrowMaking.java index b1a2a108..96930471 100644 --- a/2006Redone Server/src/redone/game/content/skills/fletching/ArrowMaking.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/fletching/ArrowMaking.java @@ -1,158 +1,158 @@ -package redone.game.content.skills.fletching; - -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.items.ItemAssistant; -import redone.game.players.Client; - -/** - * @author Tom - */ - -public class ArrowMaking { - - public enum Data { - - ARROW_SHAFT(314, 52, 53, 1, 0.4), BRONZE_ARROW(39, 53, 882, 1, 1.3), IRON_ARROW( - 40, 53, 884, 15, 2.5), STEEL_ARROW(41, 53, 886, 30, 5), MITHRIL_ARROW( - 42, 53, 888, 45, 7.5), ADAMANT_ARROW(43, 53, 890, 60, 10), RUNE_ARROW( - 44, 53, 892, 75, 12.5), - - BRONZE_DART(819, 314, 806, 1, 1.8), IRON_DART(820, 314, 807, 22, 3.8), STEEL_DART( - 821, 314, 808, 37, 7.5), MITHRIL_DART(822, 314, 809, 52, 11.2), ADAMANT_DART( - 823, 314, 810, 67, 15), RUNE_DART(824, 314, 811, 81, 18.8), - - BRONZE_BRUTAL_ARROW(4819, 53, 4773, 7, 1.4), IRON_BRUTAL_ARROW(4820, - 53, 4778, 18, 2.6), STEEL_BRUTAL_ARROW(1539, 53, 4783, 33, 5.1), BLACK_BRUTAL_ARROW( - 4821, 53, 4788, 38, 6.4), MITHRIL_BRUTAL_ARROW(4822, 53, 4793, - 49, 7.5), ADAMANT_BRUTAL_ARROW(4823, 53, 4798, 62, 10.1), RUNE_BRUTAL_ARROW( - 4824, 53, 4803, 77, 12.5), - - PEARL_BOLT(46, 877, 880, 41, 3.2); - - public int item1, item2, product, level; - public double xp; - - public static Data forId(int itemUsed, int usedWith) { - for (Data arrowData : Data.values()) { - if (arrowData.item1 == itemUsed && arrowData.item2 == usedWith - || arrowData.item2 == itemUsed - && arrowData.item1 == usedWith) { - return arrowData; - } - } - return null; - } - - private Data(int item1, int item2, int product, int level, double xp) { - this.item1 = item1; - this.item2 = item2; - this.product = product; - this.level = level; - this.xp = xp; - } - - public int getItem1() { - return item1; - } - - public int getItem2() { - return item2; - } - - public int getProduct() { - return product; - } - - public int getLevel() { - return level; - } - - public double getXp() { - return xp; - } - } - - public static boolean makeArrow(final Client c, int itemUsed, int usedWith) { - final Data arrowData = Data.forId(itemUsed, usedWith); - if (arrowData == null) { - return false; - } - if (c.isWoodcutting == true) { - return false; - } - if (c.playerLevel[9] < arrowData.getLevel()) { - c.getDialogueHandler().sendStatement( - "You need a fletching level of " + arrowData.getLevel() - + " to do this"); - c.nextChat = 0; - return false; - } - if (!c.getItemAssistant().playerHasItem(arrowData.getItem1()) - || !c.getItemAssistant().playerHasItem(arrowData.getItem2())) { - c.getDialogueHandler().sendStatement( - "You need 15 " - + ItemAssistant.getItemName(arrowData.getItem1()) - + " and 15 " - + ItemAssistant.getItemName(arrowData.getItem2()) - + " to make this."); - c.nextChat = 0; - return false; - } - if (c.getItemAssistant().freeSlots() < 1 && !c.getItemAssistant().playerHasItem(arrowData.getProduct())) { - c.getActionSender().sendMessage("Not enough space in your inventory."); - return false; - } - c.playerIsFletching = true; - int factor = 1; - final int multiplier = factor; - int count1 = c.getItemAssistant().getItemAmount(arrowData.getItem1()) < 15 ? c - .getItemAssistant().getItemAmount(arrowData.getItem1()) : 15; - int count2 = c.getItemAssistant().getItemAmount(arrowData.getItem2()) < 15 ? c - .getItemAssistant().getItemAmount(arrowData.getItem2()) : 15; - final int count = count1 < count2 ? count1 : count2; - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - - @Override - public void execute(CycleEventContainer container) { - if (!c.getItemAssistant().playerHasItem(arrowData.getItem1(), - count) - || !c.getItemAssistant().playerHasItem( - arrowData.getItem2(), count) - || c.playerIsFletching == false) { - container.stop(); - return; - } - if (c.isWoodcutting == true) { - container.stop(); - } - c.getItemAssistant().deleteItem(arrowData.getItem1(), count); - c.getItemAssistant().deleteItem(arrowData.getItem2(), count); - c.getItemAssistant().addItem(arrowData.getProduct(), - count / multiplier); - c.getActionSender().sendMessage( - "You attach the " - + ItemAssistant.getItemName(arrowData - .getItem1()) - + " to " - + count - / multiplier - + " " - + ItemAssistant.getItemName(arrowData - .getItem2()) + "s."); - c.getPlayerAssistant().addSkillXP( - count / multiplier * arrowData.getXp(), 9); - } - - @Override - public void stop() { - c.playerIsFletching = false; - return; - } - }, 1); - return true; - - } - -} +package com.rebotted.game.content.skills.fletching; + +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Player; + +/** + * @author Tom + */ + +public class ArrowMaking { + + public enum Data { + + ARROW_SHAFT(314, 52, 53, 1, 0.4), BRONZE_ARROW(39, 53, 882, 1, 1.3), IRON_ARROW( + 40, 53, 884, 15, 2.5), STEEL_ARROW(41, 53, 886, 30, 5), MITHRIL_ARROW( + 42, 53, 888, 45, 7.5), ADAMANT_ARROW(43, 53, 890, 60, 10), RUNE_ARROW( + 44, 53, 892, 75, 12.5), + + BRONZE_DART(819, 314, 806, 1, 1.8), IRON_DART(820, 314, 807, 22, 3.8), STEEL_DART( + 821, 314, 808, 37, 7.5), MITHRIL_DART(822, 314, 809, 52, 11.2), ADAMANT_DART( + 823, 314, 810, 67, 15), RUNE_DART(824, 314, 811, 81, 18.8), + + BRONZE_BRUTAL_ARROW(4819, 53, 4773, 7, 1.4), IRON_BRUTAL_ARROW(4820, + 53, 4778, 18, 2.6), STEEL_BRUTAL_ARROW(1539, 53, 4783, 33, 5.1), BLACK_BRUTAL_ARROW( + 4821, 53, 4788, 38, 6.4), MITHRIL_BRUTAL_ARROW(4822, 53, 4793, + 49, 7.5), ADAMANT_BRUTAL_ARROW(4823, 53, 4798, 62, 10.1), RUNE_BRUTAL_ARROW( + 4824, 53, 4803, 77, 12.5), + + PEARL_BOLT(46, 877, 880, 41, 3.2); + + public int item1, item2, product, level; + public double xp; + + public static Data forId(int itemUsed, int usedWith) { + for (Data arrowData : Data.values()) { + if (arrowData.item1 == itemUsed && arrowData.item2 == usedWith + || arrowData.item2 == itemUsed + && arrowData.item1 == usedWith) { + return arrowData; + } + } + return null; + } + + private Data(int item1, int item2, int product, int level, double xp) { + this.item1 = item1; + this.item2 = item2; + this.product = product; + this.level = level; + this.xp = xp; + } + + public int getItem1() { + return item1; + } + + public int getItem2() { + return item2; + } + + public int getProduct() { + return product; + } + + public int getLevel() { + return level; + } + + public double getXp() { + return xp; + } + } + + public static boolean makeArrow(final Player player, int itemUsed, int usedWith) { + final Data arrowData = Data.forId(itemUsed, usedWith); + if (arrowData == null) { + return false; + } + if (player.isWoodcutting == true) { + return false; + } + if (player.playerLevel[9] < arrowData.getLevel()) { + player.getDialogueHandler().sendStatement( + "You need a fletching level of " + arrowData.getLevel() + + " to do this"); + player.nextChat = 0; + return false; + } + if (!player.getItemAssistant().playerHasItem(arrowData.getItem1()) + || !player.getItemAssistant().playerHasItem(arrowData.getItem2())) { + player.getDialogueHandler().sendStatement( + "You need 15 " + + ItemAssistant.getItemName(arrowData.getItem1()) + + " and 15 " + + ItemAssistant.getItemName(arrowData.getItem2()) + + " to make this."); + player.nextChat = 0; + return false; + } + if (player.getItemAssistant().freeSlots() < 1 && !player.getItemAssistant().playerHasItem(arrowData.getProduct())) { + player.getPacketSender().sendMessage("Not enough space in your inventory."); + return false; + } + player.playerIsFletching = true; + int factor = 1; + final int multiplier = factor; + int count1 = player.getItemAssistant().getItemAmount(arrowData.getItem1()) < 15 ? player + .getItemAssistant().getItemAmount(arrowData.getItem1()) : 15; + int count2 = player.getItemAssistant().getItemAmount(arrowData.getItem2()) < 15 ? player + .getItemAssistant().getItemAmount(arrowData.getItem2()) : 15; + final int count = count1 < count2 ? count1 : count2; + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + + @Override + public void execute(CycleEventContainer container) { + if (!player.getItemAssistant().playerHasItem(arrowData.getItem1(), + count) + || !player.getItemAssistant().playerHasItem( + arrowData.getItem2(), count) + || player.playerIsFletching == false) { + container.stop(); + return; + } + if (player.isWoodcutting == true) { + container.stop(); + } + player.getItemAssistant().deleteItem(arrowData.getItem1(), count); + player.getItemAssistant().deleteItem(arrowData.getItem2(), count); + player.getItemAssistant().addItem(arrowData.getProduct(), + count / multiplier); + player.getPacketSender().sendMessage( + "You attach the " + + ItemAssistant.getItemName(arrowData + .getItem1()) + + " to " + + count + / multiplier + + " " + + ItemAssistant.getItemName(arrowData + .getItem2()) + "s."); + player.getPlayerAssistant().addSkillXP( + count / multiplier * arrowData.getXp(), 9); + } + + @Override + public void stop() { + player.playerIsFletching = false; + return; + } + }, 1); + return true; + + } + +} diff --git a/2006Redone Server/src/redone/game/content/skills/fletching/LogCutting.java b/2006Redone Server/src/com/rebotted/game/content/skills/fletching/LogCutting.java similarity index 67% rename from 2006Redone Server/src/redone/game/content/skills/fletching/LogCutting.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/fletching/LogCutting.java index 5e00b1b6..6f10139b 100644 --- a/2006Redone Server/src/redone/game/content/skills/fletching/LogCutting.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/fletching/LogCutting.java @@ -1,473 +1,422 @@ -package redone.game.content.skills.fletching; - -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.items.ItemAssistant; -import redone.game.players.Client; -import redone.util.Misc; - -/** - * @author Tom - */ - -public class LogCutting { - - private static final int KNIFE = 946, CUT_SOUND = 375; - - public static void resetFletching(Client c) { - if (c.playerIsFletching == true) { - c.playerIsFletching = false; - c.startAnimation(65535); - } - } - - public static void cutLog(final Client c, final int product, final int level, final double xp, int amount) { - if (c.isSpinning) { - c.isSpinning = false; - } - if (c.isWoodcutting) { - c.isWoodcutting = false; - } - c.doAmount = amount; - c.getPlayerAssistant().removeAllWindows(); - if (c.playerLevel[9] < level) { - c.getActionSender() - .sendMessage( - "You need a fletching level of " + level - + " to make this."); - return; - } - c.playerIsFletching = true; - c.startAnimation(1248); - c.getActionSender().sendSound(CUT_SOUND, 100, 0); - - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - - @Override - public void execute(CycleEventContainer container) { - if (c.getItemAssistant().playerHasItem(LogCuttingInterface.log) && c.getItemAssistant().playerHasItem(KNIFE)) { - c.getItemAssistant().deleteItem(LogCuttingInterface.log, 1); - if (product == 52) { - c.getItemAssistant().addItem(product, 15); - } else { - c.getItemAssistant().addItem(product, 1); - } - c.getActionSender().sendMessage("You carefully cut the " + ItemAssistant.getItemName(LogCuttingInterface.log) + " into an " + ItemAssistant.getItemName(product) + "."); - c.getPlayerAssistant().addSkillXP(xp, c.playerFletching); - c.doAmount--; - } - - if (!c.getItemAssistant().playerHasItem(LogCuttingInterface.log)) { - container.stop(); - return; - } - - if (c.playerIsFletching == false) { - container.stop(); - return; - } - - if (c.doAmount <= 0) { - container.stop(); - return; - } - - } - - @Override - public void stop() { - c.playerIsFletching = false; - c.startAnimation(65535); - return; - } - }, 3); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - - @Override - public void execute(CycleEventContainer container) { - if (c.playerIsFletching == false) { - container.stop(); - return; - } - c.getActionSender().sendSound(CUT_SOUND, 100, 0); - c.startAnimation(1248); - - } - - @Override - public void stop() { - c.playerIsFletching = false; - c.startAnimation(65535); - return; - } - }, 3); - } - - public static void handleClick(Client c, int buttonId) { - if (c.doAmount == 28 && c.playerIsFletching == true) { - c.getPlayerAssistant().closeAllWindows(); - c.playerIsFletching = false; - return; - } - switch (buttonId) { - /* - * normal log (item on interface 3) - */ - case 34185: - if (c.playerIsFletching == true) { - cutLog(c, 52, 1, 5, 1); - c.playerIsFletching = false; - return; - } - break; - case 34184: - cutLog(c, 52, 1, 5, 5); - return; - case 34183: - cutLog(c, 52, 1, 5, 10); - return; - case 34182: - cutLog(c, 52, 1, 5, 28); - return; - case 34189: - if (c.playerIsFletching == true) { - cutLog(c, 50, 5, 5, 1); - c.playerIsFletching = false; - return; - } - break; - case 34188: - cutLog(c, 50, 5, 5, 5); - return; - case 34187: - cutLog(c, 50, 5, 5, 10); - return; - case 34186: - cutLog(c, 50, 5, 5, 28); - return; - case 34193: - if (c.playerIsFletching == true) { - cutLog(c, 48, 10, 10, 1); - c.playerIsFletching = false; - return; - } - break; - case 34192: - cutLog(c, 48, 10, 10, 5); - return; - case 34191: - cutLog(c, 48, 10, 10, 10); - return; - case 34190: - cutLog(c, 48, 10, 10, 28); - return; - /* - * rest of the log's (item on interface 2) - */ - /* - * first item - */ - case 34170: - if (LogCuttingInterface.log == 1521 && c.playerIsFletching == true) { - cutLog(c, 54, 20, 16.5, 1); - c.playerIsFletching = false; - } - if (LogCuttingInterface.log == 1519 && c.playerIsFletching == true) { - cutLog(c, 60, 35, 33.3, 1); - c.playerIsFletching = false; - } - if (LogCuttingInterface.log == 1517 && c.playerIsFletching == true) { - cutLog(c, 64, 50, 50, 1); - c.playerIsFletching = false; - } - if (LogCuttingInterface.log == 1515 && c.playerIsFletching == true) { - cutLog(c, 68, 65, 67.5, 1); - c.playerIsFletching = false; - } - if (LogCuttingInterface.log == 1513 && c.playerIsFletching == true) { - cutLog(c, 72, 80, 83.25, 1); - c.playerIsFletching = false; - } - return; - case 34169: - if (LogCuttingInterface.log == 1521) { - cutLog(c, 54, 20, 16.5, 5); - } - if (LogCuttingInterface.log == 1519) { - cutLog(c, 60, 35, 33.3, 5); - } - if (LogCuttingInterface.log == 1517) { - cutLog(c, 64, 50, 50, 5); - } - if (LogCuttingInterface.log == 1515) { - cutLog(c, 68, 65, 67.5, 5); - } - if (LogCuttingInterface.log == 1513) { - cutLog(c, 72, 80, 83.25, 5); - } - return; - case 34168: - if (LogCuttingInterface.log == 1521) { - cutLog(c, 54, 20, 16.5, 10); - } - if (LogCuttingInterface.log == 1519) { - cutLog(c, 60, 35, 33.3, 10); - } - if (LogCuttingInterface.log == 1517) { - cutLog(c, 64, 50, 50, 10); - } - if (LogCuttingInterface.log == 1515) { - cutLog(c, 68, 65, 67.5, 10); - } - if (LogCuttingInterface.log == 1513) { - cutLog(c, 72, 80, 83.25, 10); - } - return; - case 34167: - if (LogCuttingInterface.log == 1521) { - cutLog(c, 54, 20, 16.5, 28); - } - if (LogCuttingInterface.log == 1519) { - cutLog(c, 60, 35, 33.3, 28); - } - if (LogCuttingInterface.log == 1517) { - cutLog(c, 64, 50, 50, 28); - } - if (LogCuttingInterface.log == 1515) { - cutLog(c, 68, 65, 67.5, 28); - } - if (LogCuttingInterface.log == 1513) { - cutLog(c, 72, 80, 83.25, 28); - } - return; - /* - * second item - */ - case 34174: - if (LogCuttingInterface.log == 1521 && c.playerIsFletching == true) { - cutLog(c, 56, 25, 25, 1); - c.playerIsFletching = false; - } - if (LogCuttingInterface.log == 1519 && c.playerIsFletching == true) { - cutLog(c, 58, 40, 41.5, 1); - c.playerIsFletching = false; - } - if (LogCuttingInterface.log == 1517 && c.playerIsFletching == true) { - cutLog(c, 62, 55, 58.3, 1); - c.playerIsFletching = false; - } - if (LogCuttingInterface.log == 1515 && c.playerIsFletching == true) { - cutLog(c, 66, 70, 70, 1); - c.playerIsFletching = false; - } - if (LogCuttingInterface.log == 1513 && c.playerIsFletching == true) { - cutLog(c, 70, 85, 91.5, 1); - c.playerIsFletching = false; - } - return; - case 34173: - if (LogCuttingInterface.log == 1521) { - cutLog(c, 56, 25, 25, 5); - } - if (LogCuttingInterface.log == 1519) { - cutLog(c, 58, 40, 41.5, 5); - } - if (LogCuttingInterface.log == 1517) { - cutLog(c, 62, 55, 58.3, 5); - } - if (LogCuttingInterface.log == 1515) { - cutLog(c, 66, 70, 70, 5); - } - if (LogCuttingInterface.log == 1513) { - cutLog(c, 70, 85, 91.5, 5); - } - return; - case 34172: - if (LogCuttingInterface.log == 1521) { - cutLog(c, 56, 25, 25, 10); - } - if (LogCuttingInterface.log == 1519) { - cutLog(c, 58, 40, 41.5, 10); - } - if (LogCuttingInterface.log == 1517) { - cutLog(c, 62, 55, 58.3, 10); - } - if (LogCuttingInterface.log == 1515) { - cutLog(c, 66, 70, 70, 10); - } - if (LogCuttingInterface.log == 1513) { - cutLog(c, 70, 85, 91.5, 10); - } - return; - case 34171: - if (LogCuttingInterface.log == 1521) { - cutLog(c, 56, 25, 25, 28); - } - if (LogCuttingInterface.log == 1519) { - cutLog(c, 58, 40, 41.5, 28); - } - if (LogCuttingInterface.log == 1517) { - cutLog(c, 62, 55, 58.3, 28); - } - if (LogCuttingInterface.log == 1515) { - cutLog(c, 66, 70, 70, 28); - } - if (LogCuttingInterface.log == 1513) { - cutLog(c, 70, 85, 91.5, 28); - } - return; - } - } - - public static void wolfBoneArrow(Client c) { - if (c.getItemAssistant().playerHasItem(2859) - && c.getItemAssistant().playerHasItem(1755)) { - final int amount = c.getItemAssistant().getItemCount(2859); - final int makeAmount = c.getItemAssistant().getItemCount(2859) - + c.getItemAssistant().getItemCount(2859) * Misc.random(4); - if (!c.getItemAssistant().playerHasItem(2859)) { - c.getDialogueHandler().sendStatement( - "You don't have any bones left to chisel."); - c.nextChat = 0; - return; - } - c.startAnimation(1248); - c.getItemAssistant().deleteItem(2859, amount); - c.getItemAssistant().addItem(2861, makeAmount); - c.getPlayerAssistant().addSkillXP(3 * amount, c.playerFletching); - c.getActionSender().sendMessage( - "You turn your " + ItemAssistant.getItemName(2859) - + " into " + ItemAssistant.getItemName(2861) + "."); - } - } - - public static void flightedArrow(Client c) {// to do - if (c.playerLevel[c.playerFletching] < 5) { - c.getDialogueHandler().sendStatement( - "You need 5 fletching to fletch this."); - c.nextChat = 0; - return; - } - if (!c.getItemAssistant().playerHasItem(314) - || !c.getItemAssistant().playerHasItem(2864)) { - c.getDialogueHandler().sendStatement( - "You don't enough materials to make these arrows."); - c.nextChat = 0; - return; - } - if (c.getItemAssistant().playerHasItem(314) - && c.getItemAssistant().playerHasItem(2864)) { - final int feather = c.getItemAssistant().getItemCount(314), arrowShaft = c - .getItemAssistant().getItemCount(2864); - if (feather == arrowShaft * 4) { - c.startAnimation(1248); - c.getItemAssistant().deleteItem(314, feather * 4); - c.getItemAssistant().deleteItem(2864, arrowShaft); - c.getItemAssistant().addItem(2865, arrowShaft); - c.getActionSender().sendMessage( - "You turn your " + ItemAssistant.getItemName(2864) - + " into " + ItemAssistant.getItemName(2865) - + "(s)."); - /* - * } else if (feather > arrowShaft * 4) {//to fix - * c.startAnimation(1248); c.getItemAssistant().deleteItem2(314, - * feather*4); c.getItemAssistant().deleteItem2(2864, - * arrowShaft); c.getItemAssistant().addItem(2865, arrowShaft); - * c.getPacketDispatcher().sendMessage("You turn your " + - * ItemAssistant.getItemName(2864) + " into " + - * ItemAssistant.getItemName(2865) + "(s)."); } else if (feather - * < arrowShaft * 4) {//to fix c.startAnimation(1248); - * c.getItemAssistant().deleteItem2(314, feather*4); - * c.getItemAssistant().deleteItem2(2864, arrowShaft); - * c.getItemAssistant().addItem(2865, arrowShaft); - * c.getPacketDispatcher().sendMessage("You turn your " + - * ItemAssistant.getItemName(2864) + " (s) into " + - * ItemAssistant.getItemName(2865) + "(s)."); - */ - } else { - c.getActionSender() - .sendMessage( - "You need 4 times the amount of feathers as arrow shafts to do this."); - } - } - } - - public static void ogreArrow(Client c) { - if (c.playerLevel[c.playerFletching] < 5) { - c.getDialogueHandler().sendStatement( - "You need 5 fletching to fletch this."); - c.nextChat = 0; - return; - } - if (!c.getItemAssistant().playerHasItem(2861) - || !c.getItemAssistant().playerHasItem(2865)) { - c.getDialogueHandler().sendStatement( - "You don't enough materials to make these arrows."); - c.nextChat = 0; - return; - } - final int wolfBoneArrow = c.getItemAssistant().getItemCount(2861), flightedArrow = c - .getItemAssistant().getItemCount(2865); - if (c.getItemAssistant().playerHasItem(2861) - && c.getItemAssistant().playerHasItem(2865)) { - if (wolfBoneArrow == flightedArrow) { - c.startAnimation(1248); - c.getItemAssistant().addItem(2866, wolfBoneArrow); - c.getPlayerAssistant().addSkillXP(1 * wolfBoneArrow, - c.playerFletching); - c.getItemAssistant().deleteItem(2861, wolfBoneArrow); - c.getItemAssistant().deleteItem(2865, wolfBoneArrow); - c.getActionSender().sendMessage( - "You turn your " + ItemAssistant.getItemName(2865) - + " (s) into " - + ItemAssistant.getItemName(2866) + "(s)."); - } else if (wolfBoneArrow > flightedArrow) { - c.startAnimation(1248); - c.getItemAssistant().addItem(2866, flightedArrow); - c.getPlayerAssistant().addSkillXP(1 * flightedArrow, - c.playerFletching); - c.getItemAssistant().deleteItem(2861, flightedArrow); - c.getItemAssistant().deleteItem(2865, flightedArrow); - c.getActionSender().sendMessage( - "You turn your " + ItemAssistant.getItemName(2865) - + " (s) into " - + ItemAssistant.getItemName(2866) + "(s)."); - } else if (wolfBoneArrow < flightedArrow) { - c.startAnimation(1248); - c.getItemAssistant().addItem(2866, wolfBoneArrow); - c.getPlayerAssistant().addSkillXP(1 * wolfBoneArrow, - c.playerFletching); - c.getItemAssistant().deleteItem(2861, wolfBoneArrow); - c.getItemAssistant().deleteItem(2865, wolfBoneArrow); - c.getActionSender().sendMessage( - "You turn your " + ItemAssistant.getItemName(2865) - + " (s) into " - + ItemAssistant.getItemName(2866) + "(s)."); - } - } - } - - public static void makeShafts(Client c) { - if (c.getItemAssistant().playerHasItem(2862) - && c.getItemAssistant().playerHasItem(946)) { - final int amount = c.getItemAssistant().getItemCount(2862); - final int makeAmount = c.getItemAssistant().getItemCount(2862) - + c.getItemAssistant().getItemCount(2862) * Misc.random(4); - if (!c.getItemAssistant().playerHasItem(2862)) { - c.getDialogueHandler().sendStatement( - "You don't have any logs left to fletch."); - c.nextChat = 0; - return; - } - c.startAnimation(1248); - c.getItemAssistant().deleteItem(2862, amount); - c.getItemAssistant().addItem(2864, makeAmount); - c.getPlayerAssistant().addSkillXP(2 * amount, c.playerFletching); - c.getActionSender().sendMessage( - "You turn your " + ItemAssistant.getItemName(2862) - + " (s) into " + ItemAssistant.getItemName(2864) - + "(s)."); - } - } -} +package com.rebotted.game.content.skills.fletching; + +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +/** + * @author Tom + */ + +public class LogCutting { + + private static final int KNIFE = 946, CUT_SOUND = 375; + + public static void resetFletching(Player player) { + if (player.playerIsFletching == true) { + player.playerIsFletching = false; + player.startAnimation(65535); + } + } + + public static void cutLog(final Player c, final int product, final int level, final double xp, int amount) { + if (c.isSpinning) { + c.isSpinning = false; + } + if (c.isWoodcutting) { + c.isWoodcutting = false; + } + c.doAmount = amount; + c.getPacketSender().closeAllWindows(); + if (c.playerLevel[9] < level) { + c.getPacketSender().sendMessage("You need a fletching level of " + level + " to make this."); + return; + } + c.playerIsFletching = true; + c.startAnimation(1248); + c.getPacketSender().sendSound(CUT_SOUND, 100, 0); + + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + + @Override + public void execute(CycleEventContainer container) { + if (c.getItemAssistant().playerHasItem(LogCuttingInterface.log) && c.getItemAssistant().playerHasItem(KNIFE)) { + c.getItemAssistant().deleteItem(LogCuttingInterface.log, 1); + if (product == 52) { + c.getItemAssistant().addItem(product, 15); + } else { + c.getItemAssistant().addItem(product, 1); + } + c.getPacketSender().sendMessage("You carefully cut the " + ItemAssistant.getItemName(LogCuttingInterface.log) + " into an " + ItemAssistant.getItemName(product) + "."); + c.getPlayerAssistant().addSkillXP(xp, c.playerFletching); + c.doAmount--; + } + + if (!c.getItemAssistant().playerHasItem(LogCuttingInterface.log)) { + container.stop(); + return; + } + + if (c.playerIsFletching == false) { + container.stop(); + return; + } + + if (c.doAmount <= 0) { + container.stop(); + return; + } + + } + + @Override + public void stop() { + c.playerIsFletching = false; + c.startAnimation(65535); + return; + } + }, 3); + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + + @Override + public void execute(CycleEventContainer container) { + if (c.playerIsFletching == false) { + container.stop(); + return; + } + c.getPacketSender().sendSound(CUT_SOUND, 100, 0); + c.startAnimation(1248); + + } + + @Override + public void stop() { + c.playerIsFletching = false; + c.startAnimation(65535); + return; + } + }, 3); + } + + public static void handleClick(Player c, int buttonId) { + if (c.doAmount == 28 && c.playerIsFletching == true) { + c.getPacketSender().closeAllWindows(); + c.playerIsFletching = false; + return; + } + switch (buttonId) { + /* + * normal log (item on interface 3) + */ + case 34185: + if (c.playerIsFletching == true) { + cutLog(c, 52, 1, 5, 1); + c.playerIsFletching = false; + return; + } + break; + case 34184: + cutLog(c, 52, 1, 5, 5); + return; + case 34183: + cutLog(c, 52, 1, 5, 10); + return; + case 34182: + cutLog(c, 52, 1, 5, 28); + return; + case 34189: + if (c.playerIsFletching == true) { + cutLog(c, 50, 5, 5, 1); + c.playerIsFletching = false; + return; + } + break; + case 34188: + cutLog(c, 50, 5, 5, 5); + return; + case 34187: + cutLog(c, 50, 5, 5, 10); + return; + case 34186: + cutLog(c, 50, 5, 5, 28); + return; + case 34193: + if (c.playerIsFletching == true) { + cutLog(c, 48, 10, 10, 1); + c.playerIsFletching = false; + return; + } + break; + case 34192: + cutLog(c, 48, 10, 10, 5); + return; + case 34191: + cutLog(c, 48, 10, 10, 10); + return; + case 34190: + cutLog(c, 48, 10, 10, 28); + return; + /* + * rest of the log's (item on interface 2) + */ + /* + * first item + */ + case 34170: + if (LogCuttingInterface.log == 1521 && c.playerIsFletching == true) { + cutLog(c, 54, 20, 16.5, 1); + c.playerIsFletching = false; + } + if (LogCuttingInterface.log == 1519 && c.playerIsFletching == true) { + cutLog(c, 60, 35, 33.3, 1); + c.playerIsFletching = false; + } + if (LogCuttingInterface.log == 1517 && c.playerIsFletching == true) { + cutLog(c, 64, 50, 50, 1); + c.playerIsFletching = false; + } + if (LogCuttingInterface.log == 1515 && c.playerIsFletching == true) { + cutLog(c, 68, 65, 67.5, 1); + c.playerIsFletching = false; + } + if (LogCuttingInterface.log == 1513 && c.playerIsFletching == true) { + cutLog(c, 72, 80, 83.25, 1); + c.playerIsFletching = false; + } + return; + case 34169: + if (LogCuttingInterface.log == 1521) { + cutLog(c, 54, 20, 16.5, 5); + } + if (LogCuttingInterface.log == 1519) { + cutLog(c, 60, 35, 33.3, 5); + } + if (LogCuttingInterface.log == 1517) { + cutLog(c, 64, 50, 50, 5); + } + if (LogCuttingInterface.log == 1515) { + cutLog(c, 68, 65, 67.5, 5); + } + if (LogCuttingInterface.log == 1513) { + cutLog(c, 72, 80, 83.25, 5); + } + return; + case 34168: + if (LogCuttingInterface.log == 1521) { + cutLog(c, 54, 20, 16.5, 10); + } + if (LogCuttingInterface.log == 1519) { + cutLog(c, 60, 35, 33.3, 10); + } + if (LogCuttingInterface.log == 1517) { + cutLog(c, 64, 50, 50, 10); + } + if (LogCuttingInterface.log == 1515) { + cutLog(c, 68, 65, 67.5, 10); + } + if (LogCuttingInterface.log == 1513) { + cutLog(c, 72, 80, 83.25, 10); + } + return; + case 34167: + if (LogCuttingInterface.log == 1521) { + cutLog(c, 54, 20, 16.5, 28); + } + if (LogCuttingInterface.log == 1519) { + cutLog(c, 60, 35, 33.3, 28); + } + if (LogCuttingInterface.log == 1517) { + cutLog(c, 64, 50, 50, 28); + } + if (LogCuttingInterface.log == 1515) { + cutLog(c, 68, 65, 67.5, 28); + } + if (LogCuttingInterface.log == 1513) { + cutLog(c, 72, 80, 83.25, 28); + } + return; + /* + * second item + */ + case 34174: + if (LogCuttingInterface.log == 1521 && c.playerIsFletching == true) { + cutLog(c, 56, 25, 25, 1); + c.playerIsFletching = false; + } + if (LogCuttingInterface.log == 1519 && c.playerIsFletching == true) { + cutLog(c, 58, 40, 41.5, 1); + c.playerIsFletching = false; + } + if (LogCuttingInterface.log == 1517 && c.playerIsFletching == true) { + cutLog(c, 62, 55, 58.3, 1); + c.playerIsFletching = false; + } + if (LogCuttingInterface.log == 1515 && c.playerIsFletching == true) { + cutLog(c, 66, 70, 70, 1); + c.playerIsFletching = false; + } + if (LogCuttingInterface.log == 1513 && c.playerIsFletching == true) { + cutLog(c, 70, 85, 91.5, 1); + c.playerIsFletching = false; + } + return; + case 34173: + if (LogCuttingInterface.log == 1521) { + cutLog(c, 56, 25, 25, 5); + } + if (LogCuttingInterface.log == 1519) { + cutLog(c, 58, 40, 41.5, 5); + } + if (LogCuttingInterface.log == 1517) { + cutLog(c, 62, 55, 58.3, 5); + } + if (LogCuttingInterface.log == 1515) { + cutLog(c, 66, 70, 70, 5); + } + if (LogCuttingInterface.log == 1513) { + cutLog(c, 70, 85, 91.5, 5); + } + return; + case 34172: + if (LogCuttingInterface.log == 1521) { + cutLog(c, 56, 25, 25, 10); + } + if (LogCuttingInterface.log == 1519) { + cutLog(c, 58, 40, 41.5, 10); + } + if (LogCuttingInterface.log == 1517) { + cutLog(c, 62, 55, 58.3, 10); + } + if (LogCuttingInterface.log == 1515) { + cutLog(c, 66, 70, 70, 10); + } + if (LogCuttingInterface.log == 1513) { + cutLog(c, 70, 85, 91.5, 10); + } + return; + case 34171: + if (LogCuttingInterface.log == 1521) { + cutLog(c, 56, 25, 25, 28); + } + if (LogCuttingInterface.log == 1519) { + cutLog(c, 58, 40, 41.5, 28); + } + if (LogCuttingInterface.log == 1517) { + cutLog(c, 62, 55, 58.3, 28); + } + if (LogCuttingInterface.log == 1515) { + cutLog(c, 66, 70, 70, 28); + } + if (LogCuttingInterface.log == 1513) { + cutLog(c, 70, 85, 91.5, 28); + } + return; + } + } + + public static void wolfBoneArrow(Player c) { + if (c.getItemAssistant().playerHasItem(2859) + && c.getItemAssistant().playerHasItem(1755)) { + final int amount = c.getItemAssistant().getItemCount(2859); + final int makeAmount = c.getItemAssistant().getItemCount(2859) + + c.getItemAssistant().getItemCount(2859) * Misc.random(4); + if (!c.getItemAssistant().playerHasItem(2859)) { + c.getDialogueHandler().sendStatement( + "You don't have any bones left to chisel."); + c.nextChat = 0; + return; + } + c.startAnimation(1248); + c.getItemAssistant().deleteItem(2859, amount); + c.getItemAssistant().addItem(2861, makeAmount); + c.getPlayerAssistant().addSkillXP(3 * amount, c.playerFletching); + c.getPacketSender().sendMessage("You turn your " + ItemAssistant.getItemName(2859) + " into " + ItemAssistant.getItemName(2861) + "."); + } + } + + public static void flightedArrow(Player c) {// to do + if (c.playerLevel[c.playerFletching] < 5) { + c.getDialogueHandler().sendStatement("You need 5 fletching to fletch this."); + c.nextChat = 0; + return; + } + if (!c.getItemAssistant().playerHasItem(314) || !c.getItemAssistant().playerHasItem(2864)) { + c.getDialogueHandler().sendStatement("You don't enough materials to make these arrows."); + c.nextChat = 0; + return; + } + if (c.getItemAssistant().playerHasItem(314) + && c.getItemAssistant().playerHasItem(2864)) { + final int feather = c.getItemAssistant().getItemCount(314), arrowShaft = c + .getItemAssistant().getItemCount(2864); + if (feather == arrowShaft * 4) { + c.startAnimation(1248); + c.getItemAssistant().deleteItem(314, feather * 4); + c.getItemAssistant().deleteItem(2864, arrowShaft); + c.getItemAssistant().addItem(2865, arrowShaft); + c.getPacketSender().sendMessage("You turn your " + ItemAssistant.getItemName(2864) + " into " + ItemAssistant.getItemName(2865) + "(s)."); + } else { + c.getPacketSender().sendMessage("You need 4 times the amount of feathers as arrow shafts to do this."); + } + } + } + + public static void ogreArrow(Player c) { + if (c.playerLevel[c.playerFletching] < 5) { + c.getDialogueHandler().sendStatement("You need 5 fletching to fletch this."); + c.nextChat = 0; + return; + } + if (!c.getItemAssistant().playerHasItem(2861) || !c.getItemAssistant().playerHasItem(2865)) { + c.getDialogueHandler().sendStatement("You don't enough materials to make these arrows."); + c.nextChat = 0; + return; + } + final int wolfBoneArrow = c.getItemAssistant().getItemCount(2861), flightedArrow = c.getItemAssistant().getItemCount(2865); + if (c.getItemAssistant().playerHasItem(2861) + && c.getItemAssistant().playerHasItem(2865)) { + if (wolfBoneArrow == flightedArrow) { + c.startAnimation(1248); + c.getItemAssistant().addItem(2866, wolfBoneArrow); + c.getPlayerAssistant().addSkillXP(1 * wolfBoneArrow, c.playerFletching); + c.getItemAssistant().deleteItem(2861, wolfBoneArrow); + c.getItemAssistant().deleteItem(2865, wolfBoneArrow); + c.getPacketSender().sendMessage("You turn your " + ItemAssistant.getItemName(2865) + " (s) into " + ItemAssistant.getItemName(2866) + "(s)."); + } else if (wolfBoneArrow > flightedArrow) { + c.startAnimation(1248); + c.getItemAssistant().addItem(2866, flightedArrow); + c.getPlayerAssistant().addSkillXP(1 * flightedArrow, c.playerFletching); + c.getItemAssistant().deleteItem(2861, flightedArrow); + c.getItemAssistant().deleteItem(2865, flightedArrow); + c.getPacketSender().sendMessage("You turn your " + ItemAssistant.getItemName(2865) + " (s) into " + ItemAssistant.getItemName(2866) + "(s)."); + } else if (wolfBoneArrow < flightedArrow) { + c.startAnimation(1248); + c.getItemAssistant().addItem(2866, wolfBoneArrow); + c.getPlayerAssistant().addSkillXP(1 * wolfBoneArrow, c.playerFletching); + c.getItemAssistant().deleteItem(2861, wolfBoneArrow); + c.getItemAssistant().deleteItem(2865, wolfBoneArrow); + c.getPacketSender().sendMessage("You turn your " + ItemAssistant.getItemName(2865) + " (s) into " + ItemAssistant.getItemName(2866) + "(s)."); + } + } + } + + public static void makeShafts(Player c) { + if (c.getItemAssistant().playerHasItem(2862) && c.getItemAssistant().playerHasItem(946)) { + final int amount = c.getItemAssistant().getItemCount(2862); + final int makeAmount = c.getItemAssistant().getItemCount(2862) + c.getItemAssistant().getItemCount(2862) * Misc.random(4); + if (!c.getItemAssistant().playerHasItem(2862)) { + c.getDialogueHandler().sendStatement("You don't have any logs left to fletch."); + c.nextChat = 0; + return; + } + c.startAnimation(1248); + c.getItemAssistant().deleteItem(2862, amount); + c.getItemAssistant().addItem(2864, makeAmount); + c.getPlayerAssistant().addSkillXP(2 * amount, c.playerFletching); + c.getPacketSender().sendMessage("You turn your " + ItemAssistant.getItemName(2862) + " (s) into " + ItemAssistant.getItemName(2864) + "(s)."); + } + } +} diff --git a/2006Redone Server/src/com/rebotted/game/content/skills/fletching/LogCuttingInterface.java b/2006Redone Server/src/com/rebotted/game/content/skills/fletching/LogCuttingInterface.java new file mode 100644 index 00000000..75ffbc30 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/skills/fletching/LogCuttingInterface.java @@ -0,0 +1,84 @@ +package com.rebotted.game.content.skills.fletching; + +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Player; + +/** + * @author Tom + */ + +public class LogCuttingInterface { + + public static int log; + + public static void handleLog(Player c, int item1, int item2) { + if (item1 == 946) { + fletchInterface(c, item2); + } else { + fletchInterface(c, item1); + } + } + + public static void fletchInterface(Player c, int item) { + if (c.playerIsFletching == true && (item > 1510 && item < 1522)) { + LogCutting.resetFletching(c); + return; + } else if (c.playerIsFletching == true && (item < 1510 || item > 1521)) { + c.playerIsFletching = false; + c.getPacketSender().sendMessage("Nothing interesting happens."); + } + log = item; + if (item == 1511) { + c.getPacketSender().sendChatInterface(8880); + c.getPacketSender().sendFrame126("What would you like to make?", 8879); + c.getPacketSender().sendFrame246(8883, 180, 52); // left + c.getPacketSender().sendFrame246(8884, 180, 50); // middle + c.getPacketSender().sendFrame246(8885, 180, 48); // right + c.getPacketSender().sendFrame126(ItemAssistant.getItemName(52), 8889); + c.getPacketSender().sendFrame126(ItemAssistant.getItemName(50), 8893); + c.getPacketSender().sendFrame126(ItemAssistant.getItemName(48), 8897); + } else if (item == 1521) { + c.getPacketSender().sendChatInterface(8866); + c.getPacketSender().sendFrame126("What would you like to make?", 8879); + c.getPacketSender().sendFrame246(8869, 180, 54); // left + c.getPacketSender().sendFrame246(8870, 180, 56); // right + c.getPacketSender().sendFrame126(ItemAssistant.getItemName(54), 8874); + c.getPacketSender().sendFrame126(ItemAssistant.getItemName(56), 8878); + } else if (item == 1519) { + c.getPacketSender().sendChatInterface(8866); + c.getPacketSender().sendFrame126("What would you like to make?", 8879); + c.getPacketSender().sendFrame246(8869, 180, 60); // left + c.getPacketSender().sendFrame246(8870, 180, 58); // right + c.getPacketSender().sendFrame126(ItemAssistant.getItemName(60), 8874); + c.getPacketSender().sendFrame126(ItemAssistant.getItemName(58), 8878); + } else if (item == 1517) { + c.getPacketSender().sendChatInterface(8866); + c.getPacketSender().sendFrame126("What would you like to make?", 8879); + c.getPacketSender().sendFrame246(8869, 180, 64); // left + c.getPacketSender().sendFrame246(8870, 180, 62); // right + c.getPacketSender().sendFrame126(ItemAssistant.getItemName(64), 8874); + c.getPacketSender().sendFrame126(ItemAssistant.getItemName(62), 8878); + } else if (item == 1515) { + c.getPacketSender().sendChatInterface(8866); + c.getPacketSender().sendFrame126("What would you like to make?", 8879); + c.getPacketSender().sendFrame246(8869, 180, 68); // left + c.getPacketSender().sendFrame246(8870, 180, 66); // right + c.getPacketSender().sendFrame126(ItemAssistant.getItemName(68), 8874); + c.getPacketSender().sendFrame126(ItemAssistant.getItemName(66), 8878); + } else if (item == 1513) { + c.getPacketSender().sendChatInterface(8866); + c.getPacketSender().sendFrame126("What would you like to make?", 8879); + c.getPacketSender().sendFrame246(8869, 180, 72); // left + c.getPacketSender().sendFrame246(8870, 180, 70); // right + c.getPacketSender().sendFrame126(ItemAssistant.getItemName(72), 8874); + c.getPacketSender().sendFrame126(ItemAssistant.getItemName(70), 8878); + } + c.playerIsFletching = true; + } + + public static void handleItemOnItem(Player player, int itemUsed, int useWith) { + if (itemUsed == 946 || useWith == 946) { + handleLog(player, itemUsed, useWith); + } + } +} diff --git a/2006Redone Server/src/redone/game/content/skills/fletching/Stringing.java b/2006Redone Server/src/com/rebotted/game/content/skills/fletching/Stringing.java similarity index 53% rename from 2006Redone Server/src/redone/game/content/skills/fletching/Stringing.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/fletching/Stringing.java index a70eff70..e6f13a64 100644 --- a/2006Redone Server/src/redone/game/content/skills/fletching/Stringing.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/fletching/Stringing.java @@ -1,121 +1,109 @@ -package redone.game.content.skills.fletching; - -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.items.ItemAssistant; -import redone.game.players.Client; - -/** - * @author Tom - */ - -public class Stringing { - - public static int STRING_SOUND = 2606; - - public enum Data { - - SHORT_BOW(50, 1777, 841, 5, 5), LONG_BOW(48, 1777, 839, 10, 10), OAK_SHORT_BOW( - 54, 1777, 843, 20, 16.5), OAK_LONG_BOW(56, 1777, 845, 25, 25), COMPOSITE_BOW( - 4825, 1777, 4827, 30, 45), WILLOW_SHORT_BOW(60, 1777, 849, 35, - 33.3), WILLOW_LONG_BOW(58, 1777, 847, 40, 41.5), MAPLE_SHORT_BOW( - 64, 1777, 853, 50, 50), MAPLE_LONG_BOW(62, 1777, 851, 55, 58.3), YEW_SHORT_BOW( - 68, 1777, 857, 65, 68.5), YEW_LONG_BOW(66, 1777, 855, 70, 75), MAGIC_SHORT_BOW( - 72, 1777, 861, 80, 83.3), MAGIC_LONG_BOW(70, 1777, 859, 85, - 91.5); - - public int item1, item2, product, level; - public double xp; - - public static Data forId(int itemId, int usedWith) { - for (Data loadData : Data.values()) { - if (loadData.item1 == itemId && loadData.item2 == usedWith - || loadData.item2 == itemId - && loadData.item1 == usedWith) { - return loadData; - } - } - return null; - } - - private Data(int item1, int item2, int product, int level, double xp) { - this.item1 = item1; - this.item2 = item2; - this.product = product; - this.level = level; - this.xp = xp; - } - - public int getItem1() { - return item1; - } - - public int getItem2() { - return item2; - } - - public int getProduct() { - return product; - } - - public int getLevel() { - return level; - } - - public double getXp() { - return xp; - } - } - - public static boolean StringBow(final Client c, int itemUsed, int usedWith) { - final Data loadData = Data.forId(itemUsed, usedWith); - if (loadData == null) { - return false; - } - if (c.playerLevel[9] < loadData.getLevel()) { - c.getDialogueHandler().sendStatement( - "You need a fletching level of " + loadData.getLevel() - + " to do this"); - return false; - } - if (!c.getItemAssistant().playerHasItem(loadData.getItem1()) - || !c.getItemAssistant().playerHasItem(loadData.getItem2())) { - c.getDialogueHandler().sendStatement( - "You need a " - + ItemAssistant.getItemName(loadData.getItem1()) - + " and a " - + ItemAssistant.getItemName(loadData.getItem2()) - + " to make this."); - return false; - } - c.playerIsFletching = true; - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - - @Override - public void execute(CycleEventContainer container) { - if (!c.getItemAssistant().playerHasItem(loadData.getItem1()) - || !c.getItemAssistant().playerHasItem( - loadData.getItem2()) - || c.playerIsFletching == false) { - container.stop(); - return; - } - c.getItemAssistant().deleteItem(loadData.getItem1(), 1); - c.getItemAssistant().deleteItem(loadData.getItem2(), 1); - c.getActionSender().sendMessage( - "You add a string to the bow."); - c.getItemAssistant().addItem(loadData.getProduct(), 1); - c.getPlayerAssistant().addSkillXP(loadData.getXp(), 9); - } - - @Override - public void stop() { - c.playerIsFletching = false; - return; - } - }, 3); - return true; - } - -} +package com.rebotted.game.content.skills.fletching; + +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Player; + +/** + * @author Tom + */ + +public class Stringing { + + public static int STRING_SOUND = 2606; + + public enum Data { + + SHORT_BOW(50, 1777, 841, 5, 5), LONG_BOW(48, 1777, 839, 10, 10), OAK_SHORT_BOW( + 54, 1777, 843, 20, 16.5), OAK_LONG_BOW(56, 1777, 845, 25, 25), COMPOSITE_BOW( + 4825, 1777, 4827, 30, 45), WILLOW_SHORT_BOW(60, 1777, 849, 35, + 33.3), WILLOW_LONG_BOW(58, 1777, 847, 40, 41.5), MAPLE_SHORT_BOW( + 64, 1777, 853, 50, 50), MAPLE_LONG_BOW(62, 1777, 851, 55, 58.3), YEW_SHORT_BOW( + 68, 1777, 857, 65, 68.5), YEW_LONG_BOW(66, 1777, 855, 70, 75), MAGIC_SHORT_BOW( + 72, 1777, 861, 80, 83.3), MAGIC_LONG_BOW(70, 1777, 859, 85, + 91.5); + + public int item1, item2, product, level; + public double xp; + + public static Data forId(int itemId, int usedWith) { + for (Data loadData : Data.values()) { + if (loadData.item1 == itemId && loadData.item2 == usedWith + || loadData.item2 == itemId + && loadData.item1 == usedWith) { + return loadData; + } + } + return null; + } + + private Data(int item1, int item2, int product, int level, double xp) { + this.item1 = item1; + this.item2 = item2; + this.product = product; + this.level = level; + this.xp = xp; + } + + public int getItem1() { + return item1; + } + + public int getItem2() { + return item2; + } + + public int getProduct() { + return product; + } + + public int getLevel() { + return level; + } + + public double getXp() { + return xp; + } + } + + public static boolean StringBow(final Player player, int itemUsed, int usedWith) { + final Data loadData = Data.forId(itemUsed, usedWith); + if (loadData == null) { + return false; + } + if (player.playerLevel[9] < loadData.getLevel()) { + player.getDialogueHandler().sendStatement("You need a fletching level of " + loadData.getLevel() + " to do this"); + return false; + } + if (!player.getItemAssistant().playerHasItem(loadData.getItem1()) || !player.getItemAssistant().playerHasItem(loadData.getItem2())) { + player.getDialogueHandler().sendStatement("You need a " + ItemAssistant.getItemName(loadData.getItem1()) + " and a " + ItemAssistant.getItemName(loadData.getItem2()) + " to make this."); + return false; + } + player.playerIsFletching = true; + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + + @Override + public void execute(CycleEventContainer container) { + if (!player.getItemAssistant().playerHasItem(loadData.getItem1()) || !player.getItemAssistant().playerHasItem(loadData.getItem2()) || player.playerIsFletching == false) { + container.stop(); + return; + } + player.getItemAssistant().deleteItem(loadData.getItem1(), 1); + player.getItemAssistant().deleteItem(loadData.getItem2(), 1); + player.getPacketSender().sendMessage("You add a string to the bow."); + player.getItemAssistant().addItem(loadData.getProduct(), 1); + player.getPlayerAssistant().addSkillXP(loadData.getXp(), 9); + } + + @Override + public void stop() { + player.playerIsFletching = false; + return; + } + }, 3); + return true; + } + +} diff --git a/2006Redone Server/src/com/rebotted/game/content/skills/herblore/GrindingAction.java b/2006Redone Server/src/com/rebotted/game/content/skills/herblore/GrindingAction.java new file mode 100644 index 00000000..c382bf0f --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/skills/herblore/GrindingAction.java @@ -0,0 +1,46 @@ +package com.rebotted.game.content.skills.herblore; + +import com.rebotted.game.content.music.sound.SoundList; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Player; + +public class GrindingAction { + + public static final int PESTLE_AND_MORTAR = 233; + + public enum Data { + UNICORN(237, 235), CHOCO(1973, 1975), NEST(5075, 6693), SCALE(243, 241), SHARDS( + 6466, 6467), WEED1(401, 6683), WEED2(403, 6683), BAT(530, 2391), CHARCOAL( + 973, 704), COD(341, 7528), KELP(7516, 7517), CRABMEAT(7518, + 7527), THISLE(3263, 3264), MUSHROOM(4620, 4622); + + public int id; + public int end; + + Data(int id, int end) { + this.id = id; + this.end = end; + } + + public int getId() { + return id; + } + + public int getEnd() { + return end; + } + } + + public static void init(Player player, int itemUsed, int useWith) { + for (Data d : Data.values()) { + if (itemUsed == PESTLE_AND_MORTAR && useWith == d.getId() || itemUsed == d.getId() && useWith == PESTLE_AND_MORTAR) { + player.startAnimation(364); + player.getPacketSender().sendSound(SoundList.PESTLE_MOTAR, 100, 0); + player.getItemAssistant().deleteItem(d.getId(), 1); + player.getItemAssistant().addItem(d.getEnd(), 1); + player.getPacketSender().sendMessage("You carefully grind the " + ItemAssistant.getItemName(d.getId()) + "."); + player.getPlayerAssistant().addSkillXP(1, player.playerHerblore); + } + } + } +} diff --git a/2006Redone Server/src/redone/game/content/skills/herblore/Herblore.java b/2006Redone Server/src/com/rebotted/game/content/skills/herblore/Herblore.java similarity index 68% rename from 2006Redone Server/src/redone/game/content/skills/herblore/Herblore.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/herblore/Herblore.java index a2da6e19..238a7f93 100644 --- a/2006Redone Server/src/redone/game/content/skills/herblore/Herblore.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/herblore/Herblore.java @@ -1,194 +1,185 @@ -package redone.game.content.skills.herblore; - -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.content.skills.SkillHandler; -import redone.game.items.ItemAssistant; -import redone.game.players.Client; - -public class Herblore extends SkillHandler { - - private static int itemToAdd = -1, itemToDelete = -1, itemToDelete2 = -1, - potExp = -1; - private static final int ANIM = 363; - - private static final int[][] CLEAN_DATA = { { 199, 249, 1, 3 }, - { 201, 251, 5, 4 }, { 203, 253, 11, 5 }, { 205, 255, 20, 6 }, - { 207, 257, 25, 8 }, { 3049, 2998, 30, 8 }, - { 12174, 12172, 35, 8 }, { 209, 259, 40, 9 }, - { 14836, 14854, 30, 8 }, { 211, 261, 48, 10 }, - { 213, 263, 54, 11 }, { 3051, 3000, 59, 12 }, { 215, 265, 65, 13 }, - { 2485, 2481, 67, 13 }, { 217, 267, 70, 14 }, { 219, 269, 75, 15 }, - - }; - - public static void handleHerbCleaning(final Client c, final int itemId, - final int itemSlot) { - for (int[] element : CLEAN_DATA) { - if (itemId == element[0]) { - if (c.playerLevel[15] < element[2]) { - c.getActionSender().sendMessage("You cannot clean this herb."); - c.getActionSender().sendMessage("You need a higher Herblore level."); - return; - } - c.getItemAssistant().deleteItem(itemId, itemSlot, 1); - c.getItemAssistant().addItem(element[1], 1); - c.getActionSender().sendMessage("The herb is a " + ItemAssistant.getItemName(element[1]) + "."); - c.getPlayerAssistant().addSkillXP(element[3], 15); - } - } - } - - //potion, item, finished, level req, exp - private static final int[][] POTION_DATA = { { 91, 221, 121, 1, 25 }, - { 93, 235, 175, 5, 38 }, { 95, 225, 115, 12, 50 }, - { 97, 223, 127, 22, 63 }, { 99, 239, 133, 30, 75 }, - { 97, 9736, 9741, 36, 84 }, { 99, 231, 139, 38, 88 }, - { 101, 221, 145, 45, 100 }, { 101, 235, 181, 48, 106 }, - { 103, 231, 151, 50, 112 }, { 105, 225, 157, 55, 125 }, - { 107, 239, 163, 66, 150 }, { 2483, 241, 2454, 69, 158 }, - { 109, 245, 169, 72, 163 }, { 2483, 3138, 3042, 76, 173 }, - { 111, 247, 189, 78, 175 }, { 3002, 6693, 6687, 81, 180 }, - { 5935, 6016, 5936, 73, 0}, { 5936, 223, 5937, 73, 165}, - { 5935, 2398, 5939, 82, 0}, { 5939, 6018, 5940, 82, 190}, - { 227, 263, 105, 55, 0}, { 105, 241, 187, 60, 137 }, - { 227, 249, 91, 1, 0 }, { 227, 251, 93, 5, 0 }, - { 227, 253, 95, 12, 0 }, { 227, 255, 97, 22, 0 }, - { 227, 257, 99, 30, 0 }, { 227, 259, 101, 34, 0 }, - { 227, 261, 103, 45, 0 }, { 3004, 223, 3026, 63, 142 }, - { 227, 265, 107, 66, 0 }, { 227, 267, 109, 72, 0 }, - { 227, 269, 111, 75, 0 }, { 227, 2481, 2483, 67, 0 }, - { 227, 3000, 3004, 59, 0 }, { 227, 2998, 3002, 30, 0 }, - { 1975, 97, 3010, 26, 67 }, }; - - public static void setupPotion(final Client c, int useItem, int itemUsed) { - for (int[] element : POTION_DATA) { - if (useItem == element[0] && itemUsed == element[1] - || useItem == element[1] && itemUsed == element[0]) { - if (c.playerLevel[c.playerHerblore] < element[3]) { - c.getActionSender().sendMessage( - "You need an herblore level of " + element[3] - + " to mix this potion."); - return; - } - send1Item(c, element[2]); - itemToDelete = element[1]; - itemToDelete2 = element[0]; - potExp = element[4]; - itemToAdd = element[2]; - c.isPotionMaking = true; - } - } - } - - public static void makePotion(final Client c, int amount) { - if (c.playerSkilling[c.playerHerblore]) { - return; - } - if (itemToDelete <= 0 || itemToDelete2 <= 0) { - return; - } - c.doAmount = amount; - c.playerSkilling[c.playerHerblore] = true; - c.getPlayerAssistant().removeAllWindows(); - c.startAnimation(ANIM); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - - @Override - public void execute(CycleEventContainer container) { - c.getItemAssistant().deleteItem(itemToDelete, - c.getItemAssistant().getItemSlot(itemToDelete), 1); - c.getItemAssistant().deleteItem(itemToDelete2, - c.getItemAssistant().getItemSlot(itemToDelete2), 1); - c.getItemAssistant().addItem(itemToAdd, 1); - c.getActionSender().sendMessage( - "You make a " - + ItemAssistant.getItemName(itemToAdd) - .toLowerCase() + "."); - c.getPlayerAssistant().addSkillXP(potExp, c.playerHerblore); - deleteTime(c); - if (!c.getItemAssistant().playerHasItem(itemToDelete2, 1) - || !c.getItemAssistant().playerHasItem(itemToDelete, 1) - || c.doAmount <= 0) { - container.stop(); - } - if (!c.isPotionMaking) { - container.stop(); - } - } - - @Override - public void stop() { - resetHerblore(c); - } - }, 1); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - - @Override - public void execute(CycleEventContainer container) { - c.startAnimation(ANIM); - if (!c.playerSkilling[c.playerHerblore] || !c.isPotionMaking) { - container.stop(); - } - } - - @Override - public void stop() { - } - }, 1); - } - - public static void resetHerblore(Client c) { - itemToAdd = -1; - itemToDelete = -1; - itemToDelete2 = -1; - potExp = -1; - c.isGrinding = false; - c.isPotionMaking = false; - c.playerSkilling[c.playerHerblore] = false; - } - - public static boolean isHerb(int item) { - for (int[] element : CLEAN_DATA) { - if (item == element[0]) { - return true; - } - } - return false; - } - - public static boolean isIngredient(int item) { - for (int[] element : POTION_DATA) { - if (item == element[0] || item == element[1]) { - return true; - } - } - return false; - } - - public static void handleHerbloreButtons(Client c, int actionButtonId) { - switch (actionButtonId) { - case 10239: - if (c.isPotionMaking) { - makePotion(c, 1); - } - break; - case 10238: - if (c.isPotionMaking) { - makePotion(c, 5); - } - break; - case 6212: - if (c.isPotionMaking) { - makePotion(c, 10); - } - break; - case 6211: - if (c.isPotionMaking) { - makePotion(c, 28); - } - break; - } - } -} +package com.rebotted.game.content.skills.herblore; + +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.content.skills.SkillHandler; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Player; + +public class Herblore extends SkillHandler { + + private static int itemToAdd = -1, itemToDelete = -1, itemToDelete2 = -1, + potExp = -1; + private static final int ANIM = 363; + + private static final int[][] CLEAN_DATA = { { 199, 249, 1, 3 }, + { 201, 251, 5, 4 }, { 203, 253, 11, 5 }, { 205, 255, 20, 6 }, + { 207, 257, 25, 8 }, { 3049, 2998, 30, 8 }, + { 12174, 12172, 35, 8 }, { 209, 259, 40, 9 }, + { 14836, 14854, 30, 8 }, { 211, 261, 48, 10 }, + { 213, 263, 54, 11 }, { 3051, 3000, 59, 12 }, { 215, 265, 65, 13 }, + { 2485, 2481, 67, 13 }, { 217, 267, 70, 14 }, { 219, 269, 75, 15 }, + + }; + + public static void handleHerbCleaning(final Player c, final int itemId, + final int itemSlot) { + for (int[] element : CLEAN_DATA) { + if (itemId == element[0]) { + if (c.playerLevel[15] < element[2]) { + c.getPacketSender().sendMessage("You cannot clean this herb."); + c.getPacketSender().sendMessage("You need a higher Herblore level."); + return; + } + c.getItemAssistant().deleteItem(itemId, itemSlot, 1); + c.getItemAssistant().addItem(element[1], 1); + c.getPacketSender().sendMessage("The herb is a " + ItemAssistant.getItemName(element[1]) + "."); + c.getPlayerAssistant().addSkillXP(element[3], 15); + } + } + } + + //potion, item, finished, level req, exp + private static final int[][] POTION_DATA = { { 91, 221, 121, 1, 25 }, + { 93, 235, 175, 5, 38 }, { 95, 225, 115, 12, 50 }, + { 97, 223, 127, 22, 63 }, { 99, 239, 133, 30, 75 }, + { 97, 9736, 9741, 36, 84 }, { 99, 231, 139, 38, 88 }, + { 101, 221, 145, 45, 100 }, { 101, 235, 181, 48, 106 }, + { 103, 231, 151, 50, 112 }, { 105, 225, 157, 55, 125 }, + { 107, 239, 163, 66, 150 }, { 2483, 241, 2454, 69, 158 }, + { 109, 245, 169, 72, 163 }, { 2483, 3138, 3042, 76, 173 }, + { 111, 247, 189, 78, 175 }, { 3002, 6693, 6687, 81, 180 }, + { 5935, 6016, 5936, 73, 0}, { 5936, 223, 5937, 73, 165}, + { 5935, 2398, 5939, 82, 0}, { 5939, 6018, 5940, 82, 190}, + { 227, 263, 105, 55, 0}, { 105, 241, 187, 60, 137 }, + { 227, 249, 91, 1, 0 }, { 227, 251, 93, 5, 0 }, + { 227, 253, 95, 12, 0 }, { 227, 255, 97, 22, 0 }, + { 227, 257, 99, 30, 0 }, { 227, 259, 101, 34, 0 }, + { 227, 261, 103, 45, 0 }, { 3004, 223, 3026, 63, 142 }, + { 227, 265, 107, 66, 0 }, { 227, 267, 109, 72, 0 }, + { 227, 269, 111, 75, 0 }, { 227, 2481, 2483, 67, 0 }, + { 227, 3000, 3004, 59, 0 }, { 227, 2998, 3002, 30, 0 }, + { 1975, 97, 3010, 26, 67 }, }; + + public static void setupPotion(final Player c, int useItem, int itemUsed) { + for (int[] element : POTION_DATA) { + if (useItem == element[0] && itemUsed == element[1] + || useItem == element[1] && itemUsed == element[0]) { + if (c.playerLevel[c.playerHerblore] < element[3]) { + c.getPacketSender().sendMessage("You need an herblore level of " + element[3] + " to mix this potion."); + return; + } + send1Item(c, element[2]); + itemToDelete = element[1]; + itemToDelete2 = element[0]; + potExp = element[4]; + itemToAdd = element[2]; + c.isPotionMaking = true; + } + } + } + + public static void makePotion(final Player c, int amount) { + if (c.playerSkilling[c.playerHerblore]) { + return; + } + if (itemToDelete <= 0 || itemToDelete2 <= 0) { + return; + } + c.doAmount = amount; + c.playerSkilling[c.playerHerblore] = true; + c.getPacketSender().closeAllWindows(); + c.startAnimation(ANIM); + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + + @Override + public void execute(CycleEventContainer container) { + c.getItemAssistant().deleteItem(itemToDelete, c.getItemAssistant().getItemSlot(itemToDelete), 1); + c.getItemAssistant().deleteItem(itemToDelete2, c.getItemAssistant().getItemSlot(itemToDelete2), 1); + c.getItemAssistant().addItem(itemToAdd, 1); + c.getPacketSender().sendMessage("You make a " + ItemAssistant.getItemName(itemToAdd).toLowerCase() + "."); + c.getPlayerAssistant().addSkillXP(potExp, c.playerHerblore); + deleteTime(c); + if (!c.getItemAssistant().playerHasItem(itemToDelete2, 1) || !c.getItemAssistant().playerHasItem(itemToDelete, 1) || c.doAmount <= 0) { + container.stop(); + } + if (!c.isPotionMaking) { + container.stop(); + } + } + + @Override + public void stop() { + resetHerblore(c); + } + }, 1); + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + + @Override + public void execute(CycleEventContainer container) { + c.startAnimation(ANIM); + if (!c.playerSkilling[c.playerHerblore] || !c.isPotionMaking) { + container.stop(); + } + } + + @Override + public void stop() { + } + }, 1); + } + + public static void resetHerblore(Player player) { + itemToAdd = -1; + itemToDelete = -1; + itemToDelete2 = -1; + potExp = -1; + player.isGrinding = false; + player.isPotionMaking = false; + player.playerSkilling[player.playerHerblore] = false; + } + + public static boolean isHerb(int item) { + for (int[] element : CLEAN_DATA) { + if (item == element[0]) { + return true; + } + } + return false; + } + + public static boolean isIngredient(int item) { + for (int[] element : POTION_DATA) { + if (item == element[0] || item == element[1]) { + return true; + } + } + return false; + } + + public static void handleHerbloreButtons(Player player, int actionButtonId) { + switch (actionButtonId) { + case 10239: + if (player.isPotionMaking) { + makePotion(player, 1); + } + break; + case 10238: + if (player.isPotionMaking) { + makePotion(player, 5); + } + break; + case 6212: + if (player.isPotionMaking) { + makePotion(player, 10); + } + break; + case 6211: + if (player.isPotionMaking) { + makePotion(player, 28); + } + break; + } + } +} diff --git a/2006Redone Server/src/com/rebotted/game/content/skills/runecrafting/AbyssalHandler.java b/2006Redone Server/src/com/rebotted/game/content/skills/runecrafting/AbyssalHandler.java new file mode 100644 index 00000000..caa2da45 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/skills/runecrafting/AbyssalHandler.java @@ -0,0 +1,52 @@ +package com.rebotted.game.content.skills.runecrafting; + +import com.rebotted.game.players.Player; + +public class AbyssalHandler { + + public static void handleAbyssalTeleport(Player player, int objectId) { + switch (objectId) { + case 7147: // squeeze through gap + player.getPlayerAssistant().movePlayer(3030, 4842, 0); + break; + case 7133: // nature + player.getPlayerAssistant().startTeleport(2395, 4841, 0, "modern"); + break; + case 7132: // cosmic + player.getPlayerAssistant().startTeleport(2144, 4831, 0, "modern"); + break; + case 7129: // fire + player.getPlayerAssistant().startTeleport(2585, 4836, 0, "modern"); + break; + case 7130: // earth + player.getPlayerAssistant().startTeleport(2658, 4839, 0, "modern"); + break; + case 7131: // body + player.getPlayerAssistant().startTeleport(2525, 4830, 0, "modern"); + break; + case 7140: // mind + player.getPlayerAssistant().startTeleport(2786, 4834, 0, "modern"); + break; + case 7139: // air + player.getPlayerAssistant().startTeleport(2844, 4837, 0, "modern"); + break; + case 7137: // water + player.getPlayerAssistant().startTeleport(2722, 4833, 0, "modern"); + break; + case 7136: // death + player.getPlayerAssistant().startTeleport(2205, 4834, 0, "modern"); + break; + case 7135: // law + player.getPlayerAssistant().startTeleport(2464, 4830, 0, "modern"); + break; + case 7134: // chaos + player.getPlayerAssistant().startTeleport(2274, 4842, 0, "modern"); + break; + case 7138: // soul + case 7141: // blood + player.getPacketSender().sendMessage("This altar is currently disabled."); + break; + } + } + +} diff --git a/2006Redone Server/src/com/rebotted/game/content/skills/runecrafting/RuneCraftingActions.java b/2006Redone Server/src/com/rebotted/game/content/skills/runecrafting/RuneCraftingActions.java new file mode 100644 index 00000000..9f98fd60 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/skills/runecrafting/RuneCraftingActions.java @@ -0,0 +1,221 @@ +package com.rebotted.game.content.skills.runecrafting; + +import com.rebotted.game.players.Player; + +/** + * Handles runecrafting actions + * @author Andrew (Mr Extremez) + */ + +public class RuneCraftingActions { + + public static void handleRuneCrafting(Player player, int objectId) { + switch (objectId) { + case 2465:// air altar portal + if (player.objectX == 2841 && player.objectY == 4828) { + player.getPlayerAssistant().startTeleport(2983, 3293, 0, "modern"); + } + break; + + case 2466:// mind altar portal + if (player.objectX == 2793 && player.objectY == 4827) { + player.getPlayerAssistant().startTeleport(2980, 3514, 0, "modern"); + } + break; + + case 2467:// water altar portal + if (player.objectX == 2727 && player.objectY == 4832) { + player.getPlayerAssistant().startTeleport(3184, 3162, 0, "modern"); + } + break; + + case 2468:// earth rune portal + if (player.objectX == 2655 && player.objectY == 4829) { + player.getPlayerAssistant().startTeleport(3308, 3476, 0, "modern"); + } + break; + + case 2469:// fire rune portal + if (player.objectX == 2574 && player.objectY == 4850) { + player.getPlayerAssistant().startTeleport(3311, 3256, 0, "modern"); + } + break; + + case 2470:// body altar portal + if (player.objectX == 2523 && player.objectY == 4825) { + player.getPlayerAssistant().startTeleport(3051, 3444, 0, "modern"); + } + break; + + case 2471:// cosmic altar portal + if (player.objectX == 2163 && player.objectY == 4833 || player.objectX == 2142 && player.objectY == 4854 || player.objectX == 2121 && player.objectY == 4833 || player.objectX == 2412 && player.objectY == 4812) { + player.getPlayerAssistant().startTeleport(2410, 4379, 0, "modern"); + } + break; + + case 2472:// law altar portal + if (player.objectX == 2464 && player.objectY == 4817) { + player.getPlayerAssistant().startTeleport(2857, 3379, 0, "modern"); + } + break; + + case 2473:// nature portal altar + if (player.objectX == 2400 && player.objectY == 4834) { + player.getPlayerAssistant().startTeleport(2866, 3022, 0, "modern"); + } + break; + + case 2474: + if (player.objectX == 3233 && player.objectY == 9312) {// desert + // treasure + // portal + player.getPlayerAssistant().startTeleport(3233, 2887, 0, "modern"); + } else if (player.objectX == 2282 && player.objectY == 4837) {// chaos + // altar + // portal + player.getPlayerAssistant().startTeleport(3062, 3593, 0, "modern"); + } + break; + + case 2475:// death altar portal + if (player.objectX == 2208 && player.objectY == 4829) { + player.getPlayerAssistant().startTeleport(1863, 4639, 0, + "modern"); + } + break; + + case 2478:// air altar crafting + if (player.objectX == 2843 && player.objectY == 4833) { + player.getRC().craftRunes(objectId); + } + break; + + case 2479:// mind altar crafting + if (player.objectX == 2785 && player.objectY == 4840) { + player.getRC().craftRunes(objectId); + } + break; + + case 2480:// water altar crafting + if (player.objectX == 2715 && player.objectY == 4835) { + player.getRC().craftRunes(objectId); + } + break; + + case 2481:// earth altar crafting + if (player.objectX == 2657 && player.objectY == 4840) { + player.getRC().craftRunes(objectId); + } + break; + + case 2482:// fire altar crafting + if (player.objectX == 2584 && player.objectY == 4837) { + player.getRC().craftRunes(objectId); + } + break; + + case 2483:// body altar crafting + if (player.objectX == 2524 && player.objectY == 4831) { + player.getRC().craftRunes(objectId); + } + break; + + case 2484:// cosmic altar crafting + if (player.objectX == 2141 && player.objectY == 4832) { + player.getRC().craftRunes(objectId); + } + break; + + case 2485:// law altar crafting + if (player.objectX == 2463 && player.objectY == 4831) { + player.getRC().craftRunes(objectId); + } + break; + + case 2486:// nature altar crafting + if (player.objectX == 2399 && player.objectY == 4840) { + player.getRC().craftRunes(objectId); + } + break; + + case 2487:// chaos altar crafting + if (player.objectX == 2270 && player.objectY == 4841) { + player.getRC().craftRunes(objectId); + } + break; + + case 2488:// death altar crafting + if (player.objectX == 2204 && player.objectY == 4835) { + player.getRC().craftRunes(objectId); + } + break; + + case 2452:// air altar entrance + if (player.objectX == 2984 && player.objectY == 3291) { + player.getRC().enterAltar(objectId, 0); + } + break; + + case 2453:// mind altar entrance + if (player.objectX == 2981 && player.objectY == 3513) { + player.getRC().enterAltar(objectId, 0); + } + break; + + case 2454:// water altar entrance + if (player.objectX == 3184 && player.objectY == 3164) { + player.getRC().enterAltar(objectId, 0); + } + break; + + case 2455:// earth altar entrance + if (player.objectX == 3305 && player.objectY == 3473) { + player.getRC().enterAltar(objectId, 0); + } + break; + + case 2456:// fire altar entrance + if (player.objectX == 3312 && player.objectY == 3254) { + player.getRC().enterAltar(objectId, 0); + } + break; + + case 2457:// body altar entrance + if (player.objectX == 3052 && player.objectY == 3444) { + player.getRC().enterAltar(objectId, 0); + } + break; + + case 2458:// cosmic altar entrance + if (player.objectX == 2407 && player.objectY == 4376) { + player.getRC().enterAltar(objectId, 0); + } + break; + + case 2459:// law altar entrance + if (player.objectX == 2857 && player.objectY == 3380) { + player.getRC().enterAltar(objectId, 0); + } + break; + + case 2460:// nature altar entrance + if (player.objectX == 2868 && player.objectY == 3018) { + player.getRC().enterAltar(objectId, 0); + } + break; + + case 2461:// chaos altar entrance + if (player.objectX == 3059 && player.objectY == 3590) { + player.getRC().enterAltar(objectId, 0); + } + break; + + case 2462:// death altar entrance + if (player.objectX == 1859 && player.objectY == 4638) { + player.getRC().enterAltar(objectId, 0); + } + break; + } + } + +} diff --git a/2006Redone Server/src/redone/game/content/skills/runecrafting/Runecrafting.java b/2006Redone Server/src/com/rebotted/game/content/skills/runecrafting/Runecrafting.java similarity index 80% rename from 2006Redone Server/src/redone/game/content/skills/runecrafting/Runecrafting.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/runecrafting/Runecrafting.java index 29842cc4..12c20df8 100644 --- a/2006Redone Server/src/redone/game/content/skills/runecrafting/Runecrafting.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/runecrafting/Runecrafting.java @@ -1,198 +1,192 @@ -package redone.game.content.skills.runecrafting; - -import redone.game.content.music.sound.SoundList; -import redone.game.content.randomevents.RandomEventHandler; -import redone.game.content.skills.SkillHandler; -import redone.game.players.Client; - -/** - * @author phl0w - * @author highly edited by Andrew - */ - -public class Runecrafting { - - private final Client c; - - public Runecrafting(Client c) { - this.c = c; - } - - public static void locate(Client c, int xPos, int yPos) { - String X = ""; - String Y = ""; - if (c.absX >= xPos) { - X = "west"; - } - if (c.absY > yPos) { - Y = "South"; - } - if (c.absX < xPos) { - X = "east"; - } - if (c.absY <= yPos) { - Y = "North"; - } - c.getActionSender().sendMessage("You need to travel " + Y + "-" + X + "."); - } - - private enum Altars { - AIR_ALTAR(2452, new int[] { 1438, 5527 }, new int[] { 2842, 4829 }), - MIND_ALTAR(2453, new int[] { 1448, 5529 }, new int[] { 2793, 4828 }), - WATER_ALTAR(2454, new int[] { 1444, 5531 }, new int[] { 2713, 4836 }), - EARTH_ALTAR(2455, new int[] { 1440, 5535 }, new int[] { 2655, 4831 }), - FIRE_ALTAR(2456, new int[] { 1442, 5537 }, new int[] { 2577, 4845 }), - BODY_ALTAR(2457, new int[] { 1446, 5533 }, new int[] { 2521, 4834 }), - COSMIC_ALTAR(2458, new int[] { 1454, 5539 }, new int[] { 2162, 4833 }), - CHAOS_ALTAR(2461, new int[] { 1452, 5543 }, new int[] { 2268, 4842 }), - NATURE_ALTAR(2460, new int[] { 1462, 5541 }, new int[] { 2400, 4835 }), - LAW_ALTAR(2459, new int[] { 1458, 5545 }, new int[] { 2464, 4819 }), - DEATH_ALTAR(2462, new int[] { 1456, 5547 }, new int[] { 2208, 4831 }); - - int objId; - int[] keys, loc; - - private Altars(int objId, int[] keys, int[] loc) { - this.objId = objId; - this.loc = loc; - this.keys = keys; - } - - private int getObj() { - return objId; - } - - private int[] getKeys() { - return keys; - } - - private int[] getNewLoc() { - return loc; - } - } - - public void enterAltar(int objId, int itemUse) { - Altars a = forAltar(objId); - if (a != null) { - /*if (c.runeMist < 4) { - c.getDialogueHandler().sendStatement( - "You need to beat rune mysteries first to do this."); - c.nextChat = 0; - return; - }*/ - if (a.getKeys()[1] == c.playerEquipment[c.playerHat] || a.getKeys()[0] == itemUse) { - c.getPlayerAssistant().movePlayer(a.getNewLoc()[0], a.getNewLoc()[1], 0); - c.getActionSender().sendMessage("You enter the mysterious ruins."); - } else { - c.getActionSender().sendMessage("Nothing interesting happens."); - } - } - } - - private enum Altar_Data { - AIR(2478, 1, 6, 556, new int[][] { { 11, 2 }, { 22, 3 }, { 33, 4 }, { 44, 5 }, { 55, 6 }, { 66, 7 }, { 77, 8 }, { 88, 9 }, { 99, 9 } }), - MIND(2479, 5, 6, 558, new int[][] { { 14, 2 }, { 28, 3 }, { 42, 4 }, { 56, 5 }, { 70, 6 }, { 84, 7 }, { 98, 8 } }), - WATER(2480, 9, 7, 555, new int[][] { { 19, 2 }, { 38, 3 }, { 57, 4 }, { 76, 5 }, { 95, 6 } }), - EARTH(2481, 9, 7, 557, new int[][] { { 26, 2 }, { 52, 3 }, { 78, 4 } }), - FIRE(2482, 14, 7, 554, new int[][] { { 26, 2 }, { 52, 3 }, { 78, 4 } }), - BODY(2483, 20, 8, 559, new int[][] { { 35, 2 }, { 70, 3 } }), - COSMIC(2484, 27, 9, 564, new int[][] { { 59, 2 } }), - CHAOS(2487, 35, 9, 562, new int[][] { { 74, 2 } }), - NATURE(2486, 44, 10, 561, new int[][] { { 91, 2 } }), - LAW(2485, 54, 11, 563, new int[][] {}), - DEATH(2488, 65, 13, 560, new int[][] {}), - BLOOD(2489, 77, 15, 565, new int[][] {}), - SOUL(2490, 90, 17, 566, new int[][] {}), - ASTRAL(17010, 40, 10, 9075, new int[][] { { 82, 2 } }); - - int altarID, levelReq, xp, rewardedRune; - int[][] multiRunes; - - private Altar_Data(int altarID, int levelReq, int xp, int rewardedRune, int[][] multiRunes) { - this.altarID = altarID; - this.levelReq = levelReq; - this.xp = xp; - this.rewardedRune = rewardedRune; - this.multiRunes = multiRunes; - } - } - - public Altar_Data forObj(int obj) { - for (Altar_Data ad : Altar_Data.values()) { - if (ad.altarID == obj) { - return ad; - } - } - return null; - } - - int objId; - int[] keys, loc; - - public Altars forAltar(int id) { - for (Altars a : Altars.values()) { - if (a.getObj() == id) { - return a; - } - } - return null; - } - - public boolean craftRunes(int obj) { - Altar_Data ad = forObj(obj); - if (ad != null) { - RandomEventHandler.addRandom(c); - if (!SkillHandler.RUNECRAFTING) { - c.getActionSender().sendMessage("This skill is currently disabled."); - return false; - } - if (c.playerLevel[c.playerRunecrafting] >= ad.levelReq) { - getMultiSupport(obj); - c.startAnimation(791); - c.gfx100(186); - c.getActionSender().sendSound(SoundList.RUNECRAFTING, 100, 0); - } else { - c.getActionSender().sendMessage("You need a runecrafting level of at least " + ad.levelReq + " to make runes here."); - } - } - return false; - } - - public void getMultiSupport(int obj) { - Altar_Data ad = forObj(obj); - if (ad != null) { - int amount = c.getItemAssistant().getItemCount(7936); - int amount2 = c.getItemAssistant().getItemCount(1436); - if (amount2 > 0 && amount > 0) { - c.getItemAssistant().deleteItem(7936, c.getItemAssistant().getItemCount(7936)); - c.getItemAssistant().addItem(ad.rewardedRune, amount * (getMultiplier(ad) <= 1 ? 1 : getMultiplier(ad))); - c.getPlayerAssistant().addSkillXP(ad.xp * amount, c.playerRunecrafting); - c.getItemAssistant().deleteItem(1436, c.getItemAssistant().getItemCount(1436)); - c.getItemAssistant().addItem(ad.rewardedRune, amount2 * (getMultiplier(ad) <= 1 ? 1 : getMultiplier(ad))); - c.getPlayerAssistant().addSkillXP(ad.xp * amount2, c.playerRunecrafting); - } else if (amount > 0) { - c.getItemAssistant().deleteItem(7936, c.getItemAssistant().getItemCount(7936)); - c.getItemAssistant().addItem(ad.rewardedRune, amount * (getMultiplier(ad) <= 1 ? 1 : getMultiplier(ad))); - c.getPlayerAssistant().addSkillXP(ad.xp * amount, c.playerRunecrafting); - } else if (amount2 > 0) { - c.getItemAssistant().deleteItem(1436, c.getItemAssistant().getItemCount(1436)); - c.getItemAssistant().addItem(ad.rewardedRune, amount2 * (getMultiplier(ad) <= 1 ? 1 : getMultiplier(ad))); - c.getPlayerAssistant().addSkillXP(ad.xp * amount2, c.playerRunecrafting); - } else { - c.getActionSender().sendMessage("You don't have any essence left."); - } - } - } - - public int getMultiplier(Altar_Data ad) { - int temp = 1; - for (int[] multiRune : ad.multiRunes) { - for (int j = 0; j < multiRune.length; j++) { - if (c.playerLevel[c.playerRunecrafting] >= multiRune[0]) { - temp++; - } - } - } - return temp; - } -} +package com.rebotted.game.content.skills.runecrafting; + +import com.rebotted.game.content.music.sound.SoundList; +import com.rebotted.game.content.randomevents.RandomEventHandler; +import com.rebotted.game.content.skills.SkillHandler; +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; + +/** + * @author phl0w + * @author highly edited by Andrew (Mr Extremez) + */ + +public class Runecrafting { + + private final Player c; + + public Runecrafting(Player player) { + this.c = player; + } + + public static void locate(Client c, int xPos, int yPos) { + String X = ""; + String Y = ""; + if (c.absX >= xPos) { + X = "west"; + } + if (c.absY > yPos) { + Y = "South"; + } + if (c.absX < xPos) { + X = "east"; + } + if (c.absY <= yPos) { + Y = "North"; + } + c.getPacketSender().sendMessage("You need to travel " + Y + "-" + X + "."); + } + + private enum Altars { + AIR_ALTAR(2452, new int[] { 1438, 5527 }, new int[] { 2842, 4829 }), + MIND_ALTAR(2453, new int[] { 1448, 5529 }, new int[] { 2793, 4828 }), + WATER_ALTAR(2454, new int[] { 1444, 5531 }, new int[] { 2713, 4836 }), + EARTH_ALTAR(2455, new int[] { 1440, 5535 }, new int[] { 2655, 4831 }), + FIRE_ALTAR(2456, new int[] { 1442, 5537 }, new int[] { 2577, 4845 }), + BODY_ALTAR(2457, new int[] { 1446, 5533 }, new int[] { 2521, 4834 }), + COSMIC_ALTAR(2458, new int[] { 1454, 5539 }, new int[] { 2162, 4833 }), + CHAOS_ALTAR(2461, new int[] { 1452, 5543 }, new int[] { 2268, 4842 }), + NATURE_ALTAR(2460, new int[] { 1462, 5541 }, new int[] { 2400, 4835 }), + LAW_ALTAR(2459, new int[] { 1458, 5545 }, new int[] { 2464, 4819 }), + DEATH_ALTAR(2462, new int[] { 1456, 5547 }, new int[] { 2208, 4831 }); + + int objId; + int[] keys, loc; + + private Altars(int objId, int[] keys, int[] loc) { + this.objId = objId; + this.loc = loc; + this.keys = keys; + } + + private int getObj() { + return objId; + } + + private int[] getKeys() { + return keys; + } + + private int[] getNewLoc() { + return loc; + } + } + + public void enterAltar(int objId, int itemUse) { + Altars a = forAltar(objId); + if (a != null) { + if (a.getKeys()[1] == c.playerEquipment[c.playerHat] || a.getKeys()[0] == itemUse) { + c.getPlayerAssistant().movePlayer(a.getNewLoc()[0], a.getNewLoc()[1], 0); + c.getPacketSender().sendMessage("You enter the mysterious ruins."); + } else { + c.getPacketSender().sendMessage("Nothing interesting happens."); + } + } + } + + private enum Altar_Data { + AIR(2478, 1, 6, 556, new int[][] { { 11, 2 }, { 22, 3 }, { 33, 4 }, { 44, 5 }, { 55, 6 }, { 66, 7 }, { 77, 8 }, { 88, 9 }, { 99, 9 } }), + MIND(2479, 5, 6, 558, new int[][] { { 14, 2 }, { 28, 3 }, { 42, 4 }, { 56, 5 }, { 70, 6 }, { 84, 7 }, { 98, 8 } }), + WATER(2480, 9, 7, 555, new int[][] { { 19, 2 }, { 38, 3 }, { 57, 4 }, { 76, 5 }, { 95, 6 } }), + EARTH(2481, 9, 7, 557, new int[][] { { 26, 2 }, { 52, 3 }, { 78, 4 } }), + FIRE(2482, 14, 7, 554, new int[][] { { 26, 2 }, { 52, 3 }, { 78, 4 } }), + BODY(2483, 20, 8, 559, new int[][] { { 35, 2 }, { 70, 3 } }), + COSMIC(2484, 27, 9, 564, new int[][] { { 59, 2 } }), + CHAOS(2487, 35, 9, 562, new int[][] { { 74, 2 } }), + NATURE(2486, 44, 10, 561, new int[][] { { 91, 2 } }), + LAW(2485, 54, 11, 563, new int[][] {}), + DEATH(2488, 65, 13, 560, new int[][] {}), + BLOOD(2489, 77, 15, 565, new int[][] {}), + SOUL(2490, 90, 17, 566, new int[][] {}), + ASTRAL(17010, 40, 10, 9075, new int[][] { { 82, 2 } }); + + int altarID, levelReq, xp, rewardedRune; + int[][] multiRunes; + + private Altar_Data(int altarID, int levelReq, int xp, int rewardedRune, int[][] multiRunes) { + this.altarID = altarID; + this.levelReq = levelReq; + this.xp = xp; + this.rewardedRune = rewardedRune; + this.multiRunes = multiRunes; + } + } + + public Altar_Data forObj(int obj) { + for (Altar_Data ad : Altar_Data.values()) { + if (ad.altarID == obj) { + return ad; + } + } + return null; + } + + int objId; + int[] keys, loc; + + public Altars forAltar(int id) { + for (Altars a : Altars.values()) { + if (a.getObj() == id) { + return a; + } + } + return null; + } + + public boolean craftRunes(int obj) { + Altar_Data ad = forObj(obj); + if (ad != null) { + RandomEventHandler.addRandom(c); + if (!SkillHandler.RUNECRAFTING) { + c.getPacketSender().sendMessage("This skill is currently disabled."); + return false; + } + if (c.playerLevel[c.playerRunecrafting] >= ad.levelReq) { + getMultiSupport(obj); + c.startAnimation(791); + c.gfx100(186); + c.getPacketSender().sendSound(SoundList.RUNECRAFTING, 100, 0); + } else { + c.getPacketSender().sendMessage("You need a runecrafting level of at least " + ad.levelReq + " to make runes here."); + } + } + return false; + } + + public void getMultiSupport(int obj) { + Altar_Data ad = forObj(obj); + if (ad != null) { + int amount = c.getItemAssistant().getItemCount(7936), amount2 = c.getItemAssistant().getItemCount(1436); + if (amount2 > 0 && amount > 0) { + c.getItemAssistant().deleteItem(7936, c.getItemAssistant().getItemCount(7936)); + c.getItemAssistant().addItem(ad.rewardedRune, amount * (getMultiplier(ad) <= 1 ? 1 : getMultiplier(ad))); + c.getPlayerAssistant().addSkillXP(ad.xp * amount, c.playerRunecrafting); + c.getItemAssistant().deleteItem(1436, c.getItemAssistant().getItemCount(1436)); + c.getItemAssistant().addItem(ad.rewardedRune, amount2 * (getMultiplier(ad) <= 1 ? 1 : getMultiplier(ad))); + c.getPlayerAssistant().addSkillXP(ad.xp * amount2, c.playerRunecrafting); + } else if (amount > 0) { + c.getItemAssistant().deleteItem(7936, c.getItemAssistant().getItemCount(7936)); + c.getItemAssistant().addItem(ad.rewardedRune, amount * (getMultiplier(ad) <= 1 ? 1 : getMultiplier(ad))); + c.getPlayerAssistant().addSkillXP(ad.xp * amount, c.playerRunecrafting); + } else if (amount2 > 0) { + c.getItemAssistant().deleteItem(1436, c.getItemAssistant().getItemCount(1436)); + c.getItemAssistant().addItem(ad.rewardedRune, amount2 * (getMultiplier(ad) <= 1 ? 1 : getMultiplier(ad))); + c.getPlayerAssistant().addSkillXP(ad.xp * amount2, c.playerRunecrafting); + } else { + c.getPacketSender().sendMessage("You don't have any essence left."); + } + } + } + + public int getMultiplier(Altar_Data ad) { + int temp = 1; + for (int[] multiRune : ad.multiRunes) { + for (int j = 0; j < multiRune.length; j++) { + if (c.playerLevel[c.playerRunecrafting] >= multiRune[0]) { + temp++; + } + } + } + return temp; + } +} diff --git a/2006Redone Server/src/redone/game/content/skills/slayer/Slayer.java b/2006Redone Server/src/com/rebotted/game/content/skills/slayer/Slayer.java similarity index 76% rename from 2006Redone Server/src/redone/game/content/skills/slayer/Slayer.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/slayer/Slayer.java index 3f093a7f..ccd64c4f 100644 --- a/2006Redone Server/src/redone/game/content/skills/slayer/Slayer.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/slayer/Slayer.java @@ -1,602 +1,567 @@ -package redone.game.content.skills.slayer; - -import java.util.ArrayList; - -import redone.game.npcs.NpcHandler; -import redone.game.players.Client; -import redone.util.Misc; - -public class Slayer { - - public static final int - VERY_EASY_TASK = 0, - EASY_TASK = 1, - MEDIUM_TASK = 2, - HARD_TASK = 3, - VERY_HARD_TASK = 4; - public static final int[] - VERY_EASY_AMOUNT = new int[]{15, 40}, - EASY_AMOUNT = new int[]{25, 50}, - MEDIUM_AMOUNT = new int[]{50, 75}, - HARD_AMOUNT = new int[]{100, 150}, - VERY_HARD_AMOUNT = new int[]{130, 200}, - DRAGON_AMOUNT = new int[]{20, 60}; - - public static ArrayList veryEasyTask = new ArrayList(); - public static ArrayList easyTask = new ArrayList(); - public static ArrayList mediumTask = new ArrayList(); - public static ArrayList hardTask = new ArrayList(); - public static ArrayList veryHardTask = new ArrayList(); - - private final Client c; - - public Slayer(Client c) { - this.c = c; - } - - public enum SlayerMasters { - TURAEL(70, 1, VERY_EASY_TASK,"Taverly", "Turael"), - MAZCHNA(1596, 20, EASY_TASK, "Canifis", "Mazchna"), - VANNAKA(1597, 40, MEDIUM_TASK, "Edgeville", "Vannaka"), - CHAELDAR(1598, 70, HARD_TASK, "Zanaris", "Chaeldar"), - DURADEL(1599, 100, VERY_HARD_TASK, "Shilo Village", "Duradel"); - - private int masterId, combatReq, diffuculty; - private String masterLocation, masterName; - - private SlayerMasters(int masterId, int combatReq, int diffuculty, String masterLocation, String masterName) { - this.masterId = masterId; - this.combatReq = combatReq; - this.diffuculty = diffuculty; - this.masterLocation = masterLocation; - this.masterName = masterName; - } - - public int getId() { - return masterId; - } - - public int getCombatRequirement() { - return combatReq; - } - - public String getLocation() { - return masterLocation; - } - - public String getMaster() { - return masterName; - } - - public int getDifficulty() { - return diffuculty; - } - - } - - //dark beast, red dragon, skeleton - public enum Task { - ABERRANT_SPECTRE(1604, 60, 90, HARD_TASK, "Slayer Tower"), - ABYSSAL_DEMON(1615, 85, 150, VERY_HARD_TASK, "Slayer Tower"), - BANSHEE(1612, 15, 22, VERY_EASY_TASK + r(1), "Slayer Tower"), - BASILISK(1616, 40, 75, MEDIUM_TASK, "Fremennik Slayer Dungeon"), - BAT(412, 1, 8, EASY_TASK, "Road to Paterdomus"), - BLACK_DEMON(84, 1, 157, HARD_TASK, "Taverly Dungeon"), - BLACK_DRAGON(54, 1, 258, VERY_HARD_TASK, "Taverly Dungeon"), - BLOODVELD(1618, 50, 120, HARD_TASK + r(1), "Slayer Tower"), - BLUE_DRAGON(55, 1, 107, HARD_TASK, "Taverly Dungeon"), - BRONZE_DRAGON(1590, 1, 125, HARD_TASK, "Brimhaven Dungeon"), - CAVE_CRAWLER(1600, 10, 22, EASY_TASK, "Fremennik Slayer Dungeon"), - COCKATRICE(1620, 25, 37, MEDIUM_TASK, "Fremennik Slayer Dungeon"), - CRAWLING_HAND(1648, 5, 16 + r(3), EASY_TASK + r(1), "Slayer Tower"), - DAGANNOTH_74(1338, 1, 70 + r(50), HARD_TASK, "Lighthouse Basement"), - DAGANNOTH_92(1342, 1, 80 + r(50), HARD_TASK, "Lighthouse Basement"), - DARK_BEAST(2783, 90, 180, VERY_HARD_TASK, "Slayer Tower"), - DUST_DEVIL(1624, 65, 105, MEDIUM_TASK, "Slayer Tower"), - EARTH_WARRIOR(124, 1, 54, MEDIUM_TASK, "Edgeville Dungeon"), - FIRE_GIANT(110, 1, 111, HARD_TASK, "Brimhaven Dungeon"), - GARGOYLE(1611, 75, 105, HARD_TASK, "Slayer Tower"), - GHOST(103, 1, 25, EASY_TASK + r(1), "Taverly Dungeon"), - GREATER_DEMON(83, 1, 87, HARD_TASK, "Brimhaven Dungeon"), - GREEN_DRAGON(941, 1, 75, MEDIUM_TASK, "The Wilderness"), - HELLHOUND(49, 1, 116, HARD_TASK + r(1),"Taverly Dungeon"), - HILL_GIANT(117, 1, 35, MEDIUM_TASK, "Edgeville Dungeon"), - ICE_GIANT(111, 1, 70, MEDIUM_TASK, "Asgarnian Ice Caves or White Wolf Mountain"), - ICE_WARRIOR(125, 1, 59, MEDIUM_TASK, "Asgarnian Ice Caves or the Wilderness"), - SKELETAL_WYVERN(3068, 72, 210, VERY_HARD_TASK, "Asgarnian Ice Caves"), - INFERNAL_MAGE(1643, 45, 60, MEDIUM_TASK, "Slayer Tower"), - IRON_DRAGON(1591, 1, 174, VERY_HARD_TASK, "Brimhaven Dungeon"), - JELLY(1637, 52, 75, MEDIUM_TASK, "Fremennik Slayer Dungeon"), - KALPHITE_WORKER(1156, 1, 40, EASY_TASK + r(1), "Kalphite Lair"), - KALPHITE_SOLDIER(1154, 1, 90, HARD_TASK, "Kalphite Lair"), - KALPHITE_GUARDIAN(1157, 1, 170, VERY_HARD_TASK, "Kalphite Lair"), - KURASK(1608, 70, 97, HARD_TASK, "Fremennik Slayer Dungeon"), - LESSER_DEMON(82, 1, 79, HARD_TASK, "Karamja Dungeon"), - MOSS_GIANT(112, 1, 60, MEDIUM_TASK, "Brimhaven Dungeon"), - NECHRYAELS(1613, 80, 1, HARD_TASK, "Slayer Tower"), - PYREFIEND(1633, 30, 1, EASY_TASK, "Fremennik Slayer Dungeon"), - RED_DRAGON(53, 1, 120, HARD_TASK, "Brimhaven Dungeon"), - ROCKSLUG(1622, 20, 27, EASY_TASK, "Fremennik Slayer Dungeon"), - SKELETON(90, 1, 30, VERY_EASY_TASK + r(2), "Edgeville Dungeon or Taverly Dungeon"), - KARAMAJA_SKELETON(91, 1, 30, VERY_EASY_TASK + r(2), "Karamaja"), - WILDERNESS_SKELETON(92, 1, 30, VERY_EASY_TASK + r(2), "Wilderness"), - STEEL_DRAGON(1592, 1, 221, VERY_HARD_TASK, "Brimhaven Dungeon"), - BEAR(105, 1, 27, VERY_EASY_TASK, "Goblin Village"), - GREEN_GOBLIN(298, 1, 6, VERY_EASY_TASK, "Goblin Village"), - RED_GOBLIN(299, 1, 6, VERY_EASY_TASK, "Goblin Village"), - SCORPION(107, 1, 17, VERY_EASY_TASK, "Goblin Village"), - TUROTH(1632, 55, 77, HARD_TASK, "Fremennik Slayer Dungeon"); - - private int npcId, levelReq, diff, exp; - private String location; - - Task(int npcId, int levelReq, int exp, int difficulty, String location) { - this.npcId = npcId; - this.exp = exp; - this.levelReq = levelReq; - this.location = location; - this.diff = difficulty; - } - - public int getNpcId() { - return npcId; - } - - public int getExp() { - return exp; - } - - public int getLevelReq() { - return levelReq; - } - - public int getDifficulty() { - return diff; - } - - public String getLocation() { - return location; - } - } - - public static int r(int random) { - return Misc.random(random); - } - - public boolean canAttackNpc(int i) { - if (c.playerLevel[c.playerSlayer] < getRequiredLevel(NpcHandler.npcs[i].npcType)) { - c.getActionSender().sendMessage("You need a slayer level of " + getRequiredLevel(NpcHandler.npcs[i].npcType) + " to attack this npc."); - c.getCombatAssistant().resetPlayerAttack(); - return false; - } - return true; - } - - public void resizeTable(int difficulty) { - if (easyTask.size() > 0 || hardTask.size() > 0 || mediumTask.size() > 0 - || veryHardTask.size() > 0 || veryEasyTask.size() > 0) { - easyTask.clear(); - mediumTask.clear(); - hardTask.clear(); - veryHardTask.clear(); - veryEasyTask.clear(); - } - for (Task slayerTask : Task.values()) { - if (slayerTask.getDifficulty() == EASY_TASK) { - if (c.playerLevel[18] >= slayerTask.getLevelReq()) { - easyTask.add(slayerTask.getNpcId()); - } - continue; - } else if (slayerTask.getDifficulty() == VERY_EASY_TASK) { - if (c.playerLevel[18] >= slayerTask.getLevelReq()) { - veryEasyTask.add(slayerTask.getNpcId()); - } - continue; - } else if (slayerTask.getDifficulty() == MEDIUM_TASK) { - if (c.playerLevel[18] >= slayerTask.getLevelReq()) { - mediumTask.add(slayerTask.getNpcId()); - } - continue; - } else if (slayerTask.getDifficulty() == HARD_TASK) { - if (c.playerLevel[18] >= slayerTask.getLevelReq()) { - hardTask.add(slayerTask.getNpcId()); - } - continue; - } else if (slayerTask.getDifficulty() == VERY_HARD_TASK) { - if (c.playerLevel[18] >= slayerTask.getLevelReq()) { - veryHardTask.add(slayerTask.getNpcId()); - } - continue; - } - } - } - - public static boolean getMasterRequirment(Client c, int id) { - for (SlayerMasters slayermasters : SlayerMasters.values()) { - if (c.combatLevel < slayermasters.getCombatRequirement() - && slayermasters.getId() == id) { - c.getActionSender().sendMessage("You need " + slayermasters.getCombatRequirement() + " combat to use this slayer master."); - return false; - } - } - return true; - } - - public int getTaskExp(int npcId) { - for (Task task: Task.values()) { - if (task.npcId == npcId) { - return task.exp; - } - } - return -1; - } - - public int getRequiredLevel(int npcId) { - for (Task task : Task.values()) { - if (task.npcId == npcId) { - return task.levelReq; - } - } - return -1; - } - - public String getLocation(int npcId) { - for (Task task : Task.values()) { - if (task.npcId == npcId) { - return task.location; - } - } - return ""; - } - - public String getMasterLocation(int npcId) { - for (SlayerMasters slayermasters : SlayerMasters.values()) { - if (slayermasters.masterId == npcId) { - return slayermasters.masterLocation; - } - } - return ""; - } - - public boolean isSlayerNpc(int npcId) { - for (Task task : Task.values()) { - if (task.getNpcId() == npcId) { - return true; - } - } - return false; - } - - public boolean isSlayerTask(int npcId) { - if (isSlayerNpc(npcId)) { - if (c.slayerTask == npcId) { - return true; - } - } - return false; - } - - public int getDifficulty(int npcId) { - for (Task task : Task.values()) { - if (task.npcId == npcId) { - return task.getDifficulty(); - } - } - return 1; - } - - public String getSlayerMaster(int npcId) { - for (SlayerMasters slayermasters : SlayerMasters.values()) { - if (slayermasters.masterId == npcId) { - return slayermasters.name().replaceAll("_", " ") - .replaceAll("2", "").toLowerCase(); - } - } - return ""; - } - - public String getTaskName(int npcId) { - for (Task task : Task.values()) { - if (task.npcId == npcId) { - return task.name().replaceAll("_", " ").replaceAll("2", "") - .toLowerCase(); - } - } - return ""; - } - - public int getTaskId(String name) { - for (Task task : Task.values()) { - if (task.name() == name) { - return task.npcId; - } - } - return -1; - } - - public boolean hasTask() { - return c.slayerTask > 0 || c.taskAmount > 0; - } - - public void generateTask() { - if (hasTask() && !c.needsNewTask) { - c.getDialogueHandler().sendDialogues(1226, c.npcType);// already have task - return; - } - if (hasTask() && c.needsNewTask) {// assigning new task - int difficulty = getDifficulty(c.slayerTask); - if (difficulty == VERY_EASY_TASK) { - c.getDialogueHandler().sendDialogues(1227, c.npcType); - c.needsNewTask = false; - return; - /* - * } else if (difficulty != VERY_EASY_TASK && c.needsNewTask && - * hasTask() && c.wantsEasyTask == true) { int taskLevel = - * VERY_EASY_TASK; int task = getRandomTask(taskLevel); - * c.slayerTask = task; c.taskAmount = getTaskAmount(taskLevel); - * c.getDialogues().handleDialogues(1368, c.npcType); - * c.getPacketDispatcher().sendMessage("You have been assigned " - * + c.taskAmount + " " + getTaskName(c.slayerTask) + - * ", good luck " + c.playerName + "."); c.needsNewTask = false; - */ - } - } - int taskLevel = getSlayerDifficulty(c); - // System.out.println("EASY :" + easyTask + "\nMEDIUM: " + mediumTask+ - // "\nHARD: " + hardTask + ""); - for (Task slayerTask : Task.values()) { - if (slayerTask.getDifficulty() == taskLevel) { - if (c.playerLevel[18] >= slayerTask.getLevelReq()) { - resizeTable(taskLevel); - if (!c.needsNewTask) { - int task = getRandomTask(taskLevel); - for (int removedTask : c.removedTasks) { - if (task == removedTask) { - c.getActionSender().sendMessage("Unavailable task: " + task); - generateTask(); - return; - } - } - c.slayerTask = task; - c.taskAmount = getTaskAmount(task); - } else { - int task = getRandomTask(getDifficulty(taskLevel - 1)); - for (int removedTask : c.removedTasks) { - if (task == removedTask) { - c.getActionSender().sendMessage("Unavailable task: " + task); - generateTask(); - return; - } - } - c.slayerTask = task; - c.taskAmount = getTaskAmount(task); - c.needsNewTask = false; - } - c.getDialogueHandler().sendDialogues(1237, c.npcType);// assign task - c.getActionSender().sendMessage("You have been assigned " + c.taskAmount + " " + getTaskName(c.slayerTask) + ", good luck " + c.playerName + "."); - return; - } - } - } - } - - public int getTaskAmount(int task_id) { - Task task = null; - for (Task _task : Task.values()) - if (_task.getNpcId() == task_id) - task = _task; - - int[] amounts = VERY_EASY_AMOUNT; - if (task == null){ - amounts = VERY_EASY_AMOUNT; - } - else if (task.name().toLowerCase().contains("_dragon")) { - amounts = DRAGON_AMOUNT; - } - else { - switch (task.getDifficulty()) { - case 0: - amounts = VERY_EASY_AMOUNT; - break; - case 1: - amounts = EASY_AMOUNT; - break; - case 2: - amounts = MEDIUM_AMOUNT; - break; - case 3: - amounts = HARD_AMOUNT; - break; - case 4: - amounts = VERY_HARD_AMOUNT; - break; - default: - amounts = VERY_EASY_AMOUNT; - break; - } - } - return Misc.random(amounts[0], amounts[1]); - } - - public int getSlayerDifficulty(Client c) { - for(SlayerMasters master : SlayerMasters.values()){ - if (master.getId() == c.SlayerMaster) - return master.getDifficulty(); - } - return EASY_TASK; - } - - public int getRandomTask(int diff) { - if (diff == VERY_EASY_TASK) { - return veryEasyTask.get(r(veryEasyTask.size() - 1)); - } else if (diff == EASY_TASK) { - return easyTask.get(r(easyTask.size() - 1)); - } else if (diff == MEDIUM_TASK) { - return mediumTask.get(r(mediumTask.size() - 1)); - } else if (diff == HARD_TASK) { - return hardTask.get(r(hardTask.size() - 1)); - } else if (diff == VERY_HARD_TASK) { - return veryHardTask.get(r(veryHardTask.size() - 1)); - } - return easyTask.get(r(easyTask.size() - 1)); - } - - public void handleInterface(String shop) { - if (shop.equalsIgnoreCase("buy")) { - c.getPlayerAssistant().sendFrame126("Slayer Points: " + c.slayerPoints, 41011); - c.getPlayerAssistant().showInterface(41000); - } else if (shop.equalsIgnoreCase("learn")) { - c.getPlayerAssistant().sendFrame126("Slayer Points: " + c.slayerPoints, 41511); - c.getPlayerAssistant().showInterface(41500); - } else if (shop.equalsIgnoreCase("assignment")) { - c.getPlayerAssistant().sendFrame126("Slayer Points: " + c.slayerPoints, 42011); - updateCurrentlyRemoved(); - c.getPlayerAssistant().showInterface(42000); - } - } - - public void cancelTask() { - if (!hasTask()) { - c.getActionSender().sendMessage("You must have a task to cancel first."); - return; - } - if (c.slayerPoints < 30) { - c.getActionSender().sendMessage("This requires atleast 30 slayer points, which you don't have."); - c.getDialogueHandler().sendNpcChat1("This requires atleast 30 slayer points, which you don't have.", - c.npcType, - NpcHandler.getNpcListName(c.talkingNpc)); - c.nextChat = 0; - return; - } - c.getActionSender().sendMessage("You have cancelled your current task of " + c.taskAmount + " " + getTaskName(c.slayerTask) + "."); - c.slayerTask = -1; - c.taskAmount = 0; - c.slayerPoints -= 30; - } - - public void removeTask() { - int counter = 0; - if (!hasTask()) { - c.getActionSender().sendMessage("You must have a task to remove first."); - return; - } - if (c.slayerPoints < 100) { - c.getActionSender().sendMessage("This requires atleast 100 slayer points, which you don't have."); - c.getDialogueHandler().sendNpcChat1("This requires atleast 100 slayer points, which you don't have.", - c.npcType, - NpcHandler.getNpcListName(c.talkingNpc)); - c.nextChat = 0; - return; - } - for (int i = 0; i < c.removedTasks.length; i++) { - if (c.removedTasks[i] != -1) { - counter++; - } - if (counter == 4) { - c.getActionSender().sendMessage("You don't have any open slots left to remove tasks."); - return; - } - if (c.removedTasks[i] == -1) { - c.removedTasks[i] = c.slayerTask; - c.slayerPoints -= 100; - c.slayerTask = -1; - c.taskAmount = 0; - c.getActionSender().sendMessage("Your current slayer task has been removed, you can't obtain this task again."); - updateCurrentlyRemoved(); - return; - } - } - } - - public void updatePoints() { - c.getPlayerAssistant().sendFrame126("Slayer Points: " + c.slayerPoints, 41011); - c.getPlayerAssistant().sendFrame126("Slayer Points: " + c.slayerPoints, 41511); - c.getPlayerAssistant().sendFrame126("Slayer Points: " + c.slayerPoints, 42011); - } - - public void updateCurrentlyRemoved() { - int line[] = { 42014, 42015, 42016, 42017 }; - for (int i = 0; i < c.removedTasks.length; i++) { - if (c.removedTasks[i] != -1) { - c.getPlayerAssistant().sendFrame126( - getTaskName(c.removedTasks[i]), line[i]); - } else { - c.getPlayerAssistant().sendFrame126("", line[i]); - } - } - } - - public void buySlayerExperience() { - if (System.currentTimeMillis() - c.buySlayerTimer < 500) { - return; - } - if (c.slayerPoints < 50) { - c.getActionSender().sendMessage( "You need at least 50 slayer points to gain 32,500 Experience."); - return; - } - c.buySlayerTimer = System.currentTimeMillis(); - c.slayerPoints -= 50; - c.getPlayerAssistant().addSkillXP(32500, 18); - c.getActionSender().sendMessage("You spend 50 slayer points and gain 32,500 experience in slayer."); - updatePoints(); - } - - public void buySlayerDart() { - if (System.currentTimeMillis() - c.buySlayerTimer < 500) { - return; - } - if (c.slayerPoints < 35) { - c.getActionSender().sendMessage("You need at least 35 slayer points to buy Slayer darts."); - return; - } - if (c.getItemAssistant().freeSlots() < 2 - && !c.getItemAssistant().playerHasItem(560) - && !c.getItemAssistant().playerHasItem(558)) { - c.getActionSender().sendMessage("You need at least 2 free lots to purchase this."); - return; - } - - c.buySlayerTimer = System.currentTimeMillis(); - c.slayerPoints -= 35; - c.getActionSender().sendMessage("You spend 35 slayer points and aquire 250 casts of Slayer darts."); - c.getItemAssistant().addItem(558, 1000); - c.getItemAssistant().addItem(560, 250); - updatePoints(); - } - - public void buyBroadArrows() { - if (System.currentTimeMillis() - c.buySlayerTimer < 500) { - return; - } - if (c.slayerPoints < 25) { - c.getActionSender().sendMessage("You need at least 25 slayer points to buy Broad arrows."); - return; - } - if (c.getItemAssistant().freeSlots() < 1 - && !c.getItemAssistant().playerHasItem(4160)) { - c.getActionSender().sendMessage("You need at least 1 free lot to purchase this."); - return; - } - c.buySlayerTimer = System.currentTimeMillis(); - c.slayerPoints -= 25; - c.getActionSender().sendMessage("You spend 35 slayer points and aquire 250 Broad arrows."); - c.getItemAssistant().addItem(4160, 250); - updatePoints(); - } - - public void buyRespite() { - if (System.currentTimeMillis() - c.buySlayerTimer < 1000) { - return; - } - if (c.slayerPoints < 25) { - c.getActionSender().sendMessage("You need at least 25 slayer points to buy Slayer's respite."); - return; - } - c.buySlayerTimer = System.currentTimeMillis(); - c.slayerPoints -= 25; - c.getActionSender().sendMessage("You spend 25 slayer points and aquire a useful Slayer's respite."); - c.getItemAssistant().addItem(5841, 1); - updatePoints(); - } - -} +package com.rebotted.game.content.skills.slayer; + +import java.util.ArrayList; +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +public class Slayer { + + public static final int + VERY_EASY_TASK = 0, + EASY_TASK = 1, + MEDIUM_TASK = 2, + HARD_TASK = 3, + VERY_HARD_TASK = 4; + public static final int[] + VERY_EASY_AMOUNT = new int[]{15, 40}, + EASY_AMOUNT = new int[]{25, 50}, + MEDIUM_AMOUNT = new int[]{50, 75}, + HARD_AMOUNT = new int[]{100, 150}, + VERY_HARD_AMOUNT = new int[]{130, 200}, + DRAGON_AMOUNT = new int[]{20, 60}; + + public static ArrayList veryEasyTask = new ArrayList(); + public static ArrayList easyTask = new ArrayList(); + public static ArrayList mediumTask = new ArrayList(); + public static ArrayList hardTask = new ArrayList(); + public static ArrayList veryHardTask = new ArrayList(); + + private final Player c; + + public Slayer(Player player) { + this.c = player; + } + + public enum SlayerMasters { + TURAEL(70, 1, VERY_EASY_TASK,"Taverly", "Turael"), + MAZCHNA(1596, 20, EASY_TASK, "Canifis", "Mazchna"), + VANNAKA(1597, 40, MEDIUM_TASK, "Edgeville", "Vannaka"), + CHAELDAR(1598, 70, HARD_TASK, "Zanaris", "Chaeldar"), + DURADEL(1599, 100, VERY_HARD_TASK, "Shilo Village", "Duradel"); + + private int masterId, combatReq, diffuculty; + private String masterLocation, masterName; + + private SlayerMasters(int masterId, int combatReq, int diffuculty, String masterLocation, String masterName) { + this.masterId = masterId; + this.combatReq = combatReq; + this.diffuculty = diffuculty; + this.masterLocation = masterLocation; + this.masterName = masterName; + } + + public int getId() { + return masterId; + } + + public int getCombatRequirement() { + return combatReq; + } + + public String getLocation() { + return masterLocation; + } + + public String getMaster() { + return masterName; + } + + public int getDifficulty() { + return diffuculty; + } + + } + + //dark beast, red dragon, skeleton + public enum Task { + ABERRANT_SPECTRE(1604, 60, 90, HARD_TASK, "Slayer Tower"), + ABYSSAL_DEMON(1615, 85, 150, VERY_HARD_TASK, "Slayer Tower"), + BANSHEE(1612, 15, 22, VERY_EASY_TASK + r(1), "Slayer Tower"), + BASILISK(1616, 40, 75, MEDIUM_TASK, "Fremennik Slayer Dungeon"), + BAT(412, 1, 8, EASY_TASK, "Road to Paterdomus"), + BLACK_DEMON(84, 1, 157, HARD_TASK, "Taverly Dungeon"), + BLACK_DRAGON(54, 1, 258, VERY_HARD_TASK, "Taverly Dungeon"), + BLOODVELD(1618, 50, 120, HARD_TASK + r(1), "Slayer Tower"), + BLUE_DRAGON(55, 1, 107, HARD_TASK, "Taverly Dungeon"), + BRONZE_DRAGON(1590, 1, 125, HARD_TASK, "Brimhaven Dungeon"), + CAVE_CRAWLER(1600, 10, 22, EASY_TASK, "Fremennik Slayer Dungeon"), + COCKATRICE(1620, 25, 37, MEDIUM_TASK, "Fremennik Slayer Dungeon"), + CRAWLING_HAND(1648, 5, 16 + r(3), EASY_TASK + r(1), "Slayer Tower"), + DAGANNOTH_74(1338, 1, 70 + r(50), HARD_TASK, "Lighthouse Basement"), + DAGANNOTH_92(1342, 1, 80 + r(50), HARD_TASK, "Lighthouse Basement"), + DARK_BEAST(2783, 90, 180, VERY_HARD_TASK, "Slayer Tower"), + DUST_DEVIL(1624, 65, 105, MEDIUM_TASK, "Slayer Tower"), + EARTH_WARRIOR(124, 1, 54, MEDIUM_TASK, "Edgeville Dungeon"), + FIRE_GIANT(110, 1, 111, HARD_TASK, "Brimhaven Dungeon"), + GARGOYLE(1611, 75, 105, HARD_TASK, "Slayer Tower"), + GHOST(103, 1, 25, EASY_TASK + r(1), "Taverly Dungeon"), + GREATER_DEMON(83, 1, 87, HARD_TASK, "Brimhaven Dungeon"), + GREEN_DRAGON(941, 1, 75, MEDIUM_TASK, "The Wilderness"), + HELLHOUND(49, 1, 116, HARD_TASK + r(1),"Taverly Dungeon"), + HILL_GIANT(117, 1, 35, MEDIUM_TASK, "Edgeville Dungeon"), + ICE_GIANT(111, 1, 70, MEDIUM_TASK, "Asgarnian Ice Caves or White Wolf Mountain"), + ICE_WARRIOR(125, 1, 59, MEDIUM_TASK, "Asgarnian Ice Caves or the Wilderness"), + SKELETAL_WYVERN(3068, 72, 210, VERY_HARD_TASK, "Asgarnian Ice Caves"), + INFERNAL_MAGE(1643, 45, 60, MEDIUM_TASK, "Slayer Tower"), + IRON_DRAGON(1591, 1, 174, VERY_HARD_TASK, "Brimhaven Dungeon"), + JELLY(1637, 52, 75, MEDIUM_TASK, "Fremennik Slayer Dungeon"), + KALPHITE_WORKER(1156, 1, 40, EASY_TASK + r(1), "Kalphite Lair"), + KALPHITE_SOLDIER(1154, 1, 90, HARD_TASK, "Kalphite Lair"), + KALPHITE_GUARDIAN(1157, 1, 170, VERY_HARD_TASK, "Kalphite Lair"), + KURASK(1608, 70, 97, HARD_TASK, "Fremennik Slayer Dungeon"), + LESSER_DEMON(82, 1, 79, HARD_TASK, "Karamja Dungeon"), + MOSS_GIANT(112, 1, 60, MEDIUM_TASK, "Brimhaven Dungeon"), + NECHRYAELS(1613, 80, 1, HARD_TASK, "Slayer Tower"), + PYREFIEND(1633, 30, 1, EASY_TASK, "Fremennik Slayer Dungeon"), + RED_DRAGON(53, 1, 120, HARD_TASK, "Brimhaven Dungeon"), + ROCKSLUG(1622, 20, 27, EASY_TASK, "Fremennik Slayer Dungeon"), + SKELETON(90, 1, 30, VERY_EASY_TASK + r(2), "Edgeville Dungeon or Taverly Dungeon"), + KARAMAJA_SKELETON(91, 1, 30, VERY_EASY_TASK + r(2), "Karamaja"), + WILDERNESS_SKELETON(92, 1, 30, VERY_EASY_TASK + r(2), "Wilderness"), + STEEL_DRAGON(1592, 1, 221, VERY_HARD_TASK, "Brimhaven Dungeon"), + BEAR(105, 1, 27, VERY_EASY_TASK, "Goblin Village"), + GREEN_GOBLIN(298, 1, 6, VERY_EASY_TASK, "Goblin Village"), + RED_GOBLIN(299, 1, 6, VERY_EASY_TASK, "Goblin Village"), + SCORPION(107, 1, 17, VERY_EASY_TASK, "Goblin Village"), + TUROTH(1632, 55, 77, HARD_TASK, "Fremennik Slayer Dungeon"); + + private int npcId, levelReq, diff, exp; + private String location; + + Task(int npcId, int levelReq, int exp, int difficulty, String location) { + this.npcId = npcId; + this.exp = exp; + this.levelReq = levelReq; + this.location = location; + this.diff = difficulty; + } + + public int getNpcId() { + return npcId; + } + + public int getExp() { + return exp; + } + + public int getLevelReq() { + return levelReq; + } + + public int getDifficulty() { + return diff; + } + + public String getLocation() { + return location; + } + } + + public static int r(int random) { + return Misc.random(random); + } + + public boolean canAttackNpc(int i) { + if (c.playerLevel[c.playerSlayer] < getRequiredLevel(NpcHandler.npcs[i].npcType)) { + c.getPacketSender().sendMessage("You need a slayer level of " + getRequiredLevel(NpcHandler.npcs[i].npcType) + " to attack this npc."); + c.getCombatAssistant().resetPlayerAttack(); + return false; + } + return true; + } + + public void resizeTable(int difficulty) { + if (easyTask.size() > 0 || hardTask.size() > 0 || mediumTask.size() > 0 + || veryHardTask.size() > 0 || veryEasyTask.size() > 0) { + easyTask.clear(); + mediumTask.clear(); + hardTask.clear(); + veryHardTask.clear(); + veryEasyTask.clear(); + } + for (Task slayerTask : Task.values()) { + if (slayerTask.getDifficulty() == EASY_TASK) { + if (c.playerLevel[18] >= slayerTask.getLevelReq()) { + easyTask.add(slayerTask.getNpcId()); + } + continue; + } else if (slayerTask.getDifficulty() == VERY_EASY_TASK) { + if (c.playerLevel[18] >= slayerTask.getLevelReq()) { + veryEasyTask.add(slayerTask.getNpcId()); + } + continue; + } else if (slayerTask.getDifficulty() == MEDIUM_TASK) { + if (c.playerLevel[18] >= slayerTask.getLevelReq()) { + mediumTask.add(slayerTask.getNpcId()); + } + continue; + } else if (slayerTask.getDifficulty() == HARD_TASK) { + if (c.playerLevel[18] >= slayerTask.getLevelReq()) { + hardTask.add(slayerTask.getNpcId()); + } + continue; + } else if (slayerTask.getDifficulty() == VERY_HARD_TASK) { + if (c.playerLevel[18] >= slayerTask.getLevelReq()) { + veryHardTask.add(slayerTask.getNpcId()); + } + continue; + } + } + } + + public static boolean getMasterRequirment(Player player, int id) { + for (SlayerMasters slayermasters : SlayerMasters.values()) { + if (player.combatLevel < slayermasters.getCombatRequirement() + && slayermasters.getId() == id) { + player.getPacketSender().sendMessage("You need " + slayermasters.getCombatRequirement() + " combat to use this slayer master."); + return false; + } + } + return true; + } + + public int getTaskExp(int npcId) { + for (Task task: Task.values()) { + if (task.npcId == npcId) { + return task.exp; + } + } + return -1; + } + + public int getRequiredLevel(int npcId) { + for (Task task : Task.values()) { + if (task.npcId == npcId) { + return task.levelReq; + } + } + return -1; + } + + public String getLocation(int npcId) { + for (Task task : Task.values()) { + if (task.npcId == npcId) { + return task.location; + } + } + return ""; + } + + public String getMasterLocation(int npcId) { + for (SlayerMasters slayermasters : SlayerMasters.values()) { + if (slayermasters.masterId == npcId) { + return slayermasters.masterLocation; + } + } + return ""; + } + + public boolean isSlayerNpc(int npcId) { + for (Task task : Task.values()) { + if (task.getNpcId() == npcId) { + return true; + } + } + return false; + } + + public boolean isSlayerTask(int npcId) { + if (isSlayerNpc(npcId)) { + if (c.slayerTask == npcId) { + return true; + } + } + return false; + } + + public int getDifficulty(int npcId) { + for (Task task : Task.values()) { + if (task.npcId == npcId) { + return task.getDifficulty(); + } + } + return 1; + } + + public String getSlayerMaster(int npcId) { + for (SlayerMasters slayermasters : SlayerMasters.values()) { + if (slayermasters.masterId == npcId) { + return slayermasters.name().replaceAll("_", " ") + .replaceAll("2", "").toLowerCase(); + } + } + return ""; + } + + public String getTaskName(int npcId) { + for (Task task : Task.values()) { + if (task.npcId == npcId) { + return task.name().replaceAll("_", " ").replaceAll("2", "") + .toLowerCase(); + } + } + return ""; + } + + public int getTaskId(String name) { + for (Task task : Task.values()) { + if (task.name() == name) { + return task.npcId; + } + } + return -1; + } + + public boolean hasTask() { + return c.slayerTask > 0 || c.taskAmount > 0; + } + + public void generateTask() { + if (hasTask() && !c.needsNewTask) { + c.getDialogueHandler().sendDialogues(1226, c.npcType);// already have task + return; + } + if (hasTask() && c.needsNewTask) {// assigning new task + int difficulty = getDifficulty(c.slayerTask); + if (difficulty == VERY_EASY_TASK) { + c.getDialogueHandler().sendDialogues(1227, c.npcType); + c.needsNewTask = false; + return; + } + } + int taskLevel = getSlayerDifficulty(c); + for (Task slayerTask : Task.values()) { + if (slayerTask.getDifficulty() == taskLevel) { + if (c.playerLevel[18] >= slayerTask.getLevelReq()) { + resizeTable(taskLevel); + if (!c.needsNewTask) { + int task = getRandomTask(taskLevel); + for (int removedTask : c.removedTasks) { + if (task == removedTask) { + c.getPacketSender().sendMessage("Unavailable task: " + task); + generateTask(); + return; + } + } + c.slayerTask = task; + c.taskAmount = getTaskAmount(task); + } else { + int task = getRandomTask(getDifficulty(taskLevel - 1)); + for (int removedTask : c.removedTasks) { + if (task == removedTask) { + c.getPacketSender().sendMessage("Unavailable task: " + task); + generateTask(); + return; + } + } + c.slayerTask = task; + c.taskAmount = getTaskAmount(task); + c.needsNewTask = false; + } + c.getDialogueHandler().sendDialogues(1237, c.npcType);// assign task + c.getPacketSender().sendMessage("You have been assigned " + c.taskAmount + " " + getTaskName(c.slayerTask) + ", good luck " + c.playerName + "."); + return; + } + } + } + } + + public int getTaskAmount(int task_id) { + Task task = null; + for (Task _task : Task.values()) + if (_task.getNpcId() == task_id) + task = _task; + + int[] amounts = VERY_EASY_AMOUNT; + if (task == null){ + amounts = VERY_EASY_AMOUNT; + } + else if (task.name().toLowerCase().contains("_dragon")) { + amounts = DRAGON_AMOUNT; + } + else { + switch (task.getDifficulty()) { + case 0: + amounts = VERY_EASY_AMOUNT; + break; + case 1: + amounts = EASY_AMOUNT; + break; + case 2: + amounts = MEDIUM_AMOUNT; + break; + case 3: + amounts = HARD_AMOUNT; + break; + case 4: + amounts = VERY_HARD_AMOUNT; + break; + default: + amounts = VERY_EASY_AMOUNT; + break; + } + } + return Misc.random(amounts[0], amounts[1]); + } + + public int getSlayerDifficulty(Player c2) { + for(SlayerMasters master : SlayerMasters.values()){ + if (master.getId() == c2.SlayerMaster) + return master.getDifficulty(); + } + return EASY_TASK; + } + + public int getRandomTask(int diff) { + if (diff == VERY_EASY_TASK) { + return veryEasyTask.get(r(veryEasyTask.size() - 1)); + } else if (diff == EASY_TASK) { + return easyTask.get(r(easyTask.size() - 1)); + } else if (diff == MEDIUM_TASK) { + return mediumTask.get(r(mediumTask.size() - 1)); + } else if (diff == HARD_TASK) { + return hardTask.get(r(hardTask.size() - 1)); + } else if (diff == VERY_HARD_TASK) { + return veryHardTask.get(r(veryHardTask.size() - 1)); + } + return easyTask.get(r(easyTask.size() - 1)); + } + + public void cancelTask() { + if (!hasTask()) { + c.getPacketSender().sendMessage("You must have a task to cancel first."); + return; + } + if (c.slayerPoints < 30) { + c.getPacketSender().sendMessage("This requires atleast 30 slayer points, which you don't have."); + c.getDialogueHandler().sendNpcChat1("This requires atleast 30 slayer points, which you don't have.", c.npcType, NpcHandler.getNpcListName(c.talkingNpc)); + c.nextChat = 0; + return; + } + c.getPacketSender().sendMessage("You have cancelled your current task of " + c.taskAmount + " " + getTaskName(c.slayerTask) + "."); + c.slayerTask = -1; + c.taskAmount = 0; + c.slayerPoints -= 30; + } + + public void removeTask() { + int counter = 0; + if (!hasTask()) { + c.getPacketSender().sendMessage("You must have a task to remove first."); + return; + } + if (c.slayerPoints < 100) { + c.getPacketSender().sendMessage("This requires atleast 100 slayer points, which you don't have."); + c.getDialogueHandler().sendNpcChat1("This requires atleast 100 slayer points, which you don't have.", c.npcType, NpcHandler.getNpcListName(c.talkingNpc)); + c.nextChat = 0; + return; + } + for (int i = 0; i < c.removedTasks.length; i++) { + if (c.removedTasks[i] != -1) { + counter++; + } + if (counter == 4) { + c.getPacketSender().sendMessage("You don't have any open slots left to remove tasks."); + return; + } + if (c.removedTasks[i] == -1) { + c.removedTasks[i] = c.slayerTask; + c.slayerPoints -= 100; + c.slayerTask = -1; + c.taskAmount = 0; + c.getPacketSender().sendMessage("Your current slayer task has been removed, you can't obtain this task again."); + updateCurrentlyRemoved(); + return; + } + } + } + + public void updatePoints() { + c.getPacketSender().sendFrame126("Slayer Points: " + c.slayerPoints, 41011); + c.getPacketSender().sendFrame126("Slayer Points: " + c.slayerPoints, 41511); + c.getPacketSender().sendFrame126("Slayer Points: " + c.slayerPoints, 42011); + } + + public void updateCurrentlyRemoved() { + int line[] = { 42014, 42015, 42016, 42017 }; + for (int i = 0; i < c.removedTasks.length; i++) { + if (c.removedTasks[i] != -1) { + c.getPacketSender().sendFrame126(getTaskName(c.removedTasks[i]), line[i]); + } else { + c.getPacketSender().sendFrame126("", line[i]); + } + } + } + + public void buySlayerExperience() { + if (System.currentTimeMillis() - c.buySlayerTimer < 500) { + return; + } + if (c.slayerPoints < 50) { + c.getPacketSender().sendMessage( "You need at least 50 slayer points to gain 32,500 Experience."); + return; + } + c.buySlayerTimer = System.currentTimeMillis(); + c.slayerPoints -= 50; + c.getPlayerAssistant().addSkillXP(32500, 18); + c.getPacketSender().sendMessage("You spend 50 slayer points and gain 32,500 experience in slayer."); + updatePoints(); + } + + public void buySlayerDart() { + if (System.currentTimeMillis() - c.buySlayerTimer < 500) { + return; + } + if (c.slayerPoints < 35) { + c.getPacketSender().sendMessage("You need at least 35 slayer points to buy Slayer darts."); + return; + } + if (c.getItemAssistant().freeSlots() < 2 && !c.getItemAssistant().playerHasItem(560) && !c.getItemAssistant().playerHasItem(558)) { + c.getPacketSender().sendMessage("You need at least 2 free lots to purchase this."); + return; + } + + c.buySlayerTimer = System.currentTimeMillis(); + c.slayerPoints -= 35; + c.getPacketSender().sendMessage("You spend 35 slayer points and aquire 250 casts of Slayer darts."); + c.getItemAssistant().addItem(558, 1000); + c.getItemAssistant().addItem(560, 250); + updatePoints(); + } + + public void buyBroadArrows() { + if (System.currentTimeMillis() - c.buySlayerTimer < 500) { + return; + } + if (c.slayerPoints < 25) { + c.getPacketSender().sendMessage("You need at least 25 slayer points to buy Broad arrows."); + return; + } + if (c.getItemAssistant().freeSlots() < 1 && !c.getItemAssistant().playerHasItem(4160)) { + c.getPacketSender().sendMessage("You need at least 1 free lot to purchase this."); + return; + } + c.buySlayerTimer = System.currentTimeMillis(); + c.slayerPoints -= 25; + c.getPacketSender().sendMessage("You spend 35 slayer points and aquire 250 Broad arrows."); + c.getItemAssistant().addItem(4160, 250); + updatePoints(); + } + + public void buyRespite() { + if (System.currentTimeMillis() - c.buySlayerTimer < 1000) { + return; + } + if (c.slayerPoints < 25) { + c.getPacketSender().sendMessage("You need at least 25 slayer points to buy Slayer's respite."); + return; + } + c.buySlayerTimer = System.currentTimeMillis(); + c.slayerPoints -= 25; + c.getPacketSender().sendMessage("You spend 25 slayer points and aquire a useful Slayer's respite."); + c.getItemAssistant().addItem(5841, 1); + updatePoints(); + } + +} diff --git a/2006Redone Server/src/com/rebotted/game/content/skills/slayer/SlayerRequirements.java b/2006Redone Server/src/com/rebotted/game/content/skills/slayer/SlayerRequirements.java new file mode 100644 index 00000000..5232129a --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/skills/slayer/SlayerRequirements.java @@ -0,0 +1,82 @@ +package com.rebotted.game.content.skills.slayer; + +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.game.players.Player; + +/** + * Slayer Item Requirements + * @author Andrew (Mr Extremez) + */ + +public class SlayerRequirements { + + private static final int NOSE_PEG = 4168, MIRROR_SHIELD = 4156, + EAR_MUFFS = 4166, ROCK_HAMMER = 4162, FACEMASK = 4164, + LEAF_BLADED_SPEAR = 4158, BROAD_ARROWS = 4172, BAG_OF_SALT = 4161; + + public static boolean itemNeededSlayer(Player c, int i) { + int npcType = NpcHandler.npcs[i].npcType; + switch (NpcHandler.npcs[i].npcType) { + case 1622: + case 1623: //rock slug + if (!c.getItemAssistant().playerHasItem(BAG_OF_SALT, 1)) { + c.getPacketSender().sendMessage("You need a Bag of Salt to attack Rock Slugs."); + c.getCombatAssistant().resetPlayerAttack(); + return false; + } + break; + case 1632: // turoth + if (c.playerEquipment[c.playerWeapon] != LEAF_BLADED_SPEAR && c.playerEquipment[c.playerArrows] != BROAD_ARROWS) { + c.getPacketSender().sendMessage("You need a Leaf Bladed Spear or Broad Arrows to attack Turoths."); + c.getCombatAssistant().resetPlayerAttack(); + return false; + } else if (c.playerEquipment[c.playerArrows] != BROAD_ARROWS && c.playerEquipment[c.playerWeapon] != LEAF_BLADED_SPEAR) { + c.getPacketSender().sendMessage("You need a Leaf Bladed Spear or Broad Arrows to attack Turoths."); + c.getCombatAssistant().resetPlayerAttack(); + return false; + } + break; + case 1612:// banshee + if (c.playerEquipment[c.playerHat] != EAR_MUFFS) { + c.getPacketSender().sendMessage("You need some Ear Muffs to attack Banshees."); + c.getCombatAssistant().resetPlayerAttack(); + return false; + } + break; + case 1620: //basilisk + case 1616:// cockatrice + if (c.playerEquipment[c.playerShield] != MIRROR_SHIELD) { + c.getPacketSender().sendMessage("You need a Mirror Shield to attack a " + NpcHandler.getNpcListName(npcType).toLowerCase() + "."); + c.getCombatAssistant().resetPlayerAttack(); + return false; + } + break; + case 1624:// dust devil + if (c.playerEquipment[c.playerHat] != FACEMASK) { + c.getPacketSender().sendMessage("You need a Face Mask to attack Dust devils."); + c.getCombatAssistant().resetPlayerAttack(); + return false; + } + break; + case 1604: + case 1605: + case 1606: + case 1607:// spectre + if (c.playerEquipment[c.playerHat] != NOSE_PEG) { + c.getPacketSender().sendMessage("You need a Nose Peg to attack Aberrant specter."); + c.getCombatAssistant().resetPlayerAttack(); + return false; + } + break; + case 1611:// garg + if (!c.getItemAssistant().playerHasItem(ROCK_HAMMER)) { + c.getPacketSender().sendMessage("You need a Rock Hammer to attack gargoyles."); + c.getCombatAssistant().resetPlayerAttack(); + return false; + } + break; + } + return true; + } + +} diff --git a/2006Redone Server/src/redone/game/content/skills/smithing/SilverCrafting.java b/2006Redone Server/src/com/rebotted/game/content/skills/smithing/SilverCrafting.java similarity index 77% rename from 2006Redone Server/src/redone/game/content/skills/smithing/SilverCrafting.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/smithing/SilverCrafting.java index 7f846751..711d570f 100644 --- a/2006Redone Server/src/redone/game/content/skills/smithing/SilverCrafting.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/smithing/SilverCrafting.java @@ -1,151 +1,145 @@ -package redone.game.content.skills.smithing; - -import java.util.HashMap; - -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.content.skills.SkillHandler; -import redone.game.items.ItemAssistant; -import redone.game.players.Client; - -public class SilverCrafting { - - public static final int SILVER_BAR = 2355; - private static final int SILVER_ANIMATION = 899; - - public static enum SilverCraft { - UNBLESSED(34205, 2355, 1716, 1, 16, 50), UNBLESSED5(34204, 2355, 1716, - 5, 16, 50), UNBLESSED10(34203, 2355, 1716, 10, 16, 50), UNBLESSEDX( - 34202, 2355, 1716, 0, 16, 50), UNHOLY(34209, 2355, 1724, 1, 17, - 50), UNHOLY5(34208, 2355, 1724, 5, 17, 50), UNHOLY10(34207, - 2355, 1724, 10, 17, 50), UNHOLYX(34206, 2355, 1724, 0, 17, 50), SICKLE( - 34213, 2355, 2961, 1, 18, 50), SICKLE5(34212, 2355, 2961, 5, - 18, 50), SICKLE10(34211, 2355, 2961, 10, 18, 50), SICKLEX( - 34210, 2355, 2961, 0, 18, 50), TIARA(34217, 2355, 5525, 1, 23, - 52.5), TIARA5(34216, 2355, 5525, 5, 23, 52.5), TIARA10(34215, - 2355, 5525, 10, 23, 52.5), TIARAX(34214, 2355, 5525, 0, 23, - 52.5); - - private final int buttonId; - private final int used; - private final int result; - private final int amount; - private final int level; - private final double experience; - - public static HashMap silverItems = new HashMap(); - - public static SilverCraft forId(int id) { - return silverItems.get(id); - } - - static { - for (SilverCraft data : SilverCraft.values()) { - silverItems.put(data.buttonId, data); - } - } - - private SilverCraft(int buttonId, int used, int result, int amount, - int level, double experience) { - this.buttonId = buttonId; - this.used = used; - this.result = result; - this.amount = amount; - this.level = level; - this.experience = experience; - } - - public int getButtonId() { - return buttonId; - } - - public int getUsed() { - return used; - } - - public int getResult() { - return result; - } - - public int getAmount() { - return amount; - } - - public int getLevel() { - return level; - } - - public double getExperience() { - return experience; - } - - } - - public static void makeSilver(final Client player, int buttonId, - final int amount) { - final SilverCraft silverCraft = SilverCraft.forId(buttonId); - if (silverCraft == null || silverCraft.getAmount() == 0 && amount == 0) { - return; - } - if (silverCraft.getUsed() == SILVER_BAR && player.isCrafting) { - if (!SkillHandler.CRAFTING) { - player.getActionSender().sendMessage( - "This skill is currently disabled."); - return; - } - if (!player.getItemAssistant().playerHasItem(SILVER_BAR)) { - player.getDialogueHandler().sendStatement( - "You need a silver bar to do this."); - return; - } - if (player.playerLevel[player.playerCrafting] < silverCraft - .getLevel()) { - player.getDialogueHandler().sendStatement( - "You need a crafting level of " - + silverCraft.getLevel() + " to make this."); - return; - } - player.startAnimation(SILVER_ANIMATION); - player.isCrafting = true; - player.getPlayerAssistant().closeAllWindows(); - - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - - int amnt = silverCraft.getAmount() != 0 ? silverCraft - .getAmount() : amount; - - @Override - public void execute(CycleEventContainer container) { - if (amnt == 0 - || !player.getItemAssistant().playerHasItem( - SILVER_BAR) || player.isCrafting == false) { - container.stop(); - return; - } - container.setTick(3); - player.startAnimation(SILVER_ANIMATION); - player.getActionSender().sendMessage( - "You make the silver bar into " - + ItemAssistant - .getItemName( - silverCraft.getResult()) - .toLowerCase().toLowerCase() + "."); - player.getItemAssistant().deleteItem(SILVER_BAR, 1); - player.getItemAssistant().addItem(silverCraft.getResult(), - 1); - player.getPlayerAssistant().addSkillXP( - silverCraft.getExperience(), player.playerCrafting); - amnt--; - - } - - @Override - public void stop() { - player.startAnimation(65535); - player.isCrafting = false; - } - }, 3); - } - } -} +package com.rebotted.game.content.skills.smithing; + +import java.util.HashMap; +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.content.skills.SkillHandler; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Player; + +public class SilverCrafting { + + public static final int SILVER_BAR = 2355; + private static final int SILVER_ANIMATION = 899; + + public static enum SilverCraft { + UNBLESSED(34205, 2355, 1716, 1, 16, 50), UNBLESSED5(34204, 2355, 1716, + 5, 16, 50), UNBLESSED10(34203, 2355, 1716, 10, 16, 50), UNBLESSEDX( + 34202, 2355, 1716, 0, 16, 50), UNHOLY(34209, 2355, 1724, 1, 17, + 50), UNHOLY5(34208, 2355, 1724, 5, 17, 50), UNHOLY10(34207, + 2355, 1724, 10, 17, 50), UNHOLYX(34206, 2355, 1724, 0, 17, 50), SICKLE( + 34213, 2355, 2961, 1, 18, 50), SICKLE5(34212, 2355, 2961, 5, + 18, 50), SICKLE10(34211, 2355, 2961, 10, 18, 50), SICKLEX( + 34210, 2355, 2961, 0, 18, 50), TIARA(34217, 2355, 5525, 1, 23, + 52.5), TIARA5(34216, 2355, 5525, 5, 23, 52.5), TIARA10(34215, + 2355, 5525, 10, 23, 52.5), TIARAX(34214, 2355, 5525, 0, 23, + 52.5); + + private final int buttonId; + private final int used; + private final int result; + private final int amount; + private final int level; + private final double experience; + + public static HashMap silverItems = new HashMap(); + + public static SilverCraft forId(int id) { + return silverItems.get(id); + } + + static { + for (SilverCraft data : SilverCraft.values()) { + silverItems.put(data.buttonId, data); + } + } + + private SilverCraft(int buttonId, int used, int result, int amount, + int level, double experience) { + this.buttonId = buttonId; + this.used = used; + this.result = result; + this.amount = amount; + this.level = level; + this.experience = experience; + } + + public int getButtonId() { + return buttonId; + } + + public int getUsed() { + return used; + } + + public int getResult() { + return result; + } + + public int getAmount() { + return amount; + } + + public int getLevel() { + return level; + } + + public double getExperience() { + return experience; + } + + } + + public static void makeSilver(final Player player, int buttonId, + final int amount) { + final SilverCraft silverCraft = SilverCraft.forId(buttonId); + if (silverCraft == null || silverCraft.getAmount() == 0 && amount == 0) { + return; + } + if (silverCraft.getUsed() == SILVER_BAR && player.isCrafting) { + if (!SkillHandler.CRAFTING) { + player.getPacketSender().sendMessage("This skill is currently disabled."); + return; + } + if (!player.getItemAssistant().playerHasItem(SILVER_BAR)) { + player.getDialogueHandler().sendStatement("You need a silver bar to do this."); + return; + } + if (player.playerLevel[player.playerCrafting] < silverCraft.getLevel()) { + player.getDialogueHandler().sendStatement("You need a crafting level of " + silverCraft.getLevel() + " to make this."); + return; + } + player.startAnimation(SILVER_ANIMATION); + player.isCrafting = true; + player.getPacketSender().closeAllWindows(); + + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + + int amnt = silverCraft.getAmount() != 0 ? silverCraft + .getAmount() : amount; + + @Override + public void execute(CycleEventContainer container) { + if (amnt == 0 + || !player.getItemAssistant().playerHasItem( + SILVER_BAR) || player.isCrafting == false) { + container.stop(); + return; + } + container.setTick(3); + player.startAnimation(SILVER_ANIMATION); + player.getPacketSender().sendMessage( + "You make the silver bar into " + + ItemAssistant + .getItemName( + silverCraft.getResult()) + .toLowerCase().toLowerCase() + "."); + player.getItemAssistant().deleteItem(SILVER_BAR, 1); + player.getItemAssistant().addItem(silverCraft.getResult(), + 1); + player.getPlayerAssistant().addSkillXP( + silverCraft.getExperience(), player.playerCrafting); + amnt--; + + } + + @Override + public void stop() { + player.startAnimation(65535); + player.isCrafting = false; + } + }, 3); + } + } +} diff --git a/2006Redone Server/src/redone/game/content/skills/smithing/Smelting.java b/2006Redone Server/src/com/rebotted/game/content/skills/smithing/Smelting.java similarity index 79% rename from 2006Redone Server/src/redone/game/content/skills/smithing/Smelting.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/smithing/Smelting.java index 24f8c925..b9181849 100644 --- a/2006Redone Server/src/redone/game/content/skills/smithing/Smelting.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/smithing/Smelting.java @@ -1,337 +1,335 @@ -package redone.game.content.skills.smithing; - -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.content.skills.SkillHandler; -import redone.game.items.ItemAssistant; -import redone.game.players.Client; -import redone.util.Misc; - -/** - * Made by - * - * @author abysspartyy - */ - -public class Smelting extends SkillHandler { - - private static int COPPER = 436, TIN = 438, IRON = 440, COAL = 453, - MITH = 447, ADDY = 449, RUNE = 451, GOLD = 444, SILVER = 442; - private final static int[] SMELT_FRAME = { 2405, 2406, 2407, 2409, 2410, - 2411, 2412, 2413 }; - private final static int[] SMELT_BARS = { 2349, 2351, 2355, 2353, 2357, - 2359, 2361, 2363 }; - - /** - * Handles Smelting data. - */ - public static int[][] data = { - // index ,lvl required, XP, item required, item2, COAL AMOUNT, - // Final item(BAR) - { 1, 1, 6, COPPER, TIN, -1, 2349 }, // Bronze - { 2, 15, 12, IRON, -1, -1, 2351 }, // iron - { 3, 20, 17, IRON, COAL, 2, 2353 }, // Steel - { 4, 50, 30, MITH, COAL, 4, 2359 }, // Mith - { 5, 70, 37, ADDY, COAL, 6, 2361 }, // Addy - { 6, 85, 50, RUNE, COAL, 8, 2363 }, // Rune - { 7, 20, 13, SILVER, -1, -1, 2355 }, // Silver - { 8, 40, 22, GOLD, -1, -1, 2357 } // GOLD - }; - - /** - * Sends the interface - * - * @param c - */ - public static void startSmelting(Client c, int object) { - for (int j = 0; j < SMELT_FRAME.length; j++) { - c.getPlayerAssistant().sendFrame246(SMELT_FRAME[j], 150, - SMELT_BARS[j]); - } - c.getPlayerAssistant().sendChatInterface(2400); - c.isSmelting = true; - } - - /** - * Sets the amount of bars that can be smelted. (EG. 5,10,28 times) - * - * @param c - * @param amount - */ - public static void doAmount(Client c, int amount, int bartype) { - c.doAmount = amount; - smeltBar(c, bartype); - } - - /** - * Main method. Smelting - * - * @param c - */ - private static void smeltBar(final Client c, int bartype) { - for (int i = 0; i < data.length; i++) { - if (bartype == data[i][0]) { - if (c.playerLevel[c.playerSmithing] < data[i][1]) { // Smithing level - c.getDialogueHandler().sendStatement("You need a smithing level of at least "+ data[i][1] + " in order smelt this bar."); - return; - } - - if (data[i][3] > 0 && data[i][4] > 0) { // All OTHER bars - if (!c.getItemAssistant().playerHasItem(data[i][3]) || !c.getItemAssistant().playerHasItem(data[i][4])) { - c.getActionSender().sendMessage("You need an " + ItemAssistant.getItemName(data[i][3]).toLowerCase() + " and " + data[i][5] + " " + ItemAssistant.getItemName(data[i][4]).toLowerCase() + " to make this bar."); - c.getPlayerAssistant().removeAllWindows(); - return; - } - } - - if (data[i][4] < 0) { // Iron bar, Gold & Silver requirements - if (!c.getItemAssistant().playerHasItem(data[i][3])) { - c.getActionSender().sendMessage("You need an " + ItemAssistant.getItemName(data[i][3]).toLowerCase() + " to make this bar."); - c.getPlayerAssistant().removeAllWindows(); - return; - } - } - - if (data[i][5] > 0) { // Bars with more than 1 coal requirement - if (!c.getItemAssistant().playerHasItem(data[i][4], data[i][5])) { - c.getActionSender().sendMessage("You need an " + ItemAssistant.getItemName(data[i][3]).toLowerCase() + " and " + data[i][5] + " coal ores to make this bar."); - c.getPlayerAssistant().removeAllWindows(); - return; - } - } - - if (c.playerSkilling[13]) { - return; - } - - c.playerSkilling[13] = true; - c.stopPlayerSkill = true; - - c.playerSkillProp[13][0] = data[i][0];// index - c.playerSkillProp[13][1] = data[i][1];// Level required - c.playerSkillProp[13][2] = data[i][2];// XP - c.playerSkillProp[13][3] = data[i][3];// item required - c.playerSkillProp[13][4] = data[i][4];// item required 2 - c.playerSkillProp[13][5] = data[i][5];// coal amount - c.playerSkillProp[13][6] = data[i][6];// Final Item - - c.getPlayerAssistant().removeAllWindows(); - c.startAnimation(899); - c.getActionSender().sendSound(352, 100, 1); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - - @Override - public void execute(CycleEventContainer container) { - deleteTime(c); - c.getItemAssistant().deleteItem(c.playerSkillProp[13][3], 1); - if (c.playerSkillProp[13][5] == -1) { - c.getItemAssistant().deleteItem(c.playerSkillProp[13][4], 1); - } - if (c.playerSkillProp[13][5] > 0) {// if coal amount is > 0 - c.getItemAssistant().deleteItem(c.playerSkillProp[13][4], c.playerSkillProp[13][5]); - } - - if (c.playerSkillProp[13][3] == IRON && c.playerSkillProp[13][4] == -1 && Misc.random(100) >= 50) { - c.getPlayerAssistant().addSkillXP(c.playerSkillProp[13][2], c.playerSmithing); - c.getItemAssistant().addItem(c.playerSkillProp[13][6], 1);// item - c.getActionSender().sendMessage("You receive an " + ItemAssistant.getItemName(c.playerSkillProp[13][6]).toLowerCase() + "."); - } - - if (c.playerSkillProp[13][3] == GOLD && c.playerSkillProp[13][4] == -1 && c.playerEquipment[c.playerHands] == 776) { - c.getActionSender().sendMessage("You receive an " + ItemAssistant.getItemName(c.playerSkillProp[13][6]).toLowerCase() + "."); - c.getPlayerAssistant().addSkillXP(56.2, c.playerSmithing); - c.getItemAssistant().addItem(c.playerSkillProp[13][6], 1);// item - } else { - if (c.playerSkillProp[13][3] != IRON) { - c.getActionSender().sendMessage("You receive an " + ItemAssistant.getItemName(c.playerSkillProp[13][6]).toLowerCase() + "."); - c.getPlayerAssistant().addSkillXP(c.playerSkillProp[13][2], c.playerSmithing); - c.getItemAssistant().addItem(c.playerSkillProp[13][6], 1);// item - } - } - - // ///////////////////////////////CHECKING////////////////////// - if (!c.getItemAssistant().playerHasItem(c.playerSkillProp[13][3], 1)) { - c.getActionSender().sendMessage("You don't have enough ores to continue smelting!"); - resetSmelting(c); - container.stop(); - } - if (c.playerSkillProp[13][4] > 0) { - if (!c.getItemAssistant().playerHasItem(c.playerSkillProp[13][4], 1)) { - c.getActionSender().sendMessage("You don't have enough ores to continue smelting!"); - resetSmelting(c); - container.stop(); - } - } - if (c.doAmount <= 0) { - resetSmelting(c); - container.stop(); - } - if (!c.playerSkilling[13]) { - resetSmelting(c); - container.stop(); - } - if (!c.stopPlayerSkill) { - resetSmelting(c); - container.stop(); - } - - } - - @Override - public void stop() { - - } - }, (int) 5.9); - - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() {// animation - - @Override - public void execute(CycleEventContainer container) { - if (!c.playerSkilling[13]) { - resetSmelting(c); - container.stop(); - return; - } - c.startAnimation(899); - c.getActionSender().sendSound(352, 100, 1); - if (!c.stopPlayerSkill) { - container.stop(); - } - } - - @Override - public void stop() { - - } - }, (int) 5.8); - - } - } - } - - /** - * Gets the index from DATA for which bar to smelt - */ - public static void getBar(Client c, int i) { - switch (i) { - case 15147: // bronze (1) - doAmount(c, 1, 1);// (c,amount,Index in data) - break; - case 15146: // bronze (5) - doAmount(c, 5, 1); - break; - case 10247: // bronze (10) - doAmount(c, 10, 1); - break; - case 9110:// bronze (X) - doAmount(c, 28, 1); - break; - - case 15151: // iron (1) - doAmount(c, 1, 2); - break; - case 15150: // iron (5) - doAmount(c, 5, 2); - break; - case 15149: // iron (10) - doAmount(c, 10, 2); - break; - case 15148:// Iron (X) - doAmount(c, 28, 2); - break; - - case 15159: // Steel (1) - doAmount(c, 1, 3); - break; - case 15158: // Steel (5) - doAmount(c, 5, 3); - break; - case 15157: // Steel (10) - doAmount(c, 10, 3); - break; - case 15156:// Steel (X) - doAmount(c, 28, 3); - break; - - case 29017: // mith (1) - doAmount(c, 1, 4); - break; - case 29016: // mith (5) - doAmount(c, 5, 4); - break; - case 24253: // mith (10) - doAmount(c, 10, 4); - break; - case 16062:// Mith (X) - doAmount(c, 28, 4); - break; - - case 29022: // Addy (1) - doAmount(c, 1, 5); - break; - case 29020: // Addy (5) - doAmount(c, 5, 5); - break; - case 29019: // Addy (10) - doAmount(c, 10, 5); - break; - case 29018:// Addy (X) - doAmount(c, 28, 5); - break; - - case 29026: // RUNE (1) - doAmount(c, 1, 6); - break; - case 29025: // RUNE (5) - doAmount(c, 5, 6); - break; - case 29024: // RUNE (10) - doAmount(c, 10, 6); - break; - case 29023:// Rune (X) - doAmount(c, 28, 6); - break; - - case 15155:// SILVER (1) - doAmount(c, 1, 7); - break; - case 15154:// SILVER (5) - doAmount(c, 5, 7); - break; - case 15153:// SILVER (10) - doAmount(c, 10, 7); - break; - case 15152:// SILVER (28) - doAmount(c, 28, 7); - break; - - case 15163:// Gold (1) - doAmount(c, 1, 8); - break; - case 15162:// Gold (5) - doAmount(c, 5, 8); - break; - case 15161:// Gold (10) - doAmount(c, 10, 8); - break; - case 15160:// Gold (28) - doAmount(c, 28, 8); - break; - } - - } - - /** - * Resets Smelting - */ - public static void resetSmelting(Client c) { - c.playerSkilling[13] = false; - c.stopPlayerSkill = false; - c.isSmelting = false; - for (int i = 0; i < 7; i++) { - c.playerSkillProp[13][i] = -1; - } - } - -} +package com.rebotted.game.content.skills.smithing; + +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.content.skills.SkillHandler; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +/** + * @author abysspartyy + */ + +public class Smelting extends SkillHandler { + + private static int COPPER = 436, TIN = 438, IRON = 440, COAL = 453, + MITH = 447, ADDY = 449, RUNE = 451, GOLD = 444, SILVER = 442; + private final static int[] SMELT_FRAME = { 2405, 2406, 2407, 2409, 2410, + 2411, 2412, 2413 }; + private final static int[] SMELT_BARS = { 2349, 2351, 2355, 2353, 2357, + 2359, 2361, 2363 }; + + /** + * Handles Smelting data. + */ + public static int[][] data = { + // index ,lvl required, XP, item required, item2, COAL AMOUNT, + // Final item(BAR) + { 1, 1, 6, COPPER, TIN, -1, 2349 }, // Bronze + { 2, 15, 12, IRON, -1, -1, 2351 }, // iron + { 3, 20, 17, IRON, COAL, 2, 2353 }, // Steel + { 4, 50, 30, MITH, COAL, 4, 2359 }, // Mith + { 5, 70, 37, ADDY, COAL, 6, 2361 }, // Addy + { 6, 85, 50, RUNE, COAL, 8, 2363 }, // Rune + { 7, 20, 13, SILVER, -1, -1, 2355 }, // Silver + { 8, 40, 22, GOLD, -1, -1, 2357 } // GOLD + }; + + /** + * Sends the interface + * + * @param c + */ + public static void startSmelting(Player c, int object) { + for (int j = 0; j < SMELT_FRAME.length; j++) { + c.getPacketSender().sendFrame246(SMELT_FRAME[j], 150, + SMELT_BARS[j]); + } + c.getPacketSender().sendChatInterface(2400); + c.isSmelting = true; + } + + /** + * Sets the amount of bars that can be smelted. (EG. 5,10,28 times) + * + * @param c + * @param amount + */ + public static void doAmount(Player c, int amount, int bartype) { + c.doAmount = amount; + smeltBar(c, bartype); + } + + /** + * Main method. Smelting + * + * @param c + */ + private static void smeltBar(final Player c, int bartype) { + for (int i = 0; i < data.length; i++) { + if (bartype == data[i][0]) { + if (c.playerLevel[c.playerSmithing] < data[i][1]) { // Smithing level + c.getDialogueHandler().sendStatement("You need a smithing level of at least "+ data[i][1] + " in order smelt this bar."); + return; + } + + if (data[i][3] > 0 && data[i][4] > 0) { // All OTHER bars + if (!c.getItemAssistant().playerHasItem(data[i][3]) || !c.getItemAssistant().playerHasItem(data[i][4])) { + c.getPacketSender().sendMessage("You need an " + ItemAssistant.getItemName(data[i][3]).toLowerCase() + " and " + data[i][5] + " " + ItemAssistant.getItemName(data[i][4]).toLowerCase() + " to make this bar."); + c.getPacketSender().closeAllWindows(); + return; + } + } + + if (data[i][4] < 0) { // Iron bar, Gold & Silver requirements + if (!c.getItemAssistant().playerHasItem(data[i][3])) { + c.getPacketSender().sendMessage("You need an " + ItemAssistant.getItemName(data[i][3]).toLowerCase() + " to make this bar."); + c.getPacketSender().closeAllWindows(); + return; + } + } + + if (data[i][5] > 0) { // Bars with more than 1 coal requirement + if (!c.getItemAssistant().playerHasItem(data[i][4], data[i][5])) { + c.getPacketSender().sendMessage("You need an " + ItemAssistant.getItemName(data[i][3]).toLowerCase() + " and " + data[i][5] + " coal ores to make this bar."); + c.getPacketSender().closeAllWindows(); + return; + } + } + + if (c.playerSkilling[13]) { + return; + } + + c.playerSkilling[13] = true; + c.stopPlayerSkill = true; + + c.playerSkillProp[13][0] = data[i][0];// index + c.playerSkillProp[13][1] = data[i][1];// Level required + c.playerSkillProp[13][2] = data[i][2];// XP + c.playerSkillProp[13][3] = data[i][3];// item required + c.playerSkillProp[13][4] = data[i][4];// item required 2 + c.playerSkillProp[13][5] = data[i][5];// coal amount + c.playerSkillProp[13][6] = data[i][6];// Final Item + + c.getPacketSender().closeAllWindows(); + c.startAnimation(899); + c.getPacketSender().sendSound(352, 100, 1); + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + + @Override + public void execute(CycleEventContainer container) { + deleteTime(c); + c.getItemAssistant().deleteItem(c.playerSkillProp[13][3], 1); + if (c.playerSkillProp[13][5] == -1) { + c.getItemAssistant().deleteItem(c.playerSkillProp[13][4], 1); + } + if (c.playerSkillProp[13][5] > 0) {// if coal amount is > 0 + c.getItemAssistant().deleteItem(c.playerSkillProp[13][4], c.playerSkillProp[13][5]); + } + + if (c.playerSkillProp[13][3] == IRON && c.playerSkillProp[13][4] == -1 && Misc.random(100) >= 50) { + c.getPlayerAssistant().addSkillXP(c.playerSkillProp[13][2], c.playerSmithing); + c.getItemAssistant().addItem(c.playerSkillProp[13][6], 1);// item + c.getPacketSender().sendMessage("You receive an " + ItemAssistant.getItemName(c.playerSkillProp[13][6]).toLowerCase() + "."); + } + + if (c.playerSkillProp[13][3] == GOLD && c.playerSkillProp[13][4] == -1 && c.playerEquipment[c.playerHands] == 776) { + c.getPacketSender().sendMessage("You receive an " + ItemAssistant.getItemName(c.playerSkillProp[13][6]).toLowerCase() + "."); + c.getPlayerAssistant().addSkillXP(56.2, c.playerSmithing); + c.getItemAssistant().addItem(c.playerSkillProp[13][6], 1);// item + } else { + if (c.playerSkillProp[13][3] != IRON) { + c.getPacketSender().sendMessage("You receive an " + ItemAssistant.getItemName(c.playerSkillProp[13][6]).toLowerCase() + "."); + c.getPlayerAssistant().addSkillXP(c.playerSkillProp[13][2], c.playerSmithing); + c.getItemAssistant().addItem(c.playerSkillProp[13][6], 1);// item + } + } + + // ///////////////////////////////CHECKING////////////////////// + if (!c.getItemAssistant().playerHasItem(c.playerSkillProp[13][3], 1)) { + c.getPacketSender().sendMessage("You don't have enough ores to continue smelting!"); + resetSmelting(c); + container.stop(); + } + if (c.playerSkillProp[13][4] > 0) { + if (!c.getItemAssistant().playerHasItem(c.playerSkillProp[13][4], 1)) { + c.getPacketSender().sendMessage("You don't have enough ores to continue smelting!"); + resetSmelting(c); + container.stop(); + } + } + if (c.doAmount <= 0) { + resetSmelting(c); + container.stop(); + } + if (!c.playerSkilling[13]) { + resetSmelting(c); + container.stop(); + } + if (!c.stopPlayerSkill) { + resetSmelting(c); + container.stop(); + } + + } + + @Override + public void stop() { + + } + }, (int) 5.9); + + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() {// animation + + @Override + public void execute(CycleEventContainer container) { + if (!c.playerSkilling[13]) { + resetSmelting(c); + container.stop(); + return; + } + c.startAnimation(899); + c.getPacketSender().sendSound(352, 100, 1); + if (!c.stopPlayerSkill) { + container.stop(); + } + } + + @Override + public void stop() { + + } + }, (int) 5.8); + + } + } + } + + /** + * Gets the index from DATA for which bar to smelt + */ + public static void getBar(Player c, int i) { + switch (i) { + case 15147: // bronze (1) + doAmount(c, 1, 1);// (c,amount,Index in data) + break; + case 15146: // bronze (5) + doAmount(c, 5, 1); + break; + case 10247: // bronze (10) + doAmount(c, 10, 1); + break; + case 9110:// bronze (X) + doAmount(c, 28, 1); + break; + + case 15151: // iron (1) + doAmount(c, 1, 2); + break; + case 15150: // iron (5) + doAmount(c, 5, 2); + break; + case 15149: // iron (10) + doAmount(c, 10, 2); + break; + case 15148:// Iron (X) + doAmount(c, 28, 2); + break; + + case 15159: // Steel (1) + doAmount(c, 1, 3); + break; + case 15158: // Steel (5) + doAmount(c, 5, 3); + break; + case 15157: // Steel (10) + doAmount(c, 10, 3); + break; + case 15156:// Steel (X) + doAmount(c, 28, 3); + break; + + case 29017: // mith (1) + doAmount(c, 1, 4); + break; + case 29016: // mith (5) + doAmount(c, 5, 4); + break; + case 24253: // mith (10) + doAmount(c, 10, 4); + break; + case 16062:// Mith (X) + doAmount(c, 28, 4); + break; + + case 29022: // Addy (1) + doAmount(c, 1, 5); + break; + case 29020: // Addy (5) + doAmount(c, 5, 5); + break; + case 29019: // Addy (10) + doAmount(c, 10, 5); + break; + case 29018:// Addy (X) + doAmount(c, 28, 5); + break; + + case 29026: // RUNE (1) + doAmount(c, 1, 6); + break; + case 29025: // RUNE (5) + doAmount(c, 5, 6); + break; + case 29024: // RUNE (10) + doAmount(c, 10, 6); + break; + case 29023:// Rune (X) + doAmount(c, 28, 6); + break; + + case 15155:// SILVER (1) + doAmount(c, 1, 7); + break; + case 15154:// SILVER (5) + doAmount(c, 5, 7); + break; + case 15153:// SILVER (10) + doAmount(c, 10, 7); + break; + case 15152:// SILVER (28) + doAmount(c, 28, 7); + break; + + case 15163:// Gold (1) + doAmount(c, 1, 8); + break; + case 15162:// Gold (5) + doAmount(c, 5, 8); + break; + case 15161:// Gold (10) + doAmount(c, 10, 8); + break; + case 15160:// Gold (28) + doAmount(c, 28, 8); + break; + } + + } + + /** + * Resets Smelting + */ + public static void resetSmelting(Player player) { + player.playerSkilling[13] = false; + player.stopPlayerSkill = false; + player.isSmelting = false; + for (int i = 0; i < 7; i++) { + player.playerSkillProp[13][i] = -1; + } + } + +} diff --git a/2006Redone Server/src/redone/game/content/skills/smithing/Smithing.java b/2006Redone Server/src/com/rebotted/game/content/skills/smithing/Smithing.java similarity index 78% rename from 2006Redone Server/src/redone/game/content/skills/smithing/Smithing.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/smithing/Smithing.java index 69620e4b..99bd3d80 100644 --- a/2006Redone Server/src/redone/game/content/skills/smithing/Smithing.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/smithing/Smithing.java @@ -1,912 +1,844 @@ -package redone.game.content.skills.smithing; - -import redone.game.items.ItemAssistant; -import redone.game.players.Client; - -/** - * Cleaned by Andrew - * @author Andrew - */ - -public class Smithing { - - private int addItem, XP, removeItem, removeAmount, makeTimes; - - public void readInput(int levelReq, String type, Client c, int amountToMake) { - if (ItemAssistant.getItemName(Integer.parseInt(type)).contains("Bronze")) { - CheckBronze(c, levelReq, amountToMake, type); - } else if (ItemAssistant.getItemName(Integer.parseInt(type)).contains("Iron")) { - CheckIron(c, levelReq, amountToMake, type); - } else if (ItemAssistant.getItemName(Integer.parseInt(type)).contains("Steel")) { - CheckSteel(c, levelReq, amountToMake, type); - } else if (ItemAssistant.getItemName(Integer.parseInt(type)).contains("Mith")) { - CheckMith(c, levelReq, amountToMake, type); - } else if (ItemAssistant.getItemName(Integer.parseInt(type)).contains("Adam") || ItemAssistant.getItemName(Integer.parseInt(type)).contains("Addy")) { - CheckAddy(c, levelReq, amountToMake, type); - } else if (ItemAssistant.getItemName(Integer.parseInt(type)).contains("Rune") || ItemAssistant.getItemName(Integer.parseInt(type)).contains("Runite")) { - CheckRune(c, levelReq, amountToMake, type); - } - if (c.playerRights > 1) { - c.getActionSender().sendMessage("You made item id: " + type + "."); - } - } - - private void CheckBronze(Client c, int levelReq, int amountToMake, String type) { - if (c.tutorialProgress == 20 && !type.equalsIgnoreCase("1205")) { - c.getDialogueHandler().sendStatement("You can only make a bronze dagger on this step."); - c.nextChat = 0; - return; - } - if (type.equalsIgnoreCase("1351") && levelReq >= 1) { - XP = 13; - addItem = 1351; - removeItem = 2349; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equalsIgnoreCase("1205") && levelReq >= 1 && c.tutorialProgress > 20) { - XP = 13; - addItem = 1205; - removeItem = 2349; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equalsIgnoreCase("1205") && levelReq >= 1 && c.tutorialProgress == 20) { - XP = 13; - addItem = 1205; - removeItem = 2349; - removeAmount = 1; - makeTimes = amountToMake; - c.getDialogueHandler().sendDialogues(3066, -1); - } else if (type.equals("1422") && levelReq >= 2) { - XP = 13; - addItem = 1422; - removeItem = 2349; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("1139") && levelReq >= 3) { - XP = 13; - addItem = 1139; - removeItem = 2349; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("819") && levelReq >= 4) { - XP = 13; - addItem = 819; - removeItem = 2349; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("1277") && levelReq >= 4) { - XP = 13; - addItem = 1277; - removeItem = 2349; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("4819") && levelReq >= 4) { - XP = 13; - addItem = 4819; - removeItem = 2349; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("39") && levelReq >= 5) { - XP = 13; - addItem = 39; - removeItem = 2349; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("1321") && levelReq >= 5) { - XP = 25; - addItem = 1321; - removeItem = 2349; - removeAmount = 2; - makeTimes = amountToMake; - } else if (type.equals("1291") && levelReq >= 6) { - XP = 25; - addItem = 1291; - removeItem = 2349; - removeAmount = 2; - makeTimes = amountToMake; - } else if (type.equals("864") && levelReq >= 7) { - XP = 25; - addItem = 864; - removeItem = 2349; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("1155") && levelReq >= 7) { - XP = 25; - addItem = 1155; - removeItem = 2349; - removeAmount = 2; - makeTimes = amountToMake; - } else if (type.equals("1173") && levelReq >= 8) { - XP = 25; - addItem = 1173; - removeItem = 2349; - removeAmount = 2; - makeTimes = amountToMake; - } else if (type.equals("3095") && levelReq >= 8) { // claws - XP = 25; - addItem = 3095; - removeAmount = 2; - makeTimes = amountToMake; - } else if (type.equals("1337") && levelReq >= 9) { - XP = 38; - addItem = 1337; - removeItem = 2349; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1375") && levelReq >= 10) { - XP = 38; - addItem = 1375; - removeItem = 2349; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1103") && levelReq >= 11) { - XP = 38; - addItem = 1103; - removeItem = 2349; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1189") && levelReq >= 12) { - XP = 38; - addItem = 1189; - removeItem = 2349; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1307") && levelReq >= 14) { - XP = 38; - addItem = 1307; - removeItem = 2349; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1075") && levelReq >= 16) { - XP = 38; - addItem = 1075; - removeItem = 2349; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1087") && levelReq >= 16) { - XP = 38; - addItem = 1087; - removeItem = 2349; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1117") && levelReq >= 18) { - XP = 63; - addItem = 1117; - removeItem = 2349; - removeAmount = 5; - makeTimes = amountToMake; - } else if (c.playerLevel[c.playerSmithing] < levelReq) { - c.getActionSender().sendMessage( - "You need " + levelReq + " smithing to do this!"); - return; - } - smithItem(c, addItem, removeItem, removeAmount, makeTimes, XP); - } - - private void CheckIron(Client c, int levelReq, int amountToMake, String type) { - removeItem = 2351; - if (type.equalsIgnoreCase("1349") && levelReq >= 16) { // Axe - XP = 25; - addItem = 1349; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equalsIgnoreCase("1203") && levelReq >= 15) { // Dagger - XP = 25; - addItem = 1203; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("1420") && levelReq >= 17) { // Mace - XP = 25; - addItem = 1420; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("1137") && levelReq >= 18) { // Med helm - XP = 25; - addItem = 1137; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("820") && levelReq >= 19) { // Dart tips - XP = 25; - addItem = 820; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("1279") && levelReq >= 19) { // Sword (s) - XP = 25; - addItem = 1279; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("4820") && levelReq >= 19) { // Nails - XP = 25; - addItem = 4820; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("40") && levelReq >= 20) { // Arrow tips - XP = 25; - addItem = 40; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("1323") && levelReq >= 20) {// Scim - XP = 50; - addItem = 1323; - removeAmount = 2; - makeTimes = amountToMake; - } else if (type.equals("1293") && levelReq >= 21) { // Longsword - XP = 50; - addItem = 1293; - removeAmount = 2; - makeTimes = amountToMake; - } else if (type.equals("863") && levelReq >= 22) { // Knives - XP = 25; - addItem = 863; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("1153") && levelReq >= 22) { // Full Helm - XP = 50; - addItem = 1153; - removeAmount = 2; - makeTimes = amountToMake; - } else if (type.equals("1175") && levelReq >= 23) { // Square shield - XP = 50; - addItem = 1175; - removeAmount = 2; - makeTimes = amountToMake; - } else if (type.equals("1335") && levelReq >= 24) { // Warhammer - XP = 38; - addItem = 1335; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1363") && levelReq >= 25) { // Battle axe - XP = 75; - addItem = 1363; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1101") && levelReq >= 26) { // Chain - XP = 75; - addItem = 1101; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("4540") && levelReq >= 26) { // lantern - XP = 25; - addItem = 4540; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("1191") && levelReq >= 27) { // Kite - XP = 75; - addItem = 1191; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("3096") && levelReq >= 28) { // claws - XP = 50; - addItem = 3096; - removeAmount = 2; - makeTimes = amountToMake; - } else if (type.equals("1309") && levelReq >= 29) { // 2h Sword - XP = 75; - addItem = 1309; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1067") && levelReq >= 31) { // Platelegs - XP = 75; - addItem = 1067; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1081") && levelReq >= 31) { // PlateSkirt - XP = 75; - addItem = 1081; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1115") && levelReq >= 33) { // Platebody - XP = 125; - addItem = 1115; - removeAmount = 5; - makeTimes = amountToMake; - } else if (c.playerLevel[c.playerSmithing] < levelReq) { - c.getActionSender().sendMessage( - "You need " + levelReq + " smithing to do this!"); - return; - } - - smithItem(c, addItem, removeItem, removeAmount, makeTimes, XP); - - } - - private void CheckSteel(Client c, int levelReq, int amountToMake, String type) { - removeItem = 2353; - if (type.equalsIgnoreCase("1353") && levelReq >= 31) { // Axe - XP = 38; - addItem = 1353; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equalsIgnoreCase("1207") && levelReq >= 30) { // Dagger - XP = 50; - addItem = 1207; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("1424") && levelReq >= 32) { // Mace - XP = 50; - addItem = 1424; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("1141") && levelReq >= 33) { // Med helm - XP = 50; - addItem = 1141; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("821") && levelReq >= 34) { // Dart tips - XP = 50; - addItem = 821; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("1281") && levelReq >= 34) { // Sword (s) - XP = 50; - addItem = 1281; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("1539") && levelReq >= 34) { // Nails - XP = 50; - addItem = 1539; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("41") && levelReq >= 35) { // Arrow tips - XP = 50; - addItem = 41; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("1325") && levelReq >= 35) {// Scim - XP = 75; - addItem = 1325; - removeAmount = 2; - makeTimes = amountToMake; - } else if (type.equals("2370") && levelReq >= 36) {// Studs - XP = 37; - addItem = 2370; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("1295") && levelReq >= 36) { // Longsword - XP = 75; - addItem = 1295; - removeAmount = 2; - makeTimes = amountToMake; - } else if (type.equals("865") && levelReq >= 37) { // Knives - XP = 50; - addItem = 865; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("1157") && levelReq >= 37) { // Full Helm - XP = 75; - addItem = 1157; - removeAmount = 2; - makeTimes = amountToMake; - } else if (type.equals("1177") && levelReq >= 38) { // Square shield - XP = 75; - addItem = 1177; - removeAmount = 2; - makeTimes = amountToMake; - } else if (type.equals("1339") && levelReq >= 39) { // Warhammer - XP = 113; - addItem = 1339; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1365") && levelReq >= 40) { // Battle axe - XP = 113; - addItem = 1365; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1105") && levelReq >= 41) { // Chain - XP = 113; - addItem = 1105; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1193") && levelReq >= 42) { // Kite - XP = 113; - addItem = 1193; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("3097") && levelReq >= 43) { // claws - XP = 75; - addItem = 3097; - removeAmount = 2; - makeTimes = amountToMake; - } else if (type.equals("1311") && levelReq >= 44) { // 2h Sword - XP = 113; - addItem = 1311; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1069") && levelReq >= 46) { // Platelegs - XP = 113; - addItem = 1069; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1083") && levelReq >= 46) { // PlateSkirt - XP = 113; - addItem = 1083; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1119") && levelReq >= 48) { // Platebody - XP = 188; - addItem = 1119; - removeAmount = 5; - makeTimes = amountToMake; - } else if (c.playerLevel[c.playerSmithing] < levelReq) { - c.getActionSender().sendMessage( - "You need " + levelReq + " smithing to do this!"); - return; - } - smithItem(c, addItem, removeItem, removeAmount, makeTimes, XP); - } - - private void CheckMith(Client c, int levelReq, int amountToMake, String type) { - removeItem = 2359; - if (type.equalsIgnoreCase("1355") && levelReq >= 51) { // Axe - XP = 50; - addItem = 1355; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equalsIgnoreCase("1209") && levelReq >= 50) { // Dagger - XP = 50; - addItem = 1209; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("1428") && levelReq >= 52) { // Mace - XP = 50; - addItem = 1428; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("1143") && levelReq >= 53) {// Med helm - XP = 50; - addItem = 1143; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("822") && levelReq >= 54) { // Dart tips - XP = 50; - addItem = 822; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("1285") && levelReq >= 54) { // Sword (s) - XP = 50; - addItem = 1285; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("4822") && levelReq >= 54) { // Nails - XP = 50; - addItem = 4822; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("42") && levelReq >= 55) { // Arrow tips - XP = 50; - addItem = 42; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("1329") && levelReq >= 55) {// Scim - XP = 100; - addItem = 1329; - removeAmount = 2; - makeTimes = amountToMake; - } else if (type.equals("1299") && levelReq >= 56) { // Longsword - XP = 100; - addItem = 1299; - removeAmount = 2; - makeTimes = amountToMake; - } else if (type.equals("866") && levelReq >= 57) { // Knives - XP = 50; - addItem = 866; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("1159") && levelReq >= 57) { // Full Helm - XP = 100; - addItem = 1159; - removeAmount = 2; - makeTimes = amountToMake; - } else if (type.equals("1181") && levelReq >= 58) { // Square shield - XP = 100; - addItem = 1181; - removeAmount = 2; - makeTimes = amountToMake; - } else if (type.equals("1343") && levelReq >= 59) { // Warhammer - XP = 150; - addItem = 1343; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1369") && levelReq >= 60) { // Battle axe - XP = 150; - addItem = 1369; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1109") && levelReq >= 61) { // Chain - XP = 150; - addItem = 1109; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1197") && levelReq >= 62) { // Kite - XP = 150; - addItem = 1197; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("3099") && levelReq >= 63) { // claws - XP = 100; - addItem = 3099; - removeAmount = 2; - makeTimes = amountToMake; - } else if (type.equals("1315") && levelReq >= 64) { // 2h Sword - XP = 150; - addItem = 1315; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1071") && levelReq >= 66) { // Platelegs - XP = 150; - addItem = 1071; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1085") && levelReq >= 66) { // PlateSkirt - XP = 150; - addItem = 1085; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1121") && levelReq >= 68) { // Platebody - XP = 250; - addItem = 1121; - removeAmount = 5; - makeTimes = amountToMake; - } else if (c.playerLevel[c.playerSmithing] < levelReq) { - c.getActionSender().sendMessage( - "You need " + levelReq + " smithing to do this!"); - return; - } - smithItem(c, addItem, removeItem, removeAmount, makeTimes, XP); - } - - private void CheckAddy(Client c, int levelReq, int amountToMake, String type) { - removeItem = 2361; - if (type.equalsIgnoreCase("1357") && levelReq >= 71) { // Axe - XP = 63; - addItem = 1357; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equalsIgnoreCase("1211") && levelReq >= 70) { // Dagger - XP = 63; - addItem = 1211; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("1430") && levelReq >= 72) { // Mace - XP = 63; - addItem = 1430; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("1145") && levelReq >= 73) { // Med helm - XP = 63; - addItem = 1145; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("823") && levelReq >= 74) { // Dart tips - XP = 63; - addItem = 823; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("1287") && levelReq >= 74) { // Sword (s) - XP = 63; - addItem = 1287; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("4823") && levelReq >= 74) { // Nails - XP = 63; - addItem = 4823; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("43") && levelReq >= 75) { // Arrow tips - XP = 63; - addItem = 43; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("1331") && levelReq >= 75) {// Scim - XP = 125; - addItem = 1331; - removeAmount = 2; - makeTimes = amountToMake; - } else if (type.equals("1301") && levelReq >= 76) { // Longsword - XP = 125; - addItem = 1301; - removeAmount = 2; - makeTimes = amountToMake; - } else if (type.equals("867") && levelReq >= 77) { // Knives - XP = 63; - addItem = 867; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("1161") && levelReq >= 77) { // Full Helm - XP = 125; - addItem = 1161; - removeAmount = 2; - makeTimes = amountToMake; - } else if (type.equals("1183") && levelReq >= 78) { // Square shield - XP = 125; - addItem = 1183; - removeAmount = 2; - makeTimes = amountToMake; - } else if (type.equals("1345") && levelReq >= 79) { // Warhammer - XP = 188; - addItem = 1345; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1371") && levelReq >= 80) { // Battle axe - XP = 188; - addItem = 1371; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1111") && levelReq >= 81) { // Chain - XP = 188; - addItem = 1111; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1199") && levelReq >= 82) { // Kite - XP = 188; - addItem = 1199; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("3100") && levelReq >= 83) { // claws - XP = 125; - addItem = 3100; - removeAmount = 2; - makeTimes = amountToMake; - } else if (type.equals("1317") && levelReq >= 84) { // 2h Sword - XP = 188; - addItem = 1317; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1073") && levelReq >= 86) { // Platelegs - XP = 188; - addItem = 1073; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1091") && levelReq >= 86) { // PlateSkirt - XP = 188; - addItem = 1091; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1123") && levelReq >= 88) { // Platebody - XP = 313; - addItem = 1123; - removeAmount = 5; - makeTimes = amountToMake; - } else if (c.playerLevel[c.playerSmithing] < levelReq) { - c.getActionSender().sendMessage( - "You need " + levelReq + " smithing to do this!"); - return; - } - smithItem(c, addItem, removeItem, removeAmount, makeTimes, XP); - } - - private void CheckRune(Client c, int levelReq, int amountToMake, String type) { - removeItem = 2363; - if (type.equalsIgnoreCase("1359") && levelReq >= 86) { // Axe - XP = 75; - addItem = 1359; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equalsIgnoreCase("1213") && levelReq >= 85) { // Dagger - XP = 75; - addItem = 1213; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("1432") && levelReq >= 87) { // Mace - XP = 75; - addItem = 1432; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("1147") && levelReq >= 88) { // Med helm - XP = 75; - addItem = 1147; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("824") && levelReq >= 89) { // Dart tips - XP = 75; - addItem = 824; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("1289") && levelReq >= 89) { // Sword (s) - XP = 75; - addItem = 1289; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("4824") && levelReq >= 89) { // Nails - XP = 75; - addItem = 4824; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("44") && levelReq >= 90) { // Arrow tips - XP = 75; - addItem = 44; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("1333") && levelReq >= 90) {// Scim - XP = 150; - addItem = 1333; - removeAmount = 2; - makeTimes = amountToMake; - } else if (type.equals("1303") && levelReq >= 91) { // Longsword - XP = 150; - addItem = 1303; - removeAmount = 2; - makeTimes = amountToMake; - } else if (type.equals("868") && levelReq >= 92) { // Knives - XP = 75; - addItem = 868; - removeAmount = 1; - makeTimes = amountToMake; - } else if (type.equals("1163") && levelReq >= 92) { // Full Helm - XP = 150; - addItem = 1163; - removeAmount = 2; - makeTimes = amountToMake; - } else if (type.equals("1185") && levelReq >= 93) { // Square shield - XP = 150; - addItem = 1185; - removeAmount = 2; - makeTimes = amountToMake; - } else if (type.equals("1347") && levelReq >= 94) { // Warhammer - XP = 225; - addItem = 1347; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1373") && levelReq >= 95) { // Battle axe - XP = 225; - addItem = 1373; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1113") && levelReq >= 96) { // Chain - XP = 225; - addItem = 1113; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1201") && levelReq >= 97) { // Kite - XP = 225; - addItem = 1201; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1319") && levelReq >= 99) { // 2h Sword - XP = 225; - addItem = 1319; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1079") && levelReq >= 99) { // Platelegs - XP = 225; - addItem = 1079; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("3101") && levelReq >= 98) { // claws - XP = 150; - addItem = 3101; - removeAmount = 2; - makeTimes = amountToMake; - } else if (type.equals("1093") && levelReq >= 99) { // PlateSkirt - XP = 225; - addItem = 1093; - removeAmount = 3; - makeTimes = amountToMake; - } else if (type.equals("1127") && levelReq >= 99) { // Platebody - XP = 313; - addItem = 1127; - removeAmount = 5; - makeTimes = amountToMake; - } else if (c.playerLevel[c.playerSmithing] < levelReq) { - c.getActionSender().sendMessage( - "You need " + levelReq + " smithing to do this!"); - return; - } - smithItem(c, addItem, removeItem, removeAmount, makeTimes, XP); - } - - /*public boolean smithItem(final Client c, final int addItem, final int removeItem, final int removeItem2, int timesToMake, final int XP) { - final int makeTimes = timesToMake; - c.isSmithing = true; - c.startAnimation(898); - final String name = ItemAssistant.getItemName(addItem); - CycleEventHandler.getSingleton().addEvent(this, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (!c.getItemAssistant().playerHasItem(removeItem, removeItem2)) { - container.stop(); - } - if (makeTimes == 0 || c.isSmithing == false) { - container.stop(); - } - c.getItemAssistant().deleteItem2(removeItem, removeItem2); - c.getPlayerAssistant().addSkillXP(XP, c.playerSmithing); - c.getPlayerAssistant().refreshSkill(c.playerSmithing); - makeTimes--; - c.getActionSender().sendSound(468, 100, 0); - if (ItemAssistant.getItemName(addItem).contains("bolt")) { - c.getItemAssistant().addItem(addItem, 10); - } else if (ItemAssistant.getItemName(addItem).contains("tip") && !ItemAssistant.getItemName(addItem).contains("dart tip")) { - c.getItemAssistant().addItem(addItem, 15); - } else if (ItemAssistant.getItemName(addItem).contains("dart tip")) { - c.getItemAssistant().addItem(addItem, 10); - } else if (ItemAssistant.getItemName(addItem).contains("nail")) { - c.getItemAssistant().addItem(addItem, 15); - } else if (ItemAssistant.getItemName(addItem).contains("arrow")) { - c.getItemAssistant().addItem(addItem, 15); - } else if (ItemAssistant.getItemName(addItem).contains("knife")) { - c.getItemAssistant().addItem(addItem, 5); - } else if (ItemAssistant.getItemName(addItem).contains("cannon")) { - c.getItemAssistant().addItem(addItem, 4); - } else { - c.getItemAssistant().addItem(addItem, 1); - } - } - - @Override - public void stop() { - // TODO Auto-generated method stub - } - }, 1); - if (makeTimes > 1 && c.getItemAssistant().playerHasItem(removeItem, removeItem2 * 2) && !name.contains("claws") && !name.contains("nails") && !name.contains("dart tip") && !name.contains("tip") && !name.contains("platelegs")) { - c.getActionSender().sendMessage("You make some " + ItemAssistant.getItemName(addItem) + "s."); - } else if (makeTimes > 1 && c.getItemAssistant().playerHasItem(removeItem, removeItem2 * 2) && name.contains("claws") || name.contains("nails") || name.contains("dart tip") || name.contains("tip") || name.contains("platelegs")) { - c.getActionSender().sendMessage("You make some " + ItemAssistant.getItemName(addItem) + "."); - } else { - c.getActionSender().sendMessage("You hammer out a " + ItemAssistant.getItemName(addItem) + "."); - } - return true; - }*/ - - public boolean smithItem(Client c, int addItem, int removeItem, - int removeItem2, int timesToMake, int XP) { - int makeTimes = timesToMake; - c.getPlayerAssistant().closeAllWindows(); - if (c.playerRights == 3) { - c.getActionSender().sendMessage( - "Your smithing is now set to true."); - } - c.isSmithing = true; - String name = ItemAssistant.getItemName(addItem); - if (c.getItemAssistant().playerHasItem(removeItem, removeItem2)) { - c.startAnimation(898); - if (makeTimes > 1 && c.getItemAssistant().playerHasItem(removeItem, removeItem2 * 2) && !name.contains("claws") && !name.contains("nails") && !name.contains("dart tip") && !name.contains("tip") && !name.contains("platelegs")) { - c.getActionSender().sendMessage("You make some " + ItemAssistant.getItemName(addItem) + "s."); - } else if (makeTimes > 1 && c.getItemAssistant().playerHasItem(removeItem, removeItem2 * 2) && name.contains("claws") || name.contains("nails") || name.contains("dart tip") || name.contains("tip") || name.contains("platelegs")) { - c.getActionSender().sendMessage("You make some " + ItemAssistant.getItemName(addItem) + "."); - } else { - c.getActionSender().sendMessage("You hammer out a " + ItemAssistant.getItemName(addItem) + "."); - } - while (makeTimes > 0 && c.isSmithing == true) { - if (c.getItemAssistant().playerHasItem(removeItem, removeItem2)) { - c.getItemAssistant().deleteItem(removeItem, removeItem2); - if (ItemAssistant.getItemName(addItem).contains("bolt")) { - c.getItemAssistant().addItem(addItem, 10); - } else if (ItemAssistant.getItemName(addItem).contains("tip") && !ItemAssistant.getItemName(addItem).contains("dart tip")) { - c.getItemAssistant().addItem(addItem, 15); - } else if (ItemAssistant.getItemName(addItem).contains("dart tip")) { - c.getItemAssistant().addItem(addItem, 10); - } else if (ItemAssistant.getItemName(addItem).contains("nail")) { - c.getItemAssistant().addItem(addItem, 15); - } else if (ItemAssistant.getItemName(addItem).contains("arrow")) { - c.getItemAssistant().addItem(addItem, 15); - } else if (ItemAssistant.getItemName(addItem).contains("knife")) { - c.getItemAssistant().addItem(addItem, 5); - } else if (ItemAssistant.getItemName(addItem).contains("cannon")) { - c.getItemAssistant().addItem(addItem, 4); - } else { - c.getItemAssistant().addItem(addItem, 1); - } - c.getPlayerAssistant().addSkillXP(XP, c.playerSmithing); - c.getPlayerAssistant().refreshSkill(c.playerSmithing); - makeTimes--; - c.getActionSender().sendSound(468, 100, 0); - } else { - if (c.playerRights == 3) { - c.getActionSender().sendMessage("Smithing set to false, ran out of bars."); - } - c.isSmithing = false; - break; - } - } - } else { - c.getActionSender().sendMessage("You don't have enough bars to make this item!"); - if (c.playerRights == 3) { - c.getActionSender().sendMessage("Smithing set to false, doesn't have enough bars."); - } - c.isSmithing = false; - return false; - } - return true; - } -} +package com.rebotted.game.content.skills.smithing; + +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Player; + +/** + * Cleaned by Andrew + * @author Andrew (Mr Extremez) + */ + +public class Smithing { + + private int addItem, XP, removeItem, removeAmount, makeTimes; + + public void readInput(int levelReq, String type, Player player, int amountToMake) { + if (ItemAssistant.getItemName(Integer.parseInt(type)).contains("Bronze")) { + checkBronze(player, levelReq, amountToMake, type); + } else if (ItemAssistant.getItemName(Integer.parseInt(type)).contains("Iron")) { + checkIron(player, levelReq, amountToMake, type); + } else if (ItemAssistant.getItemName(Integer.parseInt(type)).contains("Steel")) { + checkSteel(player, levelReq, amountToMake, type); + } else if (ItemAssistant.getItemName(Integer.parseInt(type)).contains("Mith")) { + checkMith(player, levelReq, amountToMake, type); + } else if (ItemAssistant.getItemName(Integer.parseInt(type)).contains("Adam") || ItemAssistant.getItemName(Integer.parseInt(type)).contains("Addy")) { + checkAddy(player, levelReq, amountToMake, type); + } else if (ItemAssistant.getItemName(Integer.parseInt(type)).contains("Rune") || ItemAssistant.getItemName(Integer.parseInt(type)).contains("Runite")) { + checkRune(player, levelReq, amountToMake, type); + } + if (player.playerRights > 1) { + player.getPacketSender().sendMessage("You made item id: " + type + "."); + } + } + + private void checkBronze(Player player, int levelReq, int amountToMake, String type) { + if (player.tutorialProgress == 20 && !type.equalsIgnoreCase("1205")) { + player.getDialogueHandler().sendStatement("You can only make a bronze dagger on this step."); + player.nextChat = 0; + return; + } + if (type.equalsIgnoreCase("1351") && levelReq >= 1) { + XP = 13; + addItem = 1351; + removeItem = 2349; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equalsIgnoreCase("1205") && levelReq >= 1 && player.tutorialProgress > 20) { + XP = 13; + addItem = 1205; + removeItem = 2349; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equalsIgnoreCase("1205") && levelReq >= 1 && player.tutorialProgress == 20) { + XP = 13; + addItem = 1205; + removeItem = 2349; + removeAmount = 1; + makeTimes = amountToMake; + player.getDialogueHandler().sendDialogues(3066, -1); + } else if (type.equals("1422") && levelReq >= 2) { + XP = 13; + addItem = 1422; + removeItem = 2349; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("1139") && levelReq >= 3) { + XP = 13; + addItem = 1139; + removeItem = 2349; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("819") && levelReq >= 4) { + XP = 13; + addItem = 819; + removeItem = 2349; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("1277") && levelReq >= 4) { + XP = 13; + addItem = 1277; + removeItem = 2349; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("4819") && levelReq >= 4) { + XP = 13; + addItem = 4819; + removeItem = 2349; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("39") && levelReq >= 5) { + XP = 13; + addItem = 39; + removeItem = 2349; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("1321") && levelReq >= 5) { + XP = 25; + addItem = 1321; + removeItem = 2349; + removeAmount = 2; + makeTimes = amountToMake; + } else if (type.equals("1291") && levelReq >= 6) { + XP = 25; + addItem = 1291; + removeItem = 2349; + removeAmount = 2; + makeTimes = amountToMake; + } else if (type.equals("864") && levelReq >= 7) { + XP = 25; + addItem = 864; + removeItem = 2349; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("1155") && levelReq >= 7) { + XP = 25; + addItem = 1155; + removeItem = 2349; + removeAmount = 2; + makeTimes = amountToMake; + } else if (type.equals("1173") && levelReq >= 8) { + XP = 25; + addItem = 1173; + removeItem = 2349; + removeAmount = 2; + makeTimes = amountToMake; + } else if (type.equals("3095") && levelReq >= 8) { // claws + XP = 25; + addItem = 3095; + removeAmount = 2; + makeTimes = amountToMake; + } else if (type.equals("1337") && levelReq >= 9) { + XP = 38; + addItem = 1337; + removeItem = 2349; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1375") && levelReq >= 10) { + XP = 38; + addItem = 1375; + removeItem = 2349; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1103") && levelReq >= 11) { + XP = 38; + addItem = 1103; + removeItem = 2349; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1189") && levelReq >= 12) { + XP = 38; + addItem = 1189; + removeItem = 2349; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1307") && levelReq >= 14) { + XP = 38; + addItem = 1307; + removeItem = 2349; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1075") && levelReq >= 16) { + XP = 38; + addItem = 1075; + removeItem = 2349; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1087") && levelReq >= 16) { + XP = 38; + addItem = 1087; + removeItem = 2349; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1117") && levelReq >= 18) { + XP = 63; + addItem = 1117; + removeItem = 2349; + removeAmount = 5; + makeTimes = amountToMake; + } else if (player.playerLevel[player.playerSmithing] < levelReq) { + player.getPacketSender().sendMessage("You need " + levelReq + " smithing to do this!"); + return; + } + smithItem(player, addItem, removeItem, removeAmount, makeTimes, XP); + } + + private void checkIron(Player c, int levelReq, int amountToMake, String type) { + removeItem = 2351; + if (type.equalsIgnoreCase("1349") && levelReq >= 16) { // Axe + XP = 25; + addItem = 1349; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equalsIgnoreCase("1203") && levelReq >= 15) { // Dagger + XP = 25; + addItem = 1203; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("1420") && levelReq >= 17) { // Mace + XP = 25; + addItem = 1420; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("1137") && levelReq >= 18) { // Med helm + XP = 25; + addItem = 1137; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("820") && levelReq >= 19) { // Dart tips + XP = 25; + addItem = 820; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("1279") && levelReq >= 19) { // Sword (s) + XP = 25; + addItem = 1279; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("4820") && levelReq >= 19) { // Nails + XP = 25; + addItem = 4820; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("40") && levelReq >= 20) { // Arrow tips + XP = 25; + addItem = 40; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("1323") && levelReq >= 20) {// Scim + XP = 50; + addItem = 1323; + removeAmount = 2; + makeTimes = amountToMake; + } else if (type.equals("1293") && levelReq >= 21) { // Longsword + XP = 50; + addItem = 1293; + removeAmount = 2; + makeTimes = amountToMake; + } else if (type.equals("863") && levelReq >= 22) { // Knives + XP = 25; + addItem = 863; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("1153") && levelReq >= 22) { // Full Helm + XP = 50; + addItem = 1153; + removeAmount = 2; + makeTimes = amountToMake; + } else if (type.equals("1175") && levelReq >= 23) { // Square shield + XP = 50; + addItem = 1175; + removeAmount = 2; + makeTimes = amountToMake; + } else if (type.equals("1335") && levelReq >= 24) { // Warhammer + XP = 38; + addItem = 1335; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1363") && levelReq >= 25) { // Battle axe + XP = 75; + addItem = 1363; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1101") && levelReq >= 26) { // Chain + XP = 75; + addItem = 1101; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("4540") && levelReq >= 26) { // lantern + XP = 25; + addItem = 4540; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("1191") && levelReq >= 27) { // Kite + XP = 75; + addItem = 1191; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("3096") && levelReq >= 28) { // claws + XP = 50; + addItem = 3096; + removeAmount = 2; + makeTimes = amountToMake; + } else if (type.equals("1309") && levelReq >= 29) { // 2h Sword + XP = 75; + addItem = 1309; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1067") && levelReq >= 31) { // Platelegs + XP = 75; + addItem = 1067; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1081") && levelReq >= 31) { // PlateSkirt + XP = 75; + addItem = 1081; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1115") && levelReq >= 33) { // Platebody + XP = 125; + addItem = 1115; + removeAmount = 5; + makeTimes = amountToMake; + } else if (c.playerLevel[c.playerSmithing] < levelReq) { + c.getPacketSender().sendMessage("You need " + levelReq + " smithing to do this!"); + return; + } + + smithItem(c, addItem, removeItem, removeAmount, makeTimes, XP); + + } + + private void checkSteel(Player c, int levelReq, int amountToMake, String type) { + removeItem = 2353; + if (type.equalsIgnoreCase("1353") && levelReq >= 31) { // Axe + XP = 38; + addItem = 1353; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equalsIgnoreCase("1207") && levelReq >= 30) { // Dagger + XP = 50; + addItem = 1207; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("1424") && levelReq >= 32) { // Mace + XP = 50; + addItem = 1424; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("1141") && levelReq >= 33) { // Med helm + XP = 50; + addItem = 1141; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("821") && levelReq >= 34) { // Dart tips + XP = 50; + addItem = 821; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("1281") && levelReq >= 34) { // Sword (s) + XP = 50; + addItem = 1281; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("1539") && levelReq >= 34) { // Nails + XP = 50; + addItem = 1539; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("41") && levelReq >= 35) { // Arrow tips + XP = 50; + addItem = 41; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("1325") && levelReq >= 35) {// Scim + XP = 75; + addItem = 1325; + removeAmount = 2; + makeTimes = amountToMake; + } else if (type.equals("2370") && levelReq >= 36) {// Studs + XP = 37; + addItem = 2370; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("1295") && levelReq >= 36) { // Longsword + XP = 75; + addItem = 1295; + removeAmount = 2; + makeTimes = amountToMake; + } else if (type.equals("865") && levelReq >= 37) { // Knives + XP = 50; + addItem = 865; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("1157") && levelReq >= 37) { // Full Helm + XP = 75; + addItem = 1157; + removeAmount = 2; + makeTimes = amountToMake; + } else if (type.equals("1177") && levelReq >= 38) { // Square shield + XP = 75; + addItem = 1177; + removeAmount = 2; + makeTimes = amountToMake; + } else if (type.equals("1339") && levelReq >= 39) { // Warhammer + XP = 113; + addItem = 1339; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1365") && levelReq >= 40) { // Battle axe + XP = 113; + addItem = 1365; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1105") && levelReq >= 41) { // Chain + XP = 113; + addItem = 1105; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1193") && levelReq >= 42) { // Kite + XP = 113; + addItem = 1193; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("3097") && levelReq >= 43) { // claws + XP = 75; + addItem = 3097; + removeAmount = 2; + makeTimes = amountToMake; + } else if (type.equals("1311") && levelReq >= 44) { // 2h Sword + XP = 113; + addItem = 1311; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1069") && levelReq >= 46) { // Platelegs + XP = 113; + addItem = 1069; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1083") && levelReq >= 46) { // PlateSkirt + XP = 113; + addItem = 1083; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1119") && levelReq >= 48) { // Platebody + XP = 188; + addItem = 1119; + removeAmount = 5; + makeTimes = amountToMake; + } else if (c.playerLevel[c.playerSmithing] < levelReq) { + c.getPacketSender().sendMessage( + "You need " + levelReq + " smithing to do this!"); + return; + } + smithItem(c, addItem, removeItem, removeAmount, makeTimes, XP); + } + + private void checkMith(Player c, int levelReq, int amountToMake, String type) { + removeItem = 2359; + if (type.equalsIgnoreCase("1355") && levelReq >= 51) { // Axe + XP = 50; + addItem = 1355; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equalsIgnoreCase("1209") && levelReq >= 50) { // Dagger + XP = 50; + addItem = 1209; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("1428") && levelReq >= 52) { // Mace + XP = 50; + addItem = 1428; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("1143") && levelReq >= 53) {// Med helm + XP = 50; + addItem = 1143; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("822") && levelReq >= 54) { // Dart tips + XP = 50; + addItem = 822; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("1285") && levelReq >= 54) { // Sword (s) + XP = 50; + addItem = 1285; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("4822") && levelReq >= 54) { // Nails + XP = 50; + addItem = 4822; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("42") && levelReq >= 55) { // Arrow tips + XP = 50; + addItem = 42; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("1329") && levelReq >= 55) {// Scim + XP = 100; + addItem = 1329; + removeAmount = 2; + makeTimes = amountToMake; + } else if (type.equals("1299") && levelReq >= 56) { // Longsword + XP = 100; + addItem = 1299; + removeAmount = 2; + makeTimes = amountToMake; + } else if (type.equals("866") && levelReq >= 57) { // Knives + XP = 50; + addItem = 866; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("1159") && levelReq >= 57) { // Full Helm + XP = 100; + addItem = 1159; + removeAmount = 2; + makeTimes = amountToMake; + } else if (type.equals("1181") && levelReq >= 58) { // Square shield + XP = 100; + addItem = 1181; + removeAmount = 2; + makeTimes = amountToMake; + } else if (type.equals("1343") && levelReq >= 59) { // Warhammer + XP = 150; + addItem = 1343; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1369") && levelReq >= 60) { // Battle axe + XP = 150; + addItem = 1369; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1109") && levelReq >= 61) { // Chain + XP = 150; + addItem = 1109; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1197") && levelReq >= 62) { // Kite + XP = 150; + addItem = 1197; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("3099") && levelReq >= 63) { // claws + XP = 100; + addItem = 3099; + removeAmount = 2; + makeTimes = amountToMake; + } else if (type.equals("1315") && levelReq >= 64) { // 2h Sword + XP = 150; + addItem = 1315; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1071") && levelReq >= 66) { // Platelegs + XP = 150; + addItem = 1071; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1085") && levelReq >= 66) { // PlateSkirt + XP = 150; + addItem = 1085; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1121") && levelReq >= 68) { // Platebody + XP = 250; + addItem = 1121; + removeAmount = 5; + makeTimes = amountToMake; + } else if (c.playerLevel[c.playerSmithing] < levelReq) { + c.getPacketSender().sendMessage("You need " + levelReq + " smithing to do this!"); + return; + } + smithItem(c, addItem, removeItem, removeAmount, makeTimes, XP); + } + + private void checkAddy(Player c, int levelReq, int amountToMake, String type) { + removeItem = 2361; + if (type.equalsIgnoreCase("1357") && levelReq >= 71) { // Axe + XP = 63; + addItem = 1357; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equalsIgnoreCase("1211") && levelReq >= 70) { // Dagger + XP = 63; + addItem = 1211; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("1430") && levelReq >= 72) { // Mace + XP = 63; + addItem = 1430; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("1145") && levelReq >= 73) { // Med helm + XP = 63; + addItem = 1145; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("823") && levelReq >= 74) { // Dart tips + XP = 63; + addItem = 823; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("1287") && levelReq >= 74) { // Sword (s) + XP = 63; + addItem = 1287; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("4823") && levelReq >= 74) { // Nails + XP = 63; + addItem = 4823; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("43") && levelReq >= 75) { // Arrow tips + XP = 63; + addItem = 43; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("1331") && levelReq >= 75) {// Scim + XP = 125; + addItem = 1331; + removeAmount = 2; + makeTimes = amountToMake; + } else if (type.equals("1301") && levelReq >= 76) { // Longsword + XP = 125; + addItem = 1301; + removeAmount = 2; + makeTimes = amountToMake; + } else if (type.equals("867") && levelReq >= 77) { // Knives + XP = 63; + addItem = 867; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("1161") && levelReq >= 77) { // Full Helm + XP = 125; + addItem = 1161; + removeAmount = 2; + makeTimes = amountToMake; + } else if (type.equals("1183") && levelReq >= 78) { // Square shield + XP = 125; + addItem = 1183; + removeAmount = 2; + makeTimes = amountToMake; + } else if (type.equals("1345") && levelReq >= 79) { // Warhammer + XP = 188; + addItem = 1345; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1371") && levelReq >= 80) { // Battle axe + XP = 188; + addItem = 1371; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1111") && levelReq >= 81) { // Chain + XP = 188; + addItem = 1111; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1199") && levelReq >= 82) { // Kite + XP = 188; + addItem = 1199; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("3100") && levelReq >= 83) { // claws + XP = 125; + addItem = 3100; + removeAmount = 2; + makeTimes = amountToMake; + } else if (type.equals("1317") && levelReq >= 84) { // 2h Sword + XP = 188; + addItem = 1317; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1073") && levelReq >= 86) { // Platelegs + XP = 188; + addItem = 1073; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1091") && levelReq >= 86) { // PlateSkirt + XP = 188; + addItem = 1091; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1123") && levelReq >= 88) { // Platebody + XP = 313; + addItem = 1123; + removeAmount = 5; + makeTimes = amountToMake; + } else if (c.playerLevel[c.playerSmithing] < levelReq) { + c.getPacketSender().sendMessage("You need " + levelReq + " smithing to do this!"); + return; + } + smithItem(c, addItem, removeItem, removeAmount, makeTimes, XP); + } + + private void checkRune(Player c, int levelReq, int amountToMake, String type) { + removeItem = 2363; + if (type.equalsIgnoreCase("1359") && levelReq >= 86) { // Axe + XP = 75; + addItem = 1359; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equalsIgnoreCase("1213") && levelReq >= 85) { // Dagger + XP = 75; + addItem = 1213; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("1432") && levelReq >= 87) { // Mace + XP = 75; + addItem = 1432; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("1147") && levelReq >= 88) { // Med helm + XP = 75; + addItem = 1147; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("824") && levelReq >= 89) { // Dart tips + XP = 75; + addItem = 824; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("1289") && levelReq >= 89) { // Sword (s) + XP = 75; + addItem = 1289; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("4824") && levelReq >= 89) { // Nails + XP = 75; + addItem = 4824; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("44") && levelReq >= 90) { // Arrow tips + XP = 75; + addItem = 44; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("1333") && levelReq >= 90) {// Scim + XP = 150; + addItem = 1333; + removeAmount = 2; + makeTimes = amountToMake; + } else if (type.equals("1303") && levelReq >= 91) { // Longsword + XP = 150; + addItem = 1303; + removeAmount = 2; + makeTimes = amountToMake; + } else if (type.equals("868") && levelReq >= 92) { // Knives + XP = 75; + addItem = 868; + removeAmount = 1; + makeTimes = amountToMake; + } else if (type.equals("1163") && levelReq >= 92) { // Full Helm + XP = 150; + addItem = 1163; + removeAmount = 2; + makeTimes = amountToMake; + } else if (type.equals("1185") && levelReq >= 93) { // Square shield + XP = 150; + addItem = 1185; + removeAmount = 2; + makeTimes = amountToMake; + } else if (type.equals("1347") && levelReq >= 94) { // Warhammer + XP = 225; + addItem = 1347; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1373") && levelReq >= 95) { // Battle axe + XP = 225; + addItem = 1373; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1113") && levelReq >= 96) { // Chain + XP = 225; + addItem = 1113; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1201") && levelReq >= 97) { // Kite + XP = 225; + addItem = 1201; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1319") && levelReq >= 99) { // 2h Sword + XP = 225; + addItem = 1319; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1079") && levelReq >= 99) { // Platelegs + XP = 225; + addItem = 1079; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("3101") && levelReq >= 98) { // claws + XP = 150; + addItem = 3101; + removeAmount = 2; + makeTimes = amountToMake; + } else if (type.equals("1093") && levelReq >= 99) { // PlateSkirt + XP = 225; + addItem = 1093; + removeAmount = 3; + makeTimes = amountToMake; + } else if (type.equals("1127") && levelReq >= 99) { // Platebody + XP = 313; + addItem = 1127; + removeAmount = 5; + makeTimes = amountToMake; + } else if (c.playerLevel[c.playerSmithing] < levelReq) { + c.getPacketSender().sendMessage("You need " + levelReq + " smithing to do this!"); + return; + } + smithItem(c, addItem, removeItem, removeAmount, makeTimes, XP); + } + + public boolean smithItem(Player c, int addItem, int removeItem, + int removeItem2, int timesToMake, int XP) { + int makeTimes = timesToMake; + c.getPacketSender().closeAllWindows(); + c.isSmithing = true; + String name = ItemAssistant.getItemName(addItem); + if (c.getItemAssistant().playerHasItem(removeItem, removeItem2)) { + c.startAnimation(898); + if (makeTimes > 1 && c.getItemAssistant().playerHasItem(removeItem, removeItem2 * 2) && !name.contains("claws") && !name.contains("nails") && !name.contains("dart tip") && !name.contains("tip") && !name.contains("platelegs")) { + c.getPacketSender().sendMessage("You make some " + ItemAssistant.getItemName(addItem) + "s."); + } else if (makeTimes > 1 && c.getItemAssistant().playerHasItem(removeItem, removeItem2 * 2) && name.contains("claws") || name.contains("nails") || name.contains("dart tip") || name.contains("tip") || name.contains("platelegs")) { + c.getPacketSender().sendMessage("You make some " + ItemAssistant.getItemName(addItem) + "."); + } else { + c.getPacketSender().sendMessage("You hammer out a " + ItemAssistant.getItemName(addItem) + "."); + } + while (makeTimes > 0 && c.isSmithing == true) { + if (c.getItemAssistant().playerHasItem(removeItem, removeItem2)) { + c.getItemAssistant().deleteItem(removeItem, removeItem2); + if (ItemAssistant.getItemName(addItem).contains("bolt")) { + c.getItemAssistant().addItem(addItem, 10); + } else if (ItemAssistant.getItemName(addItem).contains("tip") && !ItemAssistant.getItemName(addItem).contains("dart tip")) { + c.getItemAssistant().addItem(addItem, 15); + } else if (ItemAssistant.getItemName(addItem).contains("dart tip")) { + c.getItemAssistant().addItem(addItem, 10); + } else if (ItemAssistant.getItemName(addItem).contains("nail")) { + c.getItemAssistant().addItem(addItem, 15); + } else if (ItemAssistant.getItemName(addItem).contains("arrow")) { + c.getItemAssistant().addItem(addItem, 15); + } else if (ItemAssistant.getItemName(addItem).contains("knife")) { + c.getItemAssistant().addItem(addItem, 5); + } else if (ItemAssistant.getItemName(addItem).contains("cannon")) { + c.getItemAssistant().addItem(addItem, 4); + } else { + c.getItemAssistant().addItem(addItem, 1); + } + c.getPlayerAssistant().addSkillXP(XP, c.playerSmithing); + c.getPlayerAssistant().refreshSkill(c.playerSmithing); + makeTimes--; + c.getPacketSender().sendSound(468, 100, 0); + } else { + c.isSmithing = false; + break; + } + } + } else { + c.getPacketSender().sendMessage("You don't have enough bars to make this item!"); + c.isSmithing = false; + return false; + } + return true; + } +} diff --git a/2006Redone Server/src/com/rebotted/game/content/skills/smithing/SmithingInterface.java b/2006Redone Server/src/com/rebotted/game/content/skills/smithing/SmithingInterface.java new file mode 100644 index 00000000..60b05bed --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/skills/smithing/SmithingInterface.java @@ -0,0 +1,679 @@ +package com.rebotted.game.content.skills.smithing; + +import com.rebotted.game.players.Player; + +public class SmithingInterface { + + Player c; + + public SmithingInterface(Player player) { + this.c = player; + } + + public void showSmithInterface(int itemId) { + if (itemId == 2349 && c.tutorialProgress == 20) { + c.getPacketSender().chatbox(6180); + c.getDialogueHandler().chatboxText(c, "Now you have the Smithing menu open, you will see a list of all", "the things you can make. Only the dagger can be made at your", "skill level, this is shown by the white text under it. You'll need", "to select the dagger to continue.", "Smithing a dagger"); + c.getPacketSender().chatbox(6179); + makeBronzeInterface(c); + c.isSmithing = true; + } else if (itemId == 2349 && c.tutorialProgress > 20) { + makeBronzeInterface(c); + } else if (itemId == 2351) { + makeIronInterface(c); + } else if (itemId == 2353) { + makeSteelInterface(c); + } else if (itemId == 2359) { + makeMithInterface(c); + } else if (itemId == 2361) { + makeAddyInterface(c); + } else if (itemId == 2363) { + makeRuneInterface(c); + } + } + + private void makeRuneInterface(Player c) { + String fiveb = GetForBars(2363, 5, c); + String threeb = GetForBars(2363, 3, c); + String twob = GetForBars(2363, 2, c); + String oneb = GetForBars(2363, 1, c); + c.getPacketSender().sendFrame126(fiveb + "5 Bars" + fiveb, 1112); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1109); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1110); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1118); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1111); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1095); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1115); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1090); + c.getPacketSender().sendFrame126(twob + "2 Bars" + twob, 1113); + c.getPacketSender().sendFrame126(twob + "2 Bars" + twob, 1116); + c.getPacketSender().sendFrame126(twob + "2 Bars" + twob, 1114); + c.getPacketSender().sendFrame126(twob + "2 Bars" + twob, 1089); + c.getPacketSender().sendFrame126(twob + "2 Bars" + twob, 8428); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1124); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1125); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1126); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1127); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1128); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1129); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1130); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1131); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 13357); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 11459); + c.getPacketSender().sendFrame126( + GetForlvl(88, c) + "Plate Body" + GetForlvl(18, c), 1101); + c.getPacketSender().sendFrame126( + GetForlvl(99, c) + "Plate Legs" + GetForlvl(16, c), 1099); + c.getPacketSender().sendFrame126( + GetForlvl(99, c) + "Plate Skirt" + GetForlvl(16, c), 1100); + c.getPacketSender().sendFrame126( + GetForlvl(99, c) + "2 Hand Sword" + GetForlvl(14, c), 1088); + c.getPacketSender().sendFrame126( + GetForlvl(97, c) + "Kite Shield" + GetForlvl(12, c), 1105); + c.getPacketSender().sendFrame126( + GetForlvl(96, c) + "Chain Body" + GetForlvl(11, c), 1098); + c.getPacketSender().sendFrame126( + GetForlvl(95, c) + "Battle Axe" + GetForlvl(10, c), 1092); + c.getPacketSender().sendFrame126( + GetForlvl(26, c) + "Claws" + GetForlvl(11, c), 8429); // claws + c.getPacketSender().sendFrame126( + GetForlvl(94, c) + "Warhammer" + GetForlvl(9, c), 1083); + c.getPacketSender().sendFrame126( + GetForlvl(93, c) + "Square Shield" + GetForlvl(8, c), 1104); + c.getPacketSender().sendFrame126( + GetForlvl(92, c) + "Full Helm" + GetForlvl(7, c), 1103); + c.getPacketSender().sendFrame126( + GetForlvl(92, c) + "Throwing Knives" + GetForlvl(7, c), 1106); + c.getPacketSender().sendFrame126( + GetForlvl(91, c) + "Long Sword" + GetForlvl(6, c), 1086); + c.getPacketSender().sendFrame126( + GetForlvl(90, c) + "Scimitar" + GetForlvl(5, c), 1087); + c.getPacketSender().sendFrame126( + GetForlvl(90, c) + "Arrowtips" + GetForlvl(5, c), 1108); + c.getPacketSender().sendFrame126( + GetForlvl(89, c) + "Sword" + GetForlvl(4, c), 1085); + c.getPacketSender().sendFrame126( + GetForlvl(89, c) + "Dart Tips" + GetForlvl(4, c), 1107); + c.getPacketSender().sendFrame126( + GetForlvl(89, c) + "Nails" + GetForlvl(4, c), 13358); + c.getPacketSender().sendFrame126( + GetForlvl(88, c) + "Medium Helm" + GetForlvl(3, c), 1102); + c.getPacketSender().sendFrame126( + GetForlvl(87, c) + "Mace" + GetForlvl(2, c), 1093); + c.getPacketSender().sendFrame126( + GetForlvl(85, c) + "Dagger" + GetForlvl(1, c), 1094); + c.getPacketSender().sendFrame126( + GetForlvl(86, c) + "Axe" + GetForlvl(1, c), 1091); + c.getPacketSender().sendFrame34(1213, 0, 1119, 1); // dagger + c.getPacketSender().sendFrame34(1359, 0, 1120, 1); // axe + c.getPacketSender().sendFrame34(1113, 0, 1121, 1); // chain body + c.getPacketSender().sendFrame34(1147, 0, 1122, 1); // med helm + c.getPacketSender().sendFrame34(824, 0, 1123, 10); // Dart Tips + c.getPacketSender().sendFrame34(1289, 1, 1119, 1); // s-sword + c.getPacketSender().sendFrame34(1432, 1, 1120, 1); // mace + c.getPacketSender().sendFrame34(1079, 1, 1121, 1); // platelegs + c.getPacketSender().sendFrame34(1163, 1, 1122, 1); // full helm + c.getPacketSender().sendFrame34(44, 1, 1123, 15); // arrowtips + c.getPacketSender().sendFrame34(1333, 2, 1119, 1); // scimmy + c.getPacketSender().sendFrame34(1347, 2, 1120, 1); // warhammer + c.getPacketSender().sendFrame34(1093, 2, 1121, 1); // plateskirt + c.getPacketSender().sendFrame34(1185, 2, 1122, 1); // Sq. Shield + c.getPacketSender().sendFrame34(868, 2, 1123, 5); // throwing-knives + + c.getPacketSender().sendFrame34(1303, 3, 1119, 1); // longsword + c.getPacketSender().sendFrame34(1373, 3, 1120, 1); // battleaxe + c.getPacketSender().sendFrame34(1127, 3, 1121, 1); // platebody + c.getPacketSender().sendFrame34(1201, 3, 1122, 1); // kiteshield + c.getPacketSender().sendFrame34(1319, 4, 1119, 1); // 2h sword + c.getPacketSender().sendFrame34(3101, 4, 1120, 1); // claws + c.getPacketSender().sendFrame34(4824, 4, 1122, 15); // nails + c.getPacketSender().sendFrame34(-1, 3, 1123, 1); + c.getPacketSender().sendFrame126("", 1135); + c.getPacketSender().sendFrame126("", 1134); + c.getPacketSender().sendFrame126("", 11461); + c.getPacketSender().sendFrame126("", 11459); + c.getPacketSender().sendFrame126("", 1132); + c.getPacketSender().sendFrame126("", 1096); + c.getPacketSender().showInterface(994); + } + + private void makeAddyInterface(Player c) { + String fiveb = GetForBars(2361, 5, c); + String threeb = GetForBars(2361, 3, c); + String twob = GetForBars(2361, 2, c); + String oneb = GetForBars(2361, 1, c); + c.getPacketSender().sendFrame126(fiveb + "5 Bars" + fiveb, 1112); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1109); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1110); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1118); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1111); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1095); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1115); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1090); + c.getPacketSender().sendFrame126(twob + "2 Bars" + twob, 1113); + c.getPacketSender().sendFrame126(twob + "2 Bars" + twob, 1116); + c.getPacketSender().sendFrame126(twob + "2 Bars" + twob, 1114); + c.getPacketSender().sendFrame126(twob + "2 Bars" + twob, 1089); + c.getPacketSender().sendFrame126(twob + "2 Bars" + twob, 8428); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1124); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1125); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1126); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1127); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1128); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1129); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1130); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1131); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 13357); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 11459); + c.getPacketSender().sendFrame126( + GetForlvl(88, c) + "Plate Body" + GetForlvl(18, c), 1101); + c.getPacketSender().sendFrame126( + GetForlvl(86, c) + "Plate Legs" + GetForlvl(16, c), 1099); + c.getPacketSender().sendFrame126( + GetForlvl(86, c) + "Plate Skirt" + GetForlvl(16, c), 1100); + c.getPacketSender().sendFrame126( + GetForlvl(26, c) + "Claws" + GetForlvl(11, c), 8429); // claws + c.getPacketSender().sendFrame126( + GetForlvl(84, c) + "2 Hand Sword" + GetForlvl(14, c), 1088); + c.getPacketSender().sendFrame126( + GetForlvl(82, c) + "Kite Shield" + GetForlvl(12, c), 1105); + c.getPacketSender().sendFrame126( + GetForlvl(81, c) + "Chain Body" + GetForlvl(11, c), 1098); + c.getPacketSender().sendFrame126( + GetForlvl(80, c) + "Battle Axe" + GetForlvl(10, c), 1092); + c.getPacketSender().sendFrame126( + GetForlvl(79, c) + "Warhammer" + GetForlvl(9, c), 1083); + c.getPacketSender().sendFrame126( + GetForlvl(78, c) + "Square Shield" + GetForlvl(8, c), 1104); + c.getPacketSender().sendFrame126( + GetForlvl(77, c) + "Full Helm" + GetForlvl(7, c), 1103); + c.getPacketSender().sendFrame126( + GetForlvl(77, c) + "Throwing Knives" + GetForlvl(7, c), 1106); + c.getPacketSender().sendFrame126( + GetForlvl(76, c) + "Long Sword" + GetForlvl(6, c), 1086); + c.getPacketSender().sendFrame126( + GetForlvl(75, c) + "Scimitar" + GetForlvl(5, c), 1087); + c.getPacketSender().sendFrame126( + GetForlvl(75, c) + "Arrowtips" + GetForlvl(5, c), 1108); + c.getPacketSender().sendFrame126( + GetForlvl(74, c) + "Sword" + GetForlvl(4, c), 1085); + c.getPacketSender().sendFrame126( + GetForlvl(74, c) + "Dart Tips" + GetForlvl(4, c), 1107); + c.getPacketSender().sendFrame126( + GetForlvl(74, c) + "Nails" + GetForlvl(4, c), 13358); + c.getPacketSender().sendFrame126( + GetForlvl(73, c) + "Medium Helm" + GetForlvl(3, c), 1102); + c.getPacketSender().sendFrame126( + GetForlvl(72, c) + "Mace" + GetForlvl(2, c), 1093); + c.getPacketSender().sendFrame126( + GetForlvl(70, c) + "Dagger" + GetForlvl(1, c), 1094); + c.getPacketSender().sendFrame126( + GetForlvl(71, c) + "Axe" + GetForlvl(1, c), 1091); + c.getPacketSender().sendFrame34(1211, 0, 1119, 1); // dagger + c.getPacketSender().sendFrame34(1357, 0, 1120, 1); // axe + c.getPacketSender().sendFrame34(1111, 0, 1121, 1); // chain body + c.getPacketSender().sendFrame34(1145, 0, 1122, 1); // med helm + c.getPacketSender().sendFrame34(823, 0, 1123, 10); // Dart Tips + c.getPacketSender().sendFrame34(1287, 1, 1119, 1); // s-sword + c.getPacketSender().sendFrame34(1430, 1, 1120, 1); // mace + c.getPacketSender().sendFrame34(1073, 1, 1121, 1); // platelegs + c.getPacketSender().sendFrame34(1161, 1, 1122, 1); // full helm + c.getPacketSender().sendFrame34(43, 1, 1123, 15); // arrowtips + c.getPacketSender().sendFrame34(1331, 2, 1119, 1); // scimmy + c.getPacketSender().sendFrame34(1345, 2, 1120, 1); // warhammer + c.getPacketSender().sendFrame34(1091, 2, 1121, 1); // plateskirt + c.getPacketSender().sendFrame34(1183, 2, 1122, 1); // Sq. Shield + c.getPacketSender().sendFrame34(867, 2, 1123, 5); // throwing-knives + c.getPacketSender().sendFrame34(1301, 3, 1119, 1); // longsword + c.getPacketSender().sendFrame34(1371, 3, 1120, 1); // battleaxe + c.getPacketSender().sendFrame34(1123, 3, 1121, 1); // platebody + c.getPacketSender().sendFrame34(1199, 3, 1122, 1); // kiteshield + c.getPacketSender().sendFrame34(1317, 4, 1119, 1); // 2h sword + c.getPacketSender().sendFrame34(3100, 4, 1120, 1); // claws + c.getPacketSender().sendFrame34(4823, 4, 1122, 15); // nails + c.getPacketSender().sendFrame34(-1, 3, 1123, 1); + c.getPacketSender().sendFrame126("", 1135); + c.getPacketSender().sendFrame126("", 1134); + c.getPacketSender().sendFrame126("", 11461); + c.getPacketSender().sendFrame126("", 11459); + c.getPacketSender().sendFrame126("", 1132); + c.getPacketSender().sendFrame126("", 1096); + c.getPacketSender().showInterface(994); + } + + private void makeMithInterface(Player c) { + String fiveb = GetForBars(2359, 5, c); + String threeb = GetForBars(2359, 3, c); + String twob = GetForBars(2359, 2, c); + String oneb = GetForBars(2359, 1, c); + c.getPacketSender().sendFrame126(fiveb + "5 Bars" + fiveb, 1112); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1109); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1110); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1118); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1111); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1095); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1115); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1090); + c.getPacketSender().sendFrame126(twob + "2 Bars" + twob, 1113); + c.getPacketSender().sendFrame126(twob + "2 Bars" + twob, 1116); + c.getPacketSender().sendFrame126(twob + "2 Bars" + twob, 1114); + c.getPacketSender().sendFrame126(twob + "2 Bars" + twob, 1089); + c.getPacketSender().sendFrame126(twob + "2 Bars" + twob, 8428); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1124); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1125); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1126); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1127); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1128); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1129); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1130); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1131); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 13357); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 11459); + c.getPacketSender().sendFrame126( + GetForlvl(68, c) + "Plate Body" + GetForlvl(18, c), 1101); + c.getPacketSender().sendFrame126( + GetForlvl(66, c) + "Plate Legs" + GetForlvl(16, c), 1099); + c.getPacketSender().sendFrame126( + GetForlvl(66, c) + "Plate Skirt" + GetForlvl(16, c), 1100); + c.getPacketSender().sendFrame126( + GetForlvl(64, c) + "2 Hand Sword" + GetForlvl(14, c), 1088); + c.getPacketSender().sendFrame126( + GetForlvl(62, c) + "Kite Shield" + GetForlvl(12, c), 1105); + c.getPacketSender().sendFrame126( + GetForlvl(61, c) + "Chain Body" + GetForlvl(11, c), 1098); + c.getPacketSender().sendFrame126( + GetForlvl(60, c) + "Battle Axe" + GetForlvl(10, c), 1092); + c.getPacketSender().sendFrame126( + GetForlvl(59, c) + "Warhammer" + GetForlvl(9, c), 1083); + c.getPacketSender().sendFrame126( + GetForlvl(58, c) + "Square Shield" + GetForlvl(8, c), 1104); + c.getPacketSender().sendFrame126( + GetForlvl(26, c) + "Claws" + GetForlvl(11, c), 8429); // claws + c.getPacketSender().sendFrame126( + GetForlvl(57, c) + "Full Helm" + GetForlvl(7, c), 1103); + c.getPacketSender().sendFrame126( + GetForlvl(57, c) + "Throwing Knives" + GetForlvl(7, c), 1106); + c.getPacketSender().sendFrame126( + GetForlvl(56, c) + "Long Sword" + GetForlvl(6, c), 1086); + c.getPacketSender().sendFrame126( + GetForlvl(55, c) + "Scimitar" + GetForlvl(5, c), 1087); + c.getPacketSender().sendFrame126( + GetForlvl(55, c) + "Arrowtips" + GetForlvl(5, c), 1108); + c.getPacketSender().sendFrame126( + GetForlvl(54, c) + "Sword" + GetForlvl(4, c), 1085); + c.getPacketSender().sendFrame126( + GetForlvl(54, c) + "Dart Tips" + GetForlvl(4, c), 1107); + c.getPacketSender().sendFrame126( + GetForlvl(54, c) + "Nails" + GetForlvl(4, c), 13358); + c.getPacketSender().sendFrame126( + GetForlvl(53, c) + "Medium Helm" + GetForlvl(3, c), 1102); + c.getPacketSender().sendFrame126( + GetForlvl(52, c) + "Mace" + GetForlvl(2, c), 1093); + c.getPacketSender().sendFrame126( + GetForlvl(50, c) + "Dagger" + GetForlvl(1, c), 1094); + c.getPacketSender().sendFrame126( + GetForlvl(51, c) + "Axe" + GetForlvl(1, c), 1091); + c.getPacketSender().sendFrame34(1209, 0, 1119, 1); // dagger + c.getPacketSender().sendFrame34(1355, 0, 1120, 1); // axe + c.getPacketSender().sendFrame34(1109, 0, 1121, 1); // chain body + c.getPacketSender().sendFrame34(1143, 0, 1122, 1); // med helm + c.getPacketSender().sendFrame34(822, 0, 1123, 10); // Dart Tips + c.getPacketSender().sendFrame34(1285, 1, 1119, 1); // s-sword + c.getPacketSender().sendFrame34(1428, 1, 1120, 1); // mace + c.getPacketSender().sendFrame34(1071, 1, 1121, 1); // platelegs + c.getPacketSender().sendFrame34(1159, 1, 1122, 1); // full helm + c.getPacketSender().sendFrame34(42, 1, 1123, 15); // arrowtips + c.getPacketSender().sendFrame34(1329, 2, 1119, 1); // scimmy + c.getPacketSender().sendFrame34(1343, 2, 1120, 1); // warhammer + c.getPacketSender().sendFrame34(1085, 2, 1121, 1); // plateskirt + c.getPacketSender().sendFrame34(1181, 2, 1122, 1); // Sq. Shield + c.getPacketSender().sendFrame34(866, 2, 1123, 5); // throwing-knives + c.getPacketSender().sendFrame34(1299, 3, 1119, 1); // longsword + c.getPacketSender().sendFrame34(1369, 3, 1120, 1); // battleaxe + c.getPacketSender().sendFrame34(1121, 3, 1121, 1); // platebody + c.getPacketSender().sendFrame34(1197, 3, 1122, 1); // kiteshield + c.getPacketSender().sendFrame34(1315, 4, 1119, 1); // 2h sword + c.getPacketSender().sendFrame34(3099, 4, 1120, 1); // claws + c.getPacketSender().sendFrame34(4822, 4, 1122, 15); // nails + c.getPacketSender().sendFrame34(-1, 3, 1123, 1); + c.getPacketSender().sendFrame126("", 1135); + c.getPacketSender().sendFrame126("", 1134); + c.getPacketSender().sendFrame126("", 11461); + c.getPacketSender().sendFrame126("", 11459); + c.getPacketSender().sendFrame126("", 1132); + c.getPacketSender().sendFrame126("", 1096); + c.getPacketSender().showInterface(994); + } + + private void makeSteelInterface(Player c) { + String fiveb = GetForBars(2353, 5, c); + String threeb = GetForBars(2353, 3, c); + String twob = GetForBars(2353, 2, c); + String oneb = GetForBars(2353, 1, c); + c.getPacketSender().sendFrame126(fiveb + "5 Bars" + fiveb, 1112); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1109); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1110); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1118); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1111); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1095); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1115); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1090); + c.getPacketSender().sendFrame126(twob + "2 Bars" + twob, 1113); + c.getPacketSender().sendFrame126(twob + "2 Bars" + twob, 1116); + c.getPacketSender().sendFrame126(twob + "2 Bars" + twob, 1114); + c.getPacketSender().sendFrame126(twob + "2 Bars" + twob, 1089); + c.getPacketSender().sendFrame126(twob + "2 Bars" + twob, 8428); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1124); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1125); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1126); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1127); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1128); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1129); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1130); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1131); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 13357); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1132); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1135); + c.getPacketSender().sendFrame126("", 11459); + c.getPacketSender().sendFrame126( + GetForlvl(48, c) + "Plate Body" + GetForlvl(18, c), 1101); + c.getPacketSender().sendFrame126( + GetForlvl(46, c) + "Plate Legs" + GetForlvl(16, c), 1099); + c.getPacketSender().sendFrame126( + GetForlvl(46, c) + "Plate Skirt" + GetForlvl(16, c), 1100); + c.getPacketSender().sendFrame126( + GetForlvl(44, c) + "2 Hand Sword" + GetForlvl(14, c), 1088); + c.getPacketSender().sendFrame126( + GetForlvl(42, c) + "Kite Shield" + GetForlvl(12, c), 1105); + c.getPacketSender().sendFrame126( + GetForlvl(41, c) + "Chain Body" + GetForlvl(11, c), 1098); + c.getPacketSender().sendFrame126("", 11461); + c.getPacketSender().sendFrame126( + GetForlvl(40, c) + "Battle Axe" + GetForlvl(10, c), 1092); + c.getPacketSender().sendFrame126( + GetForlvl(39, c) + "Warhammer" + GetForlvl(9, c), 1083); + c.getPacketSender().sendFrame126( + GetForlvl(26, c) + "Claws" + GetForlvl(11, c), 8429); // claws + c.getPacketSender().sendFrame126( + GetForlvl(38, c) + "Square Shield" + GetForlvl(8, c), 1104); + c.getPacketSender().sendFrame126( + GetForlvl(37, c) + "Full Helm" + GetForlvl(7, c), 1103); + c.getPacketSender().sendFrame126( + GetForlvl(37, c) + "Throwing Knives" + GetForlvl(7, c), 1106); + c.getPacketSender().sendFrame126( + GetForlvl(36, c) + "Long Sword" + GetForlvl(6, c), 1086); + c.getPacketSender().sendFrame126( + GetForlvl(35, c) + "Scimitar" + GetForlvl(5, c), 1087); + c.getPacketSender().sendFrame126( + GetForlvl(35, c) + "Arrowtips" + GetForlvl(5, c), 1108); + c.getPacketSender().sendFrame126( + GetForlvl(34, c) + "Sword" + GetForlvl(4, c), 1085); + c.getPacketSender().sendFrame126( + GetForlvl(34, c) + "Dart Tips" + GetForlvl(4, c), 1107); + c.getPacketSender().sendFrame126( + GetForlvl(34, c) + "Nails" + GetForlvl(4, c), 13358); + c.getPacketSender().sendFrame126( + GetForlvl(33, c) + "Medium Helm" + GetForlvl(3, c), 1102); + c.getPacketSender().sendFrame126( + GetForlvl(32, c) + "Mace" + GetForlvl(2, c), 1093); + c.getPacketSender().sendFrame126( + GetForlvl(30, c) + "Dagger" + GetForlvl(1, c), 1094); + c.getPacketSender().sendFrame126( + GetForlvl(31, c) + "Axe" + GetForlvl(1, c), 1091); + c.getPacketSender().sendFrame126( + GetForlvl(35, c) + "Cannon Ball" + GetForlvl(35, c), 1096); + c.getPacketSender().sendFrame126( + GetForlvl(36, c) + "Studs" + GetForlvl(36, c), 1134); + c.getPacketSender().sendFrame34(1207, 0, 1119, 1); + c.getPacketSender().sendFrame34(1353, 0, 1120, 1); + c.getPacketSender().sendFrame34(1105, 0, 1121, 1); + c.getPacketSender().sendFrame34(1141, 0, 1122, 1); + c.getPacketSender().sendFrame34(821, 0, 1123, 10); + c.getPacketSender().sendFrame34(1281, 1, 1119, 1); + c.getPacketSender().sendFrame34(1424, 1, 1120, 1); + c.getPacketSender().sendFrame34(1069, 1, 1121, 1); + c.getPacketSender().sendFrame34(1157, 1, 1122, 1); + c.getPacketSender().sendFrame34(41, 1, 1123, 15); + c.getPacketSender().sendFrame34(1325, 2, 1119, 1); + c.getPacketSender().sendFrame34(1339, 2, 1120, 1); + c.getPacketSender().sendFrame34(1083, 2, 1121, 1); + c.getPacketSender().sendFrame34(1177, 2, 1122, 1); + c.getPacketSender().sendFrame34(865, 2, 1123, 5); + c.getPacketSender().sendFrame34(1295, 3, 1119, 1); + c.getPacketSender().sendFrame34(1365, 3, 1120, 1); + c.getPacketSender().sendFrame34(1119, 3, 1121, 1); + c.getPacketSender().sendFrame34(1193, 3, 1122, 1); + c.getPacketSender().sendFrame34(1311, 4, 1119, 1); + c.getPacketSender().sendFrame34(3097, 4, 1120, 1); // claws + c.getPacketSender().sendFrame34(1539, 4, 1122, 15); + c.getPacketSender().sendFrame34(2, 3, 1123, 4); + c.getPacketSender().sendFrame34(2370, 4, 1123, 1); + c.getPacketSender().showInterface(994); + } + + private void makeIronInterface(Player c) { + String fiveb = GetForBars(2351, 5, c); + String threeb = GetForBars(2351, 3, c); + String twob = GetForBars(2351, 2, c); + String oneb = GetForBars(2351, 1, c); + c.getPacketSender().sendFrame126(fiveb + "5 Bars" + fiveb, 1112); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1109); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1110); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1118); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1111); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1095); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1115); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1090); + c.getPacketSender().sendFrame126(twob + "2 Bars" + twob, 1113); + c.getPacketSender().sendFrame126(twob + "2 Bars" + twob, 1116); + c.getPacketSender().sendFrame126(twob + "2 Bars" + twob, 1114); + c.getPacketSender().sendFrame126(twob + "2 Bars" + twob, 1089); + c.getPacketSender().sendFrame126(twob + "2 Bars" + twob, 8428); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1124); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1125); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1126); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1127); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1128); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1129); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1130); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1131); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 13357); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 11459); + c.getPacketSender().sendFrame126( + GetForlvl(33, c) + "Plate Body" + GetForlvl(18, c), 1101); + c.getPacketSender().sendFrame126( + GetForlvl(31, c) + "Plate Legs" + GetForlvl(16, c), 1099); + c.getPacketSender().sendFrame126( + GetForlvl(31, c) + "Plate Skirt" + GetForlvl(16, c), 1100); + c.getPacketSender().sendFrame126( + GetForlvl(29, c) + "2 Hand Sword" + GetForlvl(14, c), 1088); + c.getPacketSender().sendFrame126( + GetForlvl(27, c) + "Kite Shield" + GetForlvl(12, c), 1105); + c.getPacketSender().sendFrame126( + GetForlvl(26, c) + "Chain Body" + GetForlvl(11, c), 1098); + c.getPacketSender().sendFrame126( + GetForlvl(26, c) + "Oil Lantern Frame" + GetForlvl(11, c), + 11461); + c.getPacketSender().sendFrame126( + GetForlvl(25, c) + "Battle Axe" + GetForlvl(10, c), 1092); + c.getPacketSender().sendFrame126( + GetForlvl(24, c) + "Warhammer" + GetForlvl(9, c), 1083); + c.getPacketSender().sendFrame126( + GetForlvl(26, c) + "Claws" + GetForlvl(11, c), 8429); // claws + c.getPacketSender().sendFrame126( + GetForlvl(23, c) + "Square Shield" + GetForlvl(8, c), 1104); + c.getPacketSender().sendFrame126( + GetForlvl(22, c) + "Full Helm" + GetForlvl(7, c), 1103); + c.getPacketSender().sendFrame126( + GetForlvl(21, c) + "Throwing Knives" + GetForlvl(7, c), 1106); + c.getPacketSender().sendFrame126( + GetForlvl(21, c) + "Long Sword" + GetForlvl(6, c), 1086); + c.getPacketSender().sendFrame126( + GetForlvl(20, c) + "Scimitar" + GetForlvl(5, c), 1087); + c.getPacketSender().sendFrame126( + GetForlvl(20, c) + "Arrowtips" + GetForlvl(5, c), 1108); + c.getPacketSender().sendFrame126( + GetForlvl(19, c) + "Sword" + GetForlvl(4, c), 1085); + c.getPacketSender().sendFrame126( + GetForlvl(19, c) + "Dart Tips" + GetForlvl(4, c), 1107); + c.getPacketSender().sendFrame126( + GetForlvl(19, c) + "Nails" + GetForlvl(4, c), 13358); + c.getPacketSender().sendFrame126( + GetForlvl(18, c) + "Medium Helm" + GetForlvl(3, c), 1102); + c.getPacketSender().sendFrame126( + GetForlvl(17, c) + "Mace" + GetForlvl(2, c), 1093); + c.getPacketSender().sendFrame126( + GetForlvl(15, c) + "Dagger" + GetForlvl(1, c), 1094); + c.getPacketSender().sendFrame126( + GetForlvl(16, c) + "Axe" + GetForlvl(1, c), 1091); + c.getPacketSender().sendFrame34(1203, 0, 1119, 1); + c.getPacketSender().sendFrame34(1349, 0, 1120, 1); + c.getPacketSender().sendFrame34(1101, 0, 1121, 1); + c.getPacketSender().sendFrame34(1137, 0, 1122, 1); + c.getPacketSender().sendFrame34(820, 0, 1123, 10); + c.getPacketSender().sendFrame34(1279, 1, 1119, 1); + c.getPacketSender().sendFrame34(1420, 1, 1120, 1); + c.getPacketSender().sendFrame34(1067, 1, 1121, 1); + c.getPacketSender().sendFrame34(1153, 1, 1122, 1); + c.getPacketSender().sendFrame34(40, 1, 1123, 15); + c.getPacketSender().sendFrame34(1323, 2, 1119, 1); + c.getPacketSender().sendFrame34(1335, 2, 1120, 1); + c.getPacketSender().sendFrame34(1081, 2, 1121, 1); + c.getPacketSender().sendFrame34(1175, 2, 1122, 1); + c.getPacketSender().sendFrame34(863, 2, 1123, 5); + c.getPacketSender().sendFrame34(1293, 3, 1119, 1); + c.getPacketSender().sendFrame34(1363, 3, 1120, 1); + c.getPacketSender().sendFrame34(1115, 3, 1121, 1); + c.getPacketSender().sendFrame34(1191, 3, 1122, 1); + c.getPacketSender().sendFrame34(1309, 4, 1119, 1); + c.getPacketSender().sendFrame34(4820, 4, 1122, 15); + c.getPacketSender().sendFrame34(4540, 4, 1121, 1); + c.getPacketSender().sendFrame34(3096, 4, 1120, 1); // claws + c.getPacketSender().sendFrame126("", 1135); + c.getPacketSender().sendFrame126("", 1134); + c.getPacketSender().sendFrame126("", 1132); + c.getPacketSender().sendFrame126("", 1096); + c.getPacketSender().showInterface(994); + } + + private void makeBronzeInterface(Player c) { + String fiveb = GetForBars(2349, 5, c); + String threeb = GetForBars(2349, 3, c); + String twob = GetForBars(2349, 2, c); + String oneb = GetForBars(2349, 1, c); + c.getPacketSender().sendFrame126(fiveb + "5 Bars" + fiveb, 1112); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1109); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1110); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1118); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1111); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1095); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1115); + c.getPacketSender().sendFrame126(threeb + "3 Bars" + threeb, 1090); + c.getPacketSender().sendFrame126(twob + "2 Bars" + twob, 1113); + c.getPacketSender().sendFrame126(twob + "2 Bars" + twob, 1116); + c.getPacketSender().sendFrame126(twob + "2 Bars" + twob, 1114); + c.getPacketSender().sendFrame126(twob + "2 Bars" + twob, 1089); + c.getPacketSender().sendFrame126(twob + "2 Bars" + twob, 8428); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1124); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1125); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1126); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1127); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1128); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1129); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1130); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 1131); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 13357); + c.getPacketSender().sendFrame126(oneb + "1 Bar" + oneb, 11459); + c.getPacketSender().sendFrame126( + GetForlvl(18, c) + "Plate Body" + GetForlvl(18, c), 1101); + c.getPacketSender().sendFrame126( + GetForlvl(16, c) + "Plate Legs" + GetForlvl(16, c), 1099); + c.getPacketSender().sendFrame126( + GetForlvl(16, c) + "Plate Skirt" + GetForlvl(16, c), 1100); + c.getPacketSender().sendFrame126( + GetForlvl(14, c) + "2 Hand Sword" + GetForlvl(14, c), 1088); + c.getPacketSender().sendFrame126( + GetForlvl(26, c) + "Claws" + GetForlvl(11, c), 8429); // claws + c.getPacketSender().sendFrame126( + GetForlvl(12, c) + "Kite Shield" + GetForlvl(12, c), 1105); + c.getPacketSender().sendFrame126( + GetForlvl(11, c) + "Chain Body" + GetForlvl(11, c), 1098); + c.getPacketSender().sendFrame126( + GetForlvl(10, c) + "Battle Axe" + GetForlvl(10, c), 1092); + c.getPacketSender().sendFrame126( + GetForlvl(9, c) + "Warhammer" + GetForlvl(9, c), 1083); + c.getPacketSender().sendFrame126( + GetForlvl(8, c) + "Square Shield" + GetForlvl(8, c), 1104); + c.getPacketSender().sendFrame126( + GetForlvl(7, c) + "Full Helm" + GetForlvl(7, c), 1103); + c.getPacketSender().sendFrame126( + GetForlvl(7, c) + "Throwing Knives" + GetForlvl(7, c), 1106); + c.getPacketSender().sendFrame126( + GetForlvl(6, c) + "Long Sword" + GetForlvl(6, c), 1086); + c.getPacketSender().sendFrame126( + GetForlvl(5, c) + "Scimitar" + GetForlvl(5, c), 1087); + c.getPacketSender().sendFrame126( + GetForlvl(5, c) + "Arrowtips" + GetForlvl(5, c), 1108); + c.getPacketSender().sendFrame126( + GetForlvl(4, c) + "Sword" + GetForlvl(4, c), 1085); + c.getPacketSender().sendFrame126( + GetForlvl(4, c) + "Dart Tips" + GetForlvl(4, c), 1107); + c.getPacketSender().sendFrame126( + GetForlvl(4, c) + "Nails" + GetForlvl(4, c), 13358); + c.getPacketSender().sendFrame126( + GetForlvl(3, c) + "Medium Helm" + GetForlvl(3, c), 1102); + c.getPacketSender().sendFrame126( + GetForlvl(2, c) + "Mace" + GetForlvl(2, c), 1093); + c.getPacketSender().sendFrame126( + GetForlvl(1, c) + "Dagger" + GetForlvl(1, c), 1094); + c.getPacketSender().sendFrame126( + GetForlvl(1, c) + "Axe" + GetForlvl(1, c), 1091); + c.getPacketSender().sendFrame34(1205, 0, 1119, 1); + c.getPacketSender().sendFrame34(1351, 0, 1120, 1); + c.getPacketSender().sendFrame34(1103, 0, 1121, 1); + c.getPacketSender().sendFrame34(1139, 0, 1122, 1); + c.getPacketSender().sendFrame34(819, 0, 1123, 10); + c.getPacketSender().sendFrame34(1277, 1, 1119, 1); + c.getPacketSender().sendFrame34(1422, 1, 1120, 1); + c.getPacketSender().sendFrame34(1075, 1, 1121, 1); + c.getPacketSender().sendFrame34(1155, 1, 1122, 1); + c.getPacketSender().sendFrame34(39, 1, 1123, 15); + c.getPacketSender().sendFrame34(1321, 2, 1119, 1); + c.getPacketSender().sendFrame34(1337, 2, 1120, 1); + c.getPacketSender().sendFrame34(1087, 2, 1121, 1); + c.getPacketSender().sendFrame34(1173, 2, 1122, 1); + c.getPacketSender().sendFrame34(864, 2, 1123, 5); + c.getPacketSender().sendFrame34(1291, 3, 1119, 1); + c.getPacketSender().sendFrame34(1375, 3, 1120, 1); + c.getPacketSender().sendFrame34(1117, 3, 1121, 1); + c.getPacketSender().sendFrame34(1189, 3, 1122, 1); + c.getPacketSender().sendFrame34(1307, 4, 1119, 1); + c.getPacketSender().sendFrame34(3095, 4, 1120, 1); // claws + c.getPacketSender().sendFrame34(4819, 4, 1122, 15); + c.getPacketSender().sendFrame34(-1, 3, 1123, 1); + c.getPacketSender().sendFrame126("", 1135); + c.getPacketSender().sendFrame126("", 1134); + c.getPacketSender().sendFrame126("", 11461); + c.getPacketSender().sendFrame126("", 11459); + c.getPacketSender().sendFrame126("", 1132); + c.getPacketSender().sendFrame126("", 1096); + c.getPacketSender().showInterface(994); + } + + private String GetForlvl(int i, Player c) { + if (c.playerLevel[13] >= i) { + return "@whi@"; + } + + return "@bla@"; + } + + private String GetForBars(int i, int j, Player c) { + if (c.getItemAssistant().playerHasItem(i, j)) { + return "@gre@"; + } + + return "@red@"; + } + +} diff --git a/2006Redone Server/src/com/rebotted/game/content/skills/smithing/Superheat.java b/2006Redone Server/src/com/rebotted/game/content/skills/smithing/Superheat.java new file mode 100644 index 00000000..1c447837 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/skills/smithing/Superheat.java @@ -0,0 +1,73 @@ +package com.rebotted.game.content.skills.smithing; + +import com.rebotted.game.content.combat.magic.CastRequirements; +import com.rebotted.game.content.music.sound.SoundList; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Player; + +/** + * @author Andrew (Mr Extremez) + */ + +public class Superheat { + + // ore1, ore1amount, ore2, ore2amount, item, xp, smith lvl req + private static final int[][] SMELT = { { 436, 1, 438, 1, 2349, 6, 1, 6 }, // TIN + { 438, 1, 436, 1, 2349, 6, 1, 6 }, // COPPER + { 440, 1, 453, 2, 2353, 18, 30, 17 }, // STEEL ORE + { 440, 1, -1, -1, 2351, 13, 15, 12 }, // IRON ORE + { 442, 1, -1, -1, 2355, 14, 20, 13 }, // SILVER ORE + { 444, 1, -1, -1, 2357, 23, 40, 22 }, // GOLD BAR + { 447, 1, 453, 4, 2359, 30, 50, 30 }, // MITHRIL ORE + { 449, 1, 453, 6, 2361, 38, 70, 37 }, // ADDY ORE + { 451, 1, 453, 8, 2363, 50, 85, 50 }, // RUNE ORE + }; + + public static boolean superHeatItem(Player player, int itemID) { + for (int smelt[] : SMELT) { + if (itemID == smelt[0]) { + if (!player.getItemAssistant().playerHasItem(smelt[2], smelt[3])) { + if (itemID == 440 && smelt[2] == 453) { + continue; + } else { + player.getPacketSender().sendMessage("You haven't got enough " + ItemAssistant.getItemName(smelt[2]).toLowerCase() + " to cast this spell!"); + return false; + } + } + if (!CastRequirements.hasRunes(player, new int[][]{{554, 4}, {561, 1}})) { + player.getPacketSender().sendMessage("You don't have the correct runes to cast this spell."); + return false; + } + if (itemID == 444 && player.playerEquipment[player.playerHands] == 776) { + player.getPlayerAssistant().addSkillXP(56.2, player.playerSmithing); + } else { + player.getPlayerAssistant().addSkillXP(smelt[7], player.playerSmithing); + } + if (player.playerLevel[player.playerSmithing] < smelt[6]) { + player.getPacketSender().sendMessage("You need a smithing level of " + smelt[6] + " to superheat this ore."); + return false; + } + if (player.playerLevel[player.playerMagic] < 43) { + player.getPacketSender().sendMessage("You need a magic level of 43 to superheat this ore."); + return false; + } + player.getItemAssistant().deleteItem(itemID, 1); + player.getItemAssistant().deleteItem(smelt[2], smelt[3]); + CastRequirements.deleteRunes(player, new int[][]{{554, 4}, {561, 1}}); + player.getItemAssistant().addItem(smelt[4], 1); + player.getPlayerAssistant().addSkillXP(53, player.playerMagic); + player.startAnimation(722); + player.gfx0(148); + player.getPacketSender().sendSound(SoundList.SUPERHEAT, 100, 0); + if (itemID != 444) { + player.getPlayerAssistant().addSkillXP(smelt[7], player.playerSmithing); + } + player.getPacketSender().sendFrame106(6); + return true; + } + } + player.getPacketSender().sendMessage("You can only cast superheat item on ores!"); + player.getPacketSender().sendSound(SoundList.SUPERHEAT_FAIL, 100, 0); + return false; + } +} diff --git a/2006Redone Server/src/redone/game/content/skills/thieving/Pickpocket.java b/2006Redone Server/src/com/rebotted/game/content/skills/thieving/Pickpocket.java similarity index 85% rename from 2006Redone Server/src/redone/game/content/skills/thieving/Pickpocket.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/thieving/Pickpocket.java index 749ad27b..08a28b72 100644 --- a/2006Redone Server/src/redone/game/content/skills/thieving/Pickpocket.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/thieving/Pickpocket.java @@ -1,267 +1,260 @@ -package redone.game.content.skills.thieving; - -import redone.Server; -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.content.randomevents.RandomEventHandler; -import redone.game.content.skills.SkillHandler; -import redone.game.items.ItemList; -import redone.game.npcs.NpcHandler; -import redone.game.players.Client; -import redone.game.players.antimacro.AntiBotting; -import redone.util.Misc; - -public class Pickpocket extends SkillHandler { - - /** - * Pickpocket.java - **/ - - public static enum npcData { - - MAN(new int[] { 1, 2, 3, 3222 }, 1, 8.0, 1, 5, new int[] { 995, 3 }), WOMEN( - new int[] { 4, 5, 6 }, 1, 8.0, 1, 5, new int[] { 995, 3 }), FARMER( - new int[] { 7, 1757 }, 10, 14.5, 1, 5, new int[] { 995, 9 }, - new int[] { 5318, 4 }), HAM_FEMALE(new int[] { 1715 }, 15, - 18.5, 2, 4, new int[] { 995, 2 + r(19) }, - new int[] { 4302, 1 }, new int[] { 4304, 1 }, new int[] { 4298, - 1 }, new int[] { 4308, 1 }, new int[] { 4300, 1 }, - new int[] { 4310, 1 }, new int[] { 4306, 1 }), HAM_MALE( - new int[] { 1714 }, 20, 22.5, 2, 4, - new int[] { 995, 2 + r(19) }, new int[] { 4302, 1 }, new int[] { - 4304, 1 }, new int[] { 4298, 1 }, - new int[] { 4308, 1 }, new int[] { 4300, 1 }, new int[] { 4310, - 1 }, new int[] { 4306, 1 }), WARRIOR( - new int[] { 15, 18 }, 25, 26.0, 2, 5, new int[] { 995, 18 }), ROGUE( - new int[] { 187 }, 32, 35.5, 2, 5, new int[] { 995, 25 }, - new int[] { 995, 40 }, new int[] { 7919, 1 }, new int[] { 556, - 6 }, new int[] { 5686, 1 }, new int[] { 1523, 1 }, - new int[] { 1944, 1 }), MASTER_FARMER(new int[] { 2234, 2235 }, - 38, 43.0, 2, 5, new int[] { i("potato seed"), 1 + r(2) }, - new int[] { i("onion seed"), 1 + r(2) }, new int[] { - i("cabbage seed"), 1 + r(2) }, new int[] { - i("tomato seed"), 1 + r(1) }, new int[] { - i("sweetcorn seedseed"), 1 + r(1) }, new int[] { - i("strawberry seed"), 1 }, new int[] { - i("watermelon seed"), 1 }, new int[] { - i("barely seed"), 1 + r(3) }, new int[] { - i("hammerstone seed"), 1 + r(2) }, new int[] { - i("asgarnian seed"), 1 + r(1) }, new int[] { - i("jute seed"), 1 + r(2) }, new int[] { - i("yanillian seed"), 1 + r(1) }, new int[] { - i("krandorian seed"), 1 }, new int[] { - i("wildblood seed"), 1 }, new int[] { - i("redberry seed"), 1 }, new int[] { - i("cadavaberry seed"), 1 }, new int[] { - i("dwellberry seed"), 1 }, new int[] { - i("jangerberry seed"), 1 }, new int[] { - i("whiteberry seed"), 1 }, new int[] { - i("poison ivy seed"), 1 }, new int[] { - i("marigold seed"), 1 }, new int[] { - i("rosemarry seed"), 1 }, new int[] { - i("nasturtium seed"), 1 }, new int[] { i("woad seed"), - 1 }, new int[] { i("limpwurt seed"), 1 }, new int[] { - i("guam seed"), 1 }, - new int[] { i("marentill seed"), 1 }, new int[] { - i("tarromin seed"), 1 }, new int[] { - i("harralander seed"), 1 }, new int[] { - i("ranarr seed"), 1 }, new int[] { i("toadflax seed"), - 1 }, new int[] { i("irit seed"), 1 }, new int[] { - i("avantoe seed"), 1 }, - new int[] { i("kwuarm seed"), 1 }, new int[] { - i("snapdragon seed"), 1 }, new int[] { - i("cadantine seed"), 1 }, new int[] { - i("lantadyme seed"), 1 }, new int[] { - i("dwarf weed seed"), 1 }, new int[] { - i("torstol seed"), 1 }, new int[] { - i("bittercap mushroom spore"), 1 }, new int[] { - i("belladonna seed"), 1 }, new int[] { - i("cactus seed"), 1 }), GUARD(new int[] { 9, 32 }, 40, - 46.8, 2, 5, new int[] { 995, 30 }), KNIGHT(new int[] { 26 }, - 55, 84.3, 3, 5, new int[] { 995, 50 }), MENAPHITE_THUG( - new int[] { 1904 }, 65, 137.5, 5, 5, new int[] { 995, 60 }), WATCHMAN( - new int[] { 431 }, 65, 137.5, 3, 5, new int[] { 995, 60 }, - new int[] { 4593, 1 }), PALADIN(new int[] { 20 }, 70, 151.8, 5, - 4, new int[] { 995, 80 }, new int[] { 562, 2 }), GNOME( - new int[] { 66 }, 75, 198.3, 1, 6, new int[] { 995, 300 }, - new int[] { 557, 1 }, new int[] { 444, 1 }, - new int[] { 569, 1 }, new int[] { 2150 }, new int[] { 2162 }), HERO( - new int[] { 21 }, 80, 273.3, 4, 6, new int[] { 995, 300 }, - new int[] { 560, 2 }, new int[] { 565, 1 }, - new int[] { 569, 1 }, new int[] { 1617, 1 }, - new int[] { 444, 1 }, new int[] { 1993 }); - - private final int levelReq, damage, stun; - private final int[] npcId; - private final int[][] pickpockets; - private final double xp; - - private npcData(final int[] npcId, final int levelReq, final double xp, - final int damage, final int stun, final int[]... pickpockets) { - this.npcId = npcId; - this.levelReq = levelReq; - this.xp = xp; - this.pickpockets = pickpockets; - this.damage = damage; - this.stun = stun; - } - - public int getNpc(final int npc) { - for (int element : npcId) { - if (npc == element) { - return element; - } - } - return -1; - } - - public int getLevel() { - return levelReq; - } - - public double getXp() { - return xp; - } - - public int[][] getPickPockets() { - return pickpockets; - } - - public int getDamage() { - return damage; - } - - public int getStun() { - return stun; - } - } - - public static int r(int random) { - return Misc.random(random); - } - - public static int i(String ItemName) { - return getItemId(ItemName); - } - - public static int getItemId(String itemName) { - for (ItemList i : Server.itemHandler.ItemList) { - if (i != null) { - if (i.itemName.equalsIgnoreCase(itemName)) { - return i.itemId; - } - } - } - return -1; - } - - public static boolean isNPC(Client c, int npc) { - for (final npcData n : npcData.values()) { - if (npc == n.getNpc(npc)) { - return true; - } - } - return false; - } - - public static void attemptPickpocket(final Client c, final int npcId) { - if (System.currentTimeMillis() - c.lastThieve < 2000 || c.playerStun) { - return; - } - if (c.isBotting == true) { - c.getActionSender().sendMessage("You can't thieve right now!"); - return; - } - if (c.underAttackBy > 0 || c.underAttackBy2 > 0) { - c.getActionSender().sendMessage("You can't pickpocket while in combat!"); - return; - } - if (!THIEVING) { - c.getActionSender().sendMessage("This skill is currently disabled."); - return; - } - // membersOnly(); - for (final npcData n : npcData.values()) { - if (npcId == n.getNpc(npcId)) { - if (c.playerLevel[c.playerThieving] < n.getLevel()) { - c.getDialogueHandler().sendStatement("You need a Thieving level of " + n.getLevel() + " to pickpocket the " + NpcHandler.getNpcListName(n.getNpc(npcId)).toLowerCase() + "."); - return; - } - c.getActionSender().sendMessage("You attempt to pick the " + NpcHandler.getNpcListName(n.getNpc(npcId)).toLowerCase() + "'s pocket."); - c.startAnimation(881); - if (Misc.random(c.playerLevel[17] + 5) < Misc.random(n.getLevel())) { - if (Misc.random(200) == 0) { - AntiBotting.botCheckInterface(c); - } - RandomEventHandler.addRandom(c); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (c.disconnected) { - container.stop(); - return; - } - c.playerStun = true; - c.setHitDiff(n.getDamage()); - c.setHitUpdateRequired(true); - c.playerLevel[3] -= n.getDamage(); - c.getPlayerAssistant().refreshSkill(3); - c.gfx100(80); - c.startAnimation(404); - NpcHandler.npcs[npcId].forceChat("What do you think you're doing?"); - NpcHandler.npcs[npcId].facePlayer(c.playerId); - c.lastThieve = System.currentTimeMillis() + 5000; - c.getActionSender().sendMessage("You fail to pick the " + NpcHandler.getNpcListName(n.getNpc(npcId)).toLowerCase() + "'s pocket."); - container.stop(); - } - @Override - public void stop() { - - } - }, 2); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (c.disconnected) { - container.stop(); - return; - } - c.playerStun = false; - container.stop(); - } - - @Override - public void stop() { - - } - }, n.getStun()); - } else { - String message = "You pick the " + NpcHandler.getNpcListName(n.getNpc(npcId)).toLowerCase() + "'s pocket."; - final String message2 = message; - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - c.getActionSender().sendMessage(message2); - c.getPlayerAssistant().addSkillXP((int) n.getXp(), - c.playerThieving); - int[] random = n.getPickPockets()[Misc.random(n - .getPickPockets().length - 1)]; - c.getItemAssistant().addItem( - random[0], - random[1] - + (random.length > 2 ? Misc - .random(random[2]) : 0)); - container.stop(); - } - @Override - public void stop() { - - } - }, 2); - } - c.lastThieve = System.currentTimeMillis(); - } - } - } -} +package com.rebotted.game.content.skills.thieving; + +import com.rebotted.GameEngine; +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.content.randomevents.RandomEventHandler; +import com.rebotted.game.content.skills.SkillHandler; +import com.rebotted.game.items.ItemList; +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +public class Pickpocket extends SkillHandler { + + /** + * Pickpocket.java + **/ + + public static enum npcData { + + MAN(new int[] { 1, 2, 3, 3222 }, 1, 8.0, 1, 5, new int[] { 995, 3 }), WOMEN( + new int[] { 4, 5, 6 }, 1, 8.0, 1, 5, new int[] { 995, 3 }), FARMER( + new int[] { 7, 1757 }, 10, 14.5, 1, 5, new int[] { 995, 9 }, + new int[] { 5318, 4 }), HAM_FEMALE(new int[] { 1715 }, 15, + 18.5, 2, 4, new int[] { 995, 2 + r(19) }, + new int[] { 4302, 1 }, new int[] { 4304, 1 }, new int[] { 4298, + 1 }, new int[] { 4308, 1 }, new int[] { 4300, 1 }, + new int[] { 4310, 1 }, new int[] { 4306, 1 }), HAM_MALE( + new int[] { 1714 }, 20, 22.5, 2, 4, + new int[] { 995, 2 + r(19) }, new int[] { 4302, 1 }, new int[] { + 4304, 1 }, new int[] { 4298, 1 }, + new int[] { 4308, 1 }, new int[] { 4300, 1 }, new int[] { 4310, + 1 }, new int[] { 4306, 1 }), WARRIOR( + new int[] { 15, 18 }, 25, 26.0, 2, 5, new int[] { 995, 18 }), ROGUE( + new int[] { 187 }, 32, 35.5, 2, 5, new int[] { 995, 25 }, + new int[] { 995, 40 }, new int[] { 7919, 1 }, new int[] { 556, + 6 }, new int[] { 5686, 1 }, new int[] { 1523, 1 }, + new int[] { 1944, 1 }), MASTER_FARMER(new int[] { 2234, 2235 }, + 38, 43.0, 2, 5, new int[] { i("potato seed"), 1 + r(2) }, + new int[] { i("onion seed"), 1 + r(2) }, new int[] { + i("cabbage seed"), 1 + r(2) }, new int[] { + i("tomato seed"), 1 + r(1) }, new int[] { + i("sweetcorn seedseed"), 1 + r(1) }, new int[] { + i("strawberry seed"), 1 }, new int[] { + i("watermelon seed"), 1 }, new int[] { + i("barely seed"), 1 + r(3) }, new int[] { + i("hammerstone seed"), 1 + r(2) }, new int[] { + i("asgarnian seed"), 1 + r(1) }, new int[] { + i("jute seed"), 1 + r(2) }, new int[] { + i("yanillian seed"), 1 + r(1) }, new int[] { + i("krandorian seed"), 1 }, new int[] { + i("wildblood seed"), 1 }, new int[] { + i("redberry seed"), 1 }, new int[] { + i("cadavaberry seed"), 1 }, new int[] { + i("dwellberry seed"), 1 }, new int[] { + i("jangerberry seed"), 1 }, new int[] { + i("whiteberry seed"), 1 }, new int[] { + i("poison ivy seed"), 1 }, new int[] { + i("marigold seed"), 1 }, new int[] { + i("rosemarry seed"), 1 }, new int[] { + i("nasturtium seed"), 1 }, new int[] { i("woad seed"), + 1 }, new int[] { i("limpwurt seed"), 1 }, new int[] { + i("guam seed"), 1 }, + new int[] { i("marentill seed"), 1 }, new int[] { + i("tarromin seed"), 1 }, new int[] { + i("harralander seed"), 1 }, new int[] { + i("ranarr seed"), 1 }, new int[] { i("toadflax seed"), + 1 }, new int[] { i("irit seed"), 1 }, new int[] { + i("avantoe seed"), 1 }, + new int[] { i("kwuarm seed"), 1 }, new int[] { + i("snapdragon seed"), 1 }, new int[] { + i("cadantine seed"), 1 }, new int[] { + i("lantadyme seed"), 1 }, new int[] { + i("dwarf weed seed"), 1 }, new int[] { + i("torstol seed"), 1 }, new int[] { + i("bittercap mushroom spore"), 1 }, new int[] { + i("belladonna seed"), 1 }, new int[] { + i("cactus seed"), 1 }), GUARD(new int[] { 9, 32 }, 40, + 46.8, 2, 5, new int[] { 995, 30 }), KNIGHT(new int[] { 26 }, + 55, 84.3, 3, 5, new int[] { 995, 50 }), MENAPHITE_THUG( + new int[] { 1904 }, 65, 137.5, 5, 5, new int[] { 995, 60 }), WATCHMAN( + new int[] { 431 }, 65, 137.5, 3, 5, new int[] { 995, 60 }, + new int[] { 4593, 1 }), PALADIN(new int[] { 20 }, 70, 151.8, 5, + 4, new int[] { 995, 80 }, new int[] { 562, 2 }), GNOME( + new int[] { 66 }, 75, 198.3, 1, 6, new int[] { 995, 300 }, + new int[] { 557, 1 }, new int[] { 444, 1 }, + new int[] { 569, 1 }, new int[] { 2150 }, new int[] { 2162 }), HERO( + new int[] { 21 }, 80, 273.3, 4, 6, new int[] { 995, 300 }, + new int[] { 560, 2 }, new int[] { 565, 1 }, + new int[] { 569, 1 }, new int[] { 1617, 1 }, + new int[] { 444, 1 }, new int[] { 1993 }); + + private final int levelReq, damage, stun; + private final int[] npcId; + private final int[][] pickpockets; + private final double xp; + + private npcData(final int[] npcId, final int levelReq, final double xp, + final int damage, final int stun, final int[]... pickpockets) { + this.npcId = npcId; + this.levelReq = levelReq; + this.xp = xp; + this.pickpockets = pickpockets; + this.damage = damage; + this.stun = stun; + } + + public int getNpc(final int npc) { + for (int element : npcId) { + if (npc == element) { + return element; + } + } + return -1; + } + + public int getLevel() { + return levelReq; + } + + public double getXp() { + return xp; + } + + public int[][] getPickPockets() { + return pickpockets; + } + + public int getDamage() { + return damage; + } + + public int getStun() { + return stun; + } + } + + public static int r(int random) { + return Misc.random(random); + } + + public static int i(String ItemName) { + return getItemId(ItemName); + } + + public static int getItemId(String itemName) { + for (ItemList i : GameEngine.itemHandler.ItemList) { + if (i != null) { + if (i.itemName.equalsIgnoreCase(itemName)) { + return i.itemId; + } + } + } + return -1; + } + + public static boolean isNPC(Player c, int npc) { + for (final npcData n : npcData.values()) { + if (npc == n.getNpc(npc)) { + return true; + } + } + return false; + } + + public static void attemptPickpocket(final Player c, final int npcId) { + if (System.currentTimeMillis() - c.lastThieve < 2000 || c.playerStun) { + return; + } + if (c.underAttackBy > 0 || c.underAttackBy2 > 0) { + c.getPacketSender().sendMessage("You can't pickpocket while in combat!"); + return; + } + if (!THIEVING) { + c.getPacketSender().sendMessage("This skill is currently disabled."); + return; + } + // membersOnly(); + for (final npcData n : npcData.values()) { + if (npcId == n.getNpc(npcId)) { + if (c.playerLevel[c.playerThieving] < n.getLevel()) { + c.getDialogueHandler().sendStatement("You need a Thieving level of " + n.getLevel() + " to pickpocket the " + NpcHandler.getNpcListName(n.getNpc(npcId)).toLowerCase() + "."); + return; + } + c.getPacketSender().sendMessage("You attempt to pick the " + NpcHandler.getNpcListName(n.getNpc(npcId)).toLowerCase() + "'s pocket."); + c.startAnimation(881); + if (Misc.random(c.playerLevel[17] + 5) < Misc.random(n.getLevel())) { + RandomEventHandler.addRandom(c); + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (c.disconnected) { + container.stop(); + return; + } + c.playerStun = true; + c.setHitDiff(n.getDamage()); + c.setHitUpdateRequired(true); + c.playerLevel[3] -= n.getDamage(); + c.getPlayerAssistant().refreshSkill(3); + c.gfx100(80); + c.startAnimation(404); + NpcHandler.npcs[npcId].forceChat("What do you think you're doing?"); + NpcHandler.npcs[npcId].facePlayer(c.playerId); + c.lastThieve = System.currentTimeMillis() + 5000; + c.getPacketSender().sendMessage("You fail to pick the " + NpcHandler.getNpcListName(n.getNpc(npcId)).toLowerCase() + "'s pocket."); + container.stop(); + } + @Override + public void stop() { + + } + }, 2); + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (c.disconnected) { + container.stop(); + return; + } + c.playerStun = false; + container.stop(); + } + + @Override + public void stop() { + + } + }, n.getStun()); + } else { + String message = "You pick the " + NpcHandler.getNpcListName(n.getNpc(npcId)).toLowerCase() + "'s pocket."; + final String message2 = message; + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + c.getPacketSender().sendMessage(message2); + c.getPlayerAssistant().addSkillXP((int) n.getXp(), + c.playerThieving); + int[] random = n.getPickPockets()[Misc.random(n + .getPickPockets().length - 1)]; + c.getItemAssistant().addItem( + random[0], + random[1] + + (random.length > 2 ? Misc + .random(random[2]) : 0)); + container.stop(); + } + @Override + public void stop() { + + } + }, 2); + } + c.lastThieve = System.currentTimeMillis(); + } + } + } +} diff --git a/2006Redone Server/src/redone/game/content/skills/thieving/Stalls.java b/2006Redone Server/src/com/rebotted/game/content/skills/thieving/Stalls.java similarity index 58% rename from 2006Redone Server/src/redone/game/content/skills/thieving/Stalls.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/thieving/Stalls.java index a203c8dd..b7671665 100644 --- a/2006Redone Server/src/redone/game/content/skills/thieving/Stalls.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/thieving/Stalls.java @@ -1,239 +1,200 @@ -package redone.game.content.skills.thieving; - -import redone.Server; -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.content.randomevents.RandomEventHandler; -import redone.game.content.skills.SkillHandler; -import redone.game.items.ItemAssistant; -import redone.game.items.ItemList; -import redone.game.npcs.NpcHandler; -import redone.game.players.Client; -import redone.game.players.antimacro.AntiBotting; -import redone.util.Misc; - -public class Stalls { - - - public static enum stallData { - VEGETABLE_STALL(4706, 2, 10, 0, new int[] { 1965, 1 }), - BAKER_STALL(2561, 5, 16, 3, new int[] { 2309, 1 }, new int[] { 1891, 1 }, new int[] { 1895, 1 }), - TEA_STALL(635, 5, 16, 0, new int[] {712, 1 }), - SILK_STALL(2560, 20, 24, 2, new int[] { 950, 1 }), - WINE_STALL(14011, 22, 27, 0, new int[] { 1935, 1 }, new int[] {i("jug of water"), 1 }, new int[] { i("jug of wine"), 1 }, - new int[] { i("grapes"), 1 }), SEED_STALL(7053, 27, 10, 0, new int[] { i("potato seed"), 1 }, new int[] {i("onion seed"), 1 }, - new int[] { i("cabbage seed"), 1 }, new int[] {i("tomato seed"), 1 }, new int[] { i("sweetcorn seed"), 1 }, new int[] { i("strawberry seed"), 1 }, - new int[] {i("watermelon seed"), 1 }, new int[] {i("barley seed"), 1 }, new int[] { i("jute seed"), 1 }, new int[] { i("marigold seed"), 1 }, - new int[] {i("rosemary seed"), 1 }, new int[] {i("hammerstone seed"), 1 }, new int[] {i("asgarnain seed"), 1 }, new int[] {i("yanillian seed"), 1 }, - new int[] {i("krandorian seed"), 1 }, new int[] {i("wildblood seed"), 1 }), FUR_STALL(2563, 35, 36, 0, new int[] { 6814, 1 }, new int[] { 958, 1 }), - FUR_STALL2(4278, 35, 36, 0, new int[] { 6814, 1 }, new int[] { 958, 1 }), - FISH_STALL(4705, 42, 42, 0, new int[] { 359, 1 }), - FISH_STALL2(4277, 42, 42, 0, new int[] { 359, 1 }), - SILVER_STALL(2565, 50, 54, 2, new int[] { 442, 1 }, new int[] { 2355, 1 }), - SPICE_STALL(2564, 65, 81.3, 0, new int[] { 2007, 1 }, new int[] { 946, 1 }, new int[] { 1550, 1 }), GEM_STALL(2562, 75, 160, 3, - new int[] { 1617, 1 }, new int[] { 1619, 1 }, new int[] { 1621, 1 }, new int[] { 1623, 1 }), - MAGIC_STALL(4877, 65, 100, 0, new int[] {i("air rune"), 1}, new int[] {i("water rune"), 1}, new int[] {i("fire rune"), 1}, new int[] {i("law rune"), 1}), - SCIMITAR_STALL(4878, 65, 100, 0, new int[] {i("iron scimitar"), 1}, new int[] {i("steel scimitar"), 1}); - - private int objectId, levelReq, face; - private int[][] stalls; - private double xp; - - private stallData(final int objectId, final int levelReq, final double xp, final int face, final int[]... stalls) { - this.objectId = objectId; - this.levelReq = levelReq; - this.xp = xp; - this.face = face; - this.stalls = stalls; - } - - public int getObject() { - return objectId; - } - - public int getLevel() { - return levelReq; - } - - public double getXp() { - return xp; - } - - public int getFace() { - return face; - } - - public int[][] getStalls() { - return stalls; - } - - } - - public static int r(int random) { - return Misc.random(random); - } - - public static int i(String ItemName) { - return getItemId(ItemName); - } - - public static int getItemId(String itemName) { - for (ItemList i : Server.itemHandler.ItemList) { - if (i != null) { - if (i.itemName.equalsIgnoreCase(itemName)) { - return i.itemId; - } - } - } - return -1; - } - - public static boolean isObject(int object) { - for (final stallData s : stallData.values()) { - if(object == s.getObject()) { - return true; - } - } - return false; - } - - public static void attemptStall(final Client c, final int objectId, final int x, final int y) { - for (final stallData s : stallData.values()) { - if (System.currentTimeMillis() - c.lastThieve < 2500 + r(2500)) { - c.getActionSender().sendMessage("You need to wait longer before you can thieve this stall!"); - return; - } - if (!SkillHandler.THIEVING) { - c.getActionSender().sendMessage("This skill is currently disabled."); - return; - } - if (c.isBotting == true) { - c.getActionSender().sendMessage("You can't thieve right now!"); - return; - } - if(c.underAttackBy > 0 || c.underAttackBy2 > 0) { - c.getActionSender().sendMessage("You can't steal from a stall while in combat!"); - return; - } - if (c.getItemAssistant().freeSlots() == 0) { - c.getActionSender().sendMessage("Not enough space in your inventory."); - return; - } - if(objectId == s.getObject()) { - if (c.playerLevel[c.playerThieving] >= s.getLevel()) { - if(Misc.random(4) == 1 && c.playerLevel[c.playerThieving] < 99) { - failGuards(c); - return; - } - if (c.getItemAssistant().freeSlots() == 0) { - c.getActionSender().sendMessage("Not enough space in your inventory."); - return; - } - c.startAnimation(832); - if (Misc.random(100) == 0) { - AntiBotting.botCheckInterface(c); - } - RandomEventHandler.addRandom(c); - Server.objectHandler.createAnObject(c, 634, x, y, s.getFace()); - c.getPlayerAssistant().addSkillXP((int) s.getXp(), c.playerThieving); - int[] random = s.getStalls()[Misc.random(s.getStalls().length-1)]; - if (c.isBotting == false) { - c.getItemAssistant().addItem(random[0], random[1] + (random.length > 2 ? Misc.random(random[2]) : 0)); - } - c.lastThieve = System.currentTimeMillis(); - c.getActionSender().sendMessage("You steal a "+ItemAssistant.getItemName(random[0])+" from the stall."); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - Server.objectHandler.createAnObject(c, s.getObject(), x, y, s.getFace()); - //new Object(s.getObject(), x, y, 0, s.getFace(), 10, j, getRespawnTime(c, s.getObject())); - container.stop(); - } - @Override - public void stop() { - } - }, getRespawnTime(c, s.getObject())); - } else { - c.getDialogueHandler().sendStatement("You must have a thieving level of " + s.getLevel() + " to steal from this stall."); - } - } - } - } - - /*private static int getRespawnTime(Client c, int i) { - switch (i) { - case 4706: - return 2000; - case 2561: - return 4000; - case 635: - return 7000; - case 14011: - case 4705: - return 16000; - case 7053: - return 11000; - case 2563: - return 15000; - case 2565: - return 30000; - case 2564: - return 80000; - case 2562: - return 180000; - } - return 2500 + r(2500); - }*/ - - private static int getRespawnTime(Client c, int i) { - switch (i) { - case 4706: - return 3;// veg - case 2561: - return 4;// baker - case 635: - return 12;// tea - case 2560: - return 13;// silk - case 14011: - return 27;// wine - case 7053: - return 18;// seed - case 2563: - return 25;// fur - case 4705: - return 27;// fish - case 2565: - return 50;// silver - case 2564: - case 4877: - case 4878: - return 133;// spice, scimitar, magic - case 2562: - return 300;// gem - } - return 5; - } - - private static void failGuards(final Client c) { - for (int i = 1; i < NpcHandler.MAX_NPCS; i ++) { - if (NpcHandler.npcs[i] != null) { - if (NpcHandler.npcs[i].npcType == 32 - || NpcHandler.npcs[i].npcType == 1317 - || NpcHandler.npcs[i].npcType == 2236 - || NpcHandler.npcs[i].npcType == 2571) { - if (c.goodDistance(c.absX, c.absY, NpcHandler.npcs[i].absX, NpcHandler.npcs[i].absY, 7) - && c.heightLevel == NpcHandler.npcs[i].heightLevel) { - if (!NpcHandler.npcs[i].underAttack) { - NpcHandler.npcs[i].forceChat("What do you think you're doing?!?"); - NpcHandler.npcs[i].underAttack = true; - NpcHandler.npcs[i].killerId = c.playerId; - return; - } - } - } - } - } - } +package com.rebotted.game.content.skills.thieving; + +import com.rebotted.GameEngine; +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.content.randomevents.RandomEventHandler; +import com.rebotted.game.content.skills.SkillHandler; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.items.ItemList; +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +public class Stalls { + + + public static enum stallData { + VEGETABLE_STALL(4706, 2, 10, 0, new int[] { 1965, 1 }), + BAKER_STALL(2561, 5, 16, 3, new int[] { 2309, 1 }, new int[] { 1891, 1 }, new int[] { 1895, 1 }), + TEA_STALL(635, 5, 16, 0, new int[] {712, 1 }), + SILK_STALL(2560, 20, 24, 2, new int[] { 950, 1 }), + WINE_STALL(14011, 22, 27, 0, new int[] { 1935, 1 }, new int[] {i("jug of water"), 1 }, new int[] { i("jug of wine"), 1 }, + new int[] { i("grapes"), 1 }), SEED_STALL(7053, 27, 10, 0, new int[] { i("potato seed"), 1 }, new int[] {i("onion seed"), 1 }, + new int[] { i("cabbage seed"), 1 }, new int[] {i("tomato seed"), 1 }, new int[] { i("sweetcorn seed"), 1 }, new int[] { i("strawberry seed"), 1 }, + new int[] {i("watermelon seed"), 1 }, new int[] {i("barley seed"), 1 }, new int[] { i("jute seed"), 1 }, new int[] { i("marigold seed"), 1 }, + new int[] {i("rosemary seed"), 1 }, new int[] {i("hammerstone seed"), 1 }, new int[] {i("asgarnain seed"), 1 }, new int[] {i("yanillian seed"), 1 }, + new int[] {i("krandorian seed"), 1 }, new int[] {i("wildblood seed"), 1 }), FUR_STALL(2563, 35, 36, 0, new int[] { 6814, 1 }, new int[] { 958, 1 }), + FUR_STALL2(4278, 35, 36, 0, new int[] { 6814, 1 }, new int[] { 958, 1 }), + FISH_STALL(4705, 42, 42, 0, new int[] { 359, 1 }), + FISH_STALL2(4277, 42, 42, 0, new int[] { 359, 1 }), + SILVER_STALL(2565, 50, 54, 2, new int[] { 442, 1 }, new int[] { 2355, 1 }), + SPICE_STALL(2564, 65, 81.3, 0, new int[] { 2007, 1 }, new int[] { 946, 1 }, new int[] { 1550, 1 }), GEM_STALL(2562, 75, 160, 3, + new int[] { 1617, 1 }, new int[] { 1619, 1 }, new int[] { 1621, 1 }, new int[] { 1623, 1 }), + MAGIC_STALL(4877, 65, 100, 0, new int[] {i("air rune"), 1}, new int[] {i("water rune"), 1}, new int[] {i("fire rune"), 1}, new int[] {i("law rune"), 1}), + SCIMITAR_STALL(4878, 65, 100, 0, new int[] {i("iron scimitar"), 1}, new int[] {i("steel scimitar"), 1}); + + private int objectId, levelReq, face; + private int[][] stalls; + private double xp; + + private stallData(final int objectId, final int levelReq, final double xp, final int face, final int[]... stalls) { + this.objectId = objectId; + this.levelReq = levelReq; + this.xp = xp; + this.face = face; + this.stalls = stalls; + } + + public int getObject() { + return objectId; + } + + public int getLevel() { + return levelReq; + } + + public double getXp() { + return xp; + } + + public int getFace() { + return face; + } + + public int[][] getStalls() { + return stalls; + } + + } + + public static int r(int random) { + return Misc.random(random); + } + + public static int i(String ItemName) { + return getItemId(ItemName); + } + + public static int getItemId(String itemName) { + for (ItemList i : GameEngine.itemHandler.ItemList) { + if (i != null) { + if (i.itemName.equalsIgnoreCase(itemName)) { + return i.itemId; + } + } + } + return -1; + } + + public static boolean isObject(int object) { + for (final stallData s : stallData.values()) { + if(object == s.getObject()) { + return true; + } + } + return false; + } + + public static void attemptStall(final Player p, final int objectId, final int x, final int y) { + for (final stallData s : stallData.values()) { + if (System.currentTimeMillis() - p.lastThieve < 2500 + r(2500)) { + p.getPacketSender().sendMessage("You need to wait longer before you can thieve this stall!"); + return; + } + if (!SkillHandler.THIEVING) { + p.getPacketSender().sendMessage("This skill is currently disabled."); + return; + } + if(p.underAttackBy > 0 || p.underAttackBy2 > 0) { + p.getPacketSender().sendMessage("You can't steal from a stall while in combat!"); + return; + } + if (p.getItemAssistant().freeSlots() == 0) { + p.getPacketSender().sendMessage("Not enough space in your inventory."); + return; + } + if(objectId == s.getObject()) { + if (p.playerLevel[p.playerThieving] >= s.getLevel()) { + if(Misc.random(4) == 1 && p.playerLevel[p.playerThieving] < 99) { + failGuards(p); + return; + } + if (p.getItemAssistant().freeSlots() == 0) { + p.getPacketSender().sendMessage("Not enough space in your inventory."); + return; + } + p.startAnimation(832); + RandomEventHandler.addRandom(p); + GameEngine.objectHandler.createAnObject(p, 634, x, y, s.getFace()); + p.getPlayerAssistant().addSkillXP((int) s.getXp(), p.playerThieving); + int[] random = s.getStalls()[Misc.random(s.getStalls().length-1)]; + p.lastThieve = System.currentTimeMillis(); + p.getPacketSender().sendMessage("You steal a "+ItemAssistant.getItemName(random[0])+" from the stall."); + CycleEventHandler.getSingleton().addEvent(p, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + GameEngine.objectHandler.createAnObject(p, s.getObject(), x, y, s.getFace()); + //new Object(s.getObject(), x, y, 0, s.getFace(), 10, j, getRespawnTime(c, s.getObject())); + container.stop(); + } + @Override + public void stop() { + } + }, getRespawnTime(p, s.getObject())); + } else { + p.getDialogueHandler().sendStatement("You must have a thieving level of " + s.getLevel() + " to steal from this stall."); + } + } + } + } + + private static int getRespawnTime(Player p, int i) { + switch (i) { + case 4706: + return 3;// veg + case 2561: + return 4;// baker + case 635: + return 12;// tea + case 2560: + return 13;// silk + case 14011: + return 27;// wine + case 7053: + return 18;// seed + case 2563: + return 25;// fur + case 4705: + return 27;// fish + case 2565: + return 50;// silver + case 2564: + case 4877: + case 4878: + return 133;// spice, scimitar, magic + case 2562: + return 300;// gem + } + return 5; + } + + private static void failGuards(final Player p) { + for (int i = 1; i < NpcHandler.MAX_NPCS; i ++) { + if (NpcHandler.npcs[i] != null) { + if (NpcHandler.npcs[i].npcType == 32 || NpcHandler.npcs[i].npcType == 1317 || NpcHandler.npcs[i].npcType == 2236 || NpcHandler.npcs[i].npcType == 2571) { + if (p.goodDistance(p.absX, p.absY, NpcHandler.npcs[i].absX, NpcHandler.npcs[i].absY, 7) + && p.heightLevel == NpcHandler.npcs[i].heightLevel) { + if (!NpcHandler.npcs[i].underAttack) { + NpcHandler.npcs[i].forceChat("What do you think you're doing?!?"); + NpcHandler.npcs[i].underAttack = true; + NpcHandler.npcs[i].killerId = p.playerId; + return; + } + } + } + } + } + } } \ No newline at end of file diff --git a/2006Redone Server/src/redone/game/content/skills/thieving/ThieveOther.java b/2006Redone Server/src/com/rebotted/game/content/skills/thieving/ThieveOther.java similarity index 53% rename from 2006Redone Server/src/redone/game/content/skills/thieving/ThieveOther.java rename to 2006Redone Server/src/com/rebotted/game/content/skills/thieving/ThieveOther.java index f9eda018..2be57557 100644 --- a/2006Redone Server/src/redone/game/content/skills/thieving/ThieveOther.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/thieving/ThieveOther.java @@ -1,87 +1,87 @@ -package redone.game.content.skills.thieving; - -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.content.skills.SkillHandler; -import redone.game.items.ItemAssistant; -import redone.game.players.Client; -import redone.util.Misc; - -/** - * Thieveother - * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) - */ - -public class ThieveOther { - - private static boolean isPicking = false; - - private static final int[][] LOCKED_DOORS = {{2550, 2674, 3305}, {2551, 2674, 3304}}; - - public static boolean lockedDoor(Client client, int objectType) { - for (int[] element : LOCKED_DOORS) { - int objectId = element[0]; - int x = element[1]; - int y = element[2]; - if (objectType == objectId && client.absX == x && client.absY == y) { - client.getActionSender().sendMessage("The door is locked."); - return false; - } - } - return true; - } - - public static void stealFromChest(Client client, int level, int exp, int reward, int amount) { - if (client.playerLevel[client.playerThieving] < level) { - client.getActionSender().sendMessage("You need " + level + " thieving to thieve this chest."); - return; - } - if (!SkillHandler.THIEVING) { - client.getActionSender().sendMessage("Thieving is currently disabled."); - return; - } - client.getItemAssistant().addItem(reward, amount); - client.getPlayerAssistant().addSkillXP(exp, client.playerThieving); - client.getActionSender().sendMessage("You steal " + ItemAssistant.getItemName(reward) + " from the chest."); - } - - public static void pickLock(final Client client, int level, final double exp, final int x, final int y, final int hardness, boolean lock) { - if (!client.getItemAssistant().playerHasItem(1523, 1) && lock) { - client.getActionSender().sendMessage("You need a lock pick to do that."); - return; - } - if (client.playerLevel[client.playerThieving] < level) { - client.getActionSender().sendMessage("You need " + level + " thieving to thieve this chest."); - return; - } - if (!SkillHandler.THIEVING) { - client.getActionSender().sendMessage("Thieving is currently disabled."); - return; - } - if (isPicking == true) { - client.getActionSender().sendMessage("You are already picking a lock."); - return; - } - isPicking = true; - client.getActionSender().sendMessage("You attempt to pick the lock."); - CycleEventHandler.getSingleton().addEvent(client, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (Misc.random(10) < hardness) { - client.getActionSender().sendMessage("You fail to pick the lock."); - container.stop(); - return; - } - client.getPlayerAssistant().movePlayer(x, y, client.heightLevel); - client.getActionSender().sendMessage("You manage to pick the lock."); - client.getPlayerAssistant().addSkillXP(exp, client.playerThieving); - container.stop(); - } - @Override - public void stop() { - isPicking = false; - } - }, 3); - } +package com.rebotted.game.content.skills.thieving; + +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.content.skills.SkillHandler; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +/** + * Thieveother + * @author Andrew (Mr Extremez) + */ + +public class ThieveOther { + + private static boolean isPicking = false; + + private static final int[][] LOCKED_DOORS = {{2550, 2674, 3305}, {2551, 2674, 3304}}; + + public static boolean lockedDoor(Player player, int objectType) { + for (int[] element : LOCKED_DOORS) { + int objectId = element[0]; + int x = element[1]; + int y = element[2]; + if (objectType == objectId && player.absX == x && player.absY == y) { + player.getPacketSender().sendMessage("The door is locked."); + return false; + } + } + return true; + } + + public static void stealFromChest(Player client, int level, int exp, int reward, int amount) { + if (client.playerLevel[client.playerThieving] < level) { + client.getPacketSender().sendMessage("You need " + level + " thieving to thieve this chest."); + return; + } + if (!SkillHandler.THIEVING) { + client.getPacketSender().sendMessage("Thieving is currently disabled."); + return; + } + client.getItemAssistant().addItem(reward, amount); + client.getPlayerAssistant().addSkillXP(exp, client.playerThieving); + client.getPacketSender().sendMessage("You steal " + ItemAssistant.getItemName(reward) + " from the chest."); + } + + public static void pickLock(final Player client, int level, final double exp, final int x, final int y, final int hardness, boolean lock) { + if (!client.getItemAssistant().playerHasItem(1523, 1) && lock) { + client.getPacketSender().sendMessage("You need a lock pick to do that."); + return; + } + if (client.playerLevel[client.playerThieving] < level) { + client.getPacketSender().sendMessage("You need " + level + " thieving to thieve this chest."); + return; + } + if (!SkillHandler.THIEVING) { + client.getPacketSender().sendMessage("Thieving is currently disabled."); + return; + } + if (isPicking == true) { + client.getPacketSender().sendMessage("You are already picking a lock."); + return; + } + isPicking = true; + client.getPacketSender().sendMessage("You attempt to pick the lock."); + CycleEventHandler.getSingleton().addEvent(client, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (Misc.random(10) < hardness) { + client.getPacketSender().sendMessage("You fail to pick the lock."); + container.stop(); + return; + } + client.getPlayerAssistant().movePlayer(x, y, client.heightLevel); + client.getPacketSender().sendMessage("You manage to pick the lock."); + client.getPlayerAssistant().addSkillXP(exp, client.playerThieving); + container.stop(); + } + @Override + public void stop() { + isPicking = false; + } + }, 3); + } } \ No newline at end of file diff --git a/2006Redone Server/src/redone/game/content/traveling/Desert.java b/2006Redone Server/src/com/rebotted/game/content/traveling/Desert.java similarity index 54% rename from 2006Redone Server/src/redone/game/content/traveling/Desert.java rename to 2006Redone Server/src/com/rebotted/game/content/traveling/Desert.java index 6a0a20f2..07d4ddf7 100644 --- a/2006Redone Server/src/redone/game/content/traveling/Desert.java +++ b/2006Redone Server/src/com/rebotted/game/content/traveling/Desert.java @@ -1,135 +1,135 @@ -package redone.game.content.traveling; - -import redone.Server; -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.players.Client; -import redone.util.Misc; - -public class Desert { - - /** - * The animation played when cutting the cactus.(SLASH) - */ - private static final int CUTTING_ANIMATION = 451; - - /** - * The dry cactus object id. - */ - private static final int DRY_CACTUS = 2671; - - /** - * The cactus re-spawning delay. - */ - private static final int CACTUS_DELAY = 20 + Misc.random(5); - - /** - * The cactus cutting items. - */ - public static int[] CACTUS_CUTTER = { 946 }; - - /** - * Various filling vessels. (The water-skins) - */ - public static int[][] FILLS = { { 1825, 1823 }, { 1827, 1825 }, - { 1829, 1827 }, { 1831, 1829 } }; - - /** - * Gets the cutters. - * - * @param c - * Player c. - * @return Returns default value. - */ - public static int getCacCutter(Client c) { - int cut = 0; - for (int element : CACTUS_CUTTER) { - if (c.getItemAssistant().playerHasItem(element)) { - cut = element; - } - } - return cut; - } - - public static void showWarning(Client c) { - for (int i = 8144; i < 8195; i++) { - c.getPlayerAssistant().sendFrame126("", i); - } - c.getPlayerAssistant().sendFrame126("@dre@DESERT WARNING", 8144); - c.getPlayerAssistant().sendFrame126("", 8145); - c.getPlayerAssistant().sendFrame126("The intense heat of the desert reduces your health.", 8147); - c.getPlayerAssistant().sendFrame126("Bring 2-5 waterskins to avoid receiving any damage.", 8148); - c.getPlayerAssistant().sendFrame126("", 8149); - c.getPlayerAssistant().sendFrame126("Wearing desert robes will not prevent the damage, but", 8150); - c.getPlayerAssistant().sendFrame126("will reduce it significantly.", 8151); - c.getPlayerAssistant().sendFrame126("", 8152); - c.getPlayerAssistant().sendFrame126("The waterskins however need to be re-filled. Bring a", 8153); - c.getPlayerAssistant().sendFrame126("knife and cut healthy cacti to re-fill the waterskins.", 8154); - c.getPlayerAssistant().sendFrame126("@red@Any water vessels will evaporate, such as jug of water.", 8155); - c.getPlayerAssistant().showInterface(8134); - } - - /** - * Handles fails and success attempts. - * - * @param c - * @param objectId - * @param obX - * @param obY - */ - public static void checkCactus(Client c, int objectId, int obX, int obY) { - int fail = Misc.random(2); - if (fail == 1) { - c.getActionSender().sendMessage("You failed to cut the cactus."); - c.getPlayerAssistant().addSkillXP(1, c.playerWoodcutting); - return; - } - c.startAnimation(CUTTING_ANIMATION); - c.getActionSender().sendMessage("You slash away the cactus."); - Server.objectHandler.createAnObject(c, DRY_CACTUS, obX, obY, -1); - for (int element[] : FILLS) { - if (c.getItemAssistant().playerHasItem(element[0])) { - c.getItemAssistant().deleteItem(element[0], c.getItemAssistant().getItemSlot(element[0]), 1); - c.getItemAssistant().addItem(element[1], 1); - c.getPlayerAssistant().addSkillXP(10, c.playerWoodcutting); - } - } - } - - /** - * Cuts the cactus. Uses schedule task management. - * - * @param c - * The Player client. - * @param itemId - * The cactus cutter item id. - * @param objectId - * The cactus(healthy/dry) object id. - * @param obX - * Gets the object coordinate x. - * @param obY - * Gets the object coordinate y. - */ - public static void cutCactus(final Client c, int itemId, final int objectId, final int obX, final int obY) { - for (int element : CACTUS_CUTTER) { - if (itemId == element) { - checkCactus(c, objectId, obX, obY); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - Server.objectHandler.createAnObject(c, objectId, obX, obY, -1); - container.stop(); - } - @Override - public void stop() { - - } - }, CACTUS_DELAY); - } else { - c.getActionSender().sendMessage("You need a knife or a sharp weapon to cut this."); - } - } - } - -} +package com.rebotted.game.content.traveling; + +import com.rebotted.GameEngine; +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +public class Desert { + + /** + * The animation played when cutting the cactus.(SLASH) + */ + private static final int CUTTING_ANIMATION = 451; + + /** + * The dry cactus object id. + */ + private static final int DRY_CACTUS = 2671; + + /** + * The cactus re-spawning delay. + */ + private static final int CACTUS_DELAY = 20 + Misc.random(5); + + /** + * The cactus cutting items. + */ + public static int[] CACTUS_CUTTER = { 946 }; + + /** + * Various filling vessels. (The water-skins) + */ + public static int[][] FILLS = { { 1825, 1823 }, { 1827, 1825 }, + { 1829, 1827 }, { 1831, 1829 } }; + + /** + * Gets the cutters. + * + * @param player + * Player c. + * @return Returns default value. + */ + public static int getCacCutter(Player player) { + int cut = 0; + for (int element : CACTUS_CUTTER) { + if (player.getItemAssistant().playerHasItem(element)) { + cut = element; + } + } + return cut; + } + + public static void showWarning(Player c) { + for (int i = 8144; i < 8195; i++) { + c.getPacketSender().sendFrame126("", i); + } + c.getPacketSender().sendFrame126("@dre@DESERT WARNING", 8144); + c.getPacketSender().sendFrame126("", 8145); + c.getPacketSender().sendFrame126("The intense heat of the desert reduces your health.", 8147); + c.getPacketSender().sendFrame126("Bring 2-5 waterskins to avoid receiving any damage.", 8148); + c.getPacketSender().sendFrame126("", 8149); + c.getPacketSender().sendFrame126("Wearing desert robes will not prevent the damage, but", 8150); + c.getPacketSender().sendFrame126("will reduce it significantly.", 8151); + c.getPacketSender().sendFrame126("", 8152); + c.getPacketSender().sendFrame126("The waterskins however need to be re-filled. Bring a", 8153); + c.getPacketSender().sendFrame126("knife and cut healthy cacti to re-fill the waterskins.", 8154); + c.getPacketSender().sendFrame126("@red@Any water vessels will evaporate, such as jug of water.", 8155); + c.getPacketSender().showInterface(8134); + } + + /** + * Handles fails and success attempts. + * + * @param c + * @param objectId + * @param obX + * @param obY + */ + public static void checkCactus(Player c, int objectId, int obX, int obY) { + int fail = Misc.random(2); + if (fail == 1) { + c.getPacketSender().sendMessage("You failed to cut the cactus."); + c.getPlayerAssistant().addSkillXP(1, c.playerWoodcutting); + return; + } + c.startAnimation(CUTTING_ANIMATION); + c.getPacketSender().sendMessage("You slash away the cactus."); + GameEngine.objectHandler.createAnObject(c, DRY_CACTUS, obX, obY, -1); + for (int element[] : FILLS) { + if (c.getItemAssistant().playerHasItem(element[0])) { + c.getItemAssistant().deleteItem(element[0], c.getItemAssistant().getItemSlot(element[0]), 1); + c.getItemAssistant().addItem(element[1], 1); + c.getPlayerAssistant().addSkillXP(10, c.playerWoodcutting); + } + } + } + + /** + * Cuts the cactus. Uses schedule task management. + * + * @param c + * The Player client. + * @param itemId + * The cactus cutter item id. + * @param objectId + * The cactus(healthy/dry) object id. + * @param obX + * Gets the object coordinate x. + * @param obY + * Gets the object coordinate y. + */ + public static void cutCactus(final Player c, int itemId, final int objectId, final int obX, final int obY) { + for (int element : CACTUS_CUTTER) { + if (itemId == element) { + checkCactus(c, objectId, obX, obY); + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + GameEngine.objectHandler.createAnObject(c, objectId, obX, obY, -1); + container.stop(); + } + @Override + public void stop() { + + } + }, CACTUS_DELAY); + } else { + c.getPacketSender().sendMessage("You need a knife or a sharp weapon to cut this."); + } + } + } + +} diff --git a/2006Redone Server/src/redone/game/content/traveling/GnomeGlider.java b/2006Redone Server/src/com/rebotted/game/content/traveling/GnomeGlider.java similarity index 71% rename from 2006Redone Server/src/redone/game/content/traveling/GnomeGlider.java rename to 2006Redone Server/src/com/rebotted/game/content/traveling/GnomeGlider.java index 750b0d88..a9633664 100644 --- a/2006Redone Server/src/redone/game/content/traveling/GnomeGlider.java +++ b/2006Redone Server/src/com/rebotted/game/content/traveling/GnomeGlider.java @@ -1,88 +1,88 @@ -package redone.game.content.traveling; - -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.players.Client; - -public class GnomeGlider { - - private static final int[][] GLIDER_DATA = { { 3058, 2848, 3497, 0, 1 }, // TO - // MOUNTAIN - { 3057, 2465, 3501, 3, 2 }, // TO GRAND TREE - { 3059, 3321, 3427, 0, 3 }, // TO CASTLE - { 3060, 3278, 3212, 0, 4 }, // TO DESERT - { 3056, 2894, 2730, 0, 8 }, // TO CRASH ISLAND - { 48054, 2544, 2970, 0, 10 }, // TO OGRE AREA - }; - - public static void flightButtons(Client player, int button) { - if (player.gliderOpen == true) { - for (int i = 0; i < getLength(); i++) { - if (getButton(i) == button) { - handleFlight(player, i); - } - } - } else { - for (int i = 0; i < getLength(); i++) { - if (player.gliderOpen == false && getButton(i) == button) { - player.getActionSender().sendMessage("You have improperly opened the glider."); - } - } - } - } - - public static void handleFlight(final Client player, final int flightId) { - player.getPlayerAssistant().showInterface(802); - player.getPlayerAssistant().sendConfig(153, getMove(flightId)); - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - player.getPlayerAssistant().movePlayer(getX(flightId), getY(flightId), getH(flightId)); - container.stop(); - } - @Override - public void stop() { - - } - }, 3); - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - player.getPlayerAssistant().closeAllWindows(); - player.getPlayerAssistant().sendConfig(153, -1); - player.gliderOpen = false; - container.stop(); - } - @Override - public void stop() { - - } - }, 4); - - } - - public static int getLength() { - return GLIDER_DATA.length; - } - - public static int getButton(int i) { - return GLIDER_DATA[i][0]; - } - - public static int getX(int i) { - return GLIDER_DATA[i][1]; - } - - public static int getY(int i) { - return GLIDER_DATA[i][2]; - } - - public static int getH(int i) { - return GLIDER_DATA[i][3]; - } - - public static int getMove(int i) { - return GLIDER_DATA[i][4]; - } -} +package com.rebotted.game.content.traveling; + +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.players.Player; + +public class GnomeGlider { + + private static final int[][] GLIDER_DATA = { { 3058, 2848, 3497, 0, 1 }, // TO + // MOUNTAIN + { 3057, 2465, 3501, 3, 2 }, // TO GRAND TREE + { 3059, 3321, 3427, 0, 3 }, // TO CASTLE + { 3060, 3278, 3212, 0, 4 }, // TO DESERT + { 3056, 2894, 2730, 0, 8 }, // TO CRASH ISLAND + { 48054, 2544, 2970, 0, 10 }, // TO OGRE AREA + }; + + public static void flightButtons(Player player, int button) { + if (player.gliderOpen == true) { + for (int i = 0; i < getLength(); i++) { + if (getButton(i) == button) { + handleFlight(player, i); + } + } + } else { + for (int i = 0; i < getLength(); i++) { + if (player.gliderOpen == false && getButton(i) == button) { + player.getPacketSender().sendMessage("You have improperly opened the glider."); + } + } + } + } + + public static void handleFlight(final Player player, final int flightId) { + player.getPacketSender().showInterface(802); + player.getPacketSender().sendConfig(153, getMove(flightId)); + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + player.getPlayerAssistant().movePlayer(getX(flightId), getY(flightId), getH(flightId)); + container.stop(); + } + @Override + public void stop() { + + } + }, 3); + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + player.getPacketSender().closeAllWindows(); + player.getPacketSender().sendConfig(153, -1); + player.gliderOpen = false; + container.stop(); + } + @Override + public void stop() { + + } + }, 4); + + } + + public static int getLength() { + return GLIDER_DATA.length; + } + + public static int getButton(int i) { + return GLIDER_DATA[i][0]; + } + + public static int getX(int i) { + return GLIDER_DATA[i][1]; + } + + public static int getY(int i) { + return GLIDER_DATA[i][2]; + } + + public static int getH(int i) { + return GLIDER_DATA[i][3]; + } + + public static int getMove(int i) { + return GLIDER_DATA[i][4]; + } +} diff --git a/2006Redone Server/src/com/rebotted/game/content/traveling/Sailing.java b/2006Redone Server/src/com/rebotted/game/content/traveling/Sailing.java new file mode 100644 index 00000000..78be83c2 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/content/traveling/Sailing.java @@ -0,0 +1,151 @@ +package com.rebotted.game.content.traveling; + +import com.rebotted.GameConstants; +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.game.players.Player; + +/** + * @author Andrew (Mr Extremez) + */ + +public class Sailing { + + private static final int[][] TRAVEL_DATA = { {}, // 0 - Null + { 2834, 3335, 15 }, // 1 - From Port Sarim to Entrana + { 3048, 3234, 15 }, // 2 - From Entrana to Port Sarim + { 2853, 3237, 12 }, // 3 - From Port Sarim to Crandor + { 2834, 3335, 13 }, // 4 - From Crandor to Port Sarim + { 2956, 3146, 9 }, // 5 - From Port Sarim to Karajama + { 3029, 3217, 8 }, // 6 - From Karajama to Port Sarim + { 2772, 3234, 3 }, // 7 - From Ardougne to Brimhaven + { 2683, 3271, 3 }, // 8 - From Brimhaven to Ardougne + { 2998, 3043, 23 }, // 11 - From Port Khazard to Ship Yard + { 2676, 3170, 23 }, // 12 - From Ship Yard to Port Khazard + { 2998, 3043, 17 }, // 13 - From Cairn Island to Ship Yard + { 2659, 2676, 12 }, // 14 - From Port Sarim to Pest Control + { 3041, 3202, 12 }, // 15 - From Pest Control to Port Sarim + { 2763, 2956, 10 }, // 16 - To Cairn Isle from Feldip Hills + { 2551, 3759, 20}, // 17 - To Waterbirth from Relleka + { 2620, 3686, 20}, //18 - To Relleka from Waterbirth + }; + + //2620, 3686 - relleka + //2551, 3759 - waterbirth + + public static boolean checkForCash(Player c) { + if (!c.getItemAssistant().playerHasItem(995, 1000)) { + c.getDialogueHandler().sendNpcChat1("You need 1000 coins to to travel on this ship!", 2437, NpcHandler.getNpcListName(c.npcType)); + c.nextChat = 0; + return false; + } + c.getItemAssistant().deleteItem(995, 1000); + c.getPacketSender().sendMessage("Your free to go and pay the 1000 coins."); + return true; + } + + public static boolean checkForCoins(Player c) { + if (!c.getItemAssistant().playerHasItem(995, 30)) { + c.getDialogueHandler().sendNpcChat1("You need 30 coins to to travel on this ship!", 381, NpcHandler.getNpcListName(c.npcType)); + c.nextChat = 0; + return false; + } + c.getItemAssistant().deleteItem(995, 30); + c.getPacketSender().sendMessage("Your free to go and pay the 30 coins."); + return true; + } + + public static boolean searchForAlcohol(Player c) { + for (int element : GameConstants.ALCOHOL_RELATED_ITEMS) { + if (c.getItemAssistant().playerHasItem(element, 1)) { + c.getDialogueHandler().sendNpcChat1("You can't bring intoxicating items to Asgarnia!", c.npcType, NpcHandler.getNpcListName(c.npcType)); + c.nextChat = 0; + return false; + } + } + c.getPacketSender().sendMessage( + "Your clean of any possible alchohol."); + return true; + } + + public static boolean quickSearch(Player c) { + for (int element : GameConstants.COMBAT_RELATED_ITEMS) { + if (c.getItemAssistant().playerHasItem(element, 1) || c.getItemAssistant().playerHasEquipped(element)) { + c.getDialogueHandler().sendNpcChat2("Grr! I see you brought some illegal items! Get", "out of my sight immediately!", 657, NpcHandler.getNpcListName(c.npcType)); + c.nextChat = 0; + return false; + } + } + c.getPacketSender().sendMessage("Your clean of any possible weapons."); + return true; + } + + public static void startTravel(final Player c, final int i) { + if (i == 1) {// entrana check + if (!quickSearch(c)) { + return; + } + } + if (i == 2) {// entrana check + if (!searchForAlcohol(c)) { + return; + } + } + if (i == 7 || i == 8) { + if (!checkForCoins(c)) { + return; + } + } + if (i == 17 || i == 18) { + if (!checkForCash(c)) { + return; + } + } + c.stopPlayerPacket = true; + c.getPacketSender().showInterface(3281); + c.getPacketSender().sendConfig(75, i); + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + c.getPlayerAssistant().movePlayer(getX(i), getY(i), 0); + container.stop(); + } + @Override + public void stop() { + + } + }, getTime(i) - 1); + + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + c.stopPlayerPacket = false; + c.getPacketSender().sendConfig(75, -1); + c.getPacketSender().closeAllWindows(); + c.getDialogueHandler().sendStatement("You arrive safely."); + c.nextChat = 0; + container.stop(); + } + @Override + public void stop() { + + } + }, getTime(i)); + + } + + public static int getX(int i) { + return TRAVEL_DATA[i][0]; + } + + public static int getY(int i) { + return TRAVEL_DATA[i][1]; + } + + public static int getTime(int i) { + return TRAVEL_DATA[i][2]; + } + +} diff --git a/2006Redone Server/src/redone/game/dialogues/Dialogue.java b/2006Redone Server/src/com/rebotted/game/dialogues/Dialogue.java similarity index 56% rename from 2006Redone Server/src/redone/game/dialogues/Dialogue.java rename to 2006Redone Server/src/com/rebotted/game/dialogues/Dialogue.java index be1a6eb1..5cc5ef50 100644 --- a/2006Redone Server/src/redone/game/dialogues/Dialogue.java +++ b/2006Redone Server/src/com/rebotted/game/dialogues/Dialogue.java @@ -1,20 +1,20 @@ -package redone.game.dialogues; - -import redone.game.players.Client; -import redone.net.packets.PacketType; - -/** - * Dialogue - **/ - -public class Dialogue implements PacketType { - - @Override - public void processPacket(Client c, int packetType, int packetSize) { - if (c.nextChat > 0) { - c.getDialogueHandler().sendDialogues(c.nextChat, c.talkingNpc); - } else { - c.getDialogueHandler().sendDialogues(0, -1); - } - } -} +package com.rebotted.game.dialogues; + +import com.rebotted.game.players.Player; +import com.rebotted.net.packets.PacketType; + +/** + * Dialogue + **/ + +public class Dialogue implements PacketType { + + @Override + public void processPacket(Player c, int packetType, int packetSize) { + if (c.nextChat > 0) { + c.getDialogueHandler().sendDialogues(c.nextChat, c.talkingNpc); + } else { + c.getDialogueHandler().sendDialogues(0, -1); + } + } +} diff --git a/2006Redone Server/src/redone/game/dialogues/DialogueHandler.java b/2006Redone Server/src/com/rebotted/game/dialogues/DialogueHandler.java similarity index 89% rename from 2006Redone Server/src/redone/game/dialogues/DialogueHandler.java rename to 2006Redone Server/src/com/rebotted/game/dialogues/DialogueHandler.java index 62e749cd..7aa49052 100644 --- a/2006Redone Server/src/redone/game/dialogues/DialogueHandler.java +++ b/2006Redone Server/src/com/rebotted/game/dialogues/DialogueHandler.java @@ -1,7331 +1,7325 @@ -package redone.game.dialogues; - -import redone.Constants; -import redone.game.content.quests.QuestAssistant; -import redone.game.content.quests.QuestRewards; -import redone.game.content.randomevents.FreakyForester; -import redone.game.content.randomevents.RandomEventHandler; -import redone.game.content.skills.SkillHandler; -import redone.game.content.skills.slayer.Slayer; -import redone.game.content.traveling.Sailing; -import redone.game.globalworldobjects.PassDoor; -import redone.game.npcs.NpcHandler; -import redone.game.objects.impl.SpecialObjects; -import redone.game.players.Client; -import redone.game.players.PlayerAssistant; -import redone.game.shops.Shops.Shop; -import redone.util.Misc; - -/** - * Anims: - * http://www.rune-server.org/runescape-development/rs2-server/tutorials/518991-pi-317-player-npc-facial-dialogue-expressions.html - */ - -public class DialogueHandler { - - private final Client player; - - public DialogueHandler(Client client) { - this.player = client; - } - - public void sendDialogues(int dialogue, int npcId) { - int MOLE_SKIN = player.getItemAssistant().getItemCount(7418), MOLE_CLAW = player.getItemAssistant().getItemCount(7416); - player.talkingNpc = npcId; - switch (dialogue) { - case 0: - player.talkingNpc = -1; - player.getPlayerAssistant().removeAllWindows(); - player.nextChat = 0; - break; - - case 1: // was 16 - sendOption2("I would like to reset my barrows brothers.", - "I would like to fix all my barrows"); - player.dialogueAction = 8; - break; - - case 2: - if (player.canLeaveArea) { - sendNpcChat2( - "Just step through the glowing portal when you're ready", - "to leave, and I'll ensure you get a nice reward.", - player.talkingNpc, "Freaky Forester"); - player.getItemAssistant().deleteItem(6178, player.getItemAssistant().getItemSlot(6178), player.getItemAssistant().getItemAmount(6178)); - } else if (FreakyForester.hasKilledPheasant(player) - && player.getItemAssistant().playerHasItem(6178, 1)) { - sendNpcChat1( - "Thank you. I take that pheasant, you can leave now.", - player.talkingNpc, "Freaky Forester"); - player.canLeaveArea = true; - player.getItemAssistant().deleteItem(6178, player.getItemAssistant().getItemSlot(6178), player.getItemAssistant().getItemAmount(6178)); - } else { - sendNpcChat2("Hello there mate. Can you please kill a " - + FreakyForester.getPheasant(player) + " and", - "bring it back to me and I shall let you leave.", - player.talkingNpc, "Freaky Forester"); - } - player.nextChat = 0; - break;// go to where they appear or whatever - - case 3: - sendNpcChat1("Come back mate! You can't leave yet!", - player.talkingNpc, "Freaky Forester"); - player.nextChat = 0; - break; - - case 4: - if (player.luthas == true && player.bananas >= 2) { - player.getItemAssistant().addOrDropItem(995, 30); - sendNpcChat1( - "Thank you for your services you have been rewarded 30 coins.", - player.talkingNpc, "Luthas"); - player.luthas = false; - player.bananas = 0; - player.nextChat = 0; - } else { - player.getPlayerAssistant().bananasCheck(); - player.nextChat = 0; - } - break; - - case 8: - sendOption2("I would like to collect some banana's for you", - "Never mind"); - player.dialogueAction = 92; - break; - - case 9: - sendPlayerChat1("I would like to collect some banana's for you."); - player.luthas = true; - player.bananas = 1; - player.nextChat = 10; - break; - - case 10: - sendNpcChat1( - "Please put 10 bannanas in a crate then I will reward you.", - player.talkingNpc, "Luthas"); - player.nextChat = 4; - break; - - case 5: - sendPlayerChat1("Hello, how's it going?"); - player.nextChat = 6; - break; - case 6: - sendNpcChat1("I'm fine, how are you?", player.talkingNpc, "Man"); - player.nextChat = 7; - break; - case 7: - sendPlayerChat1("Very well thank you."); - player.nextChat = 0; - break; - - case 11: - sendOption2("Here's 5 coins you tramp.", "Leave, me alone."); - player.dialogueAction = 90; - break; - - case 12: - if (player.getItemAssistant().playerHasItem(995, 5)) { - player.getItemAssistant().deleteItem(995, 5); - sendPlayerChat1("Here's 5 coins you tramp."); - player.nextChat = 0; - } else { - player.nextChat = 13; - } - break; - - case 13: - sendPlayerChat1("No! Leave me alone."); - player.nextChat = 0; - break; - - case 14: // lumby guide - sendNpcChat1( - "Greetings, welcome to " + Constants.SERVER_NAME + ".", - player.talkingNpc, "Lumbridge Guide"); - player.nextChat = 0; - break; - - case 15: - sendOption2("I would like to view your shop", - "I would like to fix my barrows"); - player.dialogueAction = 91; - break; - - case 16: - player.getShopAssistant().openShop(8); - player.nextChat = 0; - break; - - case 17: - player.getPlayerAssistant().fixAllBarrows(); - player.nextChat = 0; - break; - - case 18: - sendNpcChat1("Hi welcome to the partyroom.", player.talkingNpc, - "Party Pete"); - player.nextChat = 605; - break; - - case 19: - sendNpcChat1("Hello would you like to buy a beer for 2 gp?", - player.talkingNpc, "Bartender"); - player.nextChat = 20; - break; - - case 20: - if (player.getItemAssistant().playerHasItem(995, 2)) { - sendPlayerChat1("Yes I would love a beer."); - player.getItemAssistant().deleteItem(995, 2); - player.getItemAssistant().addOrDropItem(1917, 1); - player.nextChat = 0; - } else { - sendPlayerChat1("I don't have enough coins to buy a beer."); - player.nextChat = 0; - } - break; - - case 21: - sendNpcChat1( - "Hello, would you like me to bring you into to shilo village?", - player.talkingNpc, "Mosol Rei"); - player.nextChat = 22; - break; - - case 22: - sendOption2("Yes", "No"); - player.dialogueAction = 93; - break; - - case 23: - player.getPlayerAssistant().movePlayer(2867, 2952, 0); - player.nextChat = 0; - break; - - case 24: - if (player.getItemAssistant().playerHasItem(995, 200)) { - sendNpcChat3("Hello Fair Traveler.", - "Can i interest you in a ride back to shantay", - "for 200 coins?", player.talkingNpc, "Rug Merchant"); - player.nextChat = 25; - } else { - sendNpcChat1("You need 200 coins to travel my rug.", - player.talkingNpc, "Rug Merchant"); - player.nextChat = 0; - } - break; - - case 25: - sendPlayerChat1("Yes please."); - player.getPlayerAssistant().startTeleport(3308, 3108, 0, "modern"); - player.getItemAssistant().deleteItem(995, 200); - player.nextChat = 0; - break; - - case 26: - if (player.getItemAssistant().playerHasItem(995, 200)) { - sendNpcChat2("Hello Fair Traveler.", - "Can i interest you in a ride for 200 coins?", - player.talkingNpc, "Rug Merchant"); - player.nextChat = 27; - } else { - sendNpcChat1("You need 200 coins to travel my rug.", - player.talkingNpc, "Rug Merchant"); - player.nextChat = 0; - } - break; - - case 27: - sendOption4("Pollnivneach (North)", "Bedabin Camp", "Uzer", - "Shantay Pass"); - player.dialogueAction = 700; - break; - - case 28: - sendPlayerChat1("Pollnivneach please."); - player.getPlayerAssistant().startTeleport(3350, 3004, 0, "modern"); - player.nextChat = 32; - break; - case 29: - sendPlayerChat1("Bedabin Camp please."); - player.getPlayerAssistant().startTeleport(3180, 3043, 0, "modern"); - player.nextChat = 32; - break; - case 30: - sendPlayerChat1("Uzer please."); - player.getPlayerAssistant().startTeleport(3469, 3111, 0, "modern"); - player.nextChat = 32; - break; - case 31: - sendPlayerChat1("Shantay pass please."); - player.getPlayerAssistant().startTeleport(3308, 3108, 0, "modern"); - player.nextChat = 32; - break; - case 32: - sendNpcChat1("Enjoy!", player.talkingNpc, "Rug Merchant"); - player.getItemAssistant().deleteItem(995, 200); - player.nextChat = 0; - break; - case 33: - sendNpcChat1("The trip to karamja will cost you 30 coins.", - player.talkingNpc, "Sailor"); - player.nextChat = 34; - break; - - case 34: - sendOption2("Yes", "No"); - player.dialogueAction = 67; - break; - - case 35: - sendPlayerChat1("No thank you."); - player.nextChat = 0; - break; - case 36: - sendPlayerChat1("Yes please."); - player.nextChat = 583; - break; - - case 37: - sendNpcChat2("Welcome to my food store!", - "Would you like to buy anything?", player.talkingNpc, - "Wydin"); - player.nextChat = 38; - break; - case 38: - sendOption3("Yes please.", "No thank you.", "Can I get a job here?"); - player.dialogueAction = 68; - break; - case 39: - sendPlayerChat1("Yes please."); - player.getShopAssistant().openShop(34); - break; - case 40: - sendPlayerChat1("No thank you."); - player.nextChat = 0; - break; - case 41: - sendPlayerChat1("Can I get a job here?"); - player.ptjob = 1; - player.nextChat = 42; - break; - case 42: - sendNpcChat3("Well you're keen, I'll give you that.", - "Okay, I'll give you a go.", - "Have you got your own white apron?", player.talkingNpc, - "Wydin"); - player.nextChat = 43; - break; - case 43: - sendPlayerChat1("No, I haven't."); - player.nextChat = 44; - break; - case 44: - sendNpcChat2( - "Well, you can't work here unless you have a white apron.", - "Health and safety regulations, you understand.", - player.talkingNpc, "Wydin"); - player.nextChat = 45; - break; - case 45: - sendPlayerChat1("Where can I get one of those?"); - player.nextChat = 46; - break; - case 46: - sendNpcChat2( - "Well I get all mine at the clothing shop in Varrock.", - "They sell them cheap there.", player.talkingNpc, "Wydin"); - player.nextChat = 47; - player.ptjob = 1; - break; - case 47: - sendNpcChat1("Have you got your white apron now?", - player.talkingNpc, "Wydin"); - player.nextChat = 47; - break; - case 48: - if (player.getItemAssistant().playerHasItem(1005, 1)) { - sendPlayerChat1("Yes I have one here."); - player.nextChat = 49; - player.ptjob = 1; - } else { - sendPlayerChat1("No I still need to get one."); - player.nextChat = 0; - } - break; - case 49: - sendNpcChat2("Wow, your well prepared! Your hired.", - "Go through the back and tidy up for me please.", - player.talkingNpc, "Wydin"); - player.nextChat = 0; - player.ptjob = 2; - break; - case 50: - sendNpcChat1("What am I to do?", player.talkingNpc, "Cook"); - player.nextChat = 51; - break; - case 51: - sendOption4("What's wrong?", "Can you cook me a cake?", - "You don't look very happy.", "Nice hat."); - player.dialogueAction = 52; - break; - case 52: - sendPlayerChat1("What's wrong?"); - player.nextChat = 54; - break; - case 54: - sendNpcChat3( - "Oh dear, oh dear, oh dear, I'm in a terrible terrible", - "mess! It's the Duke's birthday today, and I should be", - "making him a lovely big birthday cake!", - player.talkingNpc, "Cook"); - player.nextChat = 55; - break; - case 55: - sendNpcChat4( - "I've forgotten to buy the ingredients. I'll never get", - "them in time now. He'll sack me! What will I do? I have", - "four children and a goat to look after. Would you help", - "me? Please?", player.talkingNpc, "Cook"); - player.nextChat = 56; - break; - case 56: - sendOption2("I'm always happy to help a cook in distress.", - "I can't right now, Maybe later."); - player.dialogueAction = 57; - break; - case 57: - sendPlayerChat1("Yes, I'll help you.");// 9157 - player.nextChat = 60; - break; - case 58: - sendPlayerChat1("I can't right now, Maybe later.");// 9158 - player.nextChat = 59; - break; - case 59: - sendNpcChat1("Oh please! Hurry then!", player.talkingNpc, "Cook"); - player.nextChat = 0; - break; - case 60: - sendNpcChat2("Oh thank you, thank you. I need milk, an egg, and", - "flour. I'd be very grateful if you can get them for me.", - player.talkingNpc, "Cook"); - player.cookAss = 1; - QuestAssistant.sendStages(player); - player.nextChat = 61; - break; - case 61: - sendPlayerChat1("So where do I find these ingredients then?"); - player.nextChat = 62; - break; - case 62: - sendNpcChat3("You can find flour in any of the shops here.", - "You can find eggs by killing chickens.", - "You can find milk by using a bucket on a cow", - player.talkingNpc, "Cook"); - player.nextChat = 0; - break; - case 63: - sendNpcChat1("I don't have time for your jibber-jabber!", - player.talkingNpc, "Cook"); - player.nextChat = 0; - break; - case 64: - sendNpcChat1("Does it look like I have the time?", - player.talkingNpc, "Cook"); - player.nextChat = 0; - break; - case 65: - sendPlayerChat1("You don't look so happy."); - player.nextChat = 54; - break; - case 66: - sendNpcChat1( - "How are you getting on with finding the ingredients?", - player.talkingNpc, "Cook"); - player.nextChat = 67; - break; - case 67: - if (player.getItemAssistant().playerHasItem(1944, 1) - && player.getItemAssistant().playerHasItem(1927, 1) - && player.getItemAssistant().playerHasItem(1933, 1)) { - sendPlayerChat1("Here's all the items!"); - player.nextChat = 68; - } else { - sendPlayerChat1("I don't have all the items yet."); - player.nextChat = 59; - } - break; - case 68: - player.getItemAssistant().deleteItem(1944, 1); - player.getItemAssistant().deleteItem(1927, 1); - player.getItemAssistant().deleteItem(1933, 1); - player.cookAss = 2; - sendNpcChat2("You brought me everything I need! I'm saved!", - "Thank you!", player.talkingNpc, "Cook"); - player.nextChat = 69; - break; - case 69: - sendPlayerChat1("So do I get to go to the Duke's Party?"); - player.nextChat = 70; - break; - case 70: - sendNpcChat2( - "I'm afraid not, only the big cheeses get to dine with the", - "Duke.", player.talkingNpc, "Cook"); - player.nextChat = 72; - break; - case 72: - sendPlayerChat2( - "Well, maybe one day I'll be important enough to sit on", - "the Duke's table"); - player.nextChat = 74; - break; - case 74: - sendNpcChat1("Maybe, but I won't be holding my breath.", - player.talkingNpc, "Cook"); - player.nextChat = 75; - break; - case 75: - QuestRewards.cookReward(player); - break; - case 76: - sendNpcChat1("Thanks for helping me out friend!", - player.talkingNpc, "Cook"); - player.nextChat = 0; - break; - case 84: - sendNpcChat1("How are you getting on finding all my supplies", - player.talkingNpc, "Doric"); - player.nextChat = 85; - break; - case 85: - if (player.getItemAssistant().playerHasItem(434, 6) - && player.getItemAssistant().playerHasItem(436, 4) - && player.getItemAssistant().playerHasItem(440, 2)) { - sendPlayerChat1("Here's all the items!"); - player.nextChat = 86; - } else { - sendPlayerChat1("I haven't found all the items yet."); - player.nextChat = 88; - } - break; - case 86: - player.getItemAssistant().deleteItem(434, 6); - player.getItemAssistant().deleteItem(436, 4); - player.getItemAssistant().deleteItem(440, 2); - player.doricQuest = 2; - sendNpcChat2("You brought me everything i need.", "Thank You!", - player.talkingNpc, "Doric"); - player.nextChat = 87; - break; - case 87: - QuestRewards.doricFinish(player); - player.nextChat = 0; - break; - case 88: - sendNpcChat1("Hurry Then!", player.talkingNpc, "Doric"); - player.nextChat = 0; - break; - case 89: - sendNpcChat1( - "Hello traveler, what brings you to my humble smithy?", - player.talkingNpc, "Doric"); - player.nextChat = 90; - break; - case 90: - sendOption2("Mind your own buisness, Shortstuff!", - "I wanted to use your anivils."); - player.dialogueAction = 55; - break; - case 91: - sendNpcChat1("Mind your own buisness, Shortstuff!", - player.talkingNpc, "Doric"); - player.nextChat = 0; - break; - case 92: - sendNpcChat1("So you want to use my anivils?", player.talkingNpc, - "Doric"); - player.nextChat = 98; - break; - case 98: - sendPlayerChat1("Yes, I would like to use your anivil."); - player.nextChat = 93; - break; - case 93: - sendNpcChat4("My anvils get enough work with my own use.", - "I make pickaxes, and it takes a lot of hard work.", - "If you could get me some more materials,", - "then i could let use them.", player.talkingNpc, "Doric"); - player.nextChat = 94; - break; - case 94: - sendOption2("Yes i will get you the materials.", - "No, hitting rocks is boring."); - player.dialogueAction = 56; - break; - case 95: - sendPlayerChat1("No, hitting rocks is boring."); - player.nextChat = 0; - break; - case 96: - sendPlayerChat1("Yes i will get you the materials."); - player.nextChat = 97; - break; - case 97: - sendNpcChat4( - "Clay is what i use more than anything, to make casts.", - "Could you get me 6 clay, 4 copper, and 2 iron, please?", - "I could give a nice little reward", - "Take my pickaxe with you just incase you need it.", - player.talkingNpc, "Doric"); - player.getItemAssistant().addOrDropItem(1265, 1); - player.nextChat = 99; - break; - case 99: - sendPlayerChat1("Certainly, I'll be right back!"); - player.doricQuest = 1; - QuestAssistant.sendStages(player); - player.nextChat = 0; - break; - case 100: - sendNpcChat1("Thanks for the help!", player.talkingNpc, "Doric"); - player.nextChat = 0; - break; - case 101: - sendNpcChat2("You're on your own now, Jal-Yt. Prepare to fight", "for your life!", 2617, "TzHaar-Mej-Jal"); - player.nextChat = 0; - break; - case 102: - sendNpcChat1("Look out, here comes TzTok-Jad!", 2617, "TzHaar-Mej-Jal"); - player.nextChat = 0; - break; - case 103: - sendNpcChat2("You even defeated TzTok-Jad, I am most impressed!", "Please accept this gift as a reward.", 2617, "TzHaar-Mej-Jal"); - player.nextChat = 0; - break; - case 104: - sendNpcChat1("Well done in the cave, here, take TokKul as reward.", 2617, "TzHaar-Mej-Jal"); - player.nextChat = 0; - break; - case 145: - sendPlayerChat1("Give me a quest!"); - player.nextChat = 146; - break; - case 146: - sendNpcChat1("Give me a quest what?", player.talkingNpc, - "Wizard Mizgog"); - player.nextChat = 147; - break; - case 147: - sendPlayerChat1("Give me a quest please."); - player.nextChat = 148; - break; - case 148: - sendNpcChat2( - "Well seeing as you asked nicely... I could do with some", - "help.", player.talkingNpc, "Wizard Mizgog"); - player.nextChat = 149; - break; - case 149: - sendNpcChat2("The wizard Grayzag next door decided he didn't like", - "me so he enlisted an army of hundreds of imps.", - player.talkingNpc, "Wizard Mizgog"); - player.nextChat = 150; - break; - case 150: - sendNpcChat3( - "These imps stole all sorts of my things. Most of these", - "things I don't really care about, just eggs and balls of", - "string and things.", player.talkingNpc, "Wizard Mizgog"); - player.nextChat = 151; - break; - case 151: - sendNpcChat2( - "But they stole my four magical beads. There was a red", - "one, a yellow one, a black one, and a white one.", - player.talkingNpc, "Wizard Mizgog"); - player.nextChat = 152; - break; - case 152: - sendNpcChat2( - "These imps have now spread out all over the kingdom.", - "Could you get my beads back for me?", player.talkingNpc, - "Wizard Mizgog"); - player.nextChat = 153; - break; - case 153: - sendOption2("I'll try.", - "I've better things to do than chase imps."); - player.dialogueAction = 125; - break; - case 154: - sendPlayerChat1("I'll try."); - player.impsC = 1; - QuestAssistant.sendStages(player); - player.nextChat = 155; - break; - case 155: - sendNpcChat1("That's great, thank you.", player.talkingNpc, - "Wizard Mizgog"); - player.nextChat = 0; - break; - - case 156: - sendNpcChat1("So how are you doing finding my beads?", - player.talkingNpc, "Wizard Mizgog"); - player.nextChat = 157; - break; - case 157: - sendPlayerChat1("I am still working on it."); - player.nextChat = 0; - break; - - case 158: - sendNpcChat1("So how are you doing finding my beads?", - player.talkingNpc, "Wizard Mizgog"); - player.nextChat = 159; - break; - case 159: - sendPlayerChat1("I've got all four beads. It was hard work I can tell you."); - player.nextChat = 160; - break; - case 160: - sendNpcChat3( - "Give them here and I'll check that really are MY", - "beads, before I give you your reward. You'll take it, it's", - "an amulet of accuracy.", player.talkingNpc, - "Wizard Mizgog"); - player.nextChat = 161; - break; - case 161: - sendStatement("You give four coloured beads to Wizard Mizgog."); - if (player.getItemAssistant().playerHasItem(1470, 1) - && player.getItemAssistant().playerHasItem(1472, 1) - && player.getItemAssistant().playerHasItem(1474, 1) - && player.getItemAssistant().playerHasItem(1476, 1)) { - player.getItemAssistant().deleteItem(1470, 1); - player.getItemAssistant().deleteItem(1472, 1); - player.getItemAssistant().deleteItem(1474, 1); - player.getItemAssistant().deleteItem(1476, 1); - player.impsC = 2; - player.nextChat = 162; - } else { - player.nextChat = 157; - } - break; - case 162: - QuestRewards.impFinish(player); - break; - case 163: - sendPlayerChat1("I've better things to do than chase imps."); - player.nextChat = 0; - break; - - case 164: - sendNpcChat3("What are you doing on my land? ", - "You're not the one who keeps leaving all my gates open", - "and letting out all my sheep are you?", player.talkingNpc, - "Fred"); - player.nextChat = 165; - break; - case 165: - sendOption3("I'm looking for a quest.", - "I'm looking for something to kill.", "I'm lost."); - player.dialogueAction = 63; - break; - case 166: - sendPlayerChat1("I'm looking for a quest."); - player.nextChat = 170; - break; - case 167: - sendNpcChat1( - "Goblins are great for killing near the bridge in lumbridge.", - player.talkingNpc, "Fred"); - player.nextChat = 0; - break; - case 168: - sendNpcChat1("Your in lumbridge silly.", player.talkingNpc, "Fred"); - player.nextChat = 0; - break; - case 169: - sendNpcChat2("You're after a quest, you say", - "Actually I could do with a bit of help.", - player.talkingNpc, "Fred"); - player.nextChat = 170; - break; - case 170: - sendNpcChat3("My sheep are getting mighty wolly.", - "I'd be much obliged if you could shear them.", - "And while you're at it spin the wool for me too.", - player.talkingNpc, "Fred"); - player.nextChat = 171; - break; - case 171: - sendNpcChat4("Yes, that's it.", " Bring me 20 balls of wool.", - "And I'm sure I could sort out some sort of payment.", - " Of course, there's the small matter of The Thing.", - player.talkingNpc, "Fred"); - player.nextChat = 172; - break; - case 172: - sendOption3("Yes okay. I can do that.", - "That doesn't sound a very exciting quest.", - "What do you mean, The Thing?"); - player.sheepShear = 1; - QuestAssistant.sendStages(player); - player.dialogueAction = 64; - break; - case 173: - sendPlayerChat1("Yes okay. I can do that."); - player.nextChat = 177; - break; - case 174: - sendPlayerChat1("Nevermind, that doesn't sound a very exciting quest."); - player.nextChat = 0; - break; - case 175: - sendPlayerChat1("What do you mean, The Thing?"); - player.nextChat = 176; - break; - case 176: - sendNpcChat1("Never mind.", player.talkingNpc, "Fred"); - player.nextChat = 0; - break; - case 177: - sendNpcChat2("Good! Now one more thing,", - "do you actually know how to shear a sheep?.", - player.talkingNpc, "Fred"); - player.nextChat = 178; - break; - case 178: - sendOption2("Of course!", "Err. No, I don't know acctually."); - player.dialogueAction = 65; - break; - case 179: - sendPlayerChat1("Of course!"); - player.nextChat = 180; - break; - case 180: - sendNpcChat1("And you know how to spin wool into balls?", - player.talkingNpc, "Fred"); - player.nextChat = 181; - break; - case 181: - sendOption2("I'm something of an expert actually!", - "I don't know how to spin wool, sorry.."); - player.dialogueAction = 66; - break; - case 182: - sendPlayerChat1("I'm something of an expert actually!"); - player.nextChat = 183; - break; - case 183: - sendNpcChat1("Well you can stop grinning and get to work then?", - player.talkingNpc, "Fred"); - player.nextChat = 184; - break; - case 184: - sendNpcChat1("I'm not paying you by the hour!", player.talkingNpc, - "Fred"); - player.nextChat = 0; - break; - case 185: - sendNpcChat1("How are you doing getting my balls of wool?", - player.talkingNpc, "Fred"); - player.nextChat = 186; - break; - case 186: - if (player.getItemAssistant().playerHasItem(1759, 20)) { - sendPlayerChat1("I have some."); - player.getItemAssistant().deleteItem(1759, 20); - player.nextChat = 187; - } else { - sendStatement("I should get 20 balls wool first."); - player.nextChat = 0; - } - break; - case 187: - sendNpcChat1("Give em here then.", player.talkingNpc, "Fred"); - player.nextChat = 188; - break; - case 188: - sendPlayerChat1("That's the last of them."); - player.nextChat = 189; - break; - case 189: - sendNpcChat1("I guess I'd better pay you then.", player.talkingNpc, - "Fred"); - player.nextChat = 263; - break; - case 263: - QuestRewards.sheepFinish(player); - break; - case 190: - sendNpcChat1("Greetings, welcome to my castle.", player.talkingNpc, - "Duke Horacio"); - player.nextChat = 191; - break; - case 191: - sendOption3("Have you any quests for me?", - "Where can I find money?", - "Can I have an anti dragon shield please?"); - player.dialogueAction = 124; - break; - case 192:// 9158 - sendPlayerChat1("Where can I find money?"); - player.nextChat = 193; - break; - case 193: - sendNpcChat1("I'm sorry, I'm not sure.", player.talkingNpc, - "Duke Horacio"); - player.nextChat = 0; - break; - case 194:// 9157 - if (player.runeMist == 0) { - sendNpcChat2("Well, it's not really a quest", - "but I recently discovered this strange talisman.", - player.talkingNpc, "Duke Horacio"); - player.nextChat = 195; - } else { - sendNpcChat1("You have already started this quest.", - player.talkingNpc, "Duke Horacio"); - player.nextChat = 0; - } - break; - case 195: - sendNpcChat2( - "It seems to be mystical and I have never seen anything like it before.", - "Would you take it to the head wizard at", - player.talkingNpc, "Duke Horacio"); - player.nextChat = 196; - break; - case 196: - sendNpcChat3( - "the Wizards Tower for me?", - "It's just south-west of here and should not take you very long at all.", - "I would be awfully grateful.", player.talkingNpc, - "Duke Horacio"); - player.nextChat = 197; - break; - case 197: - sendOption2("Sure, no problem.", "Not right now."); - player.dialogueAction = 140; - break; - case 198:// 9157 - sendPlayerChat1("Sure, no problem."); - player.nextChat = 199; - break; - case 199: - sendNpcChat2( - "Thank you very much, stranger.", - "I'm sure the head wizard will reward you for such an interesting find.", - player.talkingNpc, "Duke Horacio"); - player.nextChat = 200; - break; - case 200: - itemMessage1("The duke hands you an @blu@air talisman@blu@.", 1438, - 1); - player.getItemAssistant().addOrDropItem(1438, 1); - player.runeMist = 1; - QuestAssistant.sendStages(player); - player.nextChat = 0; - break; - case 201: - sendNpcChat2( - "Welcome adventurer, to the world renowed Wizards Tower", - "How may I help you?", player.talkingNpc, "Sedridor"); - player.nextChat = 202; - break; - case 202: - sendOption3("Nothing thanks, I'm just looking around.", - "What are you doing down here?", - "I'm looking for the head wizard."); - player.dialogueAction = 126; - break; - case 203: // 9168 - sendNpcChat1("That's none of your buisness.", player.talkingNpc, - "Sedridor"); - player.nextChat = 0; - break; - case 204: // 9169 - sendPlayerChat1("I'm looking for the head wizard."); - player.nextChat = 205; - break; - case 205: - sendNpcChat2("Oh, you are, are you?", - "And just why would you be doing that?", player.talkingNpc, - "Sedridor"); - player.nextChat = 207; - break; - case 207: - sendPlayerChat3( - "The Duke of Lumbridge sent me to find him. Most of these", - "I have this weird talisman he found.", - "He said the head wizard would be very interested in it."); - player.nextChat = 208; - break; - case 208: - sendNpcChat4("Did he now? HmmmMMMMMmmmm.", - "Well that IS interested. Hand it over then adverturer", - "let me see what all the hubbub about it is.", - "Just some amulet I'll wager.", player.talkingNpc, - "Sedridor"); - player.nextChat = 209; - break; - case 209: - sendOption2("Ok, here you are.", - "No, I'll only give it to the head wizard."); - player.dialogueAction = 127; - break; - case 210:// 9157 - sendPlayerChat1("Ok, here you are."); - player.nextChat = 212; - break; - case 212: - itemMessage1("You hand the Talisman to the wizard.", 1438, 1); - player.getItemAssistant().deleteItem(1438, 1); - player.runeMist = 2; - player.nextChat = 213; - break; - case 213: - sendNpcChat1("Wow! This is... incredible!", player.talkingNpc, - "Sedridor"); - player.nextChat = 214; - break; - case 214: - sendNpcChat4("Th-this talisman you brought me...! ", - "It is the last piece of the puzzle, I think! Finally!", - "The legacy of our ancestors.", - "It will return to us once more!", player.talkingNpc, - "Sedridor"); - player.nextChat = 215; - break; - case 215: - sendNpcChat3( - "I need time to study this, " + player.playerName + ".", - "Can you please do me this task while I study this talisman you have brought me?", - "In the mighty town of Varrock, which", player.talkingNpc, - "Sedridor"); - player.nextChat = 216; - break; - case 216: - sendNpcChat2( - "is located North East of here, there is a certain shop that sells magical runes.", - "I have in this package all of the research I have done relating to the Rune Stones, and", - player.talkingNpc, "Sedridor"); - player.nextChat = 217; - break; - case 217: - sendNpcChat3( - "require sombody to take them to the shopkeeper so that he may share my research", - "and offer me his insights.", - "Do this thing for me, and bring back what he gives you,", - player.talkingNpc, "Sedridor"); - player.nextChat = 218; - break; - case 218: - sendNpcChat3( - "and if my suspicions are correct,", - "I will let you into the knowledge of one of the greatest secrets this world has ever known!", - "A secret so powerful that it destroyed the", - player.talkingNpc, "Sedridor"); - player.nextChat = 219; - break; - case 219: - sendNpcChat3( - "original Wizards tower all of those centuries ago!", - "My research, combined with this mysterious talisman...", - "I cannot believe the answer to the mysteries is so close now!", - player.talkingNpc, "Sedridor"); - player.nextChat = 220; - break; - case 220: - sendNpcChat2("Do this thing for me " + player.playerName + ".", - " Be rewarded in a way you can never imagine.", - player.talkingNpc, "Sedridor"); - player.nextChat = 222; - break; - case 222: - sendOption2("Yes, certainly.", "No, I'm busy."); - player.dialogueAction = 128; - break; - case 223:// 9157 - sendPlayerChat1("Yes, certainly."); - player.nextChat = 224; - break; - case 224: - sendNpcChat3( - "Take this package, and head directly North from here.", - "through Draynor village, until you reach the Barbarian Village.", - "Then head East from there until you reach Varrock.", - player.talkingNpc, "Sedridor"); - player.nextChat = 225; - break; - case 225: - sendNpcChat3( - "Once in Varrock, take this package to the owner of the rune shop.", - "His name is Aubury.", - "You may find it helpful to ask one of Varrock's citizens for directions,", - player.talkingNpc, "Sedridor"); - player.nextChat = 226; - break; - case 226: - sendNpcChat3( - "as Varrock can be a confusing place for the first time visitor.", - "He will give you a special item - bring it back to me,", - "and I shall show you the mystery of the runes...", - player.talkingNpc, "Sedridor"); - player.nextChat = 227; - break; - case 227: - itemMessage1("The head wizard gives you a package.", 290, 1); - player.getItemAssistant().addOrDropItem(290, 1); - player.nextChat = 228; - break; - case 228: - sendNpcChat1("Best of luck with your quest, " + player.playerName - + ".", player.talkingNpc, "Sedridor"); - player.nextChat = 0; - break; - case 229: - sendNpcChat1("Do you want to buy some runes?", player.talkingNpc, - "Aubury"); - player.nextChat = 230; - break; - case 230: - sendOption3("Yes please!", - "Oh, it's a rune shop. No thank you, then.", - "I have been sent here with a package for you."); - player.dialogueAction = 129; - break; - case 231: // 9167 - sendPlayerChat1("Yes please!"); - player.getShopAssistant().openShop(52); - player.nextChat = 0; - break; - case 232: // 9169 - sendPlayerChat1("I have been sent here with a package for you. It's for the head wizard at the Wizards Tower."); - player.nextChat = 233; - break; - case 233: - sendNpcChat3( - "Really? But... surely he can't have..?", - "Please, let me have it,", - "it must be extremely important for him to have sent a stranger.", - player.talkingNpc, "Aubury"); - player.nextChat = 234; - break; - case 234: - itemMessage1("You hand Aubury the research package.", 290, 1); - player.getItemAssistant().deleteItem(290, 1); - player.runeMist = 3; - player.nextChat = 235; - break; - case 235: - sendNpcChat2( - "This... this is incredible. Please,", - "give me a few moments to quickly look over this, and then talk to me again.", - player.talkingNpc, "Aubury"); - player.nextChat = 236; - break; - case 236: - itemMessage1("Aubury gives you the research notes.", 290, 1); - player.getItemAssistant().addOrDropItem(290, 1); - player.nextChat = 237; - break; - case 237: - sendNpcChat1( - "Thank you, now you should head back to Sedridor and tell him your discoveries.", - player.talkingNpc, "Aubury"); - player.nextChat = 0; - break; - case 238: - sendNpcChat2( - "Welcome, adventure to the world-renowed Wizards Tower.", - "How may i help you?", player.talkingNpc, "Sedridor"); - player.nextChat = 239; - break; - case 239: - sendNpcChat2("Ah, " + player.playerName + ". How goes your quest?", - "Have you delivered the research notes to my friend yet?", - player.talkingNpc, "Sedridor"); - player.nextChat = 240; - break; - case 240: - sendPlayerChat1("Yes, I have. He gave me some research notes to pass on to you."); - player.nextChat = 241; - break; - case 241: - sendNpcChat1("May I have them?", player.talkingNpc, "Sedridor"); - player.nextChat = 242; - break; - case 242: - sendPlayerChat1("Sure. I have them here."); - player.nextChat = 243; - break; - case 243: - sendNpcChat2( - "You have been nothing but helpful, adventured.", - "In return, I can let you in on the secret of our research.", - player.talkingNpc, "Sedridor"); - player.nextChat = 245; - break; - case 245: - sendNpcChat2( - "Many centuries ago, the wizards of the Wizards Tower learnt the secret of creating runes,", - "which allowed them to cast magic very easily.", - player.talkingNpc, "Sedridor"); - player.nextChat = 247; - break; - case 247: - sendNpcChat3( - "But, when this tower was burnt down, the sercret of creating runes was lost with it...", - "or so I thought.", - "Some months ago, while searching these ruins for information, ", - player.talkingNpc, "Sedridor"); - player.nextChat = 248; - break; - case 248: - sendNpcChat2( - "I came upon a scroll that made refrence to a magical rock", - "deep in the ice fields of the north.", player.talkingNpc, - "Sedridor"); - player.nextChat = 249; - break; - case 249: - sendNpcChat3( - "This rock was called the rune essence by those magicians who studied it's powers.", - "Apparently, by simply breaking a chunk for it,", - "a rune could be fashioned and taken to certain", - player.talkingNpc, "Sedridor"); - player.nextChat = 250; - break; - case 250: - sendNpcChat3( - "magical altars that were scattered across the land.", - "Now, this is an intersting little peice of history,", - "not much use to us since we do not have access to this rune essence", - player.talkingNpc, "Sedridor"); - player.nextChat = 251; - break; - case 251: - sendNpcChat2( - "teleportations spell that he had never come across before, When cast,", - "it took him to a strange rock, yet it felt strangly familiar.", - player.talkingNpc, "Sedridor"); - player.nextChat = 252; - break; - case 252: - sendNpcChat3( - "As I'm sure you have guessed, he had discovered a spell to the mythical rune essence.", - "As soon as he told me of this,", - "I saw the importance of the find.", player.talkingNpc, - "Sedridor"); - player.nextChat = 253; - break; - case 253: - sendNpcChat2( - "For, if we could find the altars spoken of in the ancient texts", - "we would once more be able to create runes as our ancestors had done!", - player.talkingNpc, "Sedridor"); - player.nextChat = 254; - break; - case 254: - sendPlayerChat1("I'm still not sure how I fit into this little story of yours."); - player.nextChat = 255; - break; - case 255: - sendNpcChat3( - "You haven't guessed?", - "This talisman you brough me is the key to the elemental altar of air!", - "When you hold it, it directs you to", player.talkingNpc, - "Sedridor"); - player.nextChat = 256; - break; - case 256: - sendNpcChat3("the entrance of the long-forgotten Air Altar.", - "By bringing peices of the rune essence the Air Altar,", - "you will be able to fashion your own air runes", - player.talkingNpc, "Sedridor"); - player.nextChat = 257; - break; - case 257: - sendNpcChat3( - "That's not all!", - "By finding other talismans similar to his one,", - "you will eventually be able to craft every rune that is available in this world, jus", - player.talkingNpc, "Sedridor"); - player.nextChat = 258; - break; - case 258: - sendNpcChat3( - "as our ancestors did.", - "I cannot stress enough what find this is!", - "Now, due to the risks invovled in letting this mighty power fall into the wrong hands.", - player.talkingNpc, "Sedridor"); - player.nextChat = 259; - break; - case 259: - sendNpcChat3( - "I will keep the teleport spell to the rune essence a closely guarded secret.", - "This means that, if any evil power should discover the talismans required to enter the emental temples,", - "we will be able to prevent their", player.talkingNpc, - "Sedridor"); - player.nextChat = 260; - break; - case 260: - sendNpcChat3( - "access to the rune essence.", - "I know not where the altars are located, not do I know where the talismans have been scattered,", - "but now return your air talisman.", player.talkingNpc, - "Sedridor"); - player.nextChat = 261; - break; - case 261: - sendNpcChat1( - "Find the Air Altar and you will be able to craft you blank runes into air runes at will.", - player.talkingNpc, "Sedridor"); - player.nextChat = 262; - break; - case 262: - sendNpcChat2( - "Any time you wish to visit the rune essence,", - "speak to me or Aubury and we will open a portal to that mystical place.", - player.talkingNpc, "Sedridor"); - player.nextChat = 264; - break; - case 264: - sendPlayerChat1("So, only you and Aubury know the teleport spell to the rune essence?"); - player.nextChat = 266; - break; - case 266: - sendNpcChat2( - "No, there are others. When you speak to them,", - "they will know you and grant you access to that place when asked.", - player.talkingNpc, "Sedridor"); - player.nextChat = 267; - break; - case 267: - sendNpcChat2( - "Use the air talisman to locate the Air Altar and use any further talismans you find to locate the other altars.", - "Now, my research notes please?", player.talkingNpc, - "Sedridor"); - player.nextChat = 268; - break; - case 268: - itemMessage1( - "You give the research notes to Sedrdior. He gives you an air talisman.", - 290, 1); - player.getItemAssistant().deleteItem(290, 1); - player.runeMist = 4; - QuestRewards.runeFinish(player); - player.nextChat = 0; - break; - case 269: - sendPlayerChat1("Hello, are you ok?"); - player.nextChat = 270; - break; - case 270: - sendNpcChat2("Do I look ok?", "Those kid's drive me crazy.", - player.talkingNpc, "Gertrude"); - player.nextChat = 271; - break; - case 271: - sendNpcChat1("I'm sorry. It's just that I've lost her.", - player.talkingNpc, "Gertrude"); - player.nextChat = 272; - break; - case 272: - sendPlayerChat1("Lost whom?"); - player.nextChat = 273; - break; - case 273: - sendNpcChat1("Fluffs, poor Fluffs, She never hurt anyone.", - player.talkingNpc, "Gertrude"); - player.nextChat = 274; - break; - case 274: - sendPlayerChat1("Who's Fluffs?"); - player.nextChat = 275; - break; - case 275: - sendNpcChat4("My beloved feline friend, Fluffs.", - "She's been purring by my side for almost a decade.", - "Could you go and search for her while", - "I take care of the children?", player.talkingNpc, - "Gertrude"); - player.nextChat = 276; - break; - case 276: - sendOption3( - "Well, I suppose I could though I'd need more details.", - "What's in it for me?", - "Sorry, I'm too busy to play per rescue."); - player.dialogueAction = 60; - break; - case 277: // 9167 - sendPlayerChat1("Well, I suppose I could though I'd need more details."); - player.nextChat = 280; - break; - case 278: // 9169 - sendPlayerChat1("Sorry I'm too busy to play per rescue."); - player.nextChat = 0; - break; - case 279: // 9168 - sendNpcChat1( - "Come back with a better attitude a maybe you will find out.", - player.talkingNpc, "Gertrude"); - player.nextChat = 0; - break; - case 280: - sendNpcChat2("Really? Thank you so much!", - "I really have no idea where she could be!", - player.talkingNpc, "Gertrude"); - player.gertCat = 1; - player.nextChat = 281; - break; - case 281: - sendNpcChat2( - "I think my sons, Shilop and Wilough, saw the cat last.", - "They'll be out in the marketplace.", player.talkingNpc, - "Gertrude"); - player.nextChat = 282; - break; - case 282: - sendPlayerChat2("The marketplace? Which one would that be?", - "It would help to know what they get up to, as well."); - player.nextChat = 283; - break; - case 283: - sendNpcChat4( - "Really? Well, I generally let them do what they want,", - "so I've no idea exactly what they would be doing.", - "They are good lads, though. I'm sure, they are", - "just watching the passers-by in Varrock Marketplace.", - player.talkingNpc, "Gertrude"); - player.nextChat = 284; - break; - case 284: - sendNpcChat1("Oh, to be young and carefree again!", - player.talkingNpc, "Gertrude"); - player.nextChat = 285; - break; - case 285: - sendPlayerChat2( - "I'll see what I can do. Two young lads in Varrock.", - "I hope that there's no school trip passing when I arrive."); - QuestAssistant.sendStages(player); - player.nextChat = 0; - break; - case 286: - sendPlayerChat1("Hello there, I've been looking for you."); - player.nextChat = 287; - break; - case 287: - sendNpcChat1("I didn't mean to take it! I just forgot to pay.", - player.talkingNpc, "Wilough"); - player.nextChat = 288; - break; - case 288: - sendPlayerChat2("What?", - "I'm trying to help your mum find some cat called Fluffs."); - player.nextChat = 289; - break; - case 289: - sendNpcChat4("Ohh...well, in that case I might be able to help.", - "Fluffs followed me to my super secret hideout.", - "I haven't seen her since.", - "She's probably off eating small creatures somewhere.", - player.talkingNpc, "Wilough"); - player.nextChat = 290; - break; - case 290: - sendPlayerChat2("Where is this secret hideout?", - "I really need to find that cat for you mum."); - player.nextChat = 291; - break; - case 291: - sendNpcChat2("If I told you that, It wouldn't be a secret.", - "What if I need to escape for the law? I need a hideout.", - player.talkingNpc, "Wilough"); - player.nextChat = 292; - break; - case 292: - sendPlayerChat2("From my limited knowledge of law,", - "they are not usually involved in manhunts for children."); - player.nextChat = 293; - break; - case 293: - sendNpcChat3( - "Well it's still mine anyway, we need a place to relax,", - "sometimes.", - "Those two little brothers at the house are just such babies.", - player.talkingNpc, "Wilough"); - player.nextChat = 294; - break; - case 294: - sendOption3( - "Tell me sonny, or I will inform you are a pair of criminals.", - "What will make you tell me?", - "Well never mind, it's Fluffs loss."); - player.dialogueAction = 61; - break; - case 295: // 9167 - sendNpcChat1("No. Where not criminals.", player.talkingNpc, - "Wilough"); - player.nextChat = 0; - break; - case 296: // 9169 - sendPlayerChat1("Well never mind, it's Fluffs loss."); - player.nextChat = 0; - break; - case 297: // 9168 - sendPlayerChat1("What will make you tell me?"); - player.nextChat = 298; - break; - case 298: - sendNpcChat1("Well...now you ask, I am a bit short on cash.", - player.talkingNpc, "Wilough"); - player.nextChat = 299; - break; - case 299: - sendPlayerChat1("How much?"); - player.nextChat = 300; - break; - case 300: - sendNpcChat1("10 coins.", player.talkingNpc, "Wilough"); - player.nextChat = 301; - break; - case 301: - sendNpcChat1("10 coins?!", player.talkingNpc, "Shilop"); - player.nextChat = 302; - break; - case 302: - sendNpcChat1("I'll handle this.", player.talkingNpc, "Shilop"); - player.nextChat = 303; - break; - case 303: - sendNpcChat1("100 coins should cover it.", player.talkingNpc, - "Shilop"); - player.nextChat = 304; - break; - case 304: - sendPlayerChat2("100 coins!", - "What sort of expensive things do you need that badly?"); - player.nextChat = 305; - break; - case 305: - sendNpcChat2("Well I don't like chocolate", - "and have you seen how much sweets cost to buy?", - player.talkingNpc, "Shilop"); - player.nextChat = 306; - break; - case 306: - sendPlayerChat2("Why should I pay you then", - "can you answer that as easily?"); - player.nextChat = 307; - break; - case 307: - sendNpcChat4("Obviously you shouldn't pay that much,", - "but I won't help otherwise. I never liked,", - "that cat anyway, fussy scratchy thing it is", - "so what do you say?", player.talkingNpc, "Shilop"); - player.nextChat = 308; - break; - case 308: - sendOption2("I'm not paying you a thing.", "Okay then, I'll pay."); - player.dialogueAction = 62; - break; - case 309: // 9158 - sendPlayerChat2("Okay then. I'll pay, but I'll want you,", - "to tell your mother what a nice person I am."); - player.nextChat = 310; - break; - case 310: - sendNpcChat1("What?", player.talkingNpc, "Shilop"); - player.nextChat = 311; - break; - case 311: - sendPlayerChat2( - "I'll want you to tell your mother what a nice person I am", - "so she rewards me for this search."); - player.nextChat = 312; - break; - case 312: - sendNpcChat1("It's a deal.", player.talkingNpc, "Shilop"); - player.nextChat = 313; - break; - case 313: - if (player.getItemAssistant().playerHasItem(995, 100)) { - sendStatement("You give the lad 100 coins."); - player.getItemAssistant().deleteItem(995, 100); - player.nextChat = 314; - player.gertCat = 2; - } else { - sendStatement("I don't have 100 coin's I should come back."); - player.nextChat = 0; - } - break; - case 314: - sendPlayerChat1("There you go, now where did you see Fluffs?"); - player.nextChat = 315; - break; - case 315: - sendNpcChat4( - "We hide out at the lumber mill to the northeast.", - "Just beyond the Jolly Beat Inn.", - "I saw Fluffs running around in there. Well,", - "not so much running as plodding lazily, you get the point.", - player.talkingNpc, "Wilough"); - player.nextChat = 316; - break; - case 316: - sendPlayerChat1("Anything else?"); - player.nextChat = 317; - break; - case 317: - sendNpcChat4( - "Well, technically you are tresspassing inside there but noone seems to care.", - "You'll have to find the broken fence to get in.", - "It will be a bit of a squeeze for a grown-up but", - "I'm sure you can manage that.", player.talkingNpc, - "Wilough"); - player.nextChat = 0; - break; - case 318: - sendStatement("Mew"); - player.nextChat = 319; - break; - case 319: - sendPlayerChat1("Progress atleast."); - player.nextChat = 321; - break; - case 321: - sendStatement("Fluffs laps up the milk greedly. The she mews at you again."); - player.nextChat = 0; - break; - case 322: - sendStatement("Mew!"); - player.nextChat = 323; - break; - case 323: - sendPlayerChat1("Progress atleast."); - player.nextChat = 324; - break; - case 324: - sendStatement2("Fluffs devours the dougle sardine greedly.", "Then she mews at you again."); - player.nextChat = 0; - break; - case 325: - sendStatement2("Fluffs seems afraid to leave.", "In the lumberyard below you can hear the mewing."); - player.nextChat = 0; - break; - case 326: - sendNpcChat1("Purr...", player.talkingNpc, "Fluffs"); - player.nextChat = 327; - break; - case 327: - sendStatement("Fluffs and her offspring will now live happily."); - player.nextChat = 0; - break; - case 328: - sendPlayerChat2( - "Hello Gertrude. Fluffs has run off with her lost kittens.", - "That I have now returned to her."); - player.nextChat = 329; - break; - case 329: - sendNpcChat4( - "You're Back!", - "Thank you, thank you!", - "Fluffs just came back. I think she was upset,", - "because she couldn't find her kittens.", - player.talkingNpc, "Gertrude"); - player.nextChat = 330; - break; - case 330: - sendStatement("Gertrude thanks you heartily."); - player.nextChat = 331; - break; - case 331: - sendNpcChat2("If you wouldn't have found her kittens,", - "then they would have died out there.", player.talkingNpc, - "Gertrude"); - player.nextChat = 332; - break; - case 332: - sendPlayerChat1("That's okay, I like to do my bit."); - player.nextChat = 333; - break; - case 333: - sendNpcChat3( - "I don't know how to thank you.", - "I have no real material possesions, but I do have kittens.", - "I can really only look after one or two.", - player.talkingNpc, "Gertrude"); - player.nextChat = 334; - break; - case 334: - sendPlayerChat1("Well, if one needs a home."); - player.nextChat = 335; - break; - case 335: - sendNpcChat4("I would sell one to my couzin in West Aroudnge.", - "I hear there's a " + " epidemic there,", - "but it's too far for me to travel.", - "With all my boys and all.", player.talkingNpc, "Gertrude"); - player.nextChat = 336; - break; - case 336: - sendNpcChat1("Here you go look after her and thank you.", - player.talkingNpc, "Gertrude"); - player.nextChat = 337; - break; - case 337: - sendStatement("Gertrude gives you a kitten."); - QuestRewards.gertFinish(player); - player.nextChat = 0; - break; - case 338: - sendNpcChat1("Welcome to the church of holy Saradomin..", - player.talkingNpc, "Father Aereck"); - player.nextChat = 339; - break; - case 339: - sendOption4("Who's Saradomin?", "Nice place you've got here", - "I'm looking for a quest", "Never Mind"); - player.dialogueAction = 32; - break; - case 340:// 9178 - sendNpcChat1("None of your buisness.", player.talkingNpc, - "Father Aereck"); - player.nextChat = 0; - break; - case 341:// 9179 - sendPlayerChat1("Nice place you've got here."); - player.nextChat = 0; - break; - case 342:// 9180 - sendPlayerChat1("I'm looking for a quest."); - player.nextChat = 343; - break; - case 343: - sendNpcChat1("That's lucky, I need someone to do a quest for me.", - player.talkingNpc, "Father Aereck"); - player.nextChat = 344; - break; - case 344: - sendPlayerChat1("Okay, let me help then."); - player.nextChat = 345; - break; - case 345: - sendNpcChat3( - "Thank you. The problem is there's,", - "a ghost in the graveyard crypt just south of this church.", - "I would like you to get rid of it.", player.talkingNpc, - "Father Aereck"); - player.nextChat = 346; - break; - case 346: - sendNpcChat2("You'll need the help of my friend, Father Urhney,", - "who is a bit of a ghost expert.", player.talkingNpc, - "Father Aereck"); - player.nextChat = 347; - break; - case 347: - sendNpcChat2( - "He's currently living in a little shack to the south of,", - "the Lumbridge Swamp near the coast.", player.talkingNpc, - "Father Aereck"); - player.nextChat = 348; - break; - case 348: - sendNpcChat2("My name is Father Aereck, by the way.", - "Pleased to meet you.", player.talkingNpc, "Father Aereck"); - player.nextChat = 349; - break; - case 349: - sendPlayerChat1("Likewise."); - player.nextChat = 350; - break; - case 350: - sendNpcChat3("Take care traveling through the swamps.", - "To get there just follow the path south,", - "through the graveyard.", player.talkingNpc, - "Father Aereck"); - player.nextChat = 351; - player.restGhost = 1; - QuestAssistant.sendStages(player); - break; - case 351: - sendPlayerChat1("I will thanks."); - player.nextChat = 0; - break; - case 352: - sendNpcChat1("Go away! I'm meditating.", player.talkingNpc, - "Father Urhney"); - player.nextChat = 353; - break; - case 353: - sendOption4("Well, that's friendly", - "Father Aereck sent me to talk to you", - "I've come to repossess your house", "Never Mind"); - player.dialogueAction = 33; - break; - case 354:// 9178 - sendPlayerChat1("Well, that's friendly."); - player.nextChat = 0; - break; - case 355: // 9180 - sendPlayerChat1("I've come to repossess your house."); - player.nextChat = 0; - break; - case 356: // 9179 - sendPlayerChat1("Father Aereck sent me to talk to you."); - player.nextChat = 357; - break; - case 357: - sendNpcChat2("I suppose I better talk to you then.", - "What has he got himself into this time?", - player.talkingNpc, "Father Urhney"); - player.nextChat = 358; - break; - case 358: - sendOption2("A ghost is haunting his graveyard", - "You mean he gets into lots of problems?"); - player.dialogueAction = 34; - break; - case 359: // 9158 - sendPlayerChat1("You mean he gets into lots of problems?"); - player.nextChat = 360; - break; - case 360: - sendNpcChat1("Yes, he does. A ghost is haunting his graveyard.", - player.talkingNpc, "Father Urhney"); - player.nextChat = 0; - break; - case 361: - sendPlayerChat1("A ghost is haunting his graveyard"); - player.nextChat = 362; - break; - case 362: - sendNpcChat1("Oh, the silly fool.", player.talkingNpc, - "Father Urhney"); - player.nextChat = 363; - break; - case 363: - sendNpcChat2("I leave town for five months,", - "and he's already having problems.", player.talkingNpc, - "Father Urhney"); - player.nextChat = 364; - break; - case 364: - sendNpcChat1("*sigh*", player.talkingNpc, "Father Urhney"); - player.nextChat = 365; - break; - case 365: - sendNpcChat3("Well I can't go back and exorcise it", - "I vowed not to leave this place until,", - "I've spent a full two years praying and meditating.", - player.talkingNpc, "Father Urhney"); - player.nextChat = 366; - break; - case 366: - sendNpcChat1( - "I'll tell you what I can do though take this amulet.", - player.talkingNpc, "Father Urhney"); - player.nextChat = 367; - player.getItemAssistant().addOrDropItem(552, 1); - player.restGhost = 2; - break; - case 367: - sendNpcChat1("It's a ghost speak amulet.", player.talkingNpc, - "Father Urhney"); - player.nextChat = 368; - break; - case 368: - sendNpcChat3( - "It's called that because, when you wear it, you can,", - "speak to ghosts. Many ghosts are doomed to remain in this,", - "world because they have some important task left uncompleted.", - player.talkingNpc, "Father Urhney"); - player.nextChat = 369; - break; - case 369: - sendNpcChat3( - "If you know what this task is, you can get rid of the ghost.", - "I'm not making any guarentees, mind you,", - "but it's the best I can do right now.", player.talkingNpc, - "Father Urhney"); - player.nextChat = 370; - break; - case 370: - sendPlayerChat1("Thank you. I'll give it a try."); - player.nextChat = 0; - break; - case 371: - sendPlayerChat1("Hello ghost how are you?"); - player.nextChat = 372; - break; - case 372: - sendNpcChat1("Not very good, actually.", player.talkingNpc, - "Restless Ghost"); - player.nextChat = 373; - break; - case 373: - sendPlayerChat1("What's the problem?"); - player.nextChat = 374; - break; - case 374: - sendNpcChat1("Did you just understand what I said?", - player.talkingNpc, "Restless Ghost"); - player.nextChat = 375; - break; - case 375: - sendOption4("Yep. Now, tell me what the problem is.", - "No, you sound like you're speaking nonsense to me.", - "Wow, this amulet works!", "Never mind."); - player.dialogueAction = 35; - break; - case 376: // 9179 - sendPlayerChat1("No, you sound like you're speaking nonsense to me."); - player.nextChat = 0; - break; - case 377: // 9180 - sendPlayerChat1("Wow, this amulet works!"); - player.nextChat = 0; - break; - case 378: // 9178 - sendPlayerChat1("Yep. Now, tell me what the problem is."); - player.nextChat = 379; - break; - case 379: - sendNpcChat2("Wow! This is incredible!", - "I didn't expect anyone to ever understand me!", - player.talkingNpc, "Restless Ghost"); - player.nextChat = 380; - break; - case 380: - sendPlayerChat1("Okay, okay, I can understand you."); - player.nextChat = 381; - break; - case 381: - sendPlayerChat1("But have you any idea why you're doomed to be a ghost?"); - player.nextChat = 382; - break; - case 382: - sendNpcChat1("Well, to be honest, I'm not sure.", - player.talkingNpc, "Restless Ghost"); - player.nextChat = 383; - break; - case 383: - sendPlayerChat2( - "I've been told that a certain task needs to be completed", - "before you can rest in peace."); - player.nextChat = 384; - break; - case 384: - sendNpcChat1("I should think it's because I've lost my head.", - player.talkingNpc, "Restless Ghost"); - player.nextChat = 385; - break; - case 385: - sendPlayerChat1("What? I can see your head perfectly fine. Well, see through it at least."); - player.nextChat = 386; - break; - case 386: - sendNpcChat4( - "No, no, I mean from my REAL body.", - "If you look in my coffin you'll see my corpse is without it's,", - "skull. Last thing I remember was being attacked by a warlock,", - "while I was mining. It was at the mine just south of this", - player.talkingNpc, "Restless Ghost"); - player.nextChat = 387; - break; - case 387: - sendNpcChat1("graveyard.", player.talkingNpc, "Restless Ghost"); - player.nextChat = 388; - player.restGhost = 3; - break; - case 388: - sendPlayerChat1("Okay. I'll try to get your skull back for you so you can rest in peace."); - player.nextChat = 0; - break; - case 389: - sendNpcChat1("Why me?...", player.talkingNpc, "Romeo"); - player.nextChat = 390; - break; - case 390: - sendNpcChat2("Why isn't she returning any of them...", - "Is it my hair...", player.talkingNpc, "Romeo"); - player.nextChat = 391; - break; - case 391: - sendOption2("What's wrong?", "Yes it's your hair"); - player.dialogueAction = 118; - break; - case 392: // 9158 - sendPlayerChat1("Haha yes it's your hair, get a haircut loser!"); - player.nextChat = 393; - break; - case 393: - sendNpcChat1("Tis' a sad world...", player.talkingNpc, "Romeo"); - player.nextChat = 0; - break; - case 394: // 9157 - sendPlayerChat1("What's wrong?"); - player.nextChat = 396; - break; - case 396: - sendNpcChat1("My Juliet..my poor poor Juliet", player.talkingNpc, - "Romeo"); - player.nextChat = 397; - break; - case 397: - sendNpcChat3("I've been trying to contact her all day", - "but the problem is...she won't return any", - "of my letters...", player.talkingNpc, "Romeo"); - player.nextChat = 398; - break; - case 398: - sendOption2("Why don't you just meet in person?", - "I might have to go now..."); - player.dialogueAction = 119; - break; - case 399: // 9157 - sendNpcChat1("Well you see...the problem is..", player.talkingNpc, - "Romeo"); - player.nextChat = 401; - break; - case 401: - sendNpcChat1("Her mother doesn't know we've been dating.", - player.talkingNpc, "Romeo"); - player.nextChat = 402; - break; - case 402: - sendNpcChat1( - "Can you please speak with Juliet and see what's going on?", - player.talkingNpc, "Romeo"); - player.nextChat = 403; - break; - case 403: - sendOption2("Yes I'll do so now", "Is that my fish calling me?"); - player.dialogueAction = 120; - break; - case 404:// 9158 - sendPlayerChat1("I might have to go now..."); - player.nextChat = 0; - break; - case 405: - sendPlayerChat1("Why not just meet her in person?"); - player.nextChat = 406; - break; - case 406: - sendPlayerChat1("Yeah anything to help a lover in need."); - player.nextChat = 407; - break; - case 407: - player.romeojuliet++; - QuestAssistant.sendStages(player); - sendNpcChat2("Great, Juliet is just in the house west of here", - "You will most likely find her upstairs.", - player.talkingNpc, "Romeo"); - player.nextChat = 0; - break; - case 408: - sendNpcChat1("Please speak to Juliet for me", player.talkingNpc, - "Romeo"); - player.nextChat = 0; - break; - case 409: - sendNpcChat1("How I long him...", player.talkingNpc, "Juliet"); - player.nextChat = 0; - break; - case 410: - sendNpcChat1("Please you have to go.", player.talkingNpc, "Juliet"); - player.nextChat = 411; - break; - case 411: - sendPlayerChat2("Wait, what's happening? Romeo has", - "been looking all over for you."); - player.nextChat = 412; - break; - case 412: - sendNpcChat1("I can't explain much. Please just go.", - player.talkingNpc, "Juliet"); - player.nextChat = 413; - break; - case 413: - sendNpcChat1("Take this...and go...", player.talkingNpc, "Juliet"); - player.getItemAssistant().addOrDropItem(755, 1); - player.romeojuliet++; - player.nextChat = 0; - break; - case 414: - sendNpcChat1("Just go...you shouldn't be here.", player.talkingNpc, - "Juliet"); - player.nextChat = 0; - break; - case 415: - sendNpcChat1( - "Hey did you talk to her yet?..How I long for Juliet.", - player.talkingNpc, "Romeo"); - player.nextChat = 416; - break; - case 416: - sendPlayerChat1("Yes she gave me this let---"); - player.nextChat = 417; - break; - case 417: - sendNpcChat1("Pass it here, pass it!", player.talkingNpc, "Romeo"); - player.getItemAssistant().deleteItem(755, 1); - player.nextChat = 418; - break; - case 418: - sendNpcChat3( - "Dear Romeo...sadly we can not see each other anymore", - "mother has been complaining on how you aren't the right", - "person.", player.talkingNpc, "Romeo"); - player.nextChat = 419; - break; - case 419: - sendNpcChat3("We come from two different classes..", - "I'm just some lonely Varrock girl, and", - "your a fine prince that travels around the world..", - player.talkingNpc, "Romeo"); - player.nextChat = 420; - break; - case 420: - sendNpcChat1("This is my goodbyes...Juliet...", player.talkingNpc, - "Romeo"); - player.nextChat = 0; - player.romeojuliet++; - player.romeojuliet++; - break; - case 421: - sendNpcChat1("Well have you spoken to her?", player.talkingNpc, - "Romeo"); - player.nextChat = 422; - break; - case 422: - sendPlayerChat2("She gave me a letter to give you..", - "Which I don't have on me"); - player.nextChat = 423; - break; - case 423: - sendNpcChat2("Please bring it as soon as possible...", - "How I miss my Juliet", player.talkingNpc, "Romeo"); - player.nextChat = 0; - break; - case 424: - sendNpcChat1("She just...", player.talkingNpc, "Romeo"); - player.nextChat = 425; - break; - case 425: - sendNpcChat1("What have I done wrong...", player.talkingNpc, - "Romeo"); - player.nextChat = 426; - break; - case 426: - sendNpcChat1("My Juliet...", player.talkingNpc, "Romeo"); - player.nextChat = 427; - break; - case 427: - sendPlayerChat2("Are you just going to give up??", - "What about love?"); - player.nextChat = 428; - break; - case 428: - sendNpcChat1("No...", player.talkingNpc, "Romeo"); - player.nextChat = 429; - break; - case 429: - sendNpcChat2("No, your right. Please", - "speak to the witch just south west of here.", - player.talkingNpc, "Romeo"); - player.nextChat = 430; - break; - case 430: - sendNpcChat1("She'll know what to do.", player.talkingNpc, "Romeo"); - player.nextChat = 0; - player.romeojuliet++; - break; - case 431: - sendNpcChat1("Speak to Winelda. She's south west.", - player.talkingNpc, "Romeo"); - player.nextChat = 0; - break; - case 432: - sendNpcChat1("So I see that prince sent you here.", - player.talkingNpc, "Winelda"); - player.nextChat = 433; - break; - case 433: - sendPlayerChat1("Wait how did you know?"); - player.nextChat = 434; - break; - case 434: - sendNpcChat2("I'm a witch..I've studied the arts", - "of magic for years.", player.talkingNpc, "Winelda"); - player.nextChat = 435; - break; - case 435: - sendNpcChat2("I will help you. This one time.", - "But next time I won't be so kind.", player.talkingNpc, - "Winelda"); - player.nextChat = 436; - break; - case 436: - sendOption2("So what do I need to do?", - "I don't think I'm up for this anymore..."); - player.dialogueAction = 121; - break; - case 437:// 9158 - sendPlayerChat1("This is just getting more twisted...I have to go..."); - player.nextChat = 0; - break; - case 438:// 9157 - sendPlayerChat1("So what do you need me to do?"); - player.nextChat = 439; - break; - case 439: - sendNpcChat1("You need, 1 rat's tail, 1 bone, and a vial of water", - player.talkingNpc, "Winelda"); - player.nextChat = 440; - break; - case 440: - sendNpcChat2("Bring those items here and I'll make you a potion", - "that makes anyone tell the truth.", player.talkingNpc, - "Winelda"); - player.nextChat = 0; - player.romeojuliet++; - break; - case 441: - sendNpcChat1("You need, 1 rats tail, 1 bone, and a vial of water", - player.talkingNpc, "Winelda"); - player.nextChat = 442; - break; - case 442: - sendNpcChat1("Speak to me when you have all 3 items.", - player.talkingNpc, "Winelda"); - player.nextChat = 0; - break; - case 443: - sendNpcChat1("What did the witch say?", player.talkingNpc, "Romeo"); - player.nextChat = 444; - break; - case 444: - sendPlayerChat2("She wants me to bring her 3 items", - "Then she'll speak to me"); - player.nextChat = 445; - break; - case 445: - sendNpcChat1("Which items if you don't mind me asking?", - player.talkingNpc, "Romeo"); - player.nextChat = 446; - break; - case 446: - sendPlayerChat1("Oh just a rat's"); - player.nextChat = 448; - break; - case 447: - sendNpcChat1("Nevermind.", player.talkingNpc, "Romeo"); - player.nextChat = 0; - break; - case 448: - sendNpcChat1("I'll take that", player.talkingNpc, "Winelda"); - player.getItemAssistant().deleteItem(300, 1); - player.getItemAssistant().deleteItem(227, 1); - player.getItemAssistant().deleteItem(526, 1); - player.nextChat = 449; - break; - case 449: - sendNpcChat1("Azari-Ahmi-Grantai!!", player.talkingNpc, "Winelda"); - player.nextChat = 450; - break; - case 450: - sendNpcChat1("Here take this", player.talkingNpc, "Winelda"); - player.romeojuliet++; - player.getItemAssistant().addOrDropItem(4836, 1); - player.nextChat = 451; - break; - case 451: - sendNpcChat1("Tell Juliet to drink this", player.talkingNpc, - "Winelda"); - player.nextChat = 453; - break; - case 453: - sendPlayerChat1("Wait but will Juliet actually drink it?"); - player.nextChat = 454; - break; - case 454: - sendNpcChat3("I don't know?!", "What do I look like some kind of", - "fortune teller?", player.talkingNpc, "Winelda"); - player.nextChat = 455; - break; - case 455: - sendNpcChat1("Tell her it's soup or something.", player.talkingNpc, - "Winelda"); - player.nextChat = 456; - break; - case 456: - sendPlayerChat1("Wow she's polite..."); - player.nextChat = 0; - break; - case 457: - sendNpcChat1("I told you to leave....", player.talkingNpc, "Juliet"); - player.nextChat = 458; - break; - case 458: - sendPlayerChat1("Here take this."); - player.nextChat = 459; - break; - case 459: - sendStatement("Juliet drinks the potion."); - player.getItemAssistant().deleteItem(4836, 1); - player.nextChat = 460; - break; - case 460: - sendNpcChat1("What was that..", player.talkingNpc, "Juliet"); - player.nextChat = 461; - break; - case 461: - sendPlayerChat1("Now tell me why you've been ignoring Romeo!"); - player.nextChat = 462; - break; - case 462: - sendNpcChat1("Well...tomorrow's Romeos birthday.", - player.talkingNpc, "Juliet"); - player.nextChat = 463; - break; - case 463: - sendNpcChat3("Mama and I wanted to show Romeo that", - "Even though he's richer then us we still", - "care for him.", player.talkingNpc, "Juliet"); - player.nextChat = 464; - break; - case 464: - sendPlayerChat1("Wait was that it?"); - player.nextChat = 465; - break; - case 465: - sendNpcChat2("Yeah, I've been telling Mother to act", - "grouchy with him.", player.talkingNpc, "Juliet"); - player.nextChat = 466; - break; - case 466: - sendNpcChat2("That way we can throw him off easily.", - "that's what a surprise is.", player.talkingNpc, "Juliet"); - player.nextChat = 467; - break; - case 467: - sendPlayerChat1("I should get going"); - player.nextChat = 0; - player.romeojuliet++; - break; - case 468: - sendNpcChat1("Wait your not going to tell Romeo are you?", - player.talkingNpc, "Juliet"); - player.nextChat = 0; - break; - case 469: - sendNpcChat1("So? What's going on with Juliet?", player.talkingNpc, - "Romeo"); - player.nextChat = 470; - break; - case 470: - sendPlayerChat2("She's been planning a surprise", - "birthday party for you all along"); - player.nextChat = 471; - break; - case 471: - sendPlayerChat2("Her mother was in on in too. They", - "just wanted to show that they're always there for you"); - player.nextChat = 472; - break; - case 472: - sendNpcChat1("Wait but my birthday isn't till next week", - player.talkingNpc, "Romeo"); - player.nextChat = 473; - break; - case 473: - sendNpcChat2("That was very thoughtful of her", - "Thank you young traveller for all your help", - player.talkingNpc, "Romeo"); - player.nextChat = 474; - break; - case 474: - QuestRewards.julietFinish(player); - sendNpcChat2("Juliet and I have been great ever", - "since you've helped. Thank you adventurer", - player.talkingNpc, "Romeo"); - player.romeojuliet = 9; - player.nextChat = 0; - break; - case 475: - if (player.romeojuliet == 8) { - player.nextChat = 474; - } - break; - case 211: - sendOption2("Quest.", "Buy Wool."); - player.dialogueAction = 168; - break; - case 476: - sendNpcChat2( - "Praise Saradomin! He has Brought you here to save us", - "all!", player.talkingNpc, "Morgan"); - player.nextChat = 477; - break; - case 477: - sendPlayerChat1("Wha-"); - player.nextChat = 478; - break; - case 478: - sendNpcChat3("He has guided your steps to my door, So that", - "I may beseech you to save my village from a terrible", - "threat.", player.talkingNpc, "Morgan"); - player.nextChat = 479; - break; - case 479: - sendOption2("Why don't you save your own village?", - "What terrible threat?"); - player.dialogueAction = 29; - break; - case 480:// 9157 - sendPlayerChat1("Why don't you save your own village?"); - player.nextChat = 0; - break; - case 481:// 9158 - sendPlayerChat1("What terrible threat?"); - player.nextChat = 482; - break; - case 482: - sendNpcChat3( - "Our village is plagued by a vampire. He visits us", - "frequently and demands blood payments or he will,", - "terroise us all!", player.talkingNpc, "Morgan"); - player.nextChat = 483; - break; - case 483: - sendPlayerChat2("The vampire showed up all of a sudden", - "and started attacking your village?"); - player.nextChat = 484; - break; - case 484: - sendNpcChat3("I don't know, I just moved here with my wife.", - "We'd move on again,", - "but we're down on our luck and can't afford to.", - player.talkingNpc, "Morgan"); - player.nextChat = 485; - break; - case 485: - sendNpcChat3( - "Besides, I don't want to abandon other innocents to this,", - "fate. This could be a good community.", - "If only that vampire would leave us.", player.talkingNpc, - "Morgan"); - player.nextChat = 486; - break; - case 486: - sendNpcChat1("Will you help me, brave adventurer?", - player.talkingNpc, "Morgan"); - player.nextChat = 487; - break; - case 487: - sendOption2("Yes", "No"); - player.dialogueAction = 30; - break; - case 488:// 9157 - sendPlayerChat1("Yes I'll help you."); - player.vampSlayer = 1; - QuestAssistant.sendStages(player); - player.nextChat = 489; - break; - case 489: - sendNpcChat4("Wonderful! You will succeed.,", - "I'm sure of it you are very brave to take this on.", - "But you should speak to my friend Harlow before you,", - "do anything else.", player.talkingNpc, "Morgan"); - player.nextChat = 490; - break; - case 490: - sendPlayerChat1("Who is this harlow?"); - player.nextChat = 491; - break; - case 491: - sendNpcChat4("He is a retired vampire slayer!,", - "I met him when i was a missionaire, long ago.", - "He will be able to advise you on the best methods to,", - "vanquish the vampire.", player.talkingNpc, "Morgan"); - player.nextChat = 492; - break; - case 492: - sendPlayerChat2("You already know a vampire slayer?", - "What do you need me for?"); - player.nextChat = 493; - break; - case 493: - sendNpcChat3( - "Harlow is... past his prime.. He's seen too many evil things in", - "his life, and, to forget that, he drinks himself into,", - "oblivion. I fear he will slayer vampires no more.", - player.talkingNpc, "Morgan"); - player.nextChat = 494; - break; - case 494: - sendPlayerChat1("Where can i find this Harlow?"); - player.nextChat = 495; - break; - case 495: - sendNpcChat4( - "He spends his time at the Blue Moon Inn, located in,", - "Varrock. If you enter Varrock from the south it is,", - "the second building on your right. I'm sure,", - "it's filled with lively people, so you shouldn't miss it.", - player.talkingNpc, "Morgan"); - player.nextChat = 496; - break; - case 496: - sendPlayerChat1("Okay, I'll go find Harlow."); - player.nextChat = 497; - break; - case 497: - sendNpcChat1("May Saradomin protect you, my friend!", - player.talkingNpc, "Morgan"); - player.nextChat = 0; - break; - case 498: - sendNpcChat1("Buy me a drink please.", player.talkingNpc, - "Doctor Harlow"); - player.nextChat = 499; - break; - case 499: - sendOption4("No you've had enough.", - "Are you Dr Harlow, the famous vampire slayer?", - "You couldn't possibly be Dr Harlow, your just a drunk.", - "Never mind."); - player.dialogueAction = 31; - break; - case 500:// 9178 - sendPlayerChat1("No you've had enough."); - player.nextChat = 0; - break; - case 501:// 9180 - sendPlayerChat1("You couldn't possibly be Dr Harlow, your just a drunk."); - player.nextChat = 0; - break; - case 502:// 9179 - sendPlayerChat1("Are you Dr harlow, the famous vampire Slayer?"); - player.nextChat = 503; - break; - case 503: - sendNpcChat1("Dependish whose is ashking.", player.talkingNpc, - "Doctor Harlow"); - player.nextChat = 504; - break; - case 504: - sendPlayerChat2("Your friend Morgan sent me.", - "He said you could teach me how to slay a vampire."); - player.nextChat = 505; - break; - case 505: - sendNpcChat2("Shure I can teach you.", - "I wash the best vampire shhlayer ever.", - player.talkingNpc, "Doctor Harlow"); - player.nextChat = 506; - break; - case 506: - sendNpcChat1("Buy me a beer and I'll teach you.", - player.talkingNpc, "Doctor Harlow"); - player.nextChat = 507; - break; - case 507: - sendPlayerChat2( - "Your good friend Morgan is living in fear of a vampire,", - "and all you think about is beer?"); - player.nextChat = 508; - break; - case 508: - sendNpcChat1("Buy ush a drink anyway.", player.talkingNpc, - "Doctor Harlow"); - player.nextChat = 509; - break; - case 509: - if (player.getItemAssistant().playerHasItem(1917, 1)) { - sendPlayerChat1("Okay, here you go."); - player.getItemAssistant().deleteItem(1917, 1); - player.nextChat = 510; - } else { - sendPlayerChat1("Okay, let me get one."); - player.nextChat = 0; - } - break; - case 510: - sendNpcChat1("Cheersh, matey.", player.talkingNpc, "Doctor Harlow"); - player.vampSlayer = 2; - player.nextChat = 511; - break; - case 511: - sendPlayerChat1("So tell me how to kill vampires then."); - player.nextChat = 512; - break; - case 512: - sendNpcChat1( - "Yes, yes, vampires, I was very good at killing em once.", - player.talkingNpc, "Doctor Harlow"); - player.nextChat = 513; - break; - case 513: - sendNpcChat2("Vampire slaying is not to be undertaken lighty.", - "You must go in prepared, or you will die.", - player.talkingNpc, "Doctor Harlow"); - player.nextChat = 514; - break; - case 514: - sendNpcChat1("*Sigh*", player.talkingNpc, "Doctor Harlow"); - player.nextChat = 515; - break; - case 515: - sendNpcChat3( - "A stake is an essential tool for any vampire slayer. The,", - "stake must be used in the final blow againt the vampire.", - "Or his dark magic will regenerate him to full health.", - player.talkingNpc, "Doctor Harlow"); - player.nextChat = 516; - break; - case 516: - sendNpcChat1("I always carry a spare, so you can have one.", - player.talkingNpc, "Doctor Harlow"); - player.getItemAssistant().addOrDropItem(1549, 1); - player.nextChat = 517; - break; - case 517: - sendNpcChat2( - "You'll need a special hammer as well, to drive it in in", - "properly.", player.talkingNpc, "Doctor Harlow"); - player.nextChat = 518; - break; - case 518: - sendNpcChat1("Hmm, I think i have a spare hammer you can have.", - player.talkingNpc, "Doctor Harlow"); - player.getItemAssistant().addOrDropItem(2347, 1); - player.vampSlayer = 3; - player.nextChat = 519; - break; - case 519: - sendNpcChat2("One last thing. It's wise to carry garlic with you,", - "vampires are slightly weakened if they can smell garlic.", - player.talkingNpc, "Doctor Harlow"); - player.nextChat = 520; - break; - case 520: - sendNpcChat4("Garlic is pretty common,", - "I know I always advised Morgan to keep a supply,", - "so you might be able to get some from him.", - "If not, I know they it is in Port Sarim.", - player.talkingNpc, "Doctor Harlow"); - player.nextChat = 521; - break; - case 521: - sendPlayerChat2("Okay, So those are the supplies I need", - "but how do I acctually kill him?"); - player.nextChat = 522; - break; - case 522: - sendNpcChat1("You are a eager one.", player.talkingNpc, - "Doctor Harlow"); - player.nextChat = 523; - break; - case 523: - sendNpcChat4("Killing a vampire is D A N G E R O U S!", - "Never forget that. Go in prepared", - "Understand you may die.", - "It's a risk we all take in the buisness.", - player.talkingNpc, "Doctor Harlow"); - player.nextChat = 524; - break; - case 524: - sendNpcChat2("I've seen many fine men and women,", - "die at the hands of vampires.", player.talkingNpc, - "Doctor Harlow"); - player.nextChat = 525; - break; - case 525: - sendNpcChat4( - "Enter the vampire's lair and attempt to open the coffin.", - "He should be asleep in there, so try to use the stake on,", - "him. As you're new at this you'll,", - "probably just wake him up and the real fight begins.", - player.talkingNpc, "Doctor Harlow"); - player.nextChat = 526; - break; - case 526: - sendNpcChat3("Fight him until he's nearly dead, and,", - "when the moment is right. Stake him through the heart", - "and hammer it in.", player.talkingNpc, "Doctor Harlow"); - player.nextChat = 527; - break; - case 527: - sendNpcChat3("It's gruesome, but it's the only way.", - "Once he's dead speak to morgan so", - "he can notify the village.", player.talkingNpc, - "Doctor Harlow"); - player.nextChat = 528; - break; - case 528: - sendPlayerChat1("Thank you!"); - player.nextChat = 0; - break; - case 529: - sendPlayerChat1("I killed the vampire!"); - player.nextChat = 530; - break; - case 530: - sendNpcChat1("Congratulations! You have saved the village.", - player.talkingNpc, "Morgan"); - player.nextChat = 3194; - break; - case 531: - if (player.getItemAssistant().playerHasItem(1549)) { - sendPlayerChat1("I still need to kill the vampire."); - player.nextChat = 0; - } else if (!player.getItemAssistant().playerHasItem(1549) && player.vampSlayer == 3) { - player.getItemAssistant().addOrDropItem(1549, 1); - sendPlayerChat1("Thank you, I will be more careful next time."); - player.nextChat = 0; - } - break; - case 532: - sendNpcChat1("What could you want with an old woman like me?", - player.talkingNpc, "Hetty"); - player.nextChat = 533; - break; - case 533: - sendOption2("I am in search of a quest", - "I've heard that you are a witch"); - player.dialogueAction = 74; - break; - case 534: // 9157 - sendPlayerChat1("I am in search of a quest."); - player.nextChat = 536; - break; - case 535: // 9158 - sendNpcChat1("Yes I am...", player.talkingNpc, "Hetty"); - player.nextChat = 0; - break; - case 536: - sendNpcChat2("Would you like to become more proficient in the", - "dark arts?", player.talkingNpc, "Hetty"); - player.nextChat = 537; - break; - case 537: - sendOption3("Yes help me become one with my darker side.", - "No I have my principles and hour.", - "What, you mean improve my magic?"); - player.dialogueAction = 58; - break; - case 538:// 9168 - sendPlayerChat1("No I have my principles and hour."); - player.nextChat = 0; - break; - case 539:// 9169 - sendPlayerChat1("What, you mean improve my magic?"); - player.nextChat = 0; - break; - case 540:// 9167 - sendPlayerChat1("Yes help me become one with my darker side."); - player.nextChat = 541; - break; - case 541: - sendNpcChat2( - "Ok, I'm going to make a potion to help bring out your", - "darker self.", player.talkingNpc, "Hetty"); - player.nextChat = 542; - break; - case 542: - sendNpcChat1("You will need certain ingredients.", - player.talkingNpc, "Hetty"); - player.nextChat = 543; - break; - case 543: - sendPlayerChat1("What do I need?"); - player.nextChat = 544; - break; - case 544: - sendNpcChat2("You need an eye of newt, a rat's tail, an onion...", - "Oh and a peice of burnt mean.", player.talkingNpc, "Hetty"); - player.nextChat = 545; - break; - case 545: - sendPlayerChat1("Great, I'll go and get them."); - player.witchspot = 1; - QuestAssistant.sendStages(player); - player.nextChat = 0; - break; - case 546: - sendNpcChat1("So have you found the things for my potion?", - player.talkingNpc, "Hetty"); - player.nextChat = 547; - break; - case 547: - if (player.getItemAssistant().playerHasItem(221, 1) - && player.getItemAssistant().playerHasItem(300, 1) - && player.getItemAssistant().playerHasItem(2146, 1)) { - sendPlayerChat1("Yes I have everything!"); - player.witchspot = 2; - player.nextChat = 550; - } else { - sendPlayerChat1("No I still need to keep looking."); - player.nextChat = 0; - } - break; - case 548: - sendPlayerChat1("Yes I have everything!"); - player.witchspot = 2; - player.nextChat = 550; - break; - case 549: - sendPlayerChat1("No I still need to keep looking."); - player.nextChat = 0; - break; - case 550: - sendNpcChat1("Excellent can I have them?", player.talkingNpc, - "Hetty"); - player.nextChat = 551; - break; - case 551: - if (player.getItemAssistant().playerHasItem(221, 1) - && player.getItemAssistant().playerHasItem(300, 1) - && player.getItemAssistant().playerHasItem(2146, 1)) { - sendStatement4( - "You pass the ingredients to Hetty and she puts them all into her,", - "Cauldron.", - "Hetty closes her eyes and begins to chant.", - "The caludron bubbles mysteriously."); - player.getItemAssistant().deleteItem(221, 1); - player.getItemAssistant().deleteItem(300, 1); - player.getItemAssistant().deleteItem(2146, 1); - player.nextChat = 552; - } else { - sendPlayerChat1("I don't have them anymore."); - player.nextChat = 0; - } - break; - case 552: - sendPlayerChat1("Well, is it ready?"); - player.nextChat = 553; - break; - case 553: - sendNpcChat1("Ok, now drink from the cauldron.", player.talkingNpc, - "Hetty"); - player.nextChat = 0; - break; - case 554: - sendNpcChat1("Arr, Matey!", player.talkingNpc, "Redbeard Frank"); - player.nextChat = 555; - break; - case 555: - sendOption2("I'm in search of treasure.", "Arr!"); - player.dialogueAction = 71; - break; - case 556:// 9157 - sendPlayerChat1("I'm in search of treasure."); - player.nextChat = 557; - break; - case 557: - sendNpcChat2( - "Arr, trasure you be after eh?", - "Well I might be able to tell you where to find some... For a price...", - player.talkingNpc, "Redbeard Frank"); - player.nextChat = 558; - break; - case 558: - sendPlayerChat1("What sort of price?"); - player.nextChat = 559; - break; - case 559: - sendNpcChat2( - "Well for example if you can get me a bottle of rum..", - "Not just any rum mind...", player.talkingNpc, - "Redbeard Frank"); - player.nextChat = 560; - break; - case 560: - sendNpcChat2("I'd like some rum made on Karamja Island.", - "There's no rum like Karamja Rum!", player.talkingNpc, - "Redbeard Frank"); - player.nextChat = 561; - break; - case 561: - sendOption2("Ok, I will bring you some rum.", "Not right now."); - player.dialogueAction = 72; - break; - case 562:// 9158 - sendPlayerChat1("Not right now."); - player.nextChat = 0; - break; - case 563:// 9157 - sendPlayerChat1("Ok, I will bring you some rum."); - player.nextChat = 564; - break; - case 564: - sendNpcChat1( - "Yer a saint, although it'll take a miracle to get it off Karamja.", - player.talkingNpc, "Redbeard Frank"); - player.nextChat = 565; - break; - case 565: - sendPlayerChat1("What do you mean?"); - player.nextChat = 566; - break; - case 566: - sendNpcChat3( - "The customs office has been clampin' down on the export of spirits. ", - "You seem like a resourceful young lad,", - " I'm sure ye'll be able to find a way to slip the stuff past them.", - player.talkingNpc, "Redbeard Frank"); - player.nextChat = 567; - break; - case 567: - sendPlayerChat1("Well, I'll give it a shot."); - player.nextChat = 568; - break; - case 568: - sendNpcChat1("Arr, that's the spirit!", player.talkingNpc, - "Redbeard Frank"); - player.nextChat = 0; - player.pirateTreasure = 1; - QuestAssistant.sendStages(player); - break; - case 569: - if (player.pirateTreasure == 2 - && player.getItemAssistant().playerHasItem(431, 1)) { - sendNpcChat1("Arr, Matey!", player.talkingNpc, "Redbeard Frank"); - player.nextChat = 570; - } else { - sendPlayerChat1("No I still need to get some rum."); - player.nextChat = 0; - } - break; - case 570: - sendNpcChat1("Have ye brought some rum for yer ol' mate Frank?", - player.talkingNpc, "Redbeard Frank"); - player.nextChat = 571; - break; - case 571: - if (player.getItemAssistant().playerHasItem(431, 1)) { - sendPlayerChat1("Yes I've got some."); - player.nextChat = 572; - } else { - sendPlayerChat1("No I still need to get it."); - player.nextChat = 0; - } - break; - case 572: - sendNpcChat2( - "Now a deal's a deal, I'll tell ye about the treasure.", - "I used to server under a pirate captain called One-Eyed Hector.", - player.talkingNpc, "Redbeard Frank"); - player.nextChat = 573; - break; - case 573: - sendNpcChat2( - "Hector were very successful and became very rich.", - "But about a year ago we were boarded by the Customs and Excise Agents.", - player.talkingNpc, "Redbeard Frank"); - player.nextChat = 574; - break; - case 574: - sendNpcChat2("Hector were killed along with many of the crew,", - "I were one of the few to escape and I escaped with this.", - player.talkingNpc, "Redbeard Frank"); - player.nextChat = 575; - break; - case 575: - if (player.getItemAssistant().playerHasItem(431, 1)) { - sendStatement("Frank happily takes the rum... and hands you a key"); - player.getItemAssistant().deleteItem(431, 1); - player.getItemAssistant().addOrDropItem(432, 1); - player.nextChat = 576; - } else { - sendPlayerChat1("I still need to get some rum."); - player.nextChat = 0; - } - break; - case 576: - sendNpcChat2( - "This be Hector's key. ", - "I belive it opens his chest in his old room in the Blue Moon Inn in Varrock.", - player.talkingNpc, "Redbeard Frank"); - player.nextChat = 577; - break; - case 577: - sendNpcChat1("With any luck his treasure will be in there.", - player.talkingNpc, "Redbeard Frank"); - player.nextChat = 578; - break; - case 578: - sendOption2("Ok thanks, I'll go and get it.", - "So why didn't you ever get it?"); - player.dialogueAction = 73; - break; - case 579:// 9157 - sendPlayerChat1("Ok thanks, I'll go and get it."); - player.pirateTreasure = 3; - player.nextChat = 0; - break; - case 580:// 9158 - sendPlayerChat1("So why didn't you ever get it?"); - player.nextChat = 581; - break; - case 581: - sendNpcChat1("That's none of your buisness.", player.talkingNpc, - "Redbeard Frank"); - player.nextChat = 0; - break; - case 582:// 9158 - sendPlayerChat1("Arr!"); - player.nextChat = 0; - break; - - case 583: - if (!player.getItemAssistant().playerHasItem(995, 30)) { - sendPlayerChat1("Sorry, I don't have enough coins for that."); - player.nextChat = 0; - return; - } else { - Sailing.startTravel(player, 5); - player.getItemAssistant().deleteItem(995, 30); - player.nextChat = 0; - } - break; - - case 584: - sendNpcChat1("The trip back to port sarim will cost you 30 coins.", - player.talkingNpc, "Sailor"); - player.nextChat = 585; - break; - - case 585: - sendOption2("Yes", "No"); - player.dialogueAction = 68; - break; - - case 586: - sendPlayerChat1("No thank you."); - player.nextChat = 0; - break; - - case 587: - sendPlayerChat1("Yes please."); - player.nextChat = 588; - break; - - case 588: - if (!player.getItemAssistant().playerHasItem(995, 30)) { - sendPlayerChat1("Sorry, I don't have enough coins for that."); - player.nextChat = 0; - return; - } else { - Sailing.startTravel(player, 6); - player.getItemAssistant().deleteItem(995, 30); - player.nextChat = 0; - } - break; - - case 589: - player.getItemAssistant().deleteItem(995, 30); - player.nextChat = 0; - break; - - case 590: - sendNpcChat1("Hello " + player.playerName + ".", player.talkingNpc, - "Gnome Pilot"); - player.nextChat = 591; - break; - - case 591: - sendNpcChat1("Would you like to fly my glider?", player.talkingNpc, - "Gnome Pilot"); - player.nextChat = 592; - break; - - case 592: - sendOption2("Yes", "No"); - player.dialogueAction = 130; - break; - - case 593: - sendPlayerChat1("No thank you."); - player.nextChat = 0; - break; - - case 594: - sendPlayerChat1("Yes please."); - player.nextChat = 595; - break; - - case 595: - player.gliderOpen = true; - player.getPlayerAssistant().showInterface(802); - break; - - case 596: - sendNpcChat2("You didn't participate enough to take down", - "You've gain less points", player.talkingNpc, "Void Knight"); - player.nextChat = 0; - break; - case 597: - sendNpcChat3("You couldn't take down all the portals in time.", - "Please try harder next time, or ask more", - "people to join your game.", player.talkingNpc, - "Void Knight"); - player.nextChat = 0; - break; - case 598: - sendNpcChat3("Congratulations " + player.playerName - + "! you have taken", - "down all the portals while keeping the Knight alive", - "please accept this reward from us.", player.talkingNpc, - "Void Knight"); - player.getActionSender().sendMessage( - "You have won the Pest Control game!"); - player.nextChat = 0; - break; - case 599: - sendNpcChat2("Do not let the Void Knights health reach 0!", - "You can regain health by destroying more monsters,", - player.talkingNpc, "Void Knight"); - player.nextChat = 600; - break; - case 600: - sendNpcChat1("NOW GO AND DESTROY THOSE PORTALS!!!", - player.talkingNpc, "Void Knight"); - player.nextChat = 0; - break; - case 601: - sendNpcChat1("You call yourself a Knight?", player.talkingNpc, - "Void Knight"); - player.nextChat = 0; - break; - case 602: - sendNpcChat1("Hi welcome to Pest Control.", player.talkingNpc, - "Void Knight"); - player.nextChat = 84; - break; - case 603: - sendNpcChat1("Would you like to open the Armor Shop or Exp Shop?", - player.talkingNpc, "Void Knight"); - player.nextChat = 85; - break; - case 604: - sendOption2("Void Knight Armor", "Experience Shop"); - player.dialogueAction = 85; - break; - case 605: - sendNpcChat2( - "The party room is a fun place where you can put your items", - "in the chest and drop them and have a party with your friends.", - player.talkingNpc, "Party Pete"); - player.nextChat = 0; - break; - - case 610: - sendNpcChat1("Hello. I am the squire to Sir Vyvin.", player.talkingNpc, "Squire"); - player.nextChat = 611; - break; - case 611: - sendOption2("And how is life as a squire?", "Wouldn't you prefer to be a squire for me?"); - player.dialogueAction = 181;/*DIALOGUE ACTION*/ - break; - case 612: - sendPlayerChat1("And how is life as a squire?"); - player.nextChat = 613; - break; - case 613: - sendNpcChat3("Well, Sir Vyvin is a good guy to work for, however,", "I'm in a spot of trouble today. I've gone and lost Sir", "Vyvin's sword!", player.talkingNpc, "Squire"); - player.nextChat = 614; - break; - case 614: - sendOption3("Do you know where you lost it?", "I can make a new sword if you like...", "Is he angry?"); - player.dialogueAction = 182;/*DIALOGUE ACTION*/ - break; - case 615: - sendPlayerChat1("I can make a new sword if you like..."); - player.nextChat = 616; - break; - case 616: - sendNpcChat2("Thanks for the offer. I'd be surprised if you could", "though.", player.talkingNpc, "Squire"); - player.nextChat = 617; - break; - case 617: - sendNpcChat4("The thing is, this sword is a family heirloom. It has been", "passed down through Vyvin's family for five", "generations! It was originally made by the Imacando", "dwarves, who were", player.talkingNpc, "Squire"); - player.nextChat = 618; - break; - case 618: - sendNpcChat2("a particularly skilled tribe of dwarven smiths.", "I doubt anyone could make it in the style they do.", player.talkingNpc, "Squire"); - player.nextChat = 619; - break; - case 619: - sendOption2("So would these dwarves make another one?", "Well I hope you find it soon."); - player.dialogueAction = 183;/*DIALOGUE ACTION*/ - break; - case 620: - sendPlayerChat1("So would these dwarves make another one?"); - player.nextChat = 621; - break; - case 621: - sendNpcChat4("I'm not a hundred percent sure the Imacando tribe", "exists anymore. I should think Reldo, the palace", "librarian will know; he has done a lot of", "research on the races of Runescape.", player.talkingNpc, "Squire"); - player.nextChat = 622; - break; - case 622: - sendNpcChat3("I don't suppose you could try and track down the", "Imcando dwarves for me? I've got so much work to", "do...", player.talkingNpc, "Squire"); - player.nextChat = 623; - break; - case 623: - sendOption2("Ok, I'll give it a go.", "No, I've got lots of mining work to do."); - player.dialogueAction = 184;/*DIALOGUE ACTION*/ - break; - case 624: - sendPlayerChat1("Ok, I'll give it a go."); - player.knightS = 1; - QuestAssistant.sendStages(player); - player.nextChat = 625; - break; - case 625: - sendNpcChat2("Thank you very much! As I say, the best place to start", "should be with Reldo...", player.talkingNpc, "Squire"); - player.nextChat = 0; - break; - - // reldo starts here - case 626: - sendNpcChat1("Hello stranger.", player.talkingNpc, "Reldo"); - player.nextChat = 627; - break; - case 627: - sendOption3("Do you have anything to trade?", "What do you do?", "What do you know about the Imcando Dwarves?"); - player.dialogueAction = 185;/*DIALOGUE ACTION*/ - break; - case 628: - sendNpcChat1("I work here as a librarian.", player.talkingNpc, "Reldo"); - player.nextChat = 0; - break; - case 629: - sendNpcChat1("I do not have anything to trade, sorry.", player.talkingNpc, "Reldo"); - player.nextChat = 0; - break; - case 630: - if (player.knightS == 1) { - sendPlayerChat1("What do you know about the Imcando dwarves?"); - player.nextChat = 631; - } else { - sendNpcChat1("You are not on this part of the Knights Sword quest.", player.talkingNpc, "Reldo"); - player.nextChat = 0; - } - break; - case 631: - sendNpcChat1("The imcando dwarves, you say?", player.talkingNpc, "Reldo"); - player.nextChat = 632; - break; - case 632: - sendNpcChat3("Ah yes... for many hundreds of years they were the", "world's most skilled smiths. They used secret smithing", "knowledge passed down from generation to generation.", player.talkingNpc, "Reldo"); - player.nextChat = 633; - break; - case 633: - sendNpcChat3("Unfortunately, about century ago, the once thriving", "race was wiped out during the barbarian invasions of", "that time.", player.talkingNpc, "Reldo"); - player.nextChat = 634; - break; - case 634: - sendPlayerChat1("So are there any Imcando left at all?"); - player.nextChat = 635; - break; - case 635: - sendNpcChat3("I believe a few of them survived, but with the bulk of", "their population destroyed their numbers have dwindled", "even further.", player.talkingNpc, "Reldo"); - player.nextChat = 636; - break; - case 636: - sendNpcChat3("I believe I remember a couple living in Asgarnia near", "the cliffs on the Asgarnian southern peninsula, but they", "DO tend to keep to themselves.", player.talkingNpc, "Reldo"); - player.nextChat = 637; - break; - case 637: - sendNpcChat4("They tend not to tell people they're the", "descendents of the Imcando, which is why people think", "that the tribe has died out totally, but you may well", "have more luck talking to them if you bring them some", player.talkingNpc, "Reldo"); - player.nextChat = 639; - break; - case 639: - sendNpcChat1("redberry pie. They REALLY like redberry pie.", player.talkingNpc, "Reldo"); - player.knightS = 2; - player.nextChat = 0; - break; - - // start thurgo - case 640: - if (player.knightS == 2) { - if (player.getItemAssistant().playerHasItem(2325, 1)) { - sendPlayerChat1("Hello. Are you an Imcando dwarf?"); - player.nextChat = 641; - } else if (!player.getItemAssistant().playerHasItem(2325, 1)) { - sendNpcChat1("I am not interested in talking to you right now.", player.talkingNpc, "Thurgo"); - player.nextChat = 0; - } - } - break; - - case 641: - sendNpcChat1("Maybe. Who wants to know?", player.talkingNpc, "Thurgo"); - player.nextChat = 642; - break; - - case 642: - sendPlayerChat1("Would you like some redberry pie?"); - player.nextChat = 644; - break; - - case 644: - sendStatement("You see Thurgo's eyes light up."); - player.nextChat = 645; - break; - - case 645: - sendNpcChat2("I'd never say no to a redberry pie! They're GREAT", "stuff!", player.talkingNpc, "Thurgo"); - player.nextChat = 646; - break; - case 646: - if (player.getItemAssistant().playerHasItem(2325, 1)) { - sendStatement2("You hand over the pie. Thurgo eats the pie. Thurgo pats his", "stomach."); - player.getItemAssistant().deleteItem(2325, 1); - player.nextChat = 647; - } else { - sendPlayerChat1("I don't have pie anymore."); - player.nextChat = 0; - } - break; - case 647: - sendNpcChat2("By Guthix! THAT was a good pie! Anyone who makes", "pie like THAT has got to be alright!", player.talkingNpc, "Thurgo"); - player.knightS = 3; - player.nextChat = 0; - break; - case 648: - sendPlayerChat1("Can you make a special sword?"); - player.nextChat = 649; - break; - case 649: - sendNpcChat2("Well, after bringing me my favorite food I guess I", "should give it a go. What sort of sword is it?", player.talkingNpc, "Thurgo"); - player.nextChat = 650; - break; - case 650: - sendPlayerChat4("I need you to make a sword for one of Falador's", "knights. He had one which was passed down through five", "generations, but his squire lost it. So we need an", "identical one to replace it."); - player.nextChat = 651; - break; - case 651: - sendNpcChat2("A knight's sword eh? Well I'd need to know exactly", "how it looked before I could make a new one.", player.talkingNpc, "Thurgo"); - player.nextChat = 652; - break; - case 652: - sendNpcChat3("All the Faladorian knights used to have sword with", "unique designs according to their position. Could you bring me", "a picture or something?", player.talkingNpc, "Thurgo"); - player.nextChat = 653; - break; - case 653: - sendPlayerChat1("I'll go ask his squire and see if I can find one."); - player.knightS = 4; - player.nextChat = 0; - break; - // back to squire - case 654: - sendNpcChat1("So how are you doing getting the sword?", player.talkingNpc, "Squire"); - player.nextChat = 655; - break; - case 655: - sendPlayerChat2("I've found an Imcando dwarf but he needs a picture of", "the sword before he can make it."); - player.nextChat = 656; - break; - case 656: - sendNpcChat3("A picture eh? Hmmm.... The only one I can think of is", "in a small portrait of Sir Vyvin's father... Sir Vyvin", "keeps it in a cupboard in his room I think.", player.talkingNpc, "Squire"); - player.nextChat = 657; - break; - case 657: - sendPlayerChat1("Ok, I'll try and get that then."); - player.nextChat = 658; - break; - case 658: - sendNpcChat2("Please don't let him catch you! He MUSTN'T know", "what happened!", player.talkingNpc, "Squire"); - player.knightS = 5; - player.nextChat = 0; - break; - case 659: - sendStatement("You find a small portrait in here which you take."); - player.getItemAssistant().addItem(666, 1); - player.nextChat = 0; - break; - // back to thurgo - case 660: - sendPlayerChat2("I have found a picture of the sword I would like you to", "make."); - player.nextChat = 661; - break; - case 661: - sendStatement("You give the portrait to Thurgo. Thurgo studies the portrait."); - player.getItemAssistant().deleteItem(666, 1); - player.nextChat = 662; - break; - case 662: - sendNpcChat2("Ok. You'll need to get me some stuff in order for me", "to make this.", player.talkingNpc, "Thurgo"); - player.nextChat = 663; - break; - case 663: - sendNpcChat4("I'll need two iron bars to make the sword to start with.", "I'll also need an ore called blurite. It's useless for", "making actual weapons for fighting with except", "crossbows, but I'll need some as decoration for the hilt.", player.talkingNpc, "Thurgo"); - player.nextChat = 664; - break; - case 664: - sendNpcChat2("It is a fairly rare sort of ore... The only place I know", "where to get it is under the cliff here...", player.talkingNpc, "Thurgo"); - player.nextChat = 665; - break; - case 665: - sendNpcChat1("But it is guarded by a very powerful ice giant.", player.talkingNpc, "Thurgo"); - player.nextChat = 666; - break; - case 666: - sendNpcChat3("Most of the rocks in that cliff are pretty useless, and", "don't contain much of anything, but there's", "DEFINITELY some blurite in there.", player.talkingNpc, "Thurgo"); - player.nextChat = 667; - break; - case 667: - sendNpcChat2("You'll need a little bit of mining experience to be able to", "find it.", player.talkingNpc, "Thurgo"); - player.knightS = 7; - player.nextChat = 668; - break; - case 668: - sendPlayerChat1("Ok. I'll go and find them then."); - player.nextChat = 0; - break; - - // after getting the materials - case 669: - sendNpcChat1("How are you doing finding those sword materials?", player.talkingNpc, "Thurgo"); - player.nextChat = 670; - break; - case 670: - if (player.getItemAssistant().playerHasItem(2351, 2) && player.getItemAssistant().playerHasItem(668, 1)) { - sendPlayerChat1("I have them right here."); - player.nextChat = 671; - } else { - sendPlayerChat1("I'm still working on it."); - player.nextChat = 0; - } - break; - case 671: - if (player.knightS == 7 || player.knightS == 8) { - sendStatement2("You give the blurite ore and two bars to Thurgo. Thurgo starts", "to make the sword. Thurgo hands you a sword."); - player.getItemAssistant().deleteItem(2351, 1); - player.getItemAssistant().deleteItem(2351, 1); - player.getItemAssistant().deleteItem(668, 1); - player.getItemAssistant().addItem(667, 1); - player.knightS = 8; - player.nextChat = 672; - } else { - sendNpcChat1("You are not on this part of the quest right now.", player.talkingNpc, "Thurgo"); - player.nextChat = 0; - } - break; - case 672: - sendPlayerChat1("Thank you very much!"); - player.nextChat = 673; - break; - - case 673: - sendNpcChat1("Just remember to call in with more pie some time!", player.talkingNpc, "Thurgo"); - player.nextChat = 0; - break; - - case 674: - if (player.getItemAssistant().playerHasItem(667, 1)) { - sendNpcChat1("You should bring the Squire that sword.", player.talkingNpc, "Thurgo"); - player.nextChat = 0; - } else { - sendNpcChat1("Did the sword work?", player.talkingNpc, "Thurgo"); - player.nextChat = 675; - } - break; - - case 675: - sendPlayerChat2("I've seemed to have lost my sword.", "Can you make me another?"); - player.nextChat = 676; - break; - - case 676: - if (player.getItemAssistant().playerHasItem(2351, 2) && player.getItemAssistant().playerHasItem(668, 1)) { - sendNpcChat1("Sure, just let me see that blurite, and iron bars.", player.talkingNpc, "Thurgo"); - player.nextChat = 677; - } else { - sendNpcChat2("Sure, but you need to get more", "blurite ore, and iron bars.", player.talkingNpc, "Thurgo"); - player.nextChat = 0; - } - break; - case 677: - sendStatement("You give the bluerite ore and two bars to Thurgo"); - player.getItemAssistant().deleteItem(2351, 1); - player.getItemAssistant().deleteItem(2351, 1); - player.getItemAssistant().deleteItem(668, 1); - player.nextChat = 678; - break; - case 678: - sendStatement("Thurgo starts to make the sword"); - player.nextChat = 679; - break; - case 679: - sendStatement("Thurgo hands you the sword"); - player.getItemAssistant().addItem(667, 1); - player.nextChat = 680; - break; - case 680: - sendPlayerChat1("Thank you very much!"); - player.nextChat = 681; - break; - case 681: - sendNpcChat1("Just remember to call in with more pie some time!", player.talkingNpc, "Thurgo"); - player.nextChat = 0; - break; - - // back to squire - case 682: - sendPlayerChat1("I have retrieved your sword for you."); - player.nextChat = 683; - break; - case 683: - sendNpcChat2("Thank you, thank you, thank you! I was seriously", "worried I would have to own up to Sir Vyvin!", player.talkingNpc, "Squire"); - player.nextChat = 684; - break; - case 684: - sendStatement("You give the sword to the squire."); - player.getItemAssistant().deleteItem(667, 1); - player.knightS = 8; - player.nextChat = 685; - break; - case 685: - QuestRewards.knightsReward(player); - break; - - //Shield of Arrav Quest line: - //Reldo - case 690: - sendOption3("Do you have anything to trade?", "What do you do?", "I'm in search of a quest."); - player.dialogueAction = 186;/*DIALOGUE ACTION*/ - break; - case 691: - sendNpcChat1("Hmmm. I don't... believe there are any here...", player.talkingNpc, "Reldo"); - player.nextChat = 692; - break; - case 692: - sendNpcChat1("Let me think actually...", player.talkingNpc, "Reldo"); - player.nextChat = 693; - break; - case 693: - sendNpcChat2("Ah yes. I know. If you look in a book called 'The Shield", "of Arrav', you'll find a quest in there.", player.talkingNpc, "Reldo"); - player.nextChat = 694; - break; - case 694: - sendNpcChat2("I'm not sure where the book is mind you... but I'm", "sure it's around here somewhere.", player.talkingNpc, "Reldo"); - player.nextChat = 695; - break; - case 695: - sendPlayerChat1("Thank you."); - player.shieldArrav = 1; - player.nextChat = 0; - break; - //bookcase - case 696: - sendPlayerChat2("Aha! 'The Shield of Arrav'! Exactly what I was looking", "for"); - player.getItemAssistant().addOrDropItem(757, 1); - player.shieldArrav = 2; - player.nextChat = 0; - break; - //reldo - case 697: - sendPlayerChat2("Ok. I've read the book. Do you know where I can find", "the Phoenix Gang?"); - player.nextChat = 698; - break; - case 698: - sendNpcChat2("No, I don't. I think I know someone who might", "however.", player.talkingNpc, "Reldo"); - player.nextChat = 699; - break; - case 699: - sendNpcChat3("If i were you I would talk to Baraek, the fur trader in", "the market place. I've heard he has connections with the", "Phoenix Gang.", player.talkingNpc, "Reldo"); - player.shieldArrav = 3; - player.nextChat = 700; - break; - case 700: - sendPlayerChat1("Thanks, I'll try that!"); - player.nextChat = 0; - break; - //Baraek - case 701: - sendPlayerChat1("Can you tell me where I can find the Phoenix Gang?"); - player.nextChat = 702; - break; - case 702: - sendNpcChat2("Sh sh sh, not so loud! You don't want to get me in", "trouble!", player.talkingNpc, "Baraek"); - player.nextChat = 703; - break; - case 703: - sendPlayerChat1("So DO you know where they are?"); - player.nextChat = 704; - break; - case 704: - sendNpcChat1("I may do.", player.talkingNpc, "Baraek"); - player.nextChat = 705; - break; - case 705: - sendNpcChat2("But I don't want to get into trouble for revealing their", "hideout.", player.talkingNpc, "Baraek"); - player.nextChat = 706; - break; - case 706: - sendNpcChat2("Of course, if I was, say 20 gold coins richer I may", "happen to be more inclined to take that sort of risk...", player.talkingNpc, "Baraek"); - player.nextChat = 707; - break; - case 707: - if (player.getItemAssistant().playerHasItem(995, 20)) { - sendPlayerChat1("Okay. Have 20 gold coins."); - player.nextChat = 708; - } else { - sendPlayerChat1("I'm a little short on gold coins right now.."); - player.nextChat = 0; - } - break; - case 708: - sendNpcChat4("Ok, to get to the gang hideout, enter Varrock through", - "the south gate. Then, if you take the first turn east,", - "somewhere along there is an alleyway to the south. The", - "door at the end of there is the entrance to the Phoenix", - player.talkingNpc, "Baraek"); - player.shieldArrav = 4; - player.nextChat = 709; - break; - case 709: - sendNpcChat3("Gang. They're operating there under the name of", - "VTAM Corporation. Be careful. The Pheonixes ain't", - "the types to be messed about.", - player.talkingNpc, "Baraek"); - player.nextChat = 710; - break; - case 710: - sendPlayerChat1("Thanks!"); - player.nextChat = 0; - break; - //Straven - case 711: - sendPlayerChat1("What's through that door?"); - player.nextChat = 712; - break; - case 712: - sendNpcChat2("Hey! You can't go in there. Only authorised personnel", - "of the VTAM Corporation are allowed beyond this point.", - player.talkingNpc, "Straven"); - if (player.shieldArrav < 4) - player.nextChat = 0; - else if (player.shieldArrav == 4) - player.nextChat = 713; - break; - case 713: - sendPlayerChat1("I know who you are!"); - player.nextChat = 714; - break; - case 714: - sendNpcChat1("Really.", player.talkingNpc, "Straven"); - player.nextChat = 715; - break; - case 715: - sendNpcChat1("Well?", player.talkingNpc, "Straven"); - player.nextChat = 716; - break; - case 716: - sendNpcChat1("Who are we then?", player.talkingNpc, "Straven"); - player.nextChat = 717; - break; - case 717: - sendPlayerChat2("This is the headquarters of the Phoenix Gang, the most", "powerful crime syndicate this city has ever seen!"); - player.nextChat = 718; - break; - case 718: - sendNpcChat2("No, this is a legitimate business run by legitimate", "businessmen.", player.talkingNpc, "Straven"); - player.nextChat = 719; - break; - case 719: - sendNpcChat2("Supposing we were this crime gang however, what would", "you want with us?", player.talkingNpc, "Straven"); - player.nextChat = 720; - break; - case 720: - sendPlayerChat1("I'd like to offer you my services."); - player.nextChat = 721; - break; - case 721: - sendNpcChat1("You mean you'd like to join the Phoenix Gang?", player.talkingNpc, "Straven"); - player.nextChat = 722; - break; - case 722: - sendNpcChat2("Well, obviously I can't speak for them, but the Phoenix", "Gang doesn't let people join just like that.", player.talkingNpc, "Straven"); - player.nextChat = 723; - break; - case 723: - sendNpcChat1("You can't be too careful, you understand.", player.talkingNpc, "Straven"); - player.nextChat = 724; - break; - case 724: - sendNpcChat2("Generally someone has to prove their loyalty before", "they can join.", player.talkingNpc, "Straven"); - player.nextChat = 725; - break; - case 725: - sendPlayerChat1("How would I go about doing that?"); - player.nextChat = 726; - break; - case 726: - sendNpcChat1("Obviously, I would have no idea about that.", player.talkingNpc, "Straven"); - player.nextChat = 727; - break; - case 727: - sendNpcChat4("Although having said that, a rival gang of ours, er,", - "theirs, called the Black Arm Gang is supposedly meeting", - "a contact from Port Sarim today in the Blue Moon", - "Inn.", - player.talkingNpc, "Straven"); - player.nextChat = 728; - break; - case 728: - sendNpcChat4("OBVIOUSLY I know NOTHING about the dealings", - "of the Phoenix Gang, but I bet if SOMEBODY were", - "to kill him and bring back his intelligence report, they", - "would be considered loyal enough to join.", - player.talkingNpc, "Straven"); - player.nextChat = 729; - break; - case 729: - sendPlayerChat1("Ok, I'll get right on it."); - player.shieldArrav = 5; - player.nextChat = 0; - break; - case 730: - sendNpcChat1("How's your little mission going?", player.talkingNpc, "Straven"); - if (player.getItemAssistant().playerHasItem(761, 1)) - player.nextChat = 733; - else - player.nextChat = 731; - break; - case 731: - sendPlayerChat1("I haven't managed to find the report yet..."); - player.nextChat = 732; - break; - case 732: - sendNpcChat3("You need to kill Jonny the Beard, who should be in", - "the Blue Moon Inn ...I would guess.", - "Not being a member of the Phoenix Gang and all.", - player.talkingNpc, "Straven"); - player.nextChat = 0; - break; - case 733: - sendPlayerChat1("I have the intelligence report!"); - player.nextChat = 734; - break; - case 734: - sendNpcChat1("Let's see it then.", player.talkingNpc, "Straven"); - player.nextChat = 735; - break; - case 735: - sendStatement("You hand over the report. The man reads the report."); - player.getItemAssistant().deleteItem(761, 1); - player.nextChat = 736; - break; - case 736: - sendNpcChat1("Yes. Yes, this is very good.", player.talkingNpc, "Straven"); - player.nextChat = 737; - break; - case 737: - sendNpcChat2("Ok! You can join the Phoenix Gang! I am Straven, one", "of the gang leaders.", player.talkingNpc, "Straven"); - player.nextChat = 738; - break; - case 738: - sendPlayerChat1("Nice to meet you."); - player.nextChat = 739; - break; - case 739: - sendNpcChat1("Take this key.", player.talkingNpc, "Straven"); - player.nextChat = 740; - break; - case 740: - sendItemChat1(player, "", "Straven hands you a key", 759, 150); - player.getItemAssistant().addOrDropItem(759, 1); - player.shieldArrav = 6; - player.nextChat = 0; - break; - case 741: - sendNpcChat1("Greetings, fellow gang member.", player.talkingNpc, "Straven"); - player.nextChat = 0; - break; - //Phoenix gang weapons chest - case 742: - sendStatement("You search the chest."); - if (player.getItemAssistant().playerHasItem(763) || player.shieldArrav < 6) - player.nextChat = 743; - else - player.nextChat = 744; - break; - case 743: - sendStatement("It's empty."); - break; - case 744: - sendItemChat1(player, "", "You find half of a shield, which you take.", 763, 150); - player.getItemAssistant().addOrDropItem(763, 1); - player.nextChat = 0; - break; - //Curator Haig Halen - case 745: - sendNpcChat1("Welcome to the museum of Varrock.", player.talkingNpc, "Curator Haig Halen"); - if (player.shieldArrav == 6 && (player.getItemAssistant().playerHasItem(763) || player.getItemAssistant().playerHasItem(765))) - player.nextChat = 746; - else - player.nextChat = 0; - break; - case 746: - sendPlayerChat2("I have half the shield of Arrav here. Can I get a", "reward?"); - player.nextChat = 747; - break; - case 747: - sendNpcChat3("The Shield of Arrav! Goodness, the Museum has been", - "searching for that for years! The late King Roald II", - "offered a reward for it years ago!", - player.talkingNpc, "Curator Haig Halen"); - player.nextChat = 748; - break; - case 748: - sendPlayerChat1("Well, I'm here to claim it."); - player.nextChat = 749; - break; - case 749: - sendNpcChat1("Let me have a look at it first.", player.talkingNpc, "Curator Haig Halen"); - player.nextChat = 750; - break; - case 750: - if (player.getItemAssistant().playerHasItem(763)) - sendItemChat1(player, "", "The curator peers at the shield", 763, 150); - else if (player.getItemAssistant().playerHasItem(765)) - sendItemChat1(player, "", "The curator peers at the shield", 765, 150); - player.nextChat = 751; - break; - case 751: - sendNpcChat1("This is incredible!", player.talkingNpc, "Curator Haig Halen"); - player.nextChat = 752; - break; - case 752: - sendNpcChat1("That shield has been missing for over twenty-fice years!", player.talkingNpc, "Curator Haig Halen"); - player.nextChat = 753; - break; - case 753: - sendNpcChat3("Leave the shield here with me and I'll write you out a", - "certificate saying that you have returned the shield, so", - "that you can claim your reward from the King.", - player.talkingNpc, "Curator Haig Halen"); - player.nextChat = 754; - break; - case 754: - if (player.getItemAssistant().playerHasItem(763)) { - sendItemChat1(player, "", "You hand over the shield half.", 763, 150); - player.getItemAssistant().deleteItem(763, 1); - } else if (player.getItemAssistant().playerHasItem(765)) { - sendItemChat1(player, "", "You hand over the shield half.", 765, 150); - player.getItemAssistant().deleteItem(765, 1); - } - player.nextChat = 755; - break; - case 755: - sendItemChat1(player, "", "The curator writes out a certificate.", 769, 150); - player.getItemAssistant().addOrDropItem(769, 1); - player.shieldArrav = 7; - player.nextChat = 0; - break; - //King Roald - case 756: - sendPlayerChat1("Greetings, your majesty."); - player.nextChat = 757; - break; - case 757: - sendPlayerChat2("Your majesty, I have come to claim the reward for the", "return of the Shield of Arrav."); - player.nextChat = 758; - break; - case 758: - sendItemChat1(player, "", "You show the certificate to the king.", 769, 150); - player.nextChat = 759; - break; - case 759: - sendNpcChat2("My goodness! This claim is for the reward offered by", - "my father many years ago!", - player.talkingNpc, "King Roald"); - player.nextChat = 760; - break; - case 760: - sendNpcChat2("I never thought I would live to see the day when", - "someone came forward to claim this reward", - player.talkingNpc, "King Roald"); - player.nextChat = 761; - break; - case 761: - sendItemChat1(player, "", "You hand over the certificate, The king gives you 1,200gp.", 995, 150); - player.nextChat = 762; - break; - case 762: - player.getItemAssistant().deleteItem(769, 1); - QuestRewards.shieldArravReward(player); - player.nextChat = 0; - break; - - - - - - case 908: - sendPlayerChat1("Hello there " + NpcHandler.getNpcListName(player.talkingNpc) + "!"); - player.nextChat = 909; - break; - case 909: - sendNpcChat1("Meeeooow.", npcId, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 0; - break; - case 910: - sendOption3("Pet", "Catch Rat", "Shoo Away"); - player.dialogueAction = 222; - player.nextChat = 0; - break; - case 911: - sendStatement("You pet your cat."); - // Server.npcHandler.startAnimation(9166, client.rememberNpcIndex); - // client.startAnimation(9087); - NpcHandler.npcs[player.rememberNpcIndex].forceChat("Meow!"); - player.nextChat = 0; - break; - case 912: - player.getDialogueHandler().sendStatement( - "Catching rats is currently disabled."); - player.nextChat = 0; - break; - case 913: - sendStatement("You shoo your cat away."); - if (NpcHandler.npcs[player.rememberNpcIndex].npcType >= 761 - && NpcHandler.npcs[player.rememberNpcIndex].npcType >= 766) - // client.ratsCaught = 0; - NpcHandler.npcs[player.rememberNpcIndex].absX = 0; - NpcHandler.npcs[player.rememberNpcIndex].absY = 0; - NpcHandler.npcs[player.rememberNpcIndex] = null; - player.summonId = 0; - player.hasNpc = false; - player.nextChat = 0; - break; - - case 1000: - sendNpcChat1("Is it nice and tidy round the back now?", - player.talkingNpc, "Wydin"); - player.pirateTreasure = 2; - player.nextChat = 1001; - break; - case 1001: - sendOption4("Yes, can I work out front now?", - "Yes, are you going to pay me yet?", - "No it's a complete mess", "Can I buy something please?"); - player.dialogueAction = 69; - break; - case 1002:// 9179 - sendNpcChat1("Not yet.", player.talkingNpc, "Wydin"); - player.nextChat = 0; - break; - case 1003:// 9180 - sendPlayerChat1("No it's a complete mess"); - player.nextChat = 0; - break; - case 1004:// 9181 - sendPlayerChat1("Can I buy something please?"); - player.getShopAssistant().openShop(34); - player.nextChat = 0; - break; - case 1005:// 9178 - sendPlayerChat1("Yes can I work out front now?"); - player.nextChat = 1006; - break; - case 1006: - sendNpcChat1("No I'm the person who works here.", - player.talkingNpc, "Wydin"); - player.nextChat = 0; - break; - case 1007: - sendStatement("You find a hole. Would you like to enter it?"); - player.nextChat = 1008; - break; - case 1008: - sendOption2("Yes", "No"); - player.dialogueAction = 70; - break; - case 1009: - sendPlayerChat1("Yes."); - player.getPlayerAssistant().movePlayer(1761, 5192, 0); - player.nextChat = 0; - break; - case 1011: - sendNpcChat2("How dare you try to take dangerous equipment?", - "Come back when you have left it all behind.", - player.talkingNpc, "Monk of Entrana"); - player.nextChat = 0; - break; - case 1012: - sendNpcChat2("You even defeated TzTok-Jad, I am most impressed!", - "Please accept this gift as a reward.", player.talkingNpc, - "Tzhaar-Mej-Tal"); - player.nextChat = 0; - break; - - /** Bank Settings **/ - case 1013: - if (SkillHandler.isSkilling(player)) { - return; - } - sendNpcChat1("Good day. How may I help you?", player.talkingNpc, "Banker"); - player.nextChat = 1014; - break; - case 1014:// bank open done, this place done, settings done, to do - // delete pin - sendOption3("I'd like to access my bank account, please.", "I'd like to check my my P I N settings.", "What is this place?"); - player.dialogueAction = 251; - break; - /** What is this place? **/ - case 1015: - sendPlayerChat1("What is this place?"); - player.nextChat = 1016; - break; - case 1016: - sendNpcChat2("This is the bank of " + Constants.SERVER_NAME + ".", "We have many branches in many towns.", player.talkingNpc, "Banker"); - player.nextChat = 0; - break; - /** - * Note on P I N. In order to check your "Pin Settings. You must have - * enter your Bank Pin first - **/ - /** I don't know option for Bank Pin **/ - case 1017: - sendStartInfo("Since you don't know your P I N, it will be deleted in @red@3 days@bla@. If you", "wish to cancel this change, you may do so by entering your P I N", "correctly next time you attempt to use your bank.", "", "", false); - player.nextChat = 0; - break; - - case 1018: - sendPlayerChat1("Can I come through this gate?"); - player.nextChat = 1019; - break; - case 1019: - if (player.absX == 3267 || player.absX == 3268) { - sendNpcChat1("You must pay a toll of 10 gold coins to pass.", - player.talkingNpc, "Border Guard"); - player.nextChat = 1020; - } else { - sendNpcChat1("You need to be closer to the gate to use it.", player.talkingNpc, "Border Guard"); - player.nextChat = 0; - } - break; - case 1020: - sendOption3("Okay, I'll pay.", "Who does my money go to?", - "No thanks, I'll walk around."); - player.dialogueAction = 502; - break; - case 1022: - sendPlayerChat1("Who does my money go to?"); - player.nextChat = 1023; - break; - case 1023: - sendNpcChat2("The money goes to the city of Al-Kharid.", - "Will you pay the toll?", player.talkingNpc, "Border Guard"); - player.nextChat = 1024; - break; - case 1024: - sendOption2("Okay, I'll pay.", "No thanks, I'll walk around."); - player.dialogueAction = 508; - break; - case 1025: - sendPlayerChat1("No thanks, I'll walk around."); - player.nextChat = 0; - break; - - case 1026: - if (!player.getItemAssistant().playerHasItem(995, 10)) { - sendPlayerChat1("I haven't got that much."); - player.nextChat = 0; - } else { - sendPlayerChat1("Okay, I'll pay."); - player.nextChat = 1027; - } - break; - - case 1027: - player.getDialogueHandler().sendStatement( - "10 coins are removed from your inventory."); - SpecialObjects.initKharid(player, player.objectId); - player.nextChat = 0; - break; - - /* - * case 1028: client.getDialogues().sendStatement( - * "10 coins are removed from your inventory."); client.nextChat = 0; - * break; - */ - - case 1033: - sendOption2( - "I would like to skip tutorial Island and go to Mainland", - "I would like to continue"); - player.dialogueAction = 132; - break; - - case 1034: - sendNpcChat1("You have been warned, you can't go back now.", - player.talkingNpc, "Runescape Guide"); - player.getPlayerAssistant().movePlayer(3098, 3107, 0); - player.nextChat = 0; - break; - - case 1035: - sendNpcChat1("You have successfully skipped tutorial island.", - player.talkingNpc, "Runescape Guide"); - player.getPlayerAssistant().startTeleport(3222, 3218, 0, "modern"); - player.nextChat = 0; - break; - - case 1036: - sendNpcChat1("Good day to you Bwana.", player.talkingNpc, - "Saniboch"); - player.nextChat = 1037; - break; - case 1037: - sendOption4("Can I go through that door please?", - "Where does this strange entrance lead?", - "Good day to you too.", - "I'm impressed, that tree is growing on that shed."); - player.dialogueAction = 228; - break; - case 1038: - sendPlayerChat1("I'm impressed, that tree is growing on that shed."); - player.nextChat = 1039; - break; - case 1040: - sendNpcChat2("My employer tells me it is an uncommon sort of tree", - "called the Fyburglars tree.", player.talkingNpc, - "Saniboch"); - player.nextChat = 0; - break; - case 1041: - sendPlayerChat1("Good day to you too."); - player.nextChat = 0; - break; - case 1042: - sendPlayerChat1("Where does this strange entrance lead?"); - player.nextChat = 1043; - break; - case 1043: - sendNpcChat3("To a huge fearsome dungeon, populated by giants and", - "strange dogs. Adventurers come from all around to", - "explore its depths", player.talkingNpc, "Saniboch"); - player.nextChat = 1044; - break; - case 1044: - sendNpcChat2( - "I know not what lies deeper in myself, for my skills in", - "agility and woodcutting are inadequate.", - player.talkingNpc, "Saniboch"); - player.nextChat = 0; - break; - case 1045: - sendPlayerChat1("Can I go through that door please?"); - player.nextChat = 1046; - break; - case 1046: - sendNpcChat2( - "Most certainly, but I must charge you the sum of 875", - "coins first.", player.talkingNpc, "Saniboch"); - player.nextChat = 1047; - break; - case 1047: - sendOption3("Ok, here's 875 coins.", "Never mind.", - "Why is it worth the entry cost?"); - player.dialogueAction = 230; - break; - case 1048: - sendNpcChat1("You can't go in there without paying me!", - player.talkingNpc, "Saniboch"); - player.nextChat = 0; - break; - case 1049: - sendPlayerChat1("Never mind."); - player.nextChat = 0; - break; - case 1050: - sendPlayerChat1("Why is it worth the entry cost?"); - player.nextChat = 1051; - break; - case 1051: - sendNpcChat3("It leads to a huge fearsome dungeon, populated by", - "giants and strange dogs. Adventurers come from all", - "around to explore its depths.", player.talkingNpc, - "Saniboch"); - player.nextChat = 1052; - break; - case 1052: - sendNpcChat3( - "I know not what lies deeper in myself, for my skills in", - "agility and woodcutting are inadequate, but I hear tell", - "of even greater dangers deeper in.", player.talkingNpc, - "Saniboch"); - player.nextChat = 0; - break; - case 1053: - if (player.getItemAssistant().playerHasItem(995, 875)) { - sendPlayerChat1("Ok, here's 875 coins."); - player.nextChat = 1054; - } else { - sendPlayerChat1("I don't have the money at the moment."); - player.nextChat = 1057; - } - break; - case 1054: - sendStatement("You give Saniboch 875 coins."); - player.nextChat = 1055; - player.getItemAssistant().deleteItem(995, 875); - player.hasPaidBrim = true; - break; - case 1055: - sendNpcChat2("Many thanks. You may now pass the door. May your", - "death be a glorious one!", player.talkingNpc, "Saniboch"); - player.nextChat = 0; - break; - case 1056: - sendPlayerChat1("I don't have the money at the moment."); - player.nextChat = 1057; - break; - case 1057: - sendNpcChat2( - "Well this is a dungeon for the more wealthy discerning", - "adventurer, be gone with you riff raff.", - player.talkingNpc, "Saniboch"); - player.nextChat = 1058; - break; - case 1058: - sendPlayerChat2( - "But you don't even have clothes, how can you seriously", - "call anyone riff raff"); - player.nextChat = 1059; - break; - case 1059: - sendNpcChat1("Hummph.", player.talkingNpc, "Saniboch"); - player.nextChat = 0; - break; - // Slayer masters - case 1226: - sendNpcChat2("You already have a slayer task", - "please finish it talk to me again.", player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 0; - break; - case 1227: - sendNpcChat1( - "You already have an easier slayer task. Please finish it then talk to me again.", - player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 0; - break; - case 1228: - if (!Slayer.getMasterRequirment(player, player.talkingNpc)) { - sendNpcChat1("Increase your combat level then come back.", player.talkingNpc, NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 0; - } else { - sendNpcChat1("'Ello and what are you after then?", player.talkingNpc, NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 1229; - } - break; - case 1229: - sendOption4("I need another assignement.", - "Where is the location of my task?", - "I would like to view your shop.", - "I would like to cancel or remove my task."); - player.dialogueAction = 142; - break; - case 1231: - sendOption2("I want to cancel my current task.", - "I want to remove my task for ever."); - player.dialogueAction = 143; - break; - case 1232: - player.getSlayer().cancelTask(); - player.getPlayerAssistant().closeAllWindows(); - player.nextChat = 0; - break; - case 1233: - player.getSlayer().removeTask(); - player.getPlayerAssistant().closeAllWindows(); - player.nextChat = 0; - break; - case 1234: - player.getSlayer().generateTask(); - break; - case 1235: - if (player.getSlayer().hasTask()) { - sendNpcChat1("Your Slayer Task is located at " + player.getSlayer().getLocation(player.slayerTask) + ".", player.talkingNpc, NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 0; - } else { - sendNpcChat2("You don't have a slayer task", - "if you wish to get one talk to a slayer master.", - player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 0; - } - break; - case 1236: - player.getShopAssistant().openShop(109); - player.nextChat = 0; - break; - case 1237: - sendNpcChat2("You have been assigned " + player.taskAmount + " " + player.getSlayer().getTaskName(player.slayerTask) + ",", - "Good luck " + player.playerName + ".", - player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 0; - break; - - case 1300: - sendNpcChat2( - "Good afternoon, sir. In need of a haircut or shave, are", - "we?", player.talkingNpc, "Hairdresser"); - player.nextChat = 1301; - break; - - case 1301: - sendOption3("A haircut, please.", "A shave, please.", - "No, thank you."); - player.dialogueAction = 1301; - break; - - case 1302:// first option - sendPlayerChat1("A haircut, please."); - player.nextChat = 1303; - break; - - case 1303: - sendNpcChat1("Certainly, sir. The fee will be 2,000 coins.", - player.talkingNpc, "Hairdresser"); - player.nextChat = 1304; - break; - - case 1304: - if (player.getItemAssistant().playerHasItem(995, 2000)) { - sendNpcChat2("Please select a hairstyle you would", - "like from this brochure.", 598, "Hairdresser"); - player.nextChat = 1305; - } else { - sendNpcChat2("It looks like you don't have 2,000 coins,", - "please revisit when you do.", 598, "Hairdresser"); - player.nextChat = 0; - } - break; - - case 1305: - player.getPlayerAssistant().showInterface(2653); // hairstyle - // interface - break; - // end of hairstyle cut. - - case 1306: // dialogue option 3 - sendPlayerChat1("No, thank you."); - player.nextChat = 1307; - break; - - case 1307: - sendNpcChat1("Very well. Come back if you change your mind.", - player.talkingNpc, "Hairdresser"); - player.nextChat = 0; - break; - // END - case 1308: // start of shaving - sendPlayerChat1("A shave, please."); - player.nextChat = 1309; - break; - - case 1309: - sendNpcChat1("Certainly, sir. The fee will be 2,000 coins.", - player.talkingNpc, "Hairdresser"); - player.nextChat = 1310; - break; - - case 1310: - if (player.getItemAssistant().playerHasItem(995, 2000)) { - sendNpcChat2("Please select a beard and color you would", - "like from this brochure.", player.talkingNpc, - "Hairdresser"); - player.nextChat = 1311; - } else { - sendNpcChat2("It looks like you don't have 2,000 coins,", - "please revisit when you do.", player.talkingNpc, - "Hairdresser"); - player.nextChat = 0; - } - break; - case 1311: - player.getPlayerAssistant().showInterface(2007); // hair/beard - // interface - player.nextChat = 0; - break; - case 1312: - sendNpcChat1( - "What sort of dye would you like? Red, yellow, or blue?", - player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 1313; - break; - case 1313: - sendOption3("Red Dye", "Yellow Dye", "Blue Dye"); - player.dialogueAction = 144; - break; - case 1314:// red 1763, yellow 1765, blue 1767 - if (player.getItemAssistant().playerHasItem(1951, 3) - && player.getItemAssistant().playerHasItem(995, 5)) { - player.getItemAssistant().deleteItem(1951, 3); - player.getItemAssistant().addOrDropItem(1763, 1); - sendPlayerChat1("Red Dye Please."); - player.nextChat = 0; - } else { - sendNpcChat1( - "You need 5 coins and 3 redberries to make red dye.", - player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 0; - } - break; - case 1315:// red 1763, yellow 1765, blue 1767 - if (player.getItemAssistant().playerHasItem(1957, 2) - && player.getItemAssistant().playerHasItem(995, 5)) { - player.getItemAssistant().deleteItem(1957, 2); - player.getItemAssistant().addOrDropItem(1765, 1); - sendPlayerChat1("Yellow Dye Please."); - player.nextChat = 0; - } else { - sendNpcChat1( - "You need 5 coins and 2 onions to make yellow dye.", - player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 0; - } - break; - case 1316:// red 1763, yellow 1765, blue 1767 - if (player.getItemAssistant().playerHasItem(1793, 2) - && player.getItemAssistant().playerHasItem(995, 5)) { - player.getItemAssistant().deleteItem(1793, 2); - player.getItemAssistant().addOrDropItem(1767, 1); - sendPlayerChat1("Blue Dye Please."); - player.nextChat = 0; - } else { - sendNpcChat1( - "You need 5 coins and 2 woad leaves to make blue dye.", - player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 0; - } - break; - case 1317: - sendNpcChat1("Welcome to the Guild of Master Craftsman.", - player.talkingNpc, "Master Crafter"); - player.nextChat = 0; - break; - - /* Slayer Gem */ - - case 1318: - if (player.getSlayer().hasTask()) { - sendNpcChat3( - "Hello " + player.playerName + ".", - "You currently need to kill " - + player.taskAmount - + " more " - + player.getSlayer().getTaskName( - player.slayerTask) + ".", - "in the " - + player.getSlayer().getLocation( - player.slayerTask) + ".", - player.talkingNpc, - NpcHandler.getNpcListName(player.SlayerMaster)); - player.nextChat = 0; - } else { - sendNpcChat1("You don't have a slayer task.", - player.talkingNpc, - NpcHandler.getNpcListName(player.SlayerMaster)); - } - break; - case 1319: - if (player.getSlayer().hasTask()) { - sendNpcChat1( - "I am " - + player.getSlayer().getSlayerMaster( - player.SlayerMaster) + ".", - player.talkingNpc, - NpcHandler.getNpcListName(player.SlayerMaster)); - player.nextChat = 0; - } else { - sendNpcChat1("You don't have a slayer task.", - player.talkingNpc, - NpcHandler.getNpcListName(player.SlayerMaster)); - } - break; - case 1320: - if (player.getSlayer().hasTask()) { - sendNpcChat2( - "Hello " + player.playerName + ".", - "I am located in " - + player.getSlayer().getMasterLocation( - player.SlayerMaster) + ".", - player.talkingNpc, - NpcHandler.getNpcListName(player.SlayerMaster)); - player.nextChat = 0; - } else { - sendNpcChat1("You don't have a slayer task.", - player.talkingNpc, - NpcHandler.getNpcListName(player.SlayerMaster)); - } - break; - case 1321: - sendNpcChat1("You have " + player.slayerPoints + " slayer points nice job!", player.talkingNpc, NpcHandler.getNpcListName(player.SlayerMaster)); - player.nextChat = 0; - break; - - case 1322: - sendNpcChat2("Hello " + player.playerName + ".", "Are you interested in buying anything?", player.talkingNpc, NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 1323; - break; - - case 1323: - sendOption2("Yes please.", "No thanks."); - player.dialogueAction = 146; - break; - - case 1324: - sendPlayerChat1("No thanks."); - player.nextChat = 0; - break; - - case 1325: - sendPlayerChat1("Yes please."); - player.nextChat = 1326; - break; - - case 1326: - for (Shop shop : Shop.values()) { - if (shop != null) { - if (shop.getNpc() == player.talkingNpc) { - player.getShopAssistant().openShop(shop.getShop()); - RandomEventHandler.addRandom(player); - player.nextChat = 0; - } - } - } - break; - - case 1329: - sendNpcChat2("Hello " + player.playerName + ".", - "Are you interested in buying anything?", - player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 1330; - break; - - case 1330: - sendOption3("Yes please.", "No Thanks.", - "I have a frog token I would like to exchange."); - player.dialogueAction = 148; - break; - - case 1331: - sendPlayerChat1("No thanks."); - player.nextChat = 0; - break; - - case 1332: - sendPlayerChat1("Yes please."); - player.nextChat = 1334; - break; - - case 1333: - sendOption2("A frog mask please!", "A frog outfit, please!"); - player.dialogueAction = 149; - break; - - case 1334: - player.getShopAssistant().openShop(12); - RandomEventHandler.addRandom(player); - break; - - case 1335: - if (player.getItemAssistant().playerHasItem(6183, 1)) { - sendPlayerChat1("A frog mask please!"); - player.getItemAssistant().deleteItem(6183, 1); - player.getItemAssistant().addOrDropItem(6188, 1); - player.nextChat = 0; - } else { - sendNpcChat1("You don't have any frog tokens.", - player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 0; - } - break; - - case 1336: - if (player.getItemAssistant().playerHasItem(6183, 1) - && player.playerAppearance[0] == 0) { - sendPlayerChat1("A frog prince outfit, please!"); - player.getItemAssistant().deleteItem(6183, 1); - player.getItemAssistant().addOrDropItem(6184, 1); - player.getItemAssistant().addOrDropItem(6185, 1); - player.nextChat = 0; - } else if (player.getItemAssistant().playerHasItem(6183, 1) - && player.playerAppearance[0] == 1) { - sendPlayerChat1("A frog princess outfit, please!"); - player.getItemAssistant().deleteItem(6183, 1); - player.getItemAssistant().addOrDropItem(6186, 1); - player.getItemAssistant().addOrDropItem(6187, 1); - player.nextChat = 0; - } else { - sendNpcChat1("You don't have any frog tokens.", - player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 0; - } - break; - - case 1337: - sendNpcChat1("Hello, would you like some rope?", player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 1338; - break; - - case 1338: - sendOption2("Yes please.", "No thanks."); - player.dialogueAction = 166; - break; - - case 1339: - sendPlayerChat1("No thanks."); - player.nextChat = 0; - break; - - case 1340: - sendPlayerChat1("Yes please."); - player.nextChat = 1341; - break; - - case 1341: - sendOption3("I will give you 15 coins for 1 rope.", - "I will give you 4 balls of wool for 1 rope.", - "Never mind."); - player.dialogueAction = 167; - break; - - case 1342: - sendPlayerChat1("Never mind."); - player.nextChat = 0; - break; - - case 1343: - if (player.getItemAssistant().playerHasItem(995, 15)) { - player.getItemAssistant().deleteItem(995, 15); - player.getItemAssistant().addOrDropItem(954, 1); - sendPlayerChat1("I will give you 15 coins for 1 rope."); - player.nextChat = 0; - } else { - sendNpcChat1("You don't even have 15 coins.", - player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 0; - } - break; - - case 1344: - if (player.getItemAssistant().playerHasItem(1759, 4)) { - player.getItemAssistant().deleteItem(1759, 4); - player.getItemAssistant().addOrDropItem(954, 1); - sendPlayerChat1("I will give you 4 balls of wool for 1 rope."); - player.nextChat = 0; - } else { - sendNpcChat1("You don't even have 4 balls of wool.", - player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 0; - } - break; - - case 1345: - sendNpcChat1( - "Hello, would you like to buy climbing boots for 12 gp?", - player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 1346; - break; - - case 1346: - sendOption2("Yes please.", "No thanks."); - player.dialogueAction = 170; - break; - - case 1347: - sendPlayerChat1("No thanks."); - player.nextChat = 0; - break; - - case 1348: - if (player.getItemAssistant().playerHasItem(995, 12)) { - player.getItemAssistant().deleteItem(995, 12); - player.getItemAssistant().addOrDropItem(3105, 1); - sendPlayerChat1("Yes please."); - player.nextChat = 0; - } else { - sendNpcChat1("You need 12 gp to buy these.", player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 0; - } - break; - - case 1349: - if (player.absY > 3485 && player.absY < 3489 - && player.hasPaid != true) { - sendNpcChat2( - "Hello, are you interested in traveling up the river", - "for 50 coins?", player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 1350; - } else if (player.hasPaid != true) { - sendNpcChat2( - "Hello, are you interested in traveling back down the river", - "for 50 coins?", player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 1350; - } else if (player.hasPaid == true && player.absY > 3485 - && player.absY < 3489) { - sendNpcChat1( - "Hello, are you interested in a free ride up the river?", - player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 1350; - } else if (player.hasPaid == true) { - sendNpcChat1( - "Hello, are you interested in a free back down the river?", - player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 1350; - } - break; - - case 1350: - sendOption2("Yes please.", "No thanks."); - player.dialogueAction = 171; - break; - - case 1351: - sendPlayerChat1("No thanks."); - player.nextChat = 0; - break; - - case 1352: - if (player.getItemAssistant().playerHasItem(995, 50) - && player.absY > 3485 && player.absY < 3489) { - player.getItemAssistant().deleteItem(995, 50); - sendPlayerChat1("Yes please."); - player.getPlayerAssistant().startTeleport(2358, 3640, 0, - "modern"); - player.hasPaid = true; - player.nextChat = 0; - } else if (player.getItemAssistant().playerHasItem(995, 50)) { - player.getItemAssistant().deleteItem(995, 50); - sendPlayerChat1("Yes please."); - player.getPlayerAssistant().startTeleport(2367, 3488, 0, - "modern"); - player.hasPaid = true; - player.nextChat = 0; - } else if (player.hasPaid == true && player.absY > 3485 - && player.absY < 3489) { - sendPlayerChat1("Yes please."); - player.getPlayerAssistant().startTeleport(2358, 3640, 0, - "modern"); - } else if (player.hasPaid == true) { - sendPlayerChat1("Yes please."); - player.getPlayerAssistant().startTeleport(2367, 3488, 0, - "modern"); - } - break; - - case 1353: - sendNpcChat1("Would you like to travel to Keldagrim?", - player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 1354; - break; - - case 1354: - sendOption2("Yes please.", "No thanks."); - player.dialogueAction = 172; - break; - - case 1355: - sendPlayerChat1("Yes please."); - player.nextChat = 1357; - break; - - case 1356: - sendPlayerChat1("No thanks."); - player.nextChat = 0; - break; - - case 1357: - player.getPlayerAssistant().startTeleport(2827, 10214, 0, "modern"); - player.nextChat = 0; - break; - - case 1358: - sendNpcChat1("Hello, would you like some monk robes?", - player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 1359; - break; - - case 1359: - sendOption2("Yes please.", "No thanks."); - player.dialogueAction = 173; - break; - - case 1360: - sendPlayerChat1("Yes please."); - player.nextChat = 1362; - break; - - case 1361: - sendPlayerChat1("No thanks."); - player.nextChat = 0; - break; - - case 1362: - if (player.getItemAssistant().playerHasItem(542) - || player.getItemAssistant().playerHasItem(544) - || player.playerEquipment[player.playerLegs] == 542 - || player.playerEquipment[player.playerChest] == 544) { - sendNpcChat1("You already have some monks robes", - player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 0; - } else { - player.getItemAssistant().addOrDropItem(542, 1); - player.getItemAssistant().addOrDropItem(544, 1); - player.nextChat = 0; - } - break; - - case 1363: - sendNpcChat4( - "You already have the slayer task of " + player.slayerTask - + " and have", - " " + player.taskAmount + " left to kill", - "are you sure you would like an easier task?", - "it will be something much simpiler than your previous task.", - player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 1364; - break; - - case 1364: - sendOption2("Yes please.", "No thanks."); - player.dialogueAction = 174; - break; - - case 1365: - sendPlayerChat1("No thanks I would like to stay with my task."); - player.nextChat = 0; - break; - - case 1366: - sendPlayerChat1("Yes please I would like an easier task."); - player.nextChat = 1367; - break; - - case 1367: - player.getSlayer().generateTask(); - break; - - case 1368: - sendNpcChat2("You have been assigned " + player.taskAmount + " " - + player.getSlayer().getTaskName(player.slayerTask) + ",", - "Good luck " + player.playerName + ".", player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 0; - break; - - case 1369: - sendNpcChat2("Hello, " + player.playerName - + " would you like to change your appearance?", "for 3k?", - player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 1370; - break; - - case 1370: - sendOption2("Yes please.", "No thanks, I'm not interested."); - player.dialogueAction = 176; - break; - - case 1371: - sendPlayerChat1("No thanks, I'm not interested."); - player.nextChat = 0; - break; - - case 1372: - if (player.getItemAssistant().playerHasItem(995, 3000)) { - sendPlayerChat1("Yes please."); - player.getPlayerAssistant().showInterface(3559); - player.canChangeAppearance = true; - player.getItemAssistant().deleteItem(995, 3000); - player.nextChat = 0; - } else { - sendNpcChat1("You don't have enough gold to do that.", - player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 0; - } - break; - - case 1373: - sendNpcChat2("Hello " + player.playerName + ".", - "Are you interested in buying anything?", - player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 1374; - break; - - case 1374: - sendOption2("Yes please.", "No thanks."); - player.dialogueAction = 177; - break; - - case 1375: - sendPlayerChat1("No thanks."); - player.nextChat = 0; - break; - - case 1376: - sendPlayerChat1("Yes please."); - player.nextChat = 1377; - break; - - case 1377: - if (player.npcType == 537) { - player.getShopAssistant().openShop(124); - } else if (player.npcType == 536) { - player.getShopAssistant().openShop(125); - } - RandomEventHandler.addRandom(player); - player.nextChat = 0; - break; - - case 1378: - sendNpcChat2("Hello " + player.playerName + ".", - "Are you interested in buying a candle for 1k?", - player.talkingNpc, "Candle Seller"); - player.nextChat = 1379; - break; - - case 1379: - sendOption2("Yes please.", "No thank you."); - player.dialogueAction = 179; - break; - - case 1380: - if (player.getItemAssistant().playerHasItem(995, 1000)) { - sendPlayerChat1("Yes please."); - player.getItemAssistant().deleteItem(995, 1000); - player.nextChat = 0; - } else { - sendNpcChat1("You don't have enough coins to buy a candle.", - player.talkingNpc, "Candle Seller"); - player.nextChat = 0; - } - break; - - case 1381: - sendPlayerChat1("No thank you."); - player.nextChat = 0; - break; - - case 2995: - player.canWalkTutorial = false; - sendStatement2( - "Before you start if you would like to skip Tutorial Island,", - "now is your chance. If you skip you will be brought to mainland."); - player.nextChat = 2996; - break; - - case 2996: - sendStatement2( - "If you don't want to skip Tutorial Island you can stay here.", - "Would you like to skip Tutorial Island, or stay here?"); - player.nextChat = 2997; - break; - - case 2997: - sendOption2( - "I would like to skip Tutorial Island and go to Mainland.", - "I would like to stay here and complete Tutorial island."); - player.dialogueAction = 151; - break; - - case 2998: - sendPlayerChat1("Yes I would like to skip Tutorial Island."); - player.nextChat = 3115; - break; - - case 2999: - if (!player.getItemAssistant().playerHasItem(1549) && player.vampSlayer == 3) { - player.getItemAssistant().addOrDropItem(1549, 1); - sendPlayerChat1("Thank you, I will be more careful next time."); - player.nextChat = 0; - } - break; - - case 3000: // first part. Entering the tutorial island - player.getActionSender().chatbox(6180); // displays - // client.getPacketDispatcher().chatbox - // client.getPlayerAssistant().tutorialIslandInterface(0, 0); // - // progress bar + tutorial int - player.getActionSender().createArrow(1, 1); - chatboxText( - player, - "To start the tutorial use your left mouse button to click on the", - "" + Constants.SERVER_NAME - + " in this room. He is indicated by a flashing", - "yellow arrow above his head. If you can't see him, use your", - "keyboard's arrow keys to rotate the view.", - "@blu@Getting started"); - player.getActionSender().chatbox(6179); // displays - // client.getPacketDispatcher().chatbox - player.tutorialProgress = 0; - player.canWalkTutorial = true; - player.nextChat = 0; - break; - /* - * RS guide section - */ - case 3001: // RS GUIDE - sendNpcChat2( - "Greetings! I see you are a new arrival to the land. My", - "job is to welcome all new visitors. So welcome!", - player.talkingNpc, "Runescape Guide"); - player.nextChat = 3002; - break; - case 3002: // 2 - sendNpcChat2("You have already learned the first thing needed to", - "succeed in this world: talking to other people!", - player.talkingNpc, "Runescape Guide"); - player.nextChat = 3003; - break; - - case 3003: // 3 - sendNpcChat3( - "You will find many inhabitants of this world have useful", - "things to say to you. By clicking on them with your", - "mouse you can talk to them.", player.talkingNpc, - "Runescape Guide"); - player.nextChat = 3004; - break; - case 3004: - sendNpcChat4( - "I would also suggest reading through some of the", - "supporting information on the website. There you can", - "find the Knowledge Base, which contains all the", - "additional information you're ever likely to need. It also", - player.talkingNpc, "Runescape Guide"); - player.nextChat = 3005; - break; - case 3005: - sendNpcChat2("contains maps and helpful tips to help you on your", - "journey.", player.talkingNpc, "Runescape Guide"); - player.nextChat = 3006; - break; - - case 3006:// show tab wrentch - clearChatBoxText(player); // call this every time there is new - // client.getPacketDispatcher().chatboxtext - // coming up - sendNpcChat2( - "You will notice a flashing icon of a wrench, please click", - "on this to continue the tutorial.", player.talkingNpc, - "Runescape Guide"); - player.getActionSender().setSidebarInterface(11, 904); // wrench - // tab - player.getActionSender().flashSideBarIcon(-11); - player.nextChat = 3007; - break; - - case 3007: // Player controls - player.getPlayerAssistant().removeAllWindows(); - chatboxText( - player, - "Please click on the flashing wrench icon found at the bottom", - "right of your screen. This will display your player controls.", - "", "", "Player controls"); - player.nextChat = 0; - break; - - case 3008: // Glad your making progress - sendNpcChat1("I'm glad you're making progress!", player.talkingNpc, - "Runescape Guide"); - player.nextChat = 3009; - break; - - case 3009: - sendNpcChat2("To continue the tutorial go through that door over", - "there and speak to your first instructor!", - player.talkingNpc, "Runescape Guide"); - player.nextChat = 3010; - break; - case 3010: - player.tutorialProgress = 2; - player.getActionSender().chatbox(6180); - player.getPlayerAssistant().removeAllWindows(); - chatboxText( - player, - "You can interact with many items of scenery by simply clicking", - "on them. Right clicking will also give more options. Feel free to", - "try it with the things in this room, then click on the door", - "indicated with the yellow arrow to go through to the next instructor.", - "Interacting with scenery"); - player.getActionSender().chatbox(6179); - player.getActionSender().createArrow(3098, 3107, player.getH(), - 2); - player.nextChat = 0; - break; - - case 3011: // door handling - player.getPlayerAssistant().removeAllWindows(); - chatboxText( - player, - "Follow the path to find the next instructor. Clicking on the", - "ground will walk you to that point. Talk to the Survival Expert by", - "the pond to the continue the tutorial. Remember you can rotate", - "the view by pressing the arrow keys.", "Moving around"); - player.getActionSender().createArrow(1, 2); - // client.getPacketDispatcher().tutorialIslandInterface(5, 2); - // // progress bar + tutorial int - player.nextChat = 0; - break; - // end end end end end - - /* - * Survival Expert. Second part. - */ - case 3012: // Survival Expert - sendNpcChat4( - "Hello there, newcomer. My name is Brynna. My job is", - "to teach you a few survival tips and tricks. First off", - "we're going to start with the most basic survival skill of", - "all: making a fire.", player.talkingNpc, "Survival Expert"); - player.nextChat = 3013; - break; - - case 3013: // giving bronze and tinder - sendItemChat2(player, "", - "The Survival Guide gives you a @blu@tinderbox @bla@and a", - "@blu@bronze axe!", 590, 150); - player.getItemAssistant().addOrDropItem(590, 1); - player.getItemAssistant().addOrDropItem(1351, 1); - player.nextChat = 0; - chatboxText( - player, - "Click on the flashing backpack icons to the right hand side of", - "the main window to view your inventory. Your inventory is a list", - "of everything you have on your backpack.", "", - "Viewing the items that you were given"); - player.getActionSender().setSidebarInterface(3, 3213);// sends - // interface - player.getActionSender().flashSideBarIcon(-3); // flashes - // inventory - player.tutorialProgress = 3; - break; - case 3014: // finished cutting tree - sendItemChat1(player, "", "You got some logs", 1511, 150); - PlayerAssistant.removeHintIcon(player); - player.nextChat = 3015; - break; - case 3015: // firemaking time - player.getPlayerAssistant().removeAllWindows(); - chatboxText( - player, - "Well done! You managed to cut some logs from the tree! Next,", - "use the tinderbox in your inventory to light the logs.", - "First click on the tinderbox to use it.", - "Then click on the logs in your inventory to light them.", - "Making a fire"); - // client.getPacketDispatcher().createArrow(1, 2); // sends to - // Survival Expert - player.tutorialProgress = 4; - break; - - case 3016: // firemaking done skill tab flashing now. - // client.getPlayerAssistant().removeAllWindows(); - chatboxText( - player, - "Click on the flashing bar graph icon near the inventory button", - "to see your skill stats.", "", "", - "You gained some experience."); - player.getActionSender().flashSideBarIcon(-1); // flashes - // skill - player.getActionSender().setSidebarInterface(1, 3917); // sets - // the - // skill - // tab - player.nextChat = 3017; - break; - - case 3017: // survival expert part 2 - sendNpcChat3("Well done! Next we need to get some food in our", - "bellies. We'll need something to cook. There are shrimp", - "in the pond there so let's catch and cook some.", - player.talkingNpc, "Survival Expert"); - player.nextChat = 3018; - - break; - - case 3018: - sendItemChat1(player, "", - "The Survival Guide gives you a @blu@net!", 303, 150); - player.getItemAssistant().addOrDropItem(303, 1); - player.nextChat = 0; - chatboxText( - player, - "Click on the sparkling fishing spot indicated by the flashing", - "arrow. Remember, you can check your inventory by clicking the", - "backpack icon.", "", "Catch some Shrimp"); - player.getActionSender().createArrow(3101, 3092, player.getH(), - 2); - player.tutorialProgress = 6; - break; - - case 3019: // Cooking the shrimp - player.getActionSender().chatbox(6180); - chatboxText( - player, - "Now you have caught some shrimp let's cook it. First light a", - "fire, chop down a tree and then use the tinderbox on the logs.", - "If you've lost your axe or tinderbox, Brynna will give you", - "another.", "Cooking your shrimp."); - player.getActionSender().chatbox(6179); - break; - // END - - /* - * Finding next tutor FAT BITCH - */ - case 3020: // tutorial PROGRESS = 7 - // client.getPacketDispatcher().tutorialIslandInterface(15,4); - // // 15 percent - player.getActionSender().chatbox(6180); - chatboxText( - player, - "Talk to the chef indicated. He will teach you the more advanced", - "aspects of Cooking such as combining ingredients. He will also", - "teach you about your music player menu as well.", "", - "Find your next instructor"); - player.getActionSender().chatbox(6179); - player.getActionSender().createArrow(3078, 3084, player.getH(), - 2); - break; - - case 3021: // start of dialogue. - sendNpcChat3( - "Ah! Welcome newcomer. I am the Master Chef Leo. It", - "is here I will teach you how to cook food truly fit for a", - "king.", player.talkingNpc, "Master Chef"); - player.nextChat = 3022; - break; - - case 3022: - sendPlayerChat2( - "I already know how to cook. Brynna taught me just", "now."); - player.nextChat = 3023; - break; - case 3023: - sendNpcChat3("Hahahahahaha! You call THAT cooking? Some shrimp", - "on an open log fire? Oh no, no, no. I am going to", - "teach you the fine art of cooking bread.", - player.talkingNpc, "Master Chef"); - player.nextChat = 3024; - break; - case 3024: - sendNpcChat2("And no fine meal is complete without good music, so", - "we'll cover that while you're here too.", - player.talkingNpc, "Master Chef"); - player.nextChat = 3025; - break; - - case 3025: // he gives u bucket of water etc TTUOTRIAL PROG 8 - sendItemChat2( - player, - "", - "The Cooking Guide gives you a @blu@bucket of water@bla@ and a", - "@blu@pot of flour!", 1933, 150); - player.getItemAssistant().addOrDropItem(1933, 1); - player.getItemAssistant().addOrDropItem(1929, 1); - player.nextChat = 0; - chatboxText( - player, - "This is the base for many of the meals. To make dough we must", - "mix flour and water. First right click the bucket of water and", - "select use, then left click on the pot of flour.", "", - "Making dough"); - PlayerAssistant.removeHintIcon(player); - player.tutorialProgress = 8; - - break; - case 3026: // cooking dough - player.getActionSender().chatbox(6180); - chatboxText( - player, - "Now you have made dough, you can cook it. To cook the dough", - "use it with the range shown by the arrow. If you lose your", - "dough, talk to Leo - he will give you more ingredients.", - "", "Cooking dough"); - player.getActionSender().chatbox(6179); - player.getActionSender().createArrow(3075, 3081, player.getH(), - 2); - - player.nextChat = 0; - break; - - case 3037: // new tutorial prog - player.getActionSender().chatbox(6180); - chatboxText( - player, - "Well done! Your first loaf of bread. As you gain experience in", - "Cooking you will be able to make other things like pies, cakes", - "and even kebabs. Now you've got the hang of cooking, let's", - "move on. Click on the flashing icon in the bottom right.", - "Cooking dough"); - player.getActionSender().chatbox(6179); - PlayerAssistant.removeHintIcon(player); - // client.getPacketDispatcher().tutorialIslandInterface(20, 5); - player.getActionSender().setSidebarInterface(13, 962); // sets - // music - player.getActionSender().flashSideBarIcon(-13); - player.tutorialProgress = 9; - player.nextChat = 0; - break; - - case 3038: // Emotes - player.getActionSender().chatbox(6180); - chatboxText( - player, - "", - "Now, how about showing some feelings? You will see a flashing", - "icon in the shape of a person. Click on that to access your", - "emotes.", "Emotes"); - player.getActionSender().chatbox(6179); - PlayerAssistant.removeHintIcon(player); - // client.getPacketDispatcher().tutorialIslandInterface(25, 6); - // // 25 percent now - player.getActionSender().setSidebarInterface(12, 147); // run - // tab - player.getActionSender().flashSideBarIcon(-12); - player.nextChat = 0; - break; - case 3039: // running - player.tutorialProgress = 11; - player.getActionSender().chatbox(6180); - chatboxText(player, - "It's only a short distance to the next guide.", - "Why not try running there? Start by opening the player", - "settings, that's the flashing icon of a wrench.", "", - "Running"); - player.getActionSender().chatbox(6179); - player.getActionSender().flashSideBarIcon(-12); - player.getActionSender().createArrow(3086, 3126, player.getH(), - 2); - player.nextChat = 0; - break; - case 3040: - player.getActionSender().chatbox(6180); - chatboxText( - player, - "In this menu you will see many options. At the bottom in the", - "middle is a button with the symbol of a running shoe. You can", - "turn this button on or off to select run or walk. Give it a go,", - "click on the run button now.", "Running"); - player.getActionSender().chatbox(6179); - player.nextChat = 0; - break; - case 3041: // clicked on run - player.getActionSender().chatbox(6180); - chatboxText( - player, - "Now that you have the run button turned on, follow the path", - "until you come to the end. You may notice that the numbers on", - "the button goes down. This is your run energy. If your run", - "energy reaches zero, you'll stop running.", - "Run to the next guide"); - player.getActionSender().chatbox(6179); - player.getActionSender().createArrow(3086, 3125, player.getH(), - 2); - - player.nextChat = 0; - break; - - /** - * Quest Guide - */ - case 3042: // entering the quest GUIDE - player.getActionSender().createArrow(1, 4); // sends to - // quest - // guide - // client.getPacketDispatcher().tutorialIslandInterface(35, 8);//30 or 35 percent - player.getActionSender().chatbox(6180); - chatboxText(player, "Talk with the Quest Guide.", "", - "He will tell you all about quests.", "", ""); - player.getActionSender().chatbox(6179); - player.tutorialProgress = 12; - PassDoor.passThroughDoor(player, 3019, 2, 3, 0, 0, -1, 0); - player.nextChat = 0; - break; - - case 3043: // quest guide dialogue START - sendNpcChat2( - "Ah. Welcome, adventurer. I'm here to tell you all about", - "quests. Let's start by opening the quest side panel.", - player.talkingNpc, "Quest Guide"); - player.nextChat = 3044; - break; - - case 3044: // Send quest tab - player.getPlayerAssistant().removeAllWindows(); - player.getActionSender().chatbox(6180); - chatboxText(player, "Open the Quest Journal.", "", - "Click on the flashing icon next to your inventory.", "", - ""); - player.getActionSender().chatbox(6179); - player.getActionSender().setSidebarInterface(2, 638); // quest - player.getActionSender().flashSideBarIcon(-2); - player.nextChat = 0; - break; - - case 3045: // quest guide 2 prog 13 - sendNpcChat3( - "Now you have the journal open. I'll tell you a bit about", - "it. At the moment all the quests shown in red which", - "means you have not started them yet.", player.talkingNpc, - "Quest Guide"); - player.nextChat = 3046; - - break; - - case 3046: - sendNpcChat4( - "When you start a quest it will change colour to yellow", - "and to green when you've finished. This is so you can", - "easily see what's complete, what's started, and what's left", - "to begin.", player.talkingNpc, "Quest Guide"); - player.nextChat = 3047; - break; - - case 3047: - sendNpcChat3( - "The start of quests are easy to find. Look out for the", - "star icons on the minimap, just like the one you should", - "see marking my house.", player.talkingNpc, "Quest Guide"); - player.nextChat = 3048; - break; - - case 3048: - sendNpcChat4( - "The quests themselves can vary greatly from collecting", - "beads to hunting down dragons. Generally quests are", - "started by talking to a non-player character like me,", - "and will involve a series of tasks.", player.talkingNpc, - "Quest Guide"); - player.nextChat = 3049; - break; - - case 3049: // last - sendNpcChat4( - "There's not a lot more I can tell you about questing.", - "You have to experience the thrill of it yourself to fully", - "understand. You may find some adventure in the caves", - "under my house.", player.talkingNpc, "Quest Guide"); - player.nextChat = 3050; - break; - - case 3050: // moving on. Cave time biaches - player.getPlayerAssistant().removeAllWindows(); - player.getActionSender().chatbox(6180); - chatboxText( - player, - "", - "It's time to enter some caves. Click on the ladder to go down to", - "the next area.", "", "Moving on"); - player.getActionSender().chatbox(6179); - player.getActionSender().createArrow(3088, 3119, player.getH(), - 2); - player.nextChat = 0; - player.tutorialProgress = 14; - break; - // end - - /* - * Start of Mining/Smithing - */ - case 3051: - player.getPlayerAssistant().removeAllWindows(); - player.getActionSender().chatbox(6180); - chatboxText( - player, - "Next let's get you a weapon or more to the point, you can", - "make your first weapon yourself. Don't panic, the Mining", - "Instructor will help you. Talk to him and he'll tell you all about it.", - "", "Mining and Smithing"); - player.getActionSender().chatbox(6179); - // client.getPacketDispatcher().tutorialIslandInterface(40,9); - player.getActionSender().createArrow(1, 5); - player.nextChat = 0; - break; - - case 3052:// mining tutor start - sendNpcChat4("Hi there. You must be new around here. So what do I", - "call you? Newcomer seems so impersonal and if we're", - "going to be working together, I'd rather call you by", - "name.", player.talkingNpc, "Mining Instructor"); - player.nextChat = 3053; - break; - - case 3053:// mining tutor start - sendPlayerChat1("You can call me " - + Misc.capitalize(player.playerName) + "."); - player.nextChat = 3054; - break; - - case 3054:// mining tutor start - sendNpcChat2("Ok then, " + Misc.capitalize(player.playerName) + "." - + " My name is Dezzick and I'm a", - "miner by trade. Let's prospect some of those rocks.", - player.talkingNpc, "Mining Instructor"); - player.nextChat = 3055; - break; - - case 3055: // prospecting - player.getPlayerAssistant().removeAllWindows(); - player.getActionSender().chatbox(6180); - chatboxText( - player, - "To prospect a mineable rock, just right click it and select the", - "'prospect rock' option. This will tell you the type of ore you can", - "mine from it. Try it now on one of the rocks indicated.", - "", "Prospecting"); - player.getActionSender().chatbox(6179); - // client.getPacketDispatcher().tutorialIslandInterface(40,9); - player.getActionSender().createArrow(3076, 9504, player.getH(), - 2); - player.nextChat = 0; - player.tutorialProgress = 15; - break; - case 3056: // done prospecting - sendPlayerChat2( - "I prospected both types of rocks! One set contains tin", - "and the other has copper ore inside."); - player.nextChat = 3057; - break; - - case 3057: - sendNpcChat2( - "Absolutely right, " + Misc.capitalize(player.playerName) - + "." + " These two ore types", - "can be smelted together to make bronze.", - player.talkingNpc, "Mining Instructor"); - player.nextChat = 3058; - break; - - case 3058: - sendNpcChat3( - "So now you know what ore is in the rocks over there,", - "why don't you have a go at mining some tin and", - "copper? here, you'll need this to start with.", - player.talkingNpc, "Mining Instructor"); - player.nextChat = 3060; - break; - case 3060: - sendItemChat1(player, "", - "Dezzick gives you a @blu@bronze pickaxe!", 1265, 300); - player.getItemAssistant().addOrDropItem(1265, 1); - player.nextChat = 0; - chatboxText( - player, - "It's quite simple really. All you need to do is right click on the", - "rock and select 'mine'. You can only mine when you have a", - "pickaxe. So give a try: first mine one tin ore.", "", - "Mining"); - player.getActionSender().createArrow(3076, 9504, player.getH(), - 2); // sends - // hint - // to - // ore - player.tutorialProgress = 17; - break; - - case 3061: // furnace time - player.tutorialProgress = 19; - player.nextChat = 0; - chatboxText( - player, - "You should now have both some copper and tin ore. So let's", - "smelt them to make a bronze bar. To do this, right click on", - "either tin or copper ore and select use, then left click on the", - "furnace. Try it now.", "Smelting"); - break; - case 3062: // smelting - player.tutorialProgress = 20; - player.nextChat = 0; - player.getActionSender().chatbox(6180); - chatboxText(player, "", "Speak to the Mining Instructor and he'll show you how to make", "it into a weapon.", "", "You've made a bronze bar!"); - player.getActionSender().chatbox(6179); - player.getActionSender().createArrow(1, 5); - break; - - case 3063: - player.nextChat = 3064; - sendPlayerChat1("How do I make a weapon out of this?"); - break; - - case 3064: - sendNpcChat2("Okay, I'll show you how to make a dagger out of it.", - "You'll be needing this...", player.talkingNpc, - "Mining Instructor"); - player.nextChat = 3065; - break; - - case 3065: // giving you the hammer - sendItemChat1(player, "", "Dezzick gives you a @blu@hammer!", 2347, 300); - player.getItemAssistant().addOrDropItem(2347, 1); - player.nextChat = 0; - chatboxText(player, "To smith you'll need a hammer - like the one you were given by", "Dezzick - access to an anvil like the one with the arrow over it", "and enough metal bars to make what you are trying to smith.", "", "Smithing a dagger"); - player.getActionSender().createArrow(3082, 9499, player.getH(), 2); // send - // hint - // to - // furnace - break; - - case 3066: - chatboxText(player, "So let's move on. Go through the gates shown by the arrow.", "Remember you may need to move the camera to see your,", "surroundings. Speak to the guide for a recap at any time.", "", "You've finished in this area"); - player.tutorialProgress = 21; - player.getActionSender().createArrow(3094, 9503, player.getH(), 2); // send - // hint - // to - // furnace - break; - - // end of mining/smithing - - /* - * start of melee - */ - case 3067:// Melee instructor c.tutorialProgress = 22 - sendPlayerChat1("Hi! My name is " - + Misc.capitalize(player.playerName) + "."); - player.nextChat = 3068; - break; - - case 3068: - sendNpcChat2("Do I look like I care? To me you're just another", - "newcomer who thinks they're ready to fight.", - player.talkingNpc, "Combat Instructor"); - player.nextChat = 3069; - break; - - case 3069: - sendNpcChat1("I am Vannaka, the greatest swordsman alive.", - player.talkingNpc, "Combat Instructor"); - player.nextChat = 3070; - break; - - case 3070: - sendNpcChat1("Let's get started by teaching you to wield a weapon", - player.talkingNpc, "Combat Instructor"); - player.nextChat = 3071; - break; - - case 3071: // send wear interface - player.getPlayerAssistant().removeAllWindows(); - player.getActionSender().chatbox(6180); - chatboxText( - player, - "", - "You now have access to a new interface. Click on the flashing", - "icon of a man the one to the right of your backpack icon.", - "", "Wielding weapons"); - player.getActionSender().chatbox(6179); - player.getActionSender().setSidebarInterface(4, 1644);// worn - player.getActionSender().flashSideBarIcon(-4); - player.nextChat = 0; - break; - - case 3072: - sendNpcChat2( - "Very good, but that little butter knife isn't going to", - "protect you much. Here, take these.", player.talkingNpc, - "Combat Instructor"); - player.nextChat = 3073; - break; - - case 3073: - sendItemChat2( - player, - "",// Gives me sword and shield - "The Combat Guide gives you a @blu@bronze sword@bla@ and a", - "@blu@wooden shield!", 1171, 300); - player.getItemAssistant().addOrDropItem(1171, 1); - player.getItemAssistant().addOrDropItem(1277, 1); - player.nextChat = 0; - chatboxText( - player, - "In your worn inventory panel, right click on the dagger and", - "select the remove option from the drop down list. After you've", - "unequipped the dagger, wield the sword and shield. As you", - "pass the mouse over an item you will see its name.", - "Unequipping items"); - PlayerAssistant.removeHintIcon(player); - break; - - case 3074: - sendPlayerChat1("I did it! I killed a giant rat!"); - player.nextChat = 3075; - break; - - case 3075: - sendNpcChat3("I saw, " + Misc.capitalize(player.playerName) + "." - + " You seem better at this than I", - "thought. Now that you have grasped basic swordplay", - "let's move on.", player.talkingNpc, "Combat Instructor"); - - player.nextChat = 3076; - break; - - case 3076: - sendNpcChat4( - "Let's try some ranged attacking, with this you can kill", - "foes from a distance. Also, foes unable to reach you are", - "as good as dead. You'll be able to attack the rats", - "without entering the pit.", player.talkingNpc, - "Combat Instructor"); - - player.nextChat = 3077; - break; - - case 3077: // gives me bow and arrow - sendItemChat2( - player, - "", - "The Combat Guide gives you some @blu@bronze arrows@bla@ and", - "a @blu@shortbow!", 841, 300); - player.getItemAssistant().addOrDropItem(841, 1); - player.getItemAssistant().addOrDropItem(882, 50); - player.nextChat = 0; - chatboxText( - player, - "Now you have a bow and some arrows. Before you can use", - "them you'll need to equip them. Remember: to attack, right", - "click on the monster and select attack.", "", - "Rat ranging"); - player.ratdied2 = true; - player.getActionSender().drawHeadicon(1, 13, 0, 0); // draws - // headicon - // to - // rat - break; - /* - * FINISH . Last parts, Finacial,prayer,magic - */ - - case 3078: // fresh - player.getActionSender().chatbox(6180); - chatboxText( - player, - "Follow the path and you will come to the front of the building.", - "This is the Bank of " + Constants.SERVER_NAME - + ", where you can store all your", - "most valued items. To open your bank box just right click on an", - "open booth indicated and select 'use'.", "Banking"); - player.getActionSender().chatbox(6179); - player.getActionSender().createArrow(3122, 3124, player.getH(), - 2); - break; - - case 3079: // fiancial dude start - sendPlayerChat1("Hello. Who are you?"); - player.nextChat = 3080; - - break; - - case 3080: - sendNpcChat2( - "I'm the Financial Advisor. I'm here to tell people how to", - "make money.", player.talkingNpc, "Financial Advisor"); - player.nextChat = 3081; - break; - - case 3081: - sendPlayerChat1("Okay. How can I make money then?"); - player.nextChat = 3082; - break; - - case 3082: - sendNpcChat1("How you can make money? Quite.", player.talkingNpc, - "Financial Advisor"); - player.nextChat = 3083; - break; - - case 3083: - sendNpcChat3( - "Well there are three basic ways of making money here:", - "combat, quests, and trading. I will talk you through each", - "of them very quickly.", player.talkingNpc, - "Financial Advisor"); - player.nextChat = 3084; - break; - - case 3084: - sendNpcChat3( - "Let's start with combat as it is probably still fresh in", - "your mind. Many enemies, both human and monster,", - "will drop items when they die.", player.talkingNpc, - "Financial Advisor"); - player.nextChat = 3085; - break; - - case 3085: - sendNpcChat3( - "Now, the next way to earn money quickly is by quests.", - "Many people on " + Constants.SERVER_NAME - + " have things they need", - "doing, which they will reward you for.", - player.talkingNpc, "Financial Advisor"); - player.nextChat = 3086; - break; - - case 3086: - sendNpcChat3( - "By getting a high level in skills such as Cooking, Mining,", - "Smithing or Fishing, you can create or catch your own", - "items and sell them for pure profit.", player.talkingNpc, - "Financial Advisor"); - player.nextChat = 3087; - break; - - case 3087: - sendNpcChat2( - "Well that about covers it. Come back if you'd like to go", - "over this again.", player.talkingNpc, "Financial Advisor"); - player.nextChat = 3088; - break; - - case 3088: // end - player.getPlayerAssistant().removeAllWindows(); - player.tutorialProgress = 28; - player.getActionSender().chatbox(6180); - chatboxText(player, "", "Continue through the next door.", "", "", - ""); - player.getActionSender().chatbox(6179); - player.getActionSender().createArrow(3129, 3124, player.getH(), - 2); - player.getActionSender().createArrow(1, 8); - player.nextChat = 0; - break; - // end of FINANCIAL - - /* - * Section Prayer - */ - - case 3089: // start of dialogue - sendPlayerChat1("Good day, brother, my name's " - + Misc.capitalize(player.playerName) + "."); - player.nextChat = 3090; - break; - - case 3090: - sendNpcChat2("Hello, " + Misc.capitalize(player.playerName) + "." - + " I'm Brother Brace. I'm here to", - "tell you all about Prayer.", player.talkingNpc, - "Brother Brace"); - player.nextChat = 3091; - - break; - case 3091: - player.getPlayerAssistant().removeAllWindows(); - player.getActionSender().chatbox(6180); - chatboxText(player, "", - "Click on the flashing icon to open the Prayer menu.", "", - "", "Your Prayer menu"); - player.getActionSender().chatbox(6179); - player.getActionSender().setSidebarInterface(5, 5608); - player.getActionSender().flashSideBarIcon(-5); - player.tutorialProgress = 29; - player.nextChat = 0; - break; - - case 3092: - sendNpcChat3("This is your Prayer list. Prayers can help a lot in", - "combat. Click on the prayer you wish to use to activate", - "it and click it again to deactivate it.", - player.talkingNpc, "Brother Brace"); - player.nextChat = 3093; - - break; - case 3093: - sendNpcChat3("Active prayers will drain your Prayer Points which", - "you can recharge by finding an altar or other holy spot", - "and praying there.", player.talkingNpc, "Brother Brace"); - player.nextChat = 3094; - break; - - case 3094: - sendNpcChat3("As you noticed, most enemies will drop bones when", - "defeated. Burying bones by clicking them in your", - "inventory will gain you Prayer experience.", - player.talkingNpc, "Brother Brace"); - player.nextChat = 3095; - break; - - case 3095: - sendNpcChat2( - "I'm also the community officer 'round here, so it's my", - "job to tell you about your friends and ignore list.", - player.talkingNpc, "Brother Brace"); - player.nextChat = 3096; - break; - - case 3096: - player.getPlayerAssistant().removeAllWindows(); - player.getActionSender().chatbox(6180); - chatboxText( - player, - "You should now see another new icon. Click on the flashing", - "icon to open your friends list.", "", "", "Friends list"); - player.getActionSender().chatbox(6179); - player.getActionSender().setSidebarInterface(8, 5065); - player.getActionSender().flashSideBarIcon(-8); - player.tutorialProgress = 30; - player.nextChat = 0; - break; - - case 3097: // long dialogue START - // client.getPacketDispatcher().tutorialIslandInterface(75, 16); - sendNpcChat4("Good. Now you have both menus open, I'll tell you a", - "little about each. You can add people to either list by", - "clicking the add button then typing their name into the", - "box that appears.", player.talkingNpc, "Brother Brace"); - player.nextChat = 3098; - break; - - case 3098: - sendNpcChat4( - "You remove people from the lists in the same way. If", - "you add someone to your ignore list they will not be", - "able to talk to you or send any form of message to", - "you.", player.talkingNpc, "Brother Brace"); - player.nextChat = 3099; - - break; - case 3099: - sendNpcChat4( - "Your friends list shows the online status of your", - "friends. Friends in the red are offline, friends in green are", - "online and on the same server and friends in yellow", - "are online but on a different server.", player.talkingNpc, - "Brother Brace"); - player.nextChat = 3100; - break; - - case 3100: - sendPlayerChat1("Are there rules on in-game behaviour?"); - player.nextChat = 3101; - break; - case 3101: - sendNpcChat3("Yes, you should read the rules of conduct on the", - "website to make sure you do nothing to get yourself", - "banned.", player.talkingNpc, "Brother Brace"); - player.nextChat = 3102; - break; - case 3102: - sendNpcChat3("But in general, always try to be courteous to other", - "players - remember the people in the game are real", - "people with real feelings.", player.talkingNpc, - "Brother Brace"); - player.nextChat = 3103; - break; - case 3103: - sendNpcChat2( - "If you go 'round being abusive or causing trouble your", - "character could end up being the one in trouble.", - player.talkingNpc, "Brother Brace"); - player.nextChat = 3104; - break; - case 3104: // last one - sendPlayerChat1("Okay thanks. I'll bear that in mind."); - player.getActionSender().chatbox(6180); - chatboxText( - player, - "You're almost finished on tutorial island. Pass through the", - "door to find the path leading to your final instructor.", - "", "", "Your final instructor!"); - PlayerAssistant.removeHintIcon(player); - player.tutorialProgress = 32; - player.getActionSender().chatbox(6179); - player.getActionSender().createArrow(1, 9); - player.nextChat = 0; - break; - // END BROTHER BRACE PRAYER - - /* - * Start magic instructor - */ - - case 3105: - sendPlayerChat1("Hello."); - player.nextChat = 3106; - break; - - case 3106: - sendNpcChat3("Good day, newcomer. My name is Terrova. I'm here", - "to tell you about Magic. Let's start by opening your", - "spell list.", player.talkingNpc, "Magic Instructor"); - player.nextChat = 3107; - break; - - case 3107: - // sendItemChat1(client, "", "", 0, 50); - player.getPlayerAssistant().removeAllWindows(); - player.getActionSender().chatbox(6180); - chatboxText( - player, - "", - "Open up the Magic menu by clicking on the flashing icon next", - "to the Prayer button you just learned about.", "", - "Open up your final menu"); - player.getActionSender().chatbox(6179); - player.nextChat = 0; - player.getActionSender().setSidebarInterface(6, 1151); // modern - player.getActionSender().flashSideBarIcon(-6); - break; - - case 3108: - sendNpcChat3( - "Good. This is a list of your spells. Currently you can", - "only cast one offensive spell called Wind Strike. Let's", - "try it out on one of those chickens.", player.talkingNpc, - "Magic Instructor"); - player.nextChat = 3109; - break; - - case 3109: - sendItemChat1( - player, - "", - "Terrova gives you five @blu@air runes@bla@ and @blu@five mind runes!", - 556, 300); - player.getItemAssistant().addOrDropItem(558, 5); - player.getItemAssistant().addOrDropItem(556, 5); - player.nextChat = 0; - chatboxText( - player, - "Now you have runes you should see the Wind Strike icon at the", - "top left corner of the Magic interface - second in from the", - "left. Walk over to the caged chickens, click the Wind Strike icon", - "and then select one of the chicken to cast it on.", - "Cast Wind Strke at a chicken"); - // sendStatement4("Now you have runes you should see the Wind Strike icon at the", - // "top left corner of the Magic interface - second in from the", - // "left. Walk over to the caged chickens, click the Wind Strike icon", - // "and then select one of the chicken to cast it on."); - player.getActionSender().drawHeadicon(1, 20, 0, 0); // draws - // headicon - // to - // chicken - break; - - case 3110: - sendNpcChat2("Well you're all finished here now. I'll give you a", - "reasonable number of runes when you leave.", - player.talkingNpc, "Magic Instructor"); - player.nextChat = 3111; - break; - - case 3111: - sendOption2("Mainland", "Stay here"); - player.dialogueAction = 3111; - player.nextChat = 0; - break; - - case 3112:// Mainland - player.tutorialProgress = 35; - sendNpcChat4( - "When you get to the mainland you will find yourself in", - "the town of Lumbridge. If you want some ideas on", - "where to go next talk to my friend the Lumbridge", - "Guide. You can't miss him; he's holding a big staff with", - player.talkingNpc, "Magic Instructor"); - player.nextChat = 3113; - break; - case 3113: - sendNpcChat4( - "a question mark on the end. He also has a white beard", - "and carries a rucksack full of scrolls. There are also", - "many tutors willing to teach you about the many skills", - "you could learn.", player.talkingNpc, "Magic Instructor"); - player.nextChat = 3114; - break; - - case 3114: - sendNpcChat3( - "If all else fails, visit the " + Constants.SERVER_NAME - + " website for a whole", - "chestload of information on quests, skills, and minigames", - "as well as a very good starter's guide.", - player.talkingNpc, "Magic Instructor"); - player.nextChat = 3115; - break; - - case 3115: - player.tutorialProgress = 36; - sendStatement4( - "Welcome to Lumbridge! To get more help, simply click on the", - "Lumbridge Guide or one of the Tutors - these can be found by", - "looking for the question mark icon on your mini-map. If you find", - "you are lost at any time, look for a signpost."); - player.nextChat = 3116; - player.canWalkTutorial = true; - break; - - case 3116: - player.getPlayerAssistant().showInterface(3559); - player.canChangeAppearance = true; - player.closeTutorialInterface = true; - player.nextChat = 0; - break; - - case 3117: - sendNpcChat1( - "You can't stay here you've completed the tutorial already.", - player.talkingNpc, "Magic Instructor"); - player.nextChat = 3112; - break; - - case 3118: - sendNpcChat2("Hello " + player.playerName + ".", - "Are you interested in buying any beer?", - player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 3119; - break; - - case 3119: - sendOption2("Yes please.", "No Thanks."); - player.dialogueAction = 152; - break; - - case 3120: - sendPlayerChat1("No thanks."); - player.nextChat = 0; - break; - - case 3121: - sendPlayerChat1("Yes please."); - player.nextChat = 3122; - break; - - case 3122: - sendOption4("Asgarnain Ale", "Wizard's Mind Bomb", "Dwarven Stout", - "Never Mind"); - player.dialogueAction = 153; - break; - - case 3123: - if (player.getItemAssistant().playerHasItem(995, 3)) { - sendPlayerChat1("Asgarnian Ale please."); - player.getItemAssistant().deleteItem(995, 3); - player.getItemAssistant().addOrDropItem(1905, 1); - player.nextChat = 0; - } else { - sendNpcChat1("You don't have enough coins to buy that.", - player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - } - break; - - case 3124: - sendPlayerChat1("Wizard's Mind Bomb please."); - player.getItemAssistant().deleteItem(995, 3); - player.getItemAssistant().addOrDropItem(1907, 1); - player.nextChat = 0; - break; - - case 3125: - sendPlayerChat1("Dwarven Stout please."); - player.getItemAssistant().deleteItem(995, 3); - player.getItemAssistant().addOrDropItem(1913, 1); - player.nextChat = 0; - break; - - case 3126: - sendPlayerChat1("Never mind."); - player.nextChat = 0; - break; - - /*case 3127: - sendNpcChat3("Im sorry...", "I can't seem to find your reward,", "Did you vote correctly?", 945, "" + Constants.SERVER_NAME + " Guide"); - client.nextChat = 0; - break; - - case 3128: - sendNpcChat2("Im sorry,", "An error occured, please try again later.", 945, "" + Constants.SERVER_NAME + " Guide"); - client.nextChat = 0; - break; - - case 3129: - sendNpcChat2("Thank you so much for voting!", "Enjoy your free experience lamp!", 945, "" + Constants.SERVER_NAME + " Guide"); - client.getItemAssistant().addOrDropItem(2528, 1); - VotingHandler.setAsReceived(client.playerName); - client.nextChat = 0; - break; - - case 3130: - int reward = 1000 + Misc.random(3000); - sendNpcChat2("Thank you so much for voting!", "Enjoy your " + reward + " coins!", 945, "" + Constants.SERVER_NAME + " Guide"); - client.getItemAssistant().addOrDropItem(995, reward); - VotingHandler.setAsReceived(client.playerName); - client.nextChat = 0; - break; - - case 3131: - sendNpcChat2("Thank you so much for voting!", "Enjoy your magical lamp that restores your run!", 945, "" + Constants.SERVER_NAME + " Guide"); - client.getItemAssistant().addOrDropItem(VotingRewards.ITEM, 1); - VotingHandler.setAsReceived(client.playerName); - client.nextChat = 0; - break; - - case 3132: - sendNpcChat2("We couldn't find your reward,", "Please report this with a screenshot of your chatbox!", 945, "" + Constants.SERVER_NAME + " Guide"); - client.nextChat = 0; - break;*/ - - case 3133: - sendNpcChat2( - "Thank you for rescuing me! It isn't very comfy in this", - "cell!", player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 3134; - break; - - case 3134: - sendOption2("So... do you know anywhere good to explore?", - "Do I get a reward?"); - player.dialogueAction = 154; - break; - - case 3135: - sendPlayerChat1("Do I get a reward? For freeing you and all..."); - player.nextChat = 3136; - break; - - case 3136: - sendNpcChat2( - "Well... not really... The Black Knights took all of my", - "stuff before throwing me in here to rot!", - player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 0; - break; - - case 3137: - sendPlayerChat1("So... do you know anywhere good to explore?"); - player.nextChat = 3138; - break; - - case 3138: - sendNpcChat3( - "Well, this dungeon was quite good to explore ...until I", - "got captured, anyway. I was given a key to an inner", - "part of this dungeon by a mysterious cloaked stranger!", - player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 3139; - break; - - case 3139: - sendNpcChat3("It's rather tough for me to get that far into the", - "dungeon however... I just keep getting captured! Would", - "you like to give it a go?", player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 3140; - break; - - case 3140: - sendOption2("Yes please!", "No, it's too dangerous for me."); - player.dialogueAction = 155; - break; - - case 3141: - sendPlayerChat1("No, it's too dangerous for me."); - player.nextChat = 0; - break; - - case 3142: - sendPlayerChat1("Yes please!"); - player.nextChat = 3143; - break; - - case 3143: - sendStatement("Velrak reaches somewhere mysterious and passes you a key."); - player.getItemAssistant().addOrDropItem(1590, 1); - player.nextChat = 0; - break; - - case 3144: - sendNpcChat1("Would you like me to teleport you to rune essence?", - player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 3145; - break; - - case 3145: - sendOption2("Yes please.", "No thanks."); - player.dialogueAction = 156; - break; - - case 3146: - sendPlayerChat1("No thanks."); - player.nextChat = 0; - break; - - case 3147: - sendPlayerChat1("Yes please."); - player.nextChat = 3148; - break; - - case 3148: - String type = player.playerMagicBook == 0 ? "modern" : "ancient"; - player.getPlayerAssistant().startTeleport(2911, 4832, 0, type); - break; - - case 3149: - sendNpcChat1("Welcome to the Wizards Guild.", player.talkingNpc, - "Wizard Distenor"); - player.nextChat = 0; - break; - - case 3150: - sendNpcChat1("Hello are you interested in buying anything?", - player.talkingNpc, "Bartender"); - player.nextChat = 3151; - break; - - case 3151: - sendOption2("Yes please.", "No thanks."); - player.dialogueAction = 157; - break; - - case 3152: - sendPlayerChat1("No thanks."); - player.nextChat = 0; - break; - - case 3153: - sendPlayerChat1("Yes please."); - player.nextChat = 3154; - break; - - case 3154: - sendNpcChat1("What would you like?", player.talkingNpc, "Bartender"); - player.nextChat = 3155; - break; - - case 3155: - sendOption2("Meat Pie", "Stew"); - player.dialogueAction = 158; - break; - - case 3156: - if (player.getItemAssistant().playerHasItem(995, 16)) { - sendPlayerChat1("Meat Pie please."); - player.getItemAssistant().deleteItem(995, 16); - player.getItemAssistant().addOrDropItem(2327, 1); - player.nextChat = 0; - } else { - sendNpcChat1("You need 16 coins to buy that.", - player.talkingNpc, "Bartender"); - player.nextChat = 0; - } - break; - - case 3157: - if (player.getItemAssistant().playerHasItem(995, 20)) { - sendPlayerChat1("Stew please."); - player.getItemAssistant().deleteItem(995, 20); - player.getItemAssistant().addOrDropItem(2003, 1); - player.nextChat = 0; - } else { - sendNpcChat1("You need 20 coins to buy that.", - player.talkingNpc, "Bartender"); - player.nextChat = 0; - } - break; - - case 3158: - sendNpcChat1("Hello, " + player.playerName + " what would you like to do?", player.talkingNpc, "Wyson the Gardener"); - player.nextChat = 3159; - break; - - case 3159: - sendOption3("Buy woad leaves.", "Exchange mole skins/claws for nests.", "Nothing."); - player.dialogueAction = 159; - break; - - case 3160: - sendPlayerChat1("I don't want to do anything."); - player.nextChat = 0; - break; - - case 3161: - sendPlayerChat1("I would like to buy woad leaves."); - player.nextChat = 3162; - break; - - case 3162: - sendNpcChat1("How much are you willing to pay for a woad leaf?", - player.talkingNpc, "Wyson the Gardener"); - player.nextChat = 3163; - break; - - case 3163: - sendOption4("5 coins", "10 coins", "15 coins", "20 coins"); - player.dialogueAction = 160; - break; - - case 3164: - sendNpcChat2("Don't be ridiculous offer me more", - "and I may sell you one!", player.talkingNpc, - "Wyson the Gardener"); - player.nextChat = 0; - break; - - case 3165: - if (player.getItemAssistant().playerHasItem(995, 15)) { - sendNpcChat1( - "That sounds like a fair offer, here's one woaf leaf.", - player.talkingNpc, "Wyson the Gardener"); - player.getItemAssistant().addOrDropItem(1793, 1); - player.getItemAssistant().deleteItem(995, 15); - player.nextChat = 0; - } else { - sendNpcChat1("You don't have enough coins to buy a woad leaf.", - player.talkingNpc, "Wyson the Gardener"); - } - break; - - case 3166: - if (player.getItemAssistant().playerHasItem(995, 15)) { - sendNpcChat1( - "That offer sounds generous, I will give you two woaf leaves!", - player.talkingNpc, "Wyson the Gardener"); - player.getItemAssistant().addOrDropItem(1793, 2); - player.getItemAssistant().deleteItem(995, 20); - player.nextChat = 0; - } else { - sendNpcChat1("You don't have enough coins to buy a woad leaf.", - player.talkingNpc, "Wyson the Gardener"); - } - break; - - case 3167: - sendNpcChat1("Hello are you interested in buying anything?", - player.talkingNpc, "Roavar"); - player.nextChat = 3168; - break; - - case 3168: - sendOption2("Yes please.", "No Thanks."); - player.dialogueAction = 162; - break; - - case 3169: - sendPlayerChat1("No thanks."); - player.nextChat = 0; - break; - - case 3170: - sendPlayerChat1("Yes please can I get a moonlight mean?"); - player.nextChat = 3171; - break; - - case 3171: - if (player.getItemAssistant().playerHasItem(995, 5)) { - sendNpcChat1("Sure thing.", player.talkingNpc, "Roavar"); - player.getItemAssistant().deleteItem(995, 5); - player.getItemAssistant().addOrDropItem(2955, 1); - player.nextChat = 0; - } else { - sendNpcChat1("You need 5 coins to buy that.", - player.talkingNpc, "Roavar"); - player.nextChat = 0; - } - break; - - case 3172: - sendOption2("Experience Lamp", - "Magical Lamp that restores your run to full"); - player.dialogueAction = 163; - break; - - case 3173: - sendNpcChat2("Hello, would you like to travel to Shilo Village", - "for 200 coins?", player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 3174; - break; - - case 3174: - sendOption2("Yes please.", "No Thanks."); - player.dialogueAction = 164; - break; - - case 3175: - sendPlayerChat1("No thanks."); - player.nextChat = 0; - break; - - case 3176: - sendPlayerChat1("Yes please."); - player.nextChat = 3177; - break; - - case 3177: - if (player.getItemAssistant().playerHasItem(995, 200)) { - player.getItemAssistant().deleteItem(995, 200); - player.getPlayerAssistant().startTeleport(2834, 2953, 0, - "modern"); - player.nextChat = 0; - } else { - sendNpcChat1("You don't have enough coins", player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 0; - } - break; - - case 3178: - sendNpcChat2( - "Hello, would you like to travel to back to Brimhaven", - "for 200 coins?", player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 3179; - break; - - case 3179: - sendOption2("Yes please.", "No Thanks."); - player.dialogueAction = 165; - break; - - case 3180: - sendPlayerChat1("No thanks."); - player.nextChat = 0; - break; - - case 3181: - sendPlayerChat1("Yes please."); - player.nextChat = 3182; - break; - - case 3182: - if (player.getItemAssistant().playerHasItem(995, 200)) { - player.getItemAssistant().deleteItem(995, 200); - player.getPlayerAssistant().startTeleport(2779, 3212, 0, "modern"); - player.nextChat = 0; - } else { - sendNpcChat1("You don't have enough coins", player.talkingNpc, NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 0; - } - break; - - case 3183: - sendNpcChat2("Hello, are you interested in buying cooking gauntlets", "for 25k?", player.talkingNpc, NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 3184; - break; - - case 3184: - sendOption2("Yes please.", "No thank you."); - player.dialogueAction = 178; - break; - - case 3185: - sendPlayerChat1("No thank you, do I look like I'm a cook?"); - player.nextChat = 0; - break; - - case 3186: - if (player.getItemAssistant().playerHasItem(995, 25000) - && !player.getItemAssistant().playerHasItem(775) - && player.playerEquipment[player.playerHands] != 775) { - sendPlayerChat1("Yes please."); - player.getItemAssistant().deleteItem(995, 25000); - player.getPlayerAssistant().removeGloves(); - player.getItemAssistant().addOrDropItem(775, 1); - player.nextChat = 0; - } else if (player.getItemAssistant().playerHasItem(775) - || player.playerEquipment[player.playerHands] == 775) { - sendNpcChat1("Why would you want another pair?", - player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 0; - } else { - sendNpcChat1("You need 25k to buy these.", player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 0; - } - break; - - case 3187: - sendStatement("You found a hidden tunnel! Do you want to enter it?"); - player.nextChat = 3188; - break; - - case 3188: - sendOption2("Yea! I'm fearless!", "No way! That looks scary!"); - player.dialogueAction = 1; - player.nextChat = 0; - break; - - case 3189: - sendNpcChat2( - "Hello, are you interested in buying goldsmith gantlets", - "for 25k?", player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 3190; - break; - - case 3190: - sendOption2("Yes please.", "No thank you."); - player.dialogueAction = 175; - break; - - case 3191: - sendPlayerChat1("No thank you, do I look like I'm a smither?"); - player.nextChat = 0; - break; - - case 3192: - if (player.getItemAssistant().playerHasItem(995, 25000) - && !player.getItemAssistant().playerHasItem(776) - && player.playerEquipment[player.playerHands] != 776) { - sendPlayerChat1("Yes please."); - player.getItemAssistant().deleteItem(995, 25000); - player.getPlayerAssistant().removeGloves(); - player.getItemAssistant().addOrDropItem(776, 1); - player.nextChat = 0; - } else if (player.getItemAssistant().playerHasItem(776) - || player.playerEquipment[player.playerHands] == 776) { - sendNpcChat1("Why would you want another pair?", - player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 0; - } else { - sendNpcChat1("You need 25k to buy these.", player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 0; - } - break; - - case 3193: - if (!player.getItemAssistant().playerHasItem(1540)) { - player.getItemAssistant().addOrDropItem(1540, 1); - sendNpcChat1("Enjoy!", player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 0; - } else { - sendNpcChat1("You already have one of those shields.", - player.talkingNpc, - NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 0; - } - break; - - case 3194: - QuestRewards.vampFinish(player); - break; - - case 3195: - sendPlayerChat1("I would like to exchange mole skins/claws for nests."); - player.nextChat = 3196; - break; - - case 3196: - sendOption2("Mole skins.", "Mole claws."); - player.dialogueAction = 180; - break; - - case 3197: - if (MOLE_SKIN > 0) { - sendPlayerChat2("I would like to exchange my " + MOLE_SKIN + " mole skins,", "for bird nests."); - player.nextChat = 3198; - } else { - sendNpcChat1("You don't have any mole skins.", player.talkingNpc, NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 0; - } - break; - - case 3198: - player.getItemAssistant().deleteItem(7418, MOLE_SKIN); - player.getItemAssistant().addOrDropItem(7413, MOLE_SKIN); - sendNpcChat1("Here you go", player.talkingNpc, NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 0; - break; - - case 3199: - if (MOLE_CLAW > 0) { - sendPlayerChat2("I would like to exchange my " + MOLE_CLAW + " mole claws,", "for bird nests."); - player.nextChat = 3200; - } else { - sendNpcChat1("You don't have any mole claws.", player.talkingNpc, NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 0; - } - break; - - case 3200: - player.getItemAssistant().deleteItem(7416, MOLE_CLAW); - player.getItemAssistant().addOrDropItem(7413, MOLE_CLAW); - sendNpcChat1("Here you go", player.talkingNpc, NpcHandler.getNpcListName(player.talkingNpc)); - player.nextChat = 0; - break; - - //483 - case 3201: //competition judge - sendNpcChat4("Hello!", "I'm the competition judge of the Ranging Guild.", "You can buy shots from me and shoot the targets", "for points. You can exchange the points with me.", player.talkingNpc, "Judge"); - player.nextChat = 3202; - break; - - case 3202: - sendNpcChat1("What would you like to do?", player.talkingNpc, "Judge"); - player.nextChat = 3203; - break; - - case 3203: - sendOption4("I would like to buy shots.", "I would like to exchange my points.", "How am I doing right now?", "Never mind."); - player.dialogueAction = 485; - break; - - case 3204: - sendOption2("Pastry Dough", "Bread Dough"); - player.dialogueAction = 3204;//186 - break; - - case 3205: - sendOption2("Pastry Dough", "Bread Dough"); - player.dialogueAction = 3205;//187 - break; - - /*case 3206: - if (Constants.HALLOWEEN == false) { - sendNpcChat2("The halloween event is now over,", "what would you like?", 945, "" + Constants.SERVER_NAME + " Guide"); - client.nextChat = 3207; - } else if (client.recievedMask == false && Constants.HALLOWEEN) { - sendNpcChat2("Thank you so much for voting!", "Enjoy your mask!", 945, "" + Constants.SERVER_NAME + " Guide"); - client.getItemAssistant().addOrDropItem(client.getPlayerAssistant().randomReward(), 1); - VotingHandler.setAsReceived(client.playerName); - client.recievedMask = true; - client.nextChat = 0; - } else if (client.recievedMask == true && Constants.HALLOWEEN) { - sendNpcChat2("You have already recieved a halloween mask.", "What reward would you like?", 945, "" + Constants.SERVER_NAME + " Guide"); - client.nextChat = 3207; - } - break; - - case 3207: - sendOption3("Experience Lamp (Depends on Level of Skill)", "Coins (1-4k)", "Energy Lamp"); - client.dialogueAction = 188; - break;*/ - - case 3208: - sendNpcChat1("Hello, " + player.playerName + " what would you like to do?", 958, "Fadli"); - player.nextChat = 3209; - break; - - case 3209: - sendOption2("I would like to open my bank.", "I would like to view your shop."); - player.dialogueAction = 189; - break; - - case 3210: - sendPlayerChat1("I would like to open my bank."); - player.nextChat = 3211; - break; - - case 3211: - player.getPlayerAssistant().openUpBank(); - player.nextChat = 0; - break; - - case 3212: - sendPlayerChat1("I would like to view your shop."); - player.nextChat = 3213; - break; - - case 3213: - player.getShopAssistant().openShop(143); - player.nextChat = 0; - break; - - case 3214: - sendPlayerChat1("How's it going?"); - player.nextChat = 3215; - break; - - case 3215: - if (Misc.random(1) == 1) { - sendNpcChat1("I'm good, thank you for asking.", 2238, "Donie"); - player.nextChat = 0; - } else { - sendNpcChat1("I feel great, thanks for asking.", 2238, "Donie"); - player.nextChat = 0; - } - break; - - case 3216://23 - sendStartInfo("As you collect your reward, you notice an aweful smell.", "You look below the remaining debris to the bottom of the", "chest. You see a trapdoor. You open it and it leads to a ladder", "that goes down a long ways.", "Continue?"); - break; - - case 3217://24 - sendStatement("Would you like to continue?"); - player.nextChat = 3218; - break; - - case 3218://25 - sendOption2("Yes, I'm not afraid of anything!", "No way, the smell itself turns me away."); - player.dialogueAction = 3218; - break; - - case 3219://26 - sendStatement("This is a very dangerous minigame, are you sure?"); - player.nextChat = 3220; - break; - - case 3220://27 - player.dialogueAction = 3220; - sendOption2("Yes, I'm a brave warrior!", "Maybe I shouldn't, I could lose my items!"); - break; - - case 3221://28 - sendStatement("Congratulations, " + player.playerName + ". You've completed the barrows challenge & your reward has been delivered."); - player.nextChat = 0; - break; - - case 3222://29 - sendStatement("Are you ready to visit the chest room?"); - player.nextChat = 3223; - player.dialogueAction = 3222; - break; - - case 3223://30 - sendOption2("Yes, I've killed all the other brothers!", "No, I still need to kill more brothers"); - player.nextChat = 0; - break; - - /** - * CANNNON - * @author Andrew - */ - case 3500: - if (player.getCannon().needsCannon()) { - sendNpcChat2("Hello, " + Misc.capitalize(player.playerName) + ".", "I see that you lost your cannon.", player.talkingNpc, "Nulodion"); - player.nextChat = 3501; - } else { - sendNpcChat1("" + Misc.capitalize(player.playerName) + " you do not have anything to collect currently.", player.talkingNpc, "Nulodion"); - player.nextChat = 0; - } - break; - - case 3501: - if (player.getCannon().needsCannon()) { - sendNpcChat1("Here is your cannon, try not to lose it again.", player.talkingNpc, "Nulodion"); - for (int i = 0; i < 4; i++) { - player.getItemAssistant().addItem(player.getCannon().ITEM_PARTS[i], 1); - } - player.lostCannon = false; - player.nextChat = 0; - } else { - sendNpcChat1("" + Misc.capitalize(player.playerName) + " you do not have a cannon to collect currently.", player.talkingNpc, "Nulodion"); - player.nextChat = 0; - } - break; - case 3902: - sendNpcChat2( - "I am the leader of the White Knights of Falador.", - "Why do you seek my audience?", - player.talkingNpc, "Sir Amik Varze"); - player.nextChat = 3523; - break; - /*case 3503: - sendOption2( - "I seek a Quest!", - "I don't, I'm just looking around."); - player.dialogueAction = 1000; - break;*/ - case 3523: - sendPlayerChat1("I Seek a Quest!"); - player.nextChat = 3504; - break; - case 3524: - sendPlayerChat1("I don't, I'm just looking around."); - player.nextChat = 0; - break; - case 3504: - sendNpcChat2("Well, I need some spy work doing but it's quite dangerous. ", - "It will involve going into the Black Knights'Fortress.", - player.talkingNpc, "Sir Amik Varze"); - player.nextChat = 3506; - break; - /*case 3505: - sendOption2("I laugh in the face of danger!", "I go and cower in a corner at the fist sign of danger!"); - player.nextChat = 3506; - break;*/ - case 3506: - sendPlayerChat1("I laugh in the face on danger!");// 9158 - player.nextChat = 3507; - break; - case 3507: - sendNpcChat2("Good, I need you to kill 30 Black Knights", - "and collect their notes." - , player.talkingNpc, "Sir Amik Varze"); - player.nextChat = 3508; - break; - case 3508: - sendPlayerChat1("Alright, I better get going!"); - player.blackKnight = 1; - QuestAssistant.sendStages(player); - player.nextChat = 3509; - break; - case 3509: - sendNpcChat1("Thank you so much " + player.playerName + "!", player.talkingNpc, "Sir Amik Varze"); - player.nextChat = 0; - break; - case 3510: - if (player.getItemAssistant().playerHasItem(291, 30)) { - sendPlayerChat1("Here's all the items!"); - player.blackKnight = 2; - player.nextChat = 3511; - } else { - sendPlayerChat1("I don't have all the items yet."); - player.nextChat = 0; - } - break; - case 3511: - sendNpcChat1("Thank you very much " + player.playerName + "!", - player.talkingNpc, "Sir Amik Varze"); - player.nextChat = 3512; - break; - case 3512: - player.getItemAssistant().deleteItem(291, 30); - sendNpcChat2("You brought me everything I need!", - "Thank you!", player.talkingNpc, "Sir Amik Varze"); - player.nextChat = 3513; - break; - case 3513: - sendNpcChat1("One last thing" + player.playerName + ", here is your reward.", - player.talkingNpc, "Sir Amik Varze"); - QuestRewards.blackKnightReward(player); - player.nextChat = 0; - break; - - } - - } - - public void chatboxText(Client c, String text, String text1, String text2, - String text3, String title) { - player.getPlayerAssistant().sendFrame126(title, 6180); - player.getPlayerAssistant().sendFrame126(text, 6181); - player.getPlayerAssistant().sendFrame126(text1, 6182); - player.getPlayerAssistant().sendFrame126(text2, 6183); - player.getPlayerAssistant().sendFrame126(text3, 6184); - } - - public void clearChatBoxText(Client c) { - player.getPlayerAssistant().sendFrame126("", 6180); - player.getPlayerAssistant().sendFrame126("", 6181); - player.getPlayerAssistant().sendFrame126("", 6182); - player.getPlayerAssistant().sendFrame126("", 6183); - player.getPlayerAssistant().sendFrame126("", 6184); - } - - public void sendStartInfo(String text, String text1, String text2, String text3, String title, boolean send) { - player.getPlayerAssistant().sendFrame126(title, 6180); - player.getPlayerAssistant().sendFrame126(text, 6181); - player.getPlayerAssistant().sendFrame126(text1, 6182); - player.getPlayerAssistant().sendFrame126(text2, 6183); - player.getPlayerAssistant().sendFrame126(text3, 6184); - player.getPlayerAssistant().sendChatInterface(6179); - } - - /* - * Options - */ - - public void sendPlayerChat1(String s) { - player.getPlayerAssistant().sendDialogueAnimation(969, 591); - player.getPlayerAssistant().sendFrame126(player.playerName, 970); - player.getPlayerAssistant().sendFrame126(s, 971); - player.getPlayerAssistant().sendPlayerDialogueHead(969); - player.getPlayerAssistant().sendChatInterface(968); - } - - public void sendPlayerChat2(String s, String s1) { - player.getPlayerAssistant().sendDialogueAnimation(974, 591); - player.getPlayerAssistant().sendFrame126(player.playerName, 975); - player.getPlayerAssistant().sendFrame126(s, 976); - player.getPlayerAssistant().sendFrame126(s1, 977); - player.getPlayerAssistant().sendPlayerDialogueHead(974); - player.getPlayerAssistant().sendChatInterface(973); - } - - private void sendPlayerChat3(String s, String s1, String s2) { - player.getPlayerAssistant().sendDialogueAnimation(980, 591); - player.getPlayerAssistant().sendFrame126(player.playerName, 981); - player.getPlayerAssistant().sendFrame126(s, 982); - player.getPlayerAssistant().sendFrame126(s1, 983); - player.getPlayerAssistant().sendFrame126(s2, 984); - player.getPlayerAssistant().sendPlayerDialogueHead(980); - player.getPlayerAssistant().sendChatInterface(979); - } - - private void sendPlayerChat4(String s, String s1, String s2, String s3) { - player.getPlayerAssistant().sendDialogueAnimation(987, 591); - player.getPlayerAssistant().sendFrame126(player.playerName, 988); - player.getPlayerAssistant().sendFrame126(s, 989); - player.getPlayerAssistant().sendFrame126(s1, 990); - player.getPlayerAssistant().sendFrame126(s2, 991); - player.getPlayerAssistant().sendFrame126(s3, 992); - player.getPlayerAssistant().sendPlayerDialogueHead(987); - player.getPlayerAssistant().sendChatInterface(986); - } - - public void sendOption2(String s, String s1) { - player.getPlayerAssistant().sendFrame126("Select an Option", 2460); - player.getPlayerAssistant().sendFrame126(s, 2461); - player.getPlayerAssistant().sendFrame126(s1, 2462); - player.getPlayerAssistant().sendChatInterface(2459); - } - - public void sendOption3(String s, String s1, String s2) { - player.getPlayerAssistant().sendFrame126("Select an Option", 2470); - player.getPlayerAssistant().sendFrame126(s, 2471); - player.getPlayerAssistant().sendFrame126(s1, 2472); - player.getPlayerAssistant().sendFrame126(s2, 2473); - player.getPlayerAssistant().sendChatInterface(2469); - } - - public void sendOption4(String s, String s1, String s2, String s3) { - player.getPlayerAssistant().sendFrame126("Select an Option", 2481); - player.getPlayerAssistant().sendFrame126(s, 2482); - player.getPlayerAssistant().sendFrame126(s1, 2483); - player.getPlayerAssistant().sendFrame126(s2, 2484); - player.getPlayerAssistant().sendFrame126(s3, 2485); - player.getPlayerAssistant().sendChatInterface(2480); - } - - public void sendOption5(String s, String s1, String s2, String s3, String s4) { - player.getPlayerAssistant().sendFrame126("Select an Option", 2493); - player.getPlayerAssistant().sendFrame126(s, 2494); - player.getPlayerAssistant().sendFrame126(s1, 2495); - player.getPlayerAssistant().sendFrame126(s2, 2496); - player.getPlayerAssistant().sendFrame126(s3, 2497); - player.getPlayerAssistant().sendFrame126(s4, 2498); - player.getPlayerAssistant().sendChatInterface(2492); - } - - /* - * Statements - */ - - public void sendStatement(String s) { // 1 line click here to continue chat - // box interface - player.getPlayerAssistant().sendFrame126(s, 357); - player.getPlayerAssistant().sendFrame126("Click here to continue", 358); - player.getPlayerAssistant().sendChatInterface(356); - } - - public void sendStatement2(String s, String s1) { - player.getPlayerAssistant().sendFrame126(s, 360); - player.getPlayerAssistant().sendFrame126(s1, 361); - player.getPlayerAssistant().sendFrame126("Click here to continue", 362); - player.getPlayerAssistant().sendChatInterface(359); - } - - public void sendStatement3(String s, String s1, String s2) { - player.getPlayerAssistant().sendFrame126(s, 364); - player.getPlayerAssistant().sendFrame126(s1, 365); - player.getPlayerAssistant().sendFrame126(s1, 366); - player.getPlayerAssistant().sendFrame126("Click here to continue", 367); - player.getPlayerAssistant().sendChatInterface(363); - } - - public void sendStatement4(String s, String s1, String s2, String s3) { - player.getPlayerAssistant().sendFrame126(s, 369); - player.getPlayerAssistant().sendFrame126(s1, 370); - player.getPlayerAssistant().sendFrame126(s2, 371); - player.getPlayerAssistant().sendFrame126(s3, 372); - player.getPlayerAssistant().sendFrame126("Click here to continue", 373); - player.getPlayerAssistant().sendChatInterface(368); - } - - public void itemMessage(String title, String message, int itemid, int size) { - player.getPlayerAssistant().sendDialogueAnimation(4883, 591); - player.getPlayerAssistant().sendFrame126(title, 4884); - player.getPlayerAssistant().sendFrame126(message, 4885); - player.getPlayerAssistant().sendFrame126("Click here to continue.", 4886); - player.getPlayerAssistant().sendFrame246(4883, size, itemid); - player.getPlayerAssistant().sendChatInterface(4882); - } - - /* - * Npc Chatting - */ - - public void sendNpcChat1(String s, int ChatNpc, String name) { - player.getPlayerAssistant().sendDialogueAnimation(4883, 591); - player.getPlayerAssistant().sendFrame126(name, 4884); - player.getPlayerAssistant().sendFrame126(s, 4885); - player.getPlayerAssistant().sendNPCDialogueHead(ChatNpc, 4883); - player.getPlayerAssistant().sendChatInterface(4882); - } - - public void sendNpcChat2(String s, String s1, int ChatNpc, String name) { - player.getPlayerAssistant().sendDialogueAnimation(4888, 591); - player.getPlayerAssistant().sendFrame126(name, 4889); - player.getPlayerAssistant().sendFrame126(s, 4890); - player.getPlayerAssistant().sendFrame126(s1, 4891); - player.getPlayerAssistant().sendNPCDialogueHead(ChatNpc, 4888); - player.getPlayerAssistant().sendChatInterface(4887); - } - - public void sendNpcChat3(String s, String s1, String s2, int ChatNpc, - String name) { - player.getPlayerAssistant().sendDialogueAnimation(4894, 591); - player.getPlayerAssistant().sendFrame126(name, 4895); - player.getPlayerAssistant().sendFrame126(s, 4896); - player.getPlayerAssistant().sendFrame126(s1, 4897); - player.getPlayerAssistant().sendFrame126(s2, 4898); - player.getPlayerAssistant().sendNPCDialogueHead(ChatNpc, 4894); - player.getPlayerAssistant().sendChatInterface(4893); - } - - - public void sendNpcChat4(String s, String s1, String s2, String s3, - int ChatNpc, String name) { - player.getPlayerAssistant().sendDialogueAnimation(4901, 591); - player.getPlayerAssistant().sendFrame126(name, 4902); - player.getPlayerAssistant().sendFrame126(s, 4903); - player.getPlayerAssistant().sendFrame126(s1, 4904); - player.getPlayerAssistant().sendFrame126(s2, 4905); - player.getPlayerAssistant().sendFrame126(s3, 4906); - player.getPlayerAssistant().sendNPCDialogueHead(ChatNpc, 4901); - player.getPlayerAssistant().sendChatInterface(4900); - } - - /* - * Tutorial interface - */ - - public void sendStartInfo(String text, String text1, String text2, - String text3, String title) { - player.getPlayerAssistant().sendFrame126(title, 6180); - player.getPlayerAssistant().sendFrame126(text, 6181); - player.getPlayerAssistant().sendFrame126(text1, 6182); - player.getPlayerAssistant().sendFrame126(text2, 6183); - player.getPlayerAssistant().sendFrame126(text3, 6184); - player.getPlayerAssistant().sendChatInterface(6179); - } - - /* - * ItemInformation Box - */ - - public void itemMessage1(String message1, int itemid, int size) { - player.getPlayerAssistant().sendDialogueAnimation(307, 591); - player.getPlayerAssistant().sendFrame126(message1, 308); - player.getPlayerAssistant().sendFrame246(307, size, itemid); - player.getPlayerAssistant().sendChatInterface(306); - player.nextChat = 0; - } - - /* - * Give items - */ - - public void sendGiveItemNpc(String text1, String text2, int item1, int item2) { - player.getPlayerAssistant().sendFrame126(text1, 6232); - player.getPlayerAssistant().sendFrame126(text2, 6233); - player.getPlayerAssistant().sendFrame246(6235, 170, item1); - player.getPlayerAssistant().sendFrame246(6236, 170, item2); - player.getPlayerAssistant().sendChatInterface(6231); - } - - public void sendGiveItemNpc(String text, int item) { - player.getPlayerAssistant().sendFrame126(text, 308); - player.getPlayerAssistant().sendFrame246(307, 200, item); - player.getPlayerAssistant().sendChatInterface(306); - } - - /** - * USAGE: displayTwoItemsOption(c, new String {"Whip", "DDS", new int { - * 4151, 5698}, new int { 150, 150}); Displays two items with a select one - * option. - */ - public void displayTwoItemsOption(Client c, String[] s, int items[], - int[] zoom) { - player.getPlayerAssistant().sendFrame126(s[0], 144); - player.getPlayerAssistant().sendFrame126(s[1], 145); - player.getPlayerAssistant().sendFrame246(items[0], zoom[0], 142); - player.getPlayerAssistant().sendFrame246(items[1], zoom[1], 143); - player.getPlayerAssistant().sendChatInterface(139); - } - - /** - * Displays single line text - */ - public void displaySingleLine(Client c, String s) { - player.getPlayerAssistant().sendFrame126(s, 357); - player.getPlayerAssistant().sendChatInterface(356); - } - - /** - * Displays two lined text - */ - public void displayTwoLined(Client c, String[] s) { - player.getPlayerAssistant().sendFrame126(s[0], 360); - player.getPlayerAssistant().sendFrame126(s[1], 361); - player.getPlayerAssistant().sendChatInterface(359); - } - - /** - * Displays Three lined text - */ - public void displayThreeLined(Client c, String[] s) { - player.getPlayerAssistant().sendFrame126(s[0], 364); - player.getPlayerAssistant().sendFrame126(s[1], 365); - player.getPlayerAssistant().sendFrame126(s[2], 366); - player.getPlayerAssistant().sendChatInterface(363); - } - - /** - * Displays Four lined text - */ - public void displayFourLined(Client c, String[] s) { - player.getPlayerAssistant().sendFrame126(s[0], 369); - player.getPlayerAssistant().sendFrame126(s[1], 370); - player.getPlayerAssistant().sendFrame126(s[2], 371); - player.getPlayerAssistant().sendFrame126(s[2], 372); - player.getPlayerAssistant().sendChatInterface(368); - } - - /** - * Select Option 2 - */ - public void displaySelectOption2(Client c, String[] s) { - player.getPlayerAssistant().sendFrame126(s[0], 2461); - player.getPlayerAssistant().sendFrame126(s[1], 2462); - player.getPlayerAssistant().sendChatInterface(2459); - } - - /** - * Select Option 3 - */ - public void displaySelectOption3(Client c, String[] s) { - player.getPlayerAssistant().sendFrame126(s[0], 2471); - player.getPlayerAssistant().sendFrame126(s[1], 2472); - player.getPlayerAssistant().sendFrame126(s[2], 2473); - player.getPlayerAssistant().sendChatInterface(2469); - } - - /** - * Select Option 4 - */ - public void displaySelectOption4(Client c, String[] s) { - player.getPlayerAssistant().sendFrame126(s[0], 2482); - player.getPlayerAssistant().sendFrame126(s[1], 2483); - player.getPlayerAssistant().sendFrame126(s[2], 2484); - player.getPlayerAssistant().sendFrame126(s[3], 2485); - player.getPlayerAssistant().sendChatInterface(2480); - } - - /** - * Select Option 5 - */ - public void displaySelectOption5(Client c, String[] s) { - player.getPlayerAssistant().sendFrame126(s[0], 2494); - player.getPlayerAssistant().sendFrame126(s[1], 2495); - player.getPlayerAssistant().sendFrame126(s[2], 2496); - player.getPlayerAssistant().sendFrame126(s[3], 2497); - player.getPlayerAssistant().sendFrame126(s[4], 2498); - player.getPlayerAssistant().sendChatInterface(2492); - } - - public void itemMessage(Client c, String message1, int itemid, int size) { - player.getPlayerAssistant().sendDialogueAnimation(307, 591); - player.getPlayerAssistant().sendFrame126(message1, 308); - player.getPlayerAssistant().sendFrame246(307, size, itemid); - player.getPlayerAssistant().sendChatInterface(306); - c.nextChat = 0; - } - - public void sendItemChat1(Client c, String header, String one, int item, - int zoom) { - player.getPlayerAssistant().sendFrame246(4883, zoom, item); - player.getPlayerAssistant().sendFrame126(header, 4884); - player.getPlayerAssistant().sendFrame126(one, 4885); - player.getPlayerAssistant().sendChatInterface(4882); - } - - public void sendItemChat2(Client c, String header, String one, String two, - int item, int zoom) { - player.getPlayerAssistant().sendFrame246(4888, zoom, item); - player.getPlayerAssistant().sendFrame126(header, 4889); - player.getPlayerAssistant().sendFrame126(one, 4890); - player.getPlayerAssistant().sendFrame126(two, 4891); - player.getPlayerAssistant().sendChatInterface(4887); - } - - public void sendItemChat3(Client c, String header, String one, String two, - String three, int item, int zoom) { - player.getPlayerAssistant().sendFrame246(4894, zoom, item); - player.getPlayerAssistant().sendFrame126(header, 4895); - player.getPlayerAssistant().sendFrame126(one, 4896); - player.getPlayerAssistant().sendFrame126(two, 4897); - player.getPlayerAssistant().sendFrame126(three, 4898); - player.getPlayerAssistant().sendChatInterface(4893); - } - - public void sendItemChat4(Client c, String header, String one, String two, - String three, String four, int item, int zoom) { - player.getPlayerAssistant().sendFrame246(4901, zoom, item); - player.getPlayerAssistant().sendFrame126(header, 4902); - player.getPlayerAssistant().sendFrame126(one, 4903); - player.getPlayerAssistant().sendFrame126(two, 4904); - player.getPlayerAssistant().sendFrame126(three, 4905); - player.getPlayerAssistant().sendFrame126(four, 4906); - player.getPlayerAssistant().sendChatInterface(4900); - } - - public void sendDialogues(int i) { - } -} +package com.rebotted.game.dialogues; + +import com.rebotted.GameConstants; +import com.rebotted.game.content.quests.QuestAssistant; +import com.rebotted.game.content.quests.QuestRewards; +import com.rebotted.game.content.randomevents.FreakyForester; +import com.rebotted.game.content.randomevents.RandomEventHandler; +import com.rebotted.game.content.skills.SkillHandler; +import com.rebotted.game.content.skills.slayer.Slayer; +import com.rebotted.game.content.traveling.Sailing; +import com.rebotted.game.globalworldobjects.PassDoor; +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.game.objects.impl.SpecialObjects; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerAssistant; +import com.rebotted.game.shops.Shops.Shop; +import com.rebotted.util.Misc; + +/** + * Anims: + * http://www.rune-server.org/runescape-development/rs2-server/tutorials/518991-pi-317-player-npc-facial-dialogue-expressions.html + */ + +public class DialogueHandler { + + private final Player player; + + public DialogueHandler(Player player2) { + this.player = player2; + } + + public void sendDialogues(int dialogue, int npcId) { + int MOLE_SKIN = player.getItemAssistant().getItemCount(7418), MOLE_CLAW = player.getItemAssistant().getItemCount(7416); + player.talkingNpc = npcId; + switch (dialogue) { + case 0: + player.talkingNpc = -1; + player.getPacketSender().closeAllWindows(); + player.nextChat = 0; + break; + + case 1: // was 16 + sendOption2("I would like to reset my barrows brothers.", + "I would like to fix all my barrows"); + player.dialogueAction = 8; + break; + + case 2: + if (player.canLeaveArea) { + sendNpcChat2( + "Just step through the glowing portal when you're ready", + "to leave, and I'll ensure you get a nice reward.", + player.talkingNpc, "Freaky Forester"); + player.getItemAssistant().deleteItem(6178, player.getItemAssistant().getItemSlot(6178), player.getItemAssistant().getItemAmount(6178)); + } else if (FreakyForester.hasKilledPheasant(player) + && player.getItemAssistant().playerHasItem(6178, 1)) { + sendNpcChat1( + "Thank you. I take that pheasant, you can leave now.", + player.talkingNpc, "Freaky Forester"); + player.canLeaveArea = true; + player.getItemAssistant().deleteItem(6178, player.getItemAssistant().getItemSlot(6178), player.getItemAssistant().getItemAmount(6178)); + } else { + sendNpcChat2("Hello there mate. Can you please kill a " + + FreakyForester.getPheasant(player) + " and", + "bring it back to me and I shall let you leave.", + player.talkingNpc, "Freaky Forester"); + } + player.nextChat = 0; + break;// go to where they appear or whatever + + case 3: + sendNpcChat1("Come back mate! You can't leave yet!", + player.talkingNpc, "Freaky Forester"); + player.nextChat = 0; + break; + + case 4: + if (player.luthas == true && player.bananas >= 2) { + player.getItemAssistant().addOrDropItem(995, 30); + sendNpcChat1( + "Thank you for your services you have been rewarded 30 coins.", + player.talkingNpc, "Luthas"); + player.luthas = false; + player.bananas = 0; + player.nextChat = 0; + } else { + player.getPlayerAssistant().bananasCheck(); + player.nextChat = 0; + } + break; + + case 8: + sendOption2("I would like to collect some banana's for you", + "Never mind"); + player.dialogueAction = 92; + break; + + case 9: + sendPlayerChat1("I would like to collect some banana's for you."); + player.luthas = true; + player.bananas = 1; + player.nextChat = 10; + break; + + case 10: + sendNpcChat1( + "Please put 10 bannanas in a crate then I will reward you.", + player.talkingNpc, "Luthas"); + player.nextChat = 4; + break; + + case 5: + sendPlayerChat1("Hello, how's it going?"); + player.nextChat = 6; + break; + case 6: + sendNpcChat1("I'm fine, how are you?", player.talkingNpc, "Man"); + player.nextChat = 7; + break; + case 7: + sendPlayerChat1("Very well thank you."); + player.nextChat = 0; + break; + + case 11: + sendOption2("Here's 5 coins you tramp.", "Leave, me alone."); + player.dialogueAction = 90; + break; + + case 12: + if (player.getItemAssistant().playerHasItem(995, 5)) { + player.getItemAssistant().deleteItem(995, 5); + sendPlayerChat1("Here's 5 coins you tramp."); + player.nextChat = 0; + } else { + player.nextChat = 13; + } + break; + + case 13: + sendPlayerChat1("No! Leave me alone."); + player.nextChat = 0; + break; + + case 14: // lumby guide + sendNpcChat1( + "Greetings, welcome to " + GameConstants.SERVER_NAME + ".", + player.talkingNpc, "Lumbridge Guide"); + player.nextChat = 0; + break; + + case 15: + sendOption2("I would like to view your shop", + "I would like to fix my barrows"); + player.dialogueAction = 91; + break; + + case 16: + player.getShopAssistant().openShop(8); + player.nextChat = 0; + break; + + case 17: + player.getPlayerAssistant().fixAllBarrows(); + player.nextChat = 0; + break; + + case 18: + sendNpcChat1("Hi welcome to the partyroom.", player.talkingNpc, + "Party Pete"); + player.nextChat = 605; + break; + + case 19: + sendNpcChat1("Hello would you like to buy a beer for 2 gp?", + player.talkingNpc, "Bartender"); + player.nextChat = 20; + break; + + case 20: + if (player.getItemAssistant().playerHasItem(995, 2)) { + sendPlayerChat1("Yes I would love a beer."); + player.getItemAssistant().deleteItem(995, 2); + player.getItemAssistant().addOrDropItem(1917, 1); + player.nextChat = 0; + } else { + sendPlayerChat1("I don't have enough coins to buy a beer."); + player.nextChat = 0; + } + break; + + case 21: + sendNpcChat1( + "Hello, would you like me to bring you into to shilo village?", + player.talkingNpc, "Mosol Rei"); + player.nextChat = 22; + break; + + case 22: + sendOption2("Yes", "No"); + player.dialogueAction = 93; + break; + + case 23: + player.getPlayerAssistant().movePlayer(2867, 2952, 0); + player.nextChat = 0; + break; + + case 24: + if (player.getItemAssistant().playerHasItem(995, 200)) { + sendNpcChat3("Hello Fair Traveler.", + "Can i interest you in a ride back to shantay", + "for 200 coins?", player.talkingNpc, "Rug Merchant"); + player.nextChat = 25; + } else { + sendNpcChat1("You need 200 coins to travel my rug.", + player.talkingNpc, "Rug Merchant"); + player.nextChat = 0; + } + break; + + case 25: + sendPlayerChat1("Yes please."); + player.getPlayerAssistant().startTeleport(3308, 3108, 0, "modern"); + player.getItemAssistant().deleteItem(995, 200); + player.nextChat = 0; + break; + + case 26: + if (player.getItemAssistant().playerHasItem(995, 200)) { + sendNpcChat2("Hello Fair Traveler.", + "Can i interest you in a ride for 200 coins?", + player.talkingNpc, "Rug Merchant"); + player.nextChat = 27; + } else { + sendNpcChat1("You need 200 coins to travel my rug.", + player.talkingNpc, "Rug Merchant"); + player.nextChat = 0; + } + break; + + case 27: + sendOption4("Pollnivneach (North)", "Bedabin Camp", "Uzer", + "Shantay Pass"); + player.dialogueAction = 700; + break; + + case 28: + sendPlayerChat1("Pollnivneach please."); + player.getPlayerAssistant().startTeleport(3350, 3004, 0, "modern"); + player.nextChat = 32; + break; + case 29: + sendPlayerChat1("Bedabin Camp please."); + player.getPlayerAssistant().startTeleport(3180, 3043, 0, "modern"); + player.nextChat = 32; + break; + case 30: + sendPlayerChat1("Uzer please."); + player.getPlayerAssistant().startTeleport(3469, 3111, 0, "modern"); + player.nextChat = 32; + break; + case 31: + sendPlayerChat1("Shantay pass please."); + player.getPlayerAssistant().startTeleport(3308, 3108, 0, "modern"); + player.nextChat = 32; + break; + case 32: + sendNpcChat1("Enjoy!", player.talkingNpc, "Rug Merchant"); + player.getItemAssistant().deleteItem(995, 200); + player.nextChat = 0; + break; + case 33: + sendNpcChat1("The trip to karamja will cost you 30 coins.", + player.talkingNpc, "Sailor"); + player.nextChat = 34; + break; + + case 34: + sendOption2("Yes", "No"); + player.dialogueAction = 67; + break; + + case 35: + sendPlayerChat1("No thank you."); + player.nextChat = 0; + break; + case 36: + sendPlayerChat1("Yes please."); + player.nextChat = 583; + break; + + case 37: + sendNpcChat2("Welcome to my food store!", + "Would you like to buy anything?", player.talkingNpc, + "Wydin"); + player.nextChat = 38; + break; + case 38: + sendOption3("Yes please.", "No thank you.", "Can I get a job here?"); + player.dialogueAction = 68; + break; + case 39: + sendPlayerChat1("Yes please."); + player.getShopAssistant().openShop(34); + break; + case 40: + sendPlayerChat1("No thank you."); + player.nextChat = 0; + break; + case 41: + sendPlayerChat1("Can I get a job here?"); + player.ptjob = 1; + player.nextChat = 42; + break; + case 42: + sendNpcChat3("Well you're keen, I'll give you that.", + "Okay, I'll give you a go.", + "Have you got your own white apron?", player.talkingNpc, + "Wydin"); + player.nextChat = 43; + break; + case 43: + sendPlayerChat1("No, I haven't."); + player.nextChat = 44; + break; + case 44: + sendNpcChat2( + "Well, you can't work here unless you have a white apron.", + "Health and safety regulations, you understand.", + player.talkingNpc, "Wydin"); + player.nextChat = 45; + break; + case 45: + sendPlayerChat1("Where can I get one of those?"); + player.nextChat = 46; + break; + case 46: + sendNpcChat2( + "Well I get all mine at the clothing shop in Varrock.", + "They sell them cheap there.", player.talkingNpc, "Wydin"); + player.nextChat = 47; + player.ptjob = 1; + break; + case 47: + sendNpcChat1("Have you got your white apron now?", + player.talkingNpc, "Wydin"); + player.nextChat = 47; + break; + case 48: + if (player.getItemAssistant().playerHasItem(1005, 1)) { + sendPlayerChat1("Yes I have one here."); + player.nextChat = 49; + player.ptjob = 1; + } else { + sendPlayerChat1("No I still need to get one."); + player.nextChat = 0; + } + break; + case 49: + sendNpcChat2("Wow, your well prepared! Your hired.", + "Go through the back and tidy up for me please.", + player.talkingNpc, "Wydin"); + player.nextChat = 0; + player.ptjob = 2; + break; + case 50: + sendNpcChat1("What am I to do?", player.talkingNpc, "Cook"); + player.nextChat = 51; + break; + case 51: + sendOption4("What's wrong?", "Can you cook me a cake?", + "You don't look very happy.", "Nice hat."); + player.dialogueAction = 52; + break; + case 52: + sendPlayerChat1("What's wrong?"); + player.nextChat = 54; + break; + case 54: + sendNpcChat3( + "Oh dear, oh dear, oh dear, I'm in a terrible terrible", + "mess! It's the Duke's birthday today, and I should be", + "making him a lovely big birthday cake!", + player.talkingNpc, "Cook"); + player.nextChat = 55; + break; + case 55: + sendNpcChat4( + "I've forgotten to buy the ingredients. I'll never get", + "them in time now. He'll sack me! What will I do? I have", + "four children and a goat to look after. Would you help", + "me? Please?", player.talkingNpc, "Cook"); + player.nextChat = 56; + break; + case 56: + sendOption2("I'm always happy to help a cook in distress.", + "I can't right now, Maybe later."); + player.dialogueAction = 57; + break; + case 57: + sendPlayerChat1("Yes, I'll help you.");// 9157 + player.nextChat = 60; + break; + case 58: + sendPlayerChat1("I can't right now, Maybe later.");// 9158 + player.nextChat = 59; + break; + case 59: + sendNpcChat1("Oh please! Hurry then!", player.talkingNpc, "Cook"); + player.nextChat = 0; + break; + case 60: + sendNpcChat2("Oh thank you, thank you. I need milk, an egg, and", + "flour. I'd be very grateful if you can get them for me.", + player.talkingNpc, "Cook"); + player.cookAss = 1; + QuestAssistant.sendStages(player); + player.nextChat = 61; + break; + case 61: + sendPlayerChat1("So where do I find these ingredients then?"); + player.nextChat = 62; + break; + case 62: + sendNpcChat3("You can find flour in any of the shops here.", + "You can find eggs by killing chickens.", + "You can find milk by using a bucket on a cow", + player.talkingNpc, "Cook"); + player.nextChat = 0; + break; + case 63: + sendNpcChat1("I don't have time for your jibber-jabber!", + player.talkingNpc, "Cook"); + player.nextChat = 0; + break; + case 64: + sendNpcChat1("Does it look like I have the time?", + player.talkingNpc, "Cook"); + player.nextChat = 0; + break; + case 65: + sendPlayerChat1("You don't look so happy."); + player.nextChat = 54; + break; + case 66: + sendNpcChat1( + "How are you getting on with finding the ingredients?", + player.talkingNpc, "Cook"); + player.nextChat = 67; + break; + case 67: + if (player.getItemAssistant().playerHasItem(1944, 1) + && player.getItemAssistant().playerHasItem(1927, 1) + && player.getItemAssistant().playerHasItem(1933, 1)) { + sendPlayerChat1("Here's all the items!"); + player.nextChat = 68; + } else { + sendPlayerChat1("I don't have all the items yet."); + player.nextChat = 59; + } + break; + case 68: + player.getItemAssistant().deleteItem(1944, 1); + player.getItemAssistant().deleteItem(1927, 1); + player.getItemAssistant().deleteItem(1933, 1); + player.cookAss = 2; + sendNpcChat2("You brought me everything I need! I'm saved!", + "Thank you!", player.talkingNpc, "Cook"); + player.nextChat = 69; + break; + case 69: + sendPlayerChat1("So do I get to go to the Duke's Party?"); + player.nextChat = 70; + break; + case 70: + sendNpcChat2( + "I'm afraid not, only the big cheeses get to dine with the", + "Duke.", player.talkingNpc, "Cook"); + player.nextChat = 72; + break; + case 72: + sendPlayerChat2( + "Well, maybe one day I'll be important enough to sit on", + "the Duke's table"); + player.nextChat = 74; + break; + case 74: + sendNpcChat1("Maybe, but I won't be holding my breath.", + player.talkingNpc, "Cook"); + player.nextChat = 75; + break; + case 75: + QuestRewards.cookReward(player); + break; + case 76: + sendNpcChat1("Thanks for helping me out friend!", + player.talkingNpc, "Cook"); + player.nextChat = 0; + break; + case 84: + sendNpcChat1("How are you getting on finding all my supplies", + player.talkingNpc, "Doric"); + player.nextChat = 85; + break; + case 85: + if (player.getItemAssistant().playerHasItem(434, 6) + && player.getItemAssistant().playerHasItem(436, 4) + && player.getItemAssistant().playerHasItem(440, 2)) { + sendPlayerChat1("Here's all the items!"); + player.nextChat = 86; + } else { + sendPlayerChat1("I haven't found all the items yet."); + player.nextChat = 88; + } + break; + case 86: + player.getItemAssistant().deleteItem(434, 6); + player.getItemAssistant().deleteItem(436, 4); + player.getItemAssistant().deleteItem(440, 2); + player.doricQuest = 2; + sendNpcChat2("You brought me everything i need.", "Thank You!", + player.talkingNpc, "Doric"); + player.nextChat = 87; + break; + case 87: + QuestRewards.doricFinish(player); + player.nextChat = 0; + break; + case 88: + sendNpcChat1("Hurry Then!", player.talkingNpc, "Doric"); + player.nextChat = 0; + break; + case 89: + sendNpcChat1( + "Hello traveler, what brings you to my humble smithy?", + player.talkingNpc, "Doric"); + player.nextChat = 90; + break; + case 90: + sendOption2("Mind your own buisness, Shortstuff!", + "I wanted to use your anivils."); + player.dialogueAction = 55; + break; + case 91: + sendNpcChat1("Mind your own buisness, Shortstuff!", + player.talkingNpc, "Doric"); + player.nextChat = 0; + break; + case 92: + sendNpcChat1("So you want to use my anivils?", player.talkingNpc, + "Doric"); + player.nextChat = 98; + break; + case 98: + sendPlayerChat1("Yes, I would like to use your anivil."); + player.nextChat = 93; + break; + case 93: + sendNpcChat4("My anvils get enough work with my own use.", + "I make pickaxes, and it takes a lot of hard work.", + "If you could get me some more materials,", + "then i could let use them.", player.talkingNpc, "Doric"); + player.nextChat = 94; + break; + case 94: + sendOption2("Yes i will get you the materials.", + "No, hitting rocks is boring."); + player.dialogueAction = 56; + break; + case 95: + sendPlayerChat1("No, hitting rocks is boring."); + player.nextChat = 0; + break; + case 96: + sendPlayerChat1("Yes i will get you the materials."); + player.nextChat = 97; + break; + case 97: + sendNpcChat4( + "Clay is what i use more than anything, to make casts.", + "Could you get me 6 clay, 4 copper, and 2 iron, please?", + "I could give a nice little reward", + "Take my pickaxe with you just incase you need it.", + player.talkingNpc, "Doric"); + player.getItemAssistant().addOrDropItem(1265, 1); + player.nextChat = 99; + break; + case 99: + sendPlayerChat1("Certainly, I'll be right back!"); + player.doricQuest = 1; + QuestAssistant.sendStages(player); + player.nextChat = 0; + break; + case 100: + sendNpcChat1("Thanks for the help!", player.talkingNpc, "Doric"); + player.nextChat = 0; + break; + case 101: + sendNpcChat2("You're on your own now, Jal-Yt. Prepare to fight", "for your life!", 2617, "TzHaar-Mej-Jal"); + player.nextChat = 0; + break; + case 102: + sendNpcChat1("Look out, here comes TzTok-Jad!", 2617, "TzHaar-Mej-Jal"); + player.nextChat = 0; + break; + case 103: + sendNpcChat2("You even defeated TzTok-Jad, I am most impressed!", "Please accept this gift as a reward.", 2617, "TzHaar-Mej-Jal"); + player.nextChat = 0; + break; + case 104: + sendNpcChat1("Well done in the cave, here, take TokKul as reward.", 2617, "TzHaar-Mej-Jal"); + player.nextChat = 0; + break; + case 145: + sendPlayerChat1("Give me a quest!"); + player.nextChat = 146; + break; + case 146: + sendNpcChat1("Give me a quest what?", player.talkingNpc, + "Wizard Mizgog"); + player.nextChat = 147; + break; + case 147: + sendPlayerChat1("Give me a quest please."); + player.nextChat = 148; + break; + case 148: + sendNpcChat2( + "Well seeing as you asked nicely... I could do with some", + "help.", player.talkingNpc, "Wizard Mizgog"); + player.nextChat = 149; + break; + case 149: + sendNpcChat2("The wizard Grayzag next door decided he didn't like", + "me so he enlisted an army of hundreds of imps.", + player.talkingNpc, "Wizard Mizgog"); + player.nextChat = 150; + break; + case 150: + sendNpcChat3( + "These imps stole all sorts of my things. Most of these", + "things I don't really care about, just eggs and balls of", + "string and things.", player.talkingNpc, "Wizard Mizgog"); + player.nextChat = 151; + break; + case 151: + sendNpcChat2( + "But they stole my four magical beads. There was a red", + "one, a yellow one, a black one, and a white one.", + player.talkingNpc, "Wizard Mizgog"); + player.nextChat = 152; + break; + case 152: + sendNpcChat2( + "These imps have now spread out all over the kingdom.", + "Could you get my beads back for me?", player.talkingNpc, + "Wizard Mizgog"); + player.nextChat = 153; + break; + case 153: + sendOption2("I'll try.", + "I've better things to do than chase imps."); + player.dialogueAction = 125; + break; + case 154: + sendPlayerChat1("I'll try."); + player.impsC = 1; + QuestAssistant.sendStages(player); + player.nextChat = 155; + break; + case 155: + sendNpcChat1("That's great, thank you.", player.talkingNpc, + "Wizard Mizgog"); + player.nextChat = 0; + break; + + case 156: + sendNpcChat1("So how are you doing finding my beads?", + player.talkingNpc, "Wizard Mizgog"); + player.nextChat = 157; + break; + case 157: + sendPlayerChat1("I am still working on it."); + player.nextChat = 0; + break; + + case 158: + sendNpcChat1("So how are you doing finding my beads?", + player.talkingNpc, "Wizard Mizgog"); + player.nextChat = 159; + break; + case 159: + sendPlayerChat1("I've got all four beads. It was hard work I can tell you."); + player.nextChat = 160; + break; + case 160: + sendNpcChat3( + "Give them here and I'll check that really are MY", + "beads, before I give you your reward. You'll take it, it's", + "an amulet of accuracy.", player.talkingNpc, + "Wizard Mizgog"); + player.nextChat = 161; + break; + case 161: + sendStatement("You give four coloured beads to Wizard Mizgog."); + if (player.getItemAssistant().playerHasItem(1470, 1) + && player.getItemAssistant().playerHasItem(1472, 1) + && player.getItemAssistant().playerHasItem(1474, 1) + && player.getItemAssistant().playerHasItem(1476, 1)) { + player.getItemAssistant().deleteItem(1470, 1); + player.getItemAssistant().deleteItem(1472, 1); + player.getItemAssistant().deleteItem(1474, 1); + player.getItemAssistant().deleteItem(1476, 1); + player.impsC = 2; + player.nextChat = 162; + } else { + player.nextChat = 157; + } + break; + case 162: + QuestRewards.impFinish(player); + break; + case 163: + sendPlayerChat1("I've better things to do than chase imps."); + player.nextChat = 0; + break; + + case 164: + sendNpcChat3("What are you doing on my land? ", + "You're not the one who keeps leaving all my gates open", + "and letting out all my sheep are you?", player.talkingNpc, + "Fred"); + player.nextChat = 165; + break; + case 165: + sendOption3("I'm looking for a quest.", + "I'm looking for something to kill.", "I'm lost."); + player.dialogueAction = 63; + break; + case 166: + sendPlayerChat1("I'm looking for a quest."); + player.nextChat = 170; + break; + case 167: + sendNpcChat1( + "Goblins are great for killing near the bridge in lumbridge.", + player.talkingNpc, "Fred"); + player.nextChat = 0; + break; + case 168: + sendNpcChat1("Your in lumbridge silly.", player.talkingNpc, "Fred"); + player.nextChat = 0; + break; + case 169: + sendNpcChat2("You're after a quest, you say", + "Actually I could do with a bit of help.", + player.talkingNpc, "Fred"); + player.nextChat = 170; + break; + case 170: + sendNpcChat3("My sheep are getting mighty wolly.", + "I'd be much obliged if you could shear them.", + "And while you're at it spin the wool for me too.", + player.talkingNpc, "Fred"); + player.nextChat = 171; + break; + case 171: + sendNpcChat4("Yes, that's it.", " Bring me 20 balls of wool.", + "And I'm sure I could sort out some sort of payment.", + " Of course, there's the small matter of The Thing.", + player.talkingNpc, "Fred"); + player.nextChat = 172; + break; + case 172: + sendOption3("Yes okay. I can do that.", + "That doesn't sound a very exciting quest.", + "What do you mean, The Thing?"); + player.sheepShear = 1; + QuestAssistant.sendStages(player); + player.dialogueAction = 64; + break; + case 173: + sendPlayerChat1("Yes okay. I can do that."); + player.nextChat = 177; + break; + case 174: + sendPlayerChat1("Nevermind, that doesn't sound a very exciting quest."); + player.nextChat = 0; + break; + case 175: + sendPlayerChat1("What do you mean, The Thing?"); + player.nextChat = 176; + break; + case 176: + sendNpcChat1("Never mind.", player.talkingNpc, "Fred"); + player.nextChat = 0; + break; + case 177: + sendNpcChat2("Good! Now one more thing,", + "do you actually know how to shear a sheep?.", + player.talkingNpc, "Fred"); + player.nextChat = 178; + break; + case 178: + sendOption2("Of course!", "Err. No, I don't know acctually."); + player.dialogueAction = 65; + break; + case 179: + sendPlayerChat1("Of course!"); + player.nextChat = 180; + break; + case 180: + sendNpcChat1("And you know how to spin wool into balls?", + player.talkingNpc, "Fred"); + player.nextChat = 181; + break; + case 181: + sendOption2("I'm something of an expert actually!", + "I don't know how to spin wool, sorry.."); + player.dialogueAction = 66; + break; + case 182: + sendPlayerChat1("I'm something of an expert actually!"); + player.nextChat = 183; + break; + case 183: + sendNpcChat1("Well you can stop grinning and get to work then?", + player.talkingNpc, "Fred"); + player.nextChat = 184; + break; + case 184: + sendNpcChat1("I'm not paying you by the hour!", player.talkingNpc, + "Fred"); + player.nextChat = 0; + break; + case 185: + sendNpcChat1("How are you doing getting my balls of wool?", + player.talkingNpc, "Fred"); + player.nextChat = 186; + break; + case 186: + if (player.getItemAssistant().playerHasItem(1759, 20)) { + sendPlayerChat1("I have some."); + player.getItemAssistant().deleteItem(1759, 20); + player.nextChat = 187; + } else { + sendStatement("I should get 20 balls wool first."); + player.nextChat = 0; + } + break; + case 187: + sendNpcChat1("Give em here then.", player.talkingNpc, "Fred"); + player.nextChat = 188; + break; + case 188: + sendPlayerChat1("That's the last of them."); + player.nextChat = 189; + break; + case 189: + sendNpcChat1("I guess I'd better pay you then.", player.talkingNpc, + "Fred"); + player.nextChat = 263; + break; + case 263: + QuestRewards.sheepFinish(player); + break; + case 190: + sendNpcChat1("Greetings, welcome to my castle.", player.talkingNpc, + "Duke Horacio"); + player.nextChat = 191; + break; + case 191: + sendOption3("Have you any quests for me?", + "Where can I find money?", + "Can I have an anti dragon shield please?"); + player.dialogueAction = 124; + break; + case 192:// 9158 + sendPlayerChat1("Where can I find money?"); + player.nextChat = 193; + break; + case 193: + sendNpcChat1("I'm sorry, I'm not sure.", player.talkingNpc, + "Duke Horacio"); + player.nextChat = 0; + break; + case 194:// 9157 + if (player.runeMist == 0) { + sendNpcChat2("Well, it's not really a quest", + "but I recently discovered this strange talisman.", + player.talkingNpc, "Duke Horacio"); + player.nextChat = 195; + } else { + sendNpcChat1("You have already started this quest.", + player.talkingNpc, "Duke Horacio"); + player.nextChat = 0; + } + break; + case 195: + sendNpcChat2( + "It seems to be mystical and I have never seen anything like it before.", + "Would you take it to the head wizard at", + player.talkingNpc, "Duke Horacio"); + player.nextChat = 196; + break; + case 196: + sendNpcChat3( + "the Wizards Tower for me?", + "It's just south-west of here and should not take you very long at all.", + "I would be awfully grateful.", player.talkingNpc, + "Duke Horacio"); + player.nextChat = 197; + break; + case 197: + sendOption2("Sure, no problem.", "Not right now."); + player.dialogueAction = 140; + break; + case 198:// 9157 + sendPlayerChat1("Sure, no problem."); + player.nextChat = 199; + break; + case 199: + sendNpcChat2( + "Thank you very much, stranger.", + "I'm sure the head wizard will reward you for such an interesting find.", + player.talkingNpc, "Duke Horacio"); + player.nextChat = 200; + break; + case 200: + itemMessage1("The duke hands you an @blu@air talisman@blu@.", 1438, + 1); + player.getItemAssistant().addOrDropItem(1438, 1); + player.runeMist = 1; + QuestAssistant.sendStages(player); + player.nextChat = 0; + break; + case 201: + sendNpcChat2( + "Welcome adventurer, to the world renowed Wizards Tower", + "How may I help you?", player.talkingNpc, "Sedridor"); + player.nextChat = 202; + break; + case 202: + sendOption3("Nothing thanks, I'm just looking around.", + "What are you doing down here?", + "I'm looking for the head wizard."); + player.dialogueAction = 126; + break; + case 203: // 9168 + sendNpcChat1("That's none of your buisness.", player.talkingNpc, + "Sedridor"); + player.nextChat = 0; + break; + case 204: // 9169 + sendPlayerChat1("I'm looking for the head wizard."); + player.nextChat = 205; + break; + case 205: + sendNpcChat2("Oh, you are, are you?", + "And just why would you be doing that?", player.talkingNpc, + "Sedridor"); + player.nextChat = 207; + break; + case 207: + sendPlayerChat3( + "The Duke of Lumbridge sent me to find him. Most of these", + "I have this weird talisman he found.", + "He said the head wizard would be very interested in it."); + player.nextChat = 208; + break; + case 208: + sendNpcChat4("Did he now? HmmmMMMMMmmmm.", + "Well that IS interested. Hand it over then adverturer", + "let me see what all the hubbub about it is.", + "Just some amulet I'll wager.", player.talkingNpc, + "Sedridor"); + player.nextChat = 209; + break; + case 209: + sendOption2("Ok, here you are.", + "No, I'll only give it to the head wizard."); + player.dialogueAction = 127; + break; + case 210:// 9157 + sendPlayerChat1("Ok, here you are."); + player.nextChat = 212; + break; + case 212: + itemMessage1("You hand the Talisman to the wizard.", 1438, 1); + player.getItemAssistant().deleteItem(1438, 1); + player.runeMist = 2; + player.nextChat = 213; + break; + case 213: + sendNpcChat1("Wow! This is... incredible!", player.talkingNpc, + "Sedridor"); + player.nextChat = 214; + break; + case 214: + sendNpcChat4("Th-this talisman you brought me...! ", + "It is the last piece of the puzzle, I think! Finally!", + "The legacy of our ancestors.", + "It will return to us once more!", player.talkingNpc, + "Sedridor"); + player.nextChat = 215; + break; + case 215: + sendNpcChat3( + "I need time to study this, " + player.playerName + ".", + "Can you please do me this task while I study this talisman you have brought me?", + "In the mighty town of Varrock, which", player.talkingNpc, + "Sedridor"); + player.nextChat = 216; + break; + case 216: + sendNpcChat2( + "is located North East of here, there is a certain shop that sells magical runes.", + "I have in this package all of the research I have done relating to the Rune Stones, and", + player.talkingNpc, "Sedridor"); + player.nextChat = 217; + break; + case 217: + sendNpcChat3( + "require sombody to take them to the shopkeeper so that he may share my research", + "and offer me his insights.", + "Do this thing for me, and bring back what he gives you,", + player.talkingNpc, "Sedridor"); + player.nextChat = 218; + break; + case 218: + sendNpcChat3( + "and if my suspicions are correct,", + "I will let you into the knowledge of one of the greatest secrets this world has ever known!", + "A secret so powerful that it destroyed the", + player.talkingNpc, "Sedridor"); + player.nextChat = 219; + break; + case 219: + sendNpcChat3( + "original Wizards tower all of those centuries ago!", + "My research, combined with this mysterious talisman...", + "I cannot believe the answer to the mysteries is so close now!", + player.talkingNpc, "Sedridor"); + player.nextChat = 220; + break; + case 220: + sendNpcChat2("Do this thing for me " + player.playerName + ".", + " Be rewarded in a way you can never imagine.", + player.talkingNpc, "Sedridor"); + player.nextChat = 222; + break; + case 222: + sendOption2("Yes, certainly.", "No, I'm busy."); + player.dialogueAction = 128; + break; + case 223:// 9157 + sendPlayerChat1("Yes, certainly."); + player.nextChat = 224; + break; + case 224: + sendNpcChat3( + "Take this package, and head directly North from here.", + "through Draynor village, until you reach the Barbarian Village.", + "Then head East from there until you reach Varrock.", + player.talkingNpc, "Sedridor"); + player.nextChat = 225; + break; + case 225: + sendNpcChat3( + "Once in Varrock, take this package to the owner of the rune shop.", + "His name is Aubury.", + "You may find it helpful to ask one of Varrock's citizens for directions,", + player.talkingNpc, "Sedridor"); + player.nextChat = 226; + break; + case 226: + sendNpcChat3( + "as Varrock can be a confusing place for the first time visitor.", + "He will give you a special item - bring it back to me,", + "and I shall show you the mystery of the runes...", + player.talkingNpc, "Sedridor"); + player.nextChat = 227; + break; + case 227: + itemMessage1("The head wizard gives you a package.", 290, 1); + player.getItemAssistant().addOrDropItem(290, 1); + player.nextChat = 228; + break; + case 228: + sendNpcChat1("Best of luck with your quest, " + player.playerName + + ".", player.talkingNpc, "Sedridor"); + player.nextChat = 0; + break; + case 229: + sendNpcChat1("Do you want to buy some runes?", player.talkingNpc, + "Aubury"); + player.nextChat = 230; + break; + case 230: + sendOption3("Yes please!", + "Oh, it's a rune shop. No thank you, then.", + "I have been sent here with a package for you."); + player.dialogueAction = 129; + break; + case 231: // 9167 + sendPlayerChat1("Yes please!"); + player.getShopAssistant().openShop(52); + player.nextChat = 0; + break; + case 232: // 9169 + sendPlayerChat1("I have been sent here with a package for you. It's for the head wizard at the Wizards Tower."); + player.nextChat = 233; + break; + case 233: + sendNpcChat3( + "Really? But... surely he can't have..?", + "Please, let me have it,", + "it must be extremely important for him to have sent a stranger.", + player.talkingNpc, "Aubury"); + player.nextChat = 234; + break; + case 234: + itemMessage1("You hand Aubury the research package.", 290, 1); + player.getItemAssistant().deleteItem(290, 1); + player.runeMist = 3; + player.nextChat = 235; + break; + case 235: + sendNpcChat2( + "This... this is incredible. Please,", + "give me a few moments to quickly look over this, and then talk to me again.", + player.talkingNpc, "Aubury"); + player.nextChat = 236; + break; + case 236: + itemMessage1("Aubury gives you the research notes.", 290, 1); + player.getItemAssistant().addOrDropItem(290, 1); + player.nextChat = 237; + break; + case 237: + sendNpcChat1( + "Thank you, now you should head back to Sedridor and tell him your discoveries.", + player.talkingNpc, "Aubury"); + player.nextChat = 0; + break; + case 238: + sendNpcChat2( + "Welcome, adventure to the world-renowed Wizards Tower.", + "How may i help you?", player.talkingNpc, "Sedridor"); + player.nextChat = 239; + break; + case 239: + sendNpcChat2("Ah, " + player.playerName + ". How goes your quest?", + "Have you delivered the research notes to my friend yet?", + player.talkingNpc, "Sedridor"); + player.nextChat = 240; + break; + case 240: + sendPlayerChat1("Yes, I have. He gave me some research notes to pass on to you."); + player.nextChat = 241; + break; + case 241: + sendNpcChat1("May I have them?", player.talkingNpc, "Sedridor"); + player.nextChat = 242; + break; + case 242: + sendPlayerChat1("Sure. I have them here."); + player.nextChat = 243; + break; + case 243: + sendNpcChat2( + "You have been nothing but helpful, adventured.", + "In return, I can let you in on the secret of our research.", + player.talkingNpc, "Sedridor"); + player.nextChat = 245; + break; + case 245: + sendNpcChat2( + "Many centuries ago, the wizards of the Wizards Tower learnt the secret of creating runes,", + "which allowed them to cast magic very easily.", + player.talkingNpc, "Sedridor"); + player.nextChat = 247; + break; + case 247: + sendNpcChat3( + "But, when this tower was burnt down, the sercret of creating runes was lost with it...", + "or so I thought.", + "Some months ago, while searching these ruins for information, ", + player.talkingNpc, "Sedridor"); + player.nextChat = 248; + break; + case 248: + sendNpcChat2( + "I came upon a scroll that made refrence to a magical rock", + "deep in the ice fields of the north.", player.talkingNpc, + "Sedridor"); + player.nextChat = 249; + break; + case 249: + sendNpcChat3( + "This rock was called the rune essence by those magicians who studied it's powers.", + "Apparently, by simply breaking a chunk for it,", + "a rune could be fashioned and taken to certain", + player.talkingNpc, "Sedridor"); + player.nextChat = 250; + break; + case 250: + sendNpcChat3( + "magical altars that were scattered across the land.", + "Now, this is an intersting little peice of history,", + "not much use to us since we do not have access to this rune essence", + player.talkingNpc, "Sedridor"); + player.nextChat = 251; + break; + case 251: + sendNpcChat2( + "teleportations spell that he had never come across before, When cast,", + "it took him to a strange rock, yet it felt strangly familiar.", + player.talkingNpc, "Sedridor"); + player.nextChat = 252; + break; + case 252: + sendNpcChat3( + "As I'm sure you have guessed, he had discovered a spell to the mythical rune essence.", + "As soon as he told me of this,", + "I saw the importance of the find.", player.talkingNpc, + "Sedridor"); + player.nextChat = 253; + break; + case 253: + sendNpcChat2( + "For, if we could find the altars spoken of in the ancient texts", + "we would once more be able to create runes as our ancestors had done!", + player.talkingNpc, "Sedridor"); + player.nextChat = 254; + break; + case 254: + sendPlayerChat1("I'm still not sure how I fit into this little story of yours."); + player.nextChat = 255; + break; + case 255: + sendNpcChat3( + "You haven't guessed?", + "This talisman you brough me is the key to the elemental altar of air!", + "When you hold it, it directs you to", player.talkingNpc, + "Sedridor"); + player.nextChat = 256; + break; + case 256: + sendNpcChat3("the entrance of the long-forgotten Air Altar.", + "By bringing peices of the rune essence the Air Altar,", + "you will be able to fashion your own air runes", + player.talkingNpc, "Sedridor"); + player.nextChat = 257; + break; + case 257: + sendNpcChat3( + "That's not all!", + "By finding other talismans similar to his one,", + "you will eventually be able to craft every rune that is available in this world, jus", + player.talkingNpc, "Sedridor"); + player.nextChat = 258; + break; + case 258: + sendNpcChat3( + "as our ancestors did.", + "I cannot stress enough what find this is!", + "Now, due to the risks invovled in letting this mighty power fall into the wrong hands.", + player.talkingNpc, "Sedridor"); + player.nextChat = 259; + break; + case 259: + sendNpcChat3( + "I will keep the teleport spell to the rune essence a closely guarded secret.", + "This means that, if any evil power should discover the talismans required to enter the emental temples,", + "we will be able to prevent their", player.talkingNpc, + "Sedridor"); + player.nextChat = 260; + break; + case 260: + sendNpcChat3( + "access to the rune essence.", + "I know not where the altars are located, not do I know where the talismans have been scattered,", + "but now return your air talisman.", player.talkingNpc, + "Sedridor"); + player.nextChat = 261; + break; + case 261: + sendNpcChat1( + "Find the Air Altar and you will be able to craft you blank runes into air runes at will.", + player.talkingNpc, "Sedridor"); + player.nextChat = 262; + break; + case 262: + sendNpcChat2( + "Any time you wish to visit the rune essence,", + "speak to me or Aubury and we will open a portal to that mystical place.", + player.talkingNpc, "Sedridor"); + player.nextChat = 264; + break; + case 264: + sendPlayerChat1("So, only you and Aubury know the teleport spell to the rune essence?"); + player.nextChat = 266; + break; + case 266: + sendNpcChat2( + "No, there are others. When you speak to them,", + "they will know you and grant you access to that place when asked.", + player.talkingNpc, "Sedridor"); + player.nextChat = 267; + break; + case 267: + sendNpcChat2( + "Use the air talisman to locate the Air Altar and use any further talismans you find to locate the other altars.", + "Now, my research notes please?", player.talkingNpc, + "Sedridor"); + player.nextChat = 268; + break; + case 268: + itemMessage1( + "You give the research notes to Sedrdior. He gives you an air talisman.", + 290, 1); + player.getItemAssistant().deleteItem(290, 1); + player.runeMist = 4; + QuestRewards.runeFinish(player); + player.nextChat = 0; + break; + case 269: + sendPlayerChat1("Hello, are you ok?"); + player.nextChat = 270; + break; + case 270: + sendNpcChat2("Do I look ok?", "Those kid's drive me crazy.", + player.talkingNpc, "Gertrude"); + player.nextChat = 271; + break; + case 271: + sendNpcChat1("I'm sorry. It's just that I've lost her.", + player.talkingNpc, "Gertrude"); + player.nextChat = 272; + break; + case 272: + sendPlayerChat1("Lost whom?"); + player.nextChat = 273; + break; + case 273: + sendNpcChat1("Fluffs, poor Fluffs, She never hurt anyone.", + player.talkingNpc, "Gertrude"); + player.nextChat = 274; + break; + case 274: + sendPlayerChat1("Who's Fluffs?"); + player.nextChat = 275; + break; + case 275: + sendNpcChat4("My beloved feline friend, Fluffs.", + "She's been purring by my side for almost a decade.", + "Could you go and search for her while", + "I take care of the children?", player.talkingNpc, + "Gertrude"); + player.nextChat = 276; + break; + case 276: + sendOption3( + "Well, I suppose I could though I'd need more details.", + "What's in it for me?", + "Sorry, I'm too busy to play per rescue."); + player.dialogueAction = 60; + break; + case 277: // 9167 + sendPlayerChat1("Well, I suppose I could though I'd need more details."); + player.nextChat = 280; + break; + case 278: // 9169 + sendPlayerChat1("Sorry I'm too busy to play per rescue."); + player.nextChat = 0; + break; + case 279: // 9168 + sendNpcChat1( + "Come back with a better attitude a maybe you will find out.", + player.talkingNpc, "Gertrude"); + player.nextChat = 0; + break; + case 280: + sendNpcChat2("Really? Thank you so much!", + "I really have no idea where she could be!", + player.talkingNpc, "Gertrude"); + player.gertCat = 1; + player.nextChat = 281; + break; + case 281: + sendNpcChat2( + "I think my sons, Shilop and Wilough, saw the cat last.", + "They'll be out in the marketplace.", player.talkingNpc, + "Gertrude"); + player.nextChat = 282; + break; + case 282: + sendPlayerChat2("The marketplace? Which one would that be?", + "It would help to know what they get up to, as well."); + player.nextChat = 283; + break; + case 283: + sendNpcChat4( + "Really? Well, I generally let them do what they want,", + "so I've no idea exactly what they would be doing.", + "They are good lads, though. I'm sure, they are", + "just watching the passers-by in Varrock Marketplace.", + player.talkingNpc, "Gertrude"); + player.nextChat = 284; + break; + case 284: + sendNpcChat1("Oh, to be young and carefree again!", + player.talkingNpc, "Gertrude"); + player.nextChat = 285; + break; + case 285: + sendPlayerChat2( + "I'll see what I can do. Two young lads in Varrock.", + "I hope that there's no school trip passing when I arrive."); + QuestAssistant.sendStages(player); + player.nextChat = 0; + break; + case 286: + sendPlayerChat1("Hello there, I've been looking for you."); + player.nextChat = 287; + break; + case 287: + sendNpcChat1("I didn't mean to take it! I just forgot to pay.", + player.talkingNpc, "Wilough"); + player.nextChat = 288; + break; + case 288: + sendPlayerChat2("What?", + "I'm trying to help your mum find some cat called Fluffs."); + player.nextChat = 289; + break; + case 289: + sendNpcChat4("Ohh...well, in that case I might be able to help.", + "Fluffs followed me to my super secret hideout.", + "I haven't seen her since.", + "She's probably off eating small creatures somewhere.", + player.talkingNpc, "Wilough"); + player.nextChat = 290; + break; + case 290: + sendPlayerChat2("Where is this secret hideout?", + "I really need to find that cat for you mum."); + player.nextChat = 291; + break; + case 291: + sendNpcChat2("If I told you that, It wouldn't be a secret.", + "What if I need to escape for the law? I need a hideout.", + player.talkingNpc, "Wilough"); + player.nextChat = 292; + break; + case 292: + sendPlayerChat2("From my limited knowledge of law,", + "they are not usually involved in manhunts for children."); + player.nextChat = 293; + break; + case 293: + sendNpcChat3( + "Well it's still mine anyway, we need a place to relax,", + "sometimes.", + "Those two little brothers at the house are just such babies.", + player.talkingNpc, "Wilough"); + player.nextChat = 294; + break; + case 294: + sendOption3( + "Tell me sonny, or I will inform you are a pair of criminals.", + "What will make you tell me?", + "Well never mind, it's Fluffs loss."); + player.dialogueAction = 61; + break; + case 295: // 9167 + sendNpcChat1("No. Where not criminals.", player.talkingNpc, + "Wilough"); + player.nextChat = 0; + break; + case 296: // 9169 + sendPlayerChat1("Well never mind, it's Fluffs loss."); + player.nextChat = 0; + break; + case 297: // 9168 + sendPlayerChat1("What will make you tell me?"); + player.nextChat = 298; + break; + case 298: + sendNpcChat1("Well...now you ask, I am a bit short on cash.", + player.talkingNpc, "Wilough"); + player.nextChat = 299; + break; + case 299: + sendPlayerChat1("How much?"); + player.nextChat = 300; + break; + case 300: + sendNpcChat1("10 coins.", player.talkingNpc, "Wilough"); + player.nextChat = 301; + break; + case 301: + sendNpcChat1("10 coins?!", player.talkingNpc, "Shilop"); + player.nextChat = 302; + break; + case 302: + sendNpcChat1("I'll handle this.", player.talkingNpc, "Shilop"); + player.nextChat = 303; + break; + case 303: + sendNpcChat1("100 coins should cover it.", player.talkingNpc, + "Shilop"); + player.nextChat = 304; + break; + case 304: + sendPlayerChat2("100 coins!", + "What sort of expensive things do you need that badly?"); + player.nextChat = 305; + break; + case 305: + sendNpcChat2("Well I don't like chocolate", + "and have you seen how much sweets cost to buy?", + player.talkingNpc, "Shilop"); + player.nextChat = 306; + break; + case 306: + sendPlayerChat2("Why should I pay you then", + "can you answer that as easily?"); + player.nextChat = 307; + break; + case 307: + sendNpcChat4("Obviously you shouldn't pay that much,", + "but I won't help otherwise. I never liked,", + "that cat anyway, fussy scratchy thing it is", + "so what do you say?", player.talkingNpc, "Shilop"); + player.nextChat = 308; + break; + case 308: + sendOption2("I'm not paying you a thing.", "Okay then, I'll pay."); + player.dialogueAction = 62; + break; + case 309: // 9158 + sendPlayerChat2("Okay then. I'll pay, but I'll want you,", + "to tell your mother what a nice person I am."); + player.nextChat = 310; + break; + case 310: + sendNpcChat1("What?", player.talkingNpc, "Shilop"); + player.nextChat = 311; + break; + case 311: + sendPlayerChat2( + "I'll want you to tell your mother what a nice person I am", + "so she rewards me for this search."); + player.nextChat = 312; + break; + case 312: + sendNpcChat1("It's a deal.", player.talkingNpc, "Shilop"); + player.nextChat = 313; + break; + case 313: + if (player.getItemAssistant().playerHasItem(995, 100)) { + sendStatement("You give the lad 100 coins."); + player.getItemAssistant().deleteItem(995, 100); + player.nextChat = 314; + player.gertCat = 2; + } else { + sendStatement("I don't have 100 coin's I should come back."); + player.nextChat = 0; + } + break; + case 314: + sendPlayerChat1("There you go, now where did you see Fluffs?"); + player.nextChat = 315; + break; + case 315: + sendNpcChat4( + "We hide out at the lumber mill to the northeast.", + "Just beyond the Jolly Beat Inn.", + "I saw Fluffs running around in there. Well,", + "not so much running as plodding lazily, you get the point.", + player.talkingNpc, "Wilough"); + player.nextChat = 316; + break; + case 316: + sendPlayerChat1("Anything else?"); + player.nextChat = 317; + break; + case 317: + sendNpcChat4( + "Well, technically you are tresspassing inside there but noone seems to care.", + "You'll have to find the broken fence to get in.", + "It will be a bit of a squeeze for a grown-up but", + "I'm sure you can manage that.", player.talkingNpc, + "Wilough"); + player.nextChat = 0; + break; + case 318: + sendStatement("Mew"); + player.nextChat = 319; + break; + case 319: + sendPlayerChat1("Progress atleast."); + player.nextChat = 321; + break; + case 321: + sendStatement("Fluffs laps up the milk greedly. The she mews at you again."); + player.nextChat = 0; + break; + case 322: + sendStatement("Mew!"); + player.nextChat = 323; + break; + case 323: + sendPlayerChat1("Progress atleast."); + player.nextChat = 324; + break; + case 324: + sendStatement2("Fluffs devours the dougle sardine greedly.", "Then she mews at you again."); + player.nextChat = 0; + break; + case 325: + sendStatement2("Fluffs seems afraid to leave.", "In the lumberyard below you can hear the mewing."); + player.nextChat = 0; + break; + case 326: + sendNpcChat1("Purr...", player.talkingNpc, "Fluffs"); + player.nextChat = 327; + break; + case 327: + sendStatement("Fluffs and her offspring will now live happily."); + player.nextChat = 0; + break; + case 328: + sendPlayerChat2( + "Hello Gertrude. Fluffs has run off with her lost kittens.", + "That I have now returned to her."); + player.nextChat = 329; + break; + case 329: + sendNpcChat4( + "You're Back!", + "Thank you, thank you!", + "Fluffs just came back. I think she was upset,", + "because she couldn't find her kittens.", + player.talkingNpc, "Gertrude"); + player.nextChat = 330; + break; + case 330: + sendStatement("Gertrude thanks you heartily."); + player.nextChat = 331; + break; + case 331: + sendNpcChat2("If you wouldn't have found her kittens,", + "then they would have died out there.", player.talkingNpc, + "Gertrude"); + player.nextChat = 332; + break; + case 332: + sendPlayerChat1("That's okay, I like to do my bit."); + player.nextChat = 333; + break; + case 333: + sendNpcChat3( + "I don't know how to thank you.", + "I have no real material possesions, but I do have kittens.", + "I can really only look after one or two.", + player.talkingNpc, "Gertrude"); + player.nextChat = 334; + break; + case 334: + sendPlayerChat1("Well, if one needs a home."); + player.nextChat = 335; + break; + case 335: + sendNpcChat4("I would sell one to my couzin in West Aroudnge.", + "I hear there's a " + " epidemic there,", + "but it's too far for me to travel.", + "With all my boys and all.", player.talkingNpc, "Gertrude"); + player.nextChat = 336; + break; + case 336: + sendNpcChat1("Here you go look after her and thank you.", + player.talkingNpc, "Gertrude"); + player.nextChat = 337; + break; + case 337: + sendStatement("Gertrude gives you a kitten."); + QuestRewards.gertFinish(player); + player.nextChat = 0; + break; + case 338: + sendNpcChat1("Welcome to the church of holy Saradomin..", + player.talkingNpc, "Father Aereck"); + player.nextChat = 339; + break; + case 339: + sendOption4("Who's Saradomin?", "Nice place you've got here", + "I'm looking for a quest", "Never Mind"); + player.dialogueAction = 32; + break; + case 340:// 9178 + sendNpcChat1("None of your buisness.", player.talkingNpc, + "Father Aereck"); + player.nextChat = 0; + break; + case 341:// 9179 + sendPlayerChat1("Nice place you've got here."); + player.nextChat = 0; + break; + case 342:// 9180 + sendPlayerChat1("I'm looking for a quest."); + player.nextChat = 343; + break; + case 343: + sendNpcChat1("That's lucky, I need someone to do a quest for me.", + player.talkingNpc, "Father Aereck"); + player.nextChat = 344; + break; + case 344: + sendPlayerChat1("Okay, let me help then."); + player.nextChat = 345; + break; + case 345: + sendNpcChat3( + "Thank you. The problem is there's,", + "a ghost in the graveyard crypt just south of this church.", + "I would like you to get rid of it.", player.talkingNpc, + "Father Aereck"); + player.nextChat = 346; + break; + case 346: + sendNpcChat2("You'll need the help of my friend, Father Urhney,", + "who is a bit of a ghost expert.", player.talkingNpc, + "Father Aereck"); + player.nextChat = 347; + break; + case 347: + sendNpcChat2( + "He's currently living in a little shack to the south of,", + "the Lumbridge Swamp near the coast.", player.talkingNpc, + "Father Aereck"); + player.nextChat = 348; + break; + case 348: + sendNpcChat2("My name is Father Aereck, by the way.", + "Pleased to meet you.", player.talkingNpc, "Father Aereck"); + player.nextChat = 349; + break; + case 349: + sendPlayerChat1("Likewise."); + player.nextChat = 350; + break; + case 350: + sendNpcChat3("Take care traveling through the swamps.", + "To get there just follow the path south,", + "through the graveyard.", player.talkingNpc, + "Father Aereck"); + player.nextChat = 351; + player.restGhost = 1; + QuestAssistant.sendStages(player); + break; + case 351: + sendPlayerChat1("I will thanks."); + player.nextChat = 0; + break; + case 352: + sendNpcChat1("Go away! I'm meditating.", player.talkingNpc, + "Father Urhney"); + player.nextChat = 353; + break; + case 353: + sendOption4("Well, that's friendly", + "Father Aereck sent me to talk to you", + "I've come to repossess your house", "Never Mind"); + player.dialogueAction = 33; + break; + case 354:// 9178 + sendPlayerChat1("Well, that's friendly."); + player.nextChat = 0; + break; + case 355: // 9180 + sendPlayerChat1("I've come to repossess your house."); + player.nextChat = 0; + break; + case 356: // 9179 + sendPlayerChat1("Father Aereck sent me to talk to you."); + player.nextChat = 357; + break; + case 357: + sendNpcChat2("I suppose I better talk to you then.", + "What has he got himself into this time?", + player.talkingNpc, "Father Urhney"); + player.nextChat = 358; + break; + case 358: + sendOption2("A ghost is haunting his graveyard", + "You mean he gets into lots of problems?"); + player.dialogueAction = 34; + break; + case 359: // 9158 + sendPlayerChat1("You mean he gets into lots of problems?"); + player.nextChat = 360; + break; + case 360: + sendNpcChat1("Yes, he does. A ghost is haunting his graveyard.", + player.talkingNpc, "Father Urhney"); + player.nextChat = 0; + break; + case 361: + sendPlayerChat1("A ghost is haunting his graveyard"); + player.nextChat = 362; + break; + case 362: + sendNpcChat1("Oh, the silly fool.", player.talkingNpc, + "Father Urhney"); + player.nextChat = 363; + break; + case 363: + sendNpcChat2("I leave town for five months,", + "and he's already having problems.", player.talkingNpc, + "Father Urhney"); + player.nextChat = 364; + break; + case 364: + sendNpcChat1("*sigh*", player.talkingNpc, "Father Urhney"); + player.nextChat = 365; + break; + case 365: + sendNpcChat3("Well I can't go back and exorcise it", + "I vowed not to leave this place until,", + "I've spent a full two years praying and meditating.", + player.talkingNpc, "Father Urhney"); + player.nextChat = 366; + break; + case 366: + sendNpcChat1( + "I'll tell you what I can do though take this amulet.", + player.talkingNpc, "Father Urhney"); + player.nextChat = 367; + player.getItemAssistant().addOrDropItem(552, 1); + player.restGhost = 2; + break; + case 367: + sendNpcChat1("It's a ghost speak amulet.", player.talkingNpc, + "Father Urhney"); + player.nextChat = 368; + break; + case 368: + sendNpcChat3( + "It's called that because, when you wear it, you can,", + "speak to ghosts. Many ghosts are doomed to remain in this,", + "world because they have some important task left uncompleted.", + player.talkingNpc, "Father Urhney"); + player.nextChat = 369; + break; + case 369: + sendNpcChat3( + "If you know what this task is, you can get rid of the ghost.", + "I'm not making any guarentees, mind you,", + "but it's the best I can do right now.", player.talkingNpc, + "Father Urhney"); + player.nextChat = 370; + break; + case 370: + sendPlayerChat1("Thank you. I'll give it a try."); + player.nextChat = 0; + break; + case 371: + sendPlayerChat1("Hello ghost how are you?"); + player.nextChat = 372; + break; + case 372: + sendNpcChat1("Not very good, actually.", player.talkingNpc, + "Restless Ghost"); + player.nextChat = 373; + break; + case 373: + sendPlayerChat1("What's the problem?"); + player.nextChat = 374; + break; + case 374: + sendNpcChat1("Did you just understand what I said?", + player.talkingNpc, "Restless Ghost"); + player.nextChat = 375; + break; + case 375: + sendOption4("Yep. Now, tell me what the problem is.", + "No, you sound like you're speaking nonsense to me.", + "Wow, this amulet works!", "Never mind."); + player.dialogueAction = 35; + break; + case 376: // 9179 + sendPlayerChat1("No, you sound like you're speaking nonsense to me."); + player.nextChat = 0; + break; + case 377: // 9180 + sendPlayerChat1("Wow, this amulet works!"); + player.nextChat = 0; + break; + case 378: // 9178 + sendPlayerChat1("Yep. Now, tell me what the problem is."); + player.nextChat = 379; + break; + case 379: + sendNpcChat2("Wow! This is incredible!", + "I didn't expect anyone to ever understand me!", + player.talkingNpc, "Restless Ghost"); + player.nextChat = 380; + break; + case 380: + sendPlayerChat1("Okay, okay, I can understand you."); + player.nextChat = 381; + break; + case 381: + sendPlayerChat1("But have you any idea why you're doomed to be a ghost?"); + player.nextChat = 382; + break; + case 382: + sendNpcChat1("Well, to be honest, I'm not sure.", + player.talkingNpc, "Restless Ghost"); + player.nextChat = 383; + break; + case 383: + sendPlayerChat2( + "I've been told that a certain task needs to be completed", + "before you can rest in peace."); + player.nextChat = 384; + break; + case 384: + sendNpcChat1("I should think it's because I've lost my head.", + player.talkingNpc, "Restless Ghost"); + player.nextChat = 385; + break; + case 385: + sendPlayerChat1("What? I can see your head perfectly fine. Well, see through it at least."); + player.nextChat = 386; + break; + case 386: + sendNpcChat4( + "No, no, I mean from my REAL body.", + "If you look in my coffin you'll see my corpse is without it's,", + "skull. Last thing I remember was being attacked by a warlock,", + "while I was mining. It was at the mine just south of this", + player.talkingNpc, "Restless Ghost"); + player.nextChat = 387; + break; + case 387: + sendNpcChat1("graveyard.", player.talkingNpc, "Restless Ghost"); + player.nextChat = 388; + player.restGhost = 3; + break; + case 388: + sendPlayerChat1("Okay. I'll try to get your skull back for you so you can rest in peace."); + player.nextChat = 0; + break; + case 389: + sendNpcChat1("Why me?...", player.talkingNpc, "Romeo"); + player.nextChat = 390; + break; + case 390: + sendNpcChat2("Why isn't she returning any of them...", + "Is it my hair...", player.talkingNpc, "Romeo"); + player.nextChat = 391; + break; + case 391: + sendOption2("What's wrong?", "Yes it's your hair"); + player.dialogueAction = 118; + break; + case 392: // 9158 + sendPlayerChat1("Haha yes it's your hair, get a haircut loser!"); + player.nextChat = 393; + break; + case 393: + sendNpcChat1("Tis' a sad world...", player.talkingNpc, "Romeo"); + player.nextChat = 0; + break; + case 394: // 9157 + sendPlayerChat1("What's wrong?"); + player.nextChat = 396; + break; + case 396: + sendNpcChat1("My Juliet..my poor poor Juliet", player.talkingNpc, + "Romeo"); + player.nextChat = 397; + break; + case 397: + sendNpcChat3("I've been trying to contact her all day", + "but the problem is...she won't return any", + "of my letters...", player.talkingNpc, "Romeo"); + player.nextChat = 398; + break; + case 398: + sendOption2("Why don't you just meet in person?", + "I might have to go now..."); + player.dialogueAction = 119; + break; + case 399: // 9157 + sendNpcChat1("Well you see...the problem is..", player.talkingNpc, + "Romeo"); + player.nextChat = 401; + break; + case 401: + sendNpcChat1("Her mother doesn't know we've been dating.", + player.talkingNpc, "Romeo"); + player.nextChat = 402; + break; + case 402: + sendNpcChat1( + "Can you please speak with Juliet and see what's going on?", + player.talkingNpc, "Romeo"); + player.nextChat = 403; + break; + case 403: + sendOption2("Yes I'll do so now", "Is that my fish calling me?"); + player.dialogueAction = 120; + break; + case 404:// 9158 + sendPlayerChat1("I might have to go now..."); + player.nextChat = 0; + break; + case 405: + sendPlayerChat1("Why not just meet her in person?"); + player.nextChat = 406; + break; + case 406: + sendPlayerChat1("Yeah anything to help a lover in need."); + player.nextChat = 407; + break; + case 407: + player.romeojuliet++; + QuestAssistant.sendStages(player); + sendNpcChat2("Great, Juliet is just in the house west of here", + "You will most likely find her upstairs.", + player.talkingNpc, "Romeo"); + player.nextChat = 0; + break; + case 408: + sendNpcChat1("Please speak to Juliet for me", player.talkingNpc, + "Romeo"); + player.nextChat = 0; + break; + case 409: + sendNpcChat1("How I long him...", player.talkingNpc, "Juliet"); + player.nextChat = 0; + break; + case 410: + sendNpcChat1("Please you have to go.", player.talkingNpc, "Juliet"); + player.nextChat = 411; + break; + case 411: + sendPlayerChat2("Wait, what's happening? Romeo has", + "been looking all over for you."); + player.nextChat = 412; + break; + case 412: + sendNpcChat1("I can't explain much. Please just go.", + player.talkingNpc, "Juliet"); + player.nextChat = 413; + break; + case 413: + sendNpcChat1("Take this...and go...", player.talkingNpc, "Juliet"); + player.getItemAssistant().addOrDropItem(755, 1); + player.romeojuliet++; + player.nextChat = 0; + break; + case 414: + sendNpcChat1("Just go...you shouldn't be here.", player.talkingNpc, + "Juliet"); + player.nextChat = 0; + break; + case 415: + sendNpcChat1( + "Hey did you talk to her yet?..How I long for Juliet.", + player.talkingNpc, "Romeo"); + player.nextChat = 416; + break; + case 416: + sendPlayerChat1("Yes she gave me this let---"); + player.nextChat = 417; + break; + case 417: + sendNpcChat1("Pass it here, pass it!", player.talkingNpc, "Romeo"); + player.getItemAssistant().deleteItem(755, 1); + player.nextChat = 418; + break; + case 418: + sendNpcChat3( + "Dear Romeo...sadly we can not see each other anymore", + "mother has been complaining on how you aren't the right", + "person.", player.talkingNpc, "Romeo"); + player.nextChat = 419; + break; + case 419: + sendNpcChat3("We come from two different classes..", + "I'm just some lonely Varrock girl, and", + "your a fine prince that travels around the world..", + player.talkingNpc, "Romeo"); + player.nextChat = 420; + break; + case 420: + sendNpcChat1("This is my goodbyes...Juliet...", player.talkingNpc, + "Romeo"); + player.nextChat = 0; + player.romeojuliet++; + player.romeojuliet++; + break; + case 421: + sendNpcChat1("Well have you spoken to her?", player.talkingNpc, + "Romeo"); + player.nextChat = 422; + break; + case 422: + sendPlayerChat2("She gave me a letter to give you..", + "Which I don't have on me"); + player.nextChat = 423; + break; + case 423: + sendNpcChat2("Please bring it as soon as possible...", + "How I miss my Juliet", player.talkingNpc, "Romeo"); + player.nextChat = 0; + break; + case 424: + sendNpcChat1("She just...", player.talkingNpc, "Romeo"); + player.nextChat = 425; + break; + case 425: + sendNpcChat1("What have I done wrong...", player.talkingNpc, + "Romeo"); + player.nextChat = 426; + break; + case 426: + sendNpcChat1("My Juliet...", player.talkingNpc, "Romeo"); + player.nextChat = 427; + break; + case 427: + sendPlayerChat2("Are you just going to give up??", + "What about love?"); + player.nextChat = 428; + break; + case 428: + sendNpcChat1("No...", player.talkingNpc, "Romeo"); + player.nextChat = 429; + break; + case 429: + sendNpcChat2("No, your right. Please", + "speak to the witch just south west of here.", + player.talkingNpc, "Romeo"); + player.nextChat = 430; + break; + case 430: + sendNpcChat1("She'll know what to do.", player.talkingNpc, "Romeo"); + player.nextChat = 0; + player.romeojuliet++; + break; + case 431: + sendNpcChat1("Speak to Winelda. She's south west.", + player.talkingNpc, "Romeo"); + player.nextChat = 0; + break; + case 432: + sendNpcChat1("So I see that prince sent you here.", + player.talkingNpc, "Winelda"); + player.nextChat = 433; + break; + case 433: + sendPlayerChat1("Wait how did you know?"); + player.nextChat = 434; + break; + case 434: + sendNpcChat2("I'm a witch..I've studied the arts", + "of magic for years.", player.talkingNpc, "Winelda"); + player.nextChat = 435; + break; + case 435: + sendNpcChat2("I will help you. This one time.", + "But next time I won't be so kind.", player.talkingNpc, + "Winelda"); + player.nextChat = 436; + break; + case 436: + sendOption2("So what do I need to do?", + "I don't think I'm up for this anymore..."); + player.dialogueAction = 121; + break; + case 437:// 9158 + sendPlayerChat1("This is just getting more twisted...I have to go..."); + player.nextChat = 0; + break; + case 438:// 9157 + sendPlayerChat1("So what do you need me to do?"); + player.nextChat = 439; + break; + case 439: + sendNpcChat1("You need, 1 rat's tail, 1 bone, and a vial of water", + player.talkingNpc, "Winelda"); + player.nextChat = 440; + break; + case 440: + sendNpcChat2("Bring those items here and I'll make you a potion", + "that makes anyone tell the truth.", player.talkingNpc, + "Winelda"); + player.nextChat = 0; + player.romeojuliet++; + break; + case 441: + sendNpcChat1("You need, 1 rats tail, 1 bone, and a vial of water", + player.talkingNpc, "Winelda"); + player.nextChat = 442; + break; + case 442: + sendNpcChat1("Speak to me when you have all 3 items.", + player.talkingNpc, "Winelda"); + player.nextChat = 0; + break; + case 443: + sendNpcChat1("What did the witch say?", player.talkingNpc, "Romeo"); + player.nextChat = 444; + break; + case 444: + sendPlayerChat2("She wants me to bring her 3 items", + "Then she'll speak to me"); + player.nextChat = 445; + break; + case 445: + sendNpcChat1("Which items if you don't mind me asking?", + player.talkingNpc, "Romeo"); + player.nextChat = 446; + break; + case 446: + sendPlayerChat1("Oh just a rat's"); + player.nextChat = 448; + break; + case 447: + sendNpcChat1("Nevermind.", player.talkingNpc, "Romeo"); + player.nextChat = 0; + break; + case 448: + sendNpcChat1("I'll take that", player.talkingNpc, "Winelda"); + player.getItemAssistant().deleteItem(300, 1); + player.getItemAssistant().deleteItem(227, 1); + player.getItemAssistant().deleteItem(526, 1); + player.nextChat = 449; + break; + case 449: + sendNpcChat1("Azari-Ahmi-Grantai!!", player.talkingNpc, "Winelda"); + player.nextChat = 450; + break; + case 450: + sendNpcChat1("Here take this", player.talkingNpc, "Winelda"); + player.romeojuliet++; + player.getItemAssistant().addOrDropItem(4836, 1); + player.nextChat = 451; + break; + case 451: + sendNpcChat1("Tell Juliet to drink this", player.talkingNpc, + "Winelda"); + player.nextChat = 453; + break; + case 453: + sendPlayerChat1("Wait but will Juliet actually drink it?"); + player.nextChat = 454; + break; + case 454: + sendNpcChat3("I don't know?!", "What do I look like some kind of", + "fortune teller?", player.talkingNpc, "Winelda"); + player.nextChat = 455; + break; + case 455: + sendNpcChat1("Tell her it's soup or something.", player.talkingNpc, + "Winelda"); + player.nextChat = 456; + break; + case 456: + sendPlayerChat1("Wow she's polite..."); + player.nextChat = 0; + break; + case 457: + sendNpcChat1("I told you to leave....", player.talkingNpc, "Juliet"); + player.nextChat = 458; + break; + case 458: + sendPlayerChat1("Here take this."); + player.nextChat = 459; + break; + case 459: + sendStatement("Juliet drinks the potion."); + player.getItemAssistant().deleteItem(4836, 1); + player.nextChat = 460; + break; + case 460: + sendNpcChat1("What was that..", player.talkingNpc, "Juliet"); + player.nextChat = 461; + break; + case 461: + sendPlayerChat1("Now tell me why you've been ignoring Romeo!"); + player.nextChat = 462; + break; + case 462: + sendNpcChat1("Well...tomorrow's Romeos birthday.", + player.talkingNpc, "Juliet"); + player.nextChat = 463; + break; + case 463: + sendNpcChat3("Mama and I wanted to show Romeo that", + "Even though he's richer then us we still", + "care for him.", player.talkingNpc, "Juliet"); + player.nextChat = 464; + break; + case 464: + sendPlayerChat1("Wait was that it?"); + player.nextChat = 465; + break; + case 465: + sendNpcChat2("Yeah, I've been telling Mother to act", + "grouchy with him.", player.talkingNpc, "Juliet"); + player.nextChat = 466; + break; + case 466: + sendNpcChat2("That way we can throw him off easily.", + "that's what a surprise is.", player.talkingNpc, "Juliet"); + player.nextChat = 467; + break; + case 467: + sendPlayerChat1("I should get going"); + player.nextChat = 0; + player.romeojuliet++; + break; + case 468: + sendNpcChat1("Wait your not going to tell Romeo are you?", + player.talkingNpc, "Juliet"); + player.nextChat = 0; + break; + case 469: + sendNpcChat1("So? What's going on with Juliet?", player.talkingNpc, + "Romeo"); + player.nextChat = 470; + break; + case 470: + sendPlayerChat2("She's been planning a surprise", + "birthday party for you all along"); + player.nextChat = 471; + break; + case 471: + sendPlayerChat2("Her mother was in on in too. They", + "just wanted to show that they're always there for you"); + player.nextChat = 472; + break; + case 472: + sendNpcChat1("Wait but my birthday isn't till next week", + player.talkingNpc, "Romeo"); + player.nextChat = 473; + break; + case 473: + sendNpcChat2("That was very thoughtful of her", + "Thank you young traveller for all your help", + player.talkingNpc, "Romeo"); + player.nextChat = 474; + break; + case 474: + QuestRewards.julietFinish(player); + sendNpcChat2("Juliet and I have been great ever", + "since you've helped. Thank you adventurer", + player.talkingNpc, "Romeo"); + player.romeojuliet = 9; + player.nextChat = 0; + break; + case 475: + if (player.romeojuliet == 8) { + player.nextChat = 474; + } + break; + case 211: + sendOption2("Quest.", "Buy Wool."); + player.dialogueAction = 168; + break; + case 476: + sendNpcChat2( + "Praise Saradomin! He has Brought you here to save us", + "all!", player.talkingNpc, "Morgan"); + player.nextChat = 477; + break; + case 477: + sendPlayerChat1("Wha-"); + player.nextChat = 478; + break; + case 478: + sendNpcChat3("He has guided your steps to my door, So that", + "I may beseech you to save my village from a terrible", + "threat.", player.talkingNpc, "Morgan"); + player.nextChat = 479; + break; + case 479: + sendOption2("Why don't you save your own village?", + "What terrible threat?"); + player.dialogueAction = 29; + break; + case 480:// 9157 + sendPlayerChat1("Why don't you save your own village?"); + player.nextChat = 0; + break; + case 481:// 9158 + sendPlayerChat1("What terrible threat?"); + player.nextChat = 482; + break; + case 482: + sendNpcChat3( + "Our village is plagued by a vampire. He visits us", + "frequently and demands blood payments or he will,", + "terroise us all!", player.talkingNpc, "Morgan"); + player.nextChat = 483; + break; + case 483: + sendPlayerChat2("The vampire showed up all of a sudden", + "and started attacking your village?"); + player.nextChat = 484; + break; + case 484: + sendNpcChat3("I don't know, I just moved here with my wife.", + "We'd move on again,", + "but we're down on our luck and can't afford to.", + player.talkingNpc, "Morgan"); + player.nextChat = 485; + break; + case 485: + sendNpcChat3( + "Besides, I don't want to abandon other innocents to this,", + "fate. This could be a good community.", + "If only that vampire would leave us.", player.talkingNpc, + "Morgan"); + player.nextChat = 486; + break; + case 486: + sendNpcChat1("Will you help me, brave adventurer?", + player.talkingNpc, "Morgan"); + player.nextChat = 487; + break; + case 487: + sendOption2("Yes", "No"); + player.dialogueAction = 30; + break; + case 488:// 9157 + sendPlayerChat1("Yes I'll help you."); + player.vampSlayer = 1; + QuestAssistant.sendStages(player); + player.nextChat = 489; + break; + case 489: + sendNpcChat4("Wonderful! You will succeed.,", + "I'm sure of it you are very brave to take this on.", + "But you should speak to my friend Harlow before you,", + "do anything else.", player.talkingNpc, "Morgan"); + player.nextChat = 490; + break; + case 490: + sendPlayerChat1("Who is this harlow?"); + player.nextChat = 491; + break; + case 491: + sendNpcChat4("He is a retired vampire slayer!,", + "I met him when i was a missionaire, long ago.", + "He will be able to advise you on the best methods to,", + "vanquish the vampire.", player.talkingNpc, "Morgan"); + player.nextChat = 492; + break; + case 492: + sendPlayerChat2("You already know a vampire slayer?", + "What do you need me for?"); + player.nextChat = 493; + break; + case 493: + sendNpcChat3( + "Harlow is... past his prime.. He's seen too many evil things in", + "his life, and, to forget that, he drinks himself into,", + "oblivion. I fear he will slayer vampires no more.", + player.talkingNpc, "Morgan"); + player.nextChat = 494; + break; + case 494: + sendPlayerChat1("Where can i find this Harlow?"); + player.nextChat = 495; + break; + case 495: + sendNpcChat4( + "He spends his time at the Blue Moon Inn, located in,", + "Varrock. If you enter Varrock from the south it is,", + "the second building on your right. I'm sure,", + "it's filled with lively people, so you shouldn't miss it.", + player.talkingNpc, "Morgan"); + player.nextChat = 496; + break; + case 496: + sendPlayerChat1("Okay, I'll go find Harlow."); + player.nextChat = 497; + break; + case 497: + sendNpcChat1("May Saradomin protect you, my friend!", + player.talkingNpc, "Morgan"); + player.nextChat = 0; + break; + case 498: + sendNpcChat1("Buy me a drink please.", player.talkingNpc, + "Doctor Harlow"); + player.nextChat = 499; + break; + case 499: + sendOption4("No you've had enough.", + "Are you Dr Harlow, the famous vampire slayer?", + "You couldn't possibly be Dr Harlow, your just a drunk.", + "Never mind."); + player.dialogueAction = 31; + break; + case 500:// 9178 + sendPlayerChat1("No you've had enough."); + player.nextChat = 0; + break; + case 501:// 9180 + sendPlayerChat1("You couldn't possibly be Dr Harlow, your just a drunk."); + player.nextChat = 0; + break; + case 502:// 9179 + sendPlayerChat1("Are you Dr harlow, the famous vampire Slayer?"); + player.nextChat = 503; + break; + case 503: + sendNpcChat1("Dependish whose is ashking.", player.talkingNpc, + "Doctor Harlow"); + player.nextChat = 504; + break; + case 504: + sendPlayerChat2("Your friend Morgan sent me.", + "He said you could teach me how to slay a vampire."); + player.nextChat = 505; + break; + case 505: + sendNpcChat2("Shure I can teach you.", + "I wash the best vampire shhlayer ever.", + player.talkingNpc, "Doctor Harlow"); + player.nextChat = 506; + break; + case 506: + sendNpcChat1("Buy me a beer and I'll teach you.", + player.talkingNpc, "Doctor Harlow"); + player.nextChat = 507; + break; + case 507: + sendPlayerChat2( + "Your good friend Morgan is living in fear of a vampire,", + "and all you think about is beer?"); + player.nextChat = 508; + break; + case 508: + sendNpcChat1("Buy ush a drink anyway.", player.talkingNpc, + "Doctor Harlow"); + player.nextChat = 509; + break; + case 509: + if (player.getItemAssistant().playerHasItem(1917, 1)) { + sendPlayerChat1("Okay, here you go."); + player.getItemAssistant().deleteItem(1917, 1); + player.nextChat = 510; + } else { + sendPlayerChat1("Okay, let me get one."); + player.nextChat = 0; + } + break; + case 510: + sendNpcChat1("Cheersh, matey.", player.talkingNpc, "Doctor Harlow"); + player.vampSlayer = 2; + player.nextChat = 511; + break; + case 511: + sendPlayerChat1("So tell me how to kill vampires then."); + player.nextChat = 512; + break; + case 512: + sendNpcChat1( + "Yes, yes, vampires, I was very good at killing em once.", + player.talkingNpc, "Doctor Harlow"); + player.nextChat = 513; + break; + case 513: + sendNpcChat2("Vampire slaying is not to be undertaken lighty.", + "You must go in prepared, or you will die.", + player.talkingNpc, "Doctor Harlow"); + player.nextChat = 514; + break; + case 514: + sendNpcChat1("*Sigh*", player.talkingNpc, "Doctor Harlow"); + player.nextChat = 515; + break; + case 515: + sendNpcChat3( + "A stake is an essential tool for any vampire slayer. The,", + "stake must be used in the final blow againt the vampire.", + "Or his dark magic will regenerate him to full health.", + player.talkingNpc, "Doctor Harlow"); + player.nextChat = 516; + break; + case 516: + sendNpcChat1("I always carry a spare, so you can have one.", + player.talkingNpc, "Doctor Harlow"); + player.getItemAssistant().addOrDropItem(1549, 1); + player.nextChat = 517; + break; + case 517: + sendNpcChat2( + "You'll need a special hammer as well, to drive it in in", + "properly.", player.talkingNpc, "Doctor Harlow"); + player.nextChat = 518; + break; + case 518: + sendNpcChat1("Hmm, I think i have a spare hammer you can have.", + player.talkingNpc, "Doctor Harlow"); + player.getItemAssistant().addOrDropItem(2347, 1); + player.vampSlayer = 3; + player.nextChat = 519; + break; + case 519: + sendNpcChat2("One last thing. It's wise to carry garlic with you,", + "vampires are slightly weakened if they can smell garlic.", + player.talkingNpc, "Doctor Harlow"); + player.nextChat = 520; + break; + case 520: + sendNpcChat4("Garlic is pretty common,", + "I know I always advised Morgan to keep a supply,", + "so you might be able to get some from him.", + "If not, I know they it is in Port Sarim.", + player.talkingNpc, "Doctor Harlow"); + player.nextChat = 521; + break; + case 521: + sendPlayerChat2("Okay, So those are the supplies I need", + "but how do I acctually kill him?"); + player.nextChat = 522; + break; + case 522: + sendNpcChat1("You are a eager one.", player.talkingNpc, + "Doctor Harlow"); + player.nextChat = 523; + break; + case 523: + sendNpcChat4("Killing a vampire is D A N G E R O U S!", + "Never forget that. Go in prepared", + "Understand you may die.", + "It's a risk we all take in the buisness.", + player.talkingNpc, "Doctor Harlow"); + player.nextChat = 524; + break; + case 524: + sendNpcChat2("I've seen many fine men and women,", + "die at the hands of vampires.", player.talkingNpc, + "Doctor Harlow"); + player.nextChat = 525; + break; + case 525: + sendNpcChat4( + "Enter the vampire's lair and attempt to open the coffin.", + "He should be asleep in there, so try to use the stake on,", + "him. As you're new at this you'll,", + "probably just wake him up and the real fight begins.", + player.talkingNpc, "Doctor Harlow"); + player.nextChat = 526; + break; + case 526: + sendNpcChat3("Fight him until he's nearly dead, and,", + "when the moment is right. Stake him through the heart", + "and hammer it in.", player.talkingNpc, "Doctor Harlow"); + player.nextChat = 527; + break; + case 527: + sendNpcChat3("It's gruesome, but it's the only way.", + "Once he's dead speak to morgan so", + "he can notify the village.", player.talkingNpc, + "Doctor Harlow"); + player.nextChat = 528; + break; + case 528: + sendPlayerChat1("Thank you!"); + player.nextChat = 0; + break; + case 529: + sendPlayerChat1("I killed the vampire!"); + player.nextChat = 530; + break; + case 530: + sendNpcChat1("Congratulations! You have saved the village.", + player.talkingNpc, "Morgan"); + player.nextChat = 3194; + break; + case 531: + if (player.getItemAssistant().playerHasItem(1549)) { + sendPlayerChat1("I still need to kill the vampire."); + player.nextChat = 0; + } else if (!player.getItemAssistant().playerHasItem(1549) && player.vampSlayer == 3) { + player.getItemAssistant().addOrDropItem(1549, 1); + sendPlayerChat1("Thank you, I will be more careful next time."); + player.nextChat = 0; + } + break; + case 532: + sendNpcChat1("What could you want with an old woman like me?", + player.talkingNpc, "Hetty"); + player.nextChat = 533; + break; + case 533: + sendOption2("I am in search of a quest", + "I've heard that you are a witch"); + player.dialogueAction = 74; + break; + case 534: // 9157 + sendPlayerChat1("I am in search of a quest."); + player.nextChat = 536; + break; + case 535: // 9158 + sendNpcChat1("Yes I am...", player.talkingNpc, "Hetty"); + player.nextChat = 0; + break; + case 536: + sendNpcChat2("Would you like to become more proficient in the", + "dark arts?", player.talkingNpc, "Hetty"); + player.nextChat = 537; + break; + case 537: + sendOption3("Yes help me become one with my darker side.", + "No I have my principles and hour.", + "What, you mean improve my magic?"); + player.dialogueAction = 58; + break; + case 538:// 9168 + sendPlayerChat1("No I have my principles and hour."); + player.nextChat = 0; + break; + case 539:// 9169 + sendPlayerChat1("What, you mean improve my magic?"); + player.nextChat = 0; + break; + case 540:// 9167 + sendPlayerChat1("Yes help me become one with my darker side."); + player.nextChat = 541; + break; + case 541: + sendNpcChat2( + "Ok, I'm going to make a potion to help bring out your", + "darker self.", player.talkingNpc, "Hetty"); + player.nextChat = 542; + break; + case 542: + sendNpcChat1("You will need certain ingredients.", + player.talkingNpc, "Hetty"); + player.nextChat = 543; + break; + case 543: + sendPlayerChat1("What do I need?"); + player.nextChat = 544; + break; + case 544: + sendNpcChat2("You need an eye of newt, a rat's tail, an onion...", + "Oh and a peice of burnt mean.", player.talkingNpc, "Hetty"); + player.nextChat = 545; + break; + case 545: + sendPlayerChat1("Great, I'll go and get them."); + player.witchspot = 1; + QuestAssistant.sendStages(player); + player.nextChat = 0; + break; + case 546: + sendNpcChat1("So have you found the things for my potion?", + player.talkingNpc, "Hetty"); + player.nextChat = 547; + break; + case 547: + if (player.getItemAssistant().playerHasItem(221, 1) + && player.getItemAssistant().playerHasItem(300, 1) + && player.getItemAssistant().playerHasItem(2146, 1)) { + sendPlayerChat1("Yes I have everything!"); + player.witchspot = 2; + player.nextChat = 550; + } else { + sendPlayerChat1("No I still need to keep looking."); + player.nextChat = 0; + } + break; + case 548: + sendPlayerChat1("Yes I have everything!"); + player.witchspot = 2; + player.nextChat = 550; + break; + case 549: + sendPlayerChat1("No I still need to keep looking."); + player.nextChat = 0; + break; + case 550: + sendNpcChat1("Excellent can I have them?", player.talkingNpc, + "Hetty"); + player.nextChat = 551; + break; + case 551: + if (player.getItemAssistant().playerHasItem(221, 1) + && player.getItemAssistant().playerHasItem(300, 1) + && player.getItemAssistant().playerHasItem(2146, 1)) { + sendStatement4( + "You pass the ingredients to Hetty and she puts them all into her,", + "Cauldron.", + "Hetty closes her eyes and begins to chant.", + "The caludron bubbles mysteriously."); + player.getItemAssistant().deleteItem(221, 1); + player.getItemAssistant().deleteItem(300, 1); + player.getItemAssistant().deleteItem(2146, 1); + player.nextChat = 552; + } else { + sendPlayerChat1("I don't have them anymore."); + player.nextChat = 0; + } + break; + case 552: + sendPlayerChat1("Well, is it ready?"); + player.nextChat = 553; + break; + case 553: + sendNpcChat1("Ok, now drink from the cauldron.", player.talkingNpc, + "Hetty"); + player.nextChat = 0; + break; + case 554: + sendNpcChat1("Arr, Matey!", player.talkingNpc, "Redbeard Frank"); + player.nextChat = 555; + break; + case 555: + sendOption2("I'm in search of treasure.", "Arr!"); + player.dialogueAction = 71; + break; + case 556:// 9157 + sendPlayerChat1("I'm in search of treasure."); + player.nextChat = 557; + break; + case 557: + sendNpcChat2( + "Arr, trasure you be after eh?", + "Well I might be able to tell you where to find some... For a price...", + player.talkingNpc, "Redbeard Frank"); + player.nextChat = 558; + break; + case 558: + sendPlayerChat1("What sort of price?"); + player.nextChat = 559; + break; + case 559: + sendNpcChat2( + "Well for example if you can get me a bottle of rum..", + "Not just any rum mind...", player.talkingNpc, + "Redbeard Frank"); + player.nextChat = 560; + break; + case 560: + sendNpcChat2("I'd like some rum made on Karamja Island.", + "There's no rum like Karamja Rum!", player.talkingNpc, + "Redbeard Frank"); + player.nextChat = 561; + break; + case 561: + sendOption2("Ok, I will bring you some rum.", "Not right now."); + player.dialogueAction = 72; + break; + case 562:// 9158 + sendPlayerChat1("Not right now."); + player.nextChat = 0; + break; + case 563:// 9157 + sendPlayerChat1("Ok, I will bring you some rum."); + player.nextChat = 564; + break; + case 564: + sendNpcChat1( + "Yer a saint, although it'll take a miracle to get it off Karamja.", + player.talkingNpc, "Redbeard Frank"); + player.nextChat = 565; + break; + case 565: + sendPlayerChat1("What do you mean?"); + player.nextChat = 566; + break; + case 566: + sendNpcChat3( + "The customs office has been clampin' down on the export of spirits. ", + "You seem like a resourceful young lad,", + " I'm sure ye'll be able to find a way to slip the stuff past them.", + player.talkingNpc, "Redbeard Frank"); + player.nextChat = 567; + break; + case 567: + sendPlayerChat1("Well, I'll give it a shot."); + player.nextChat = 568; + break; + case 568: + sendNpcChat1("Arr, that's the spirit!", player.talkingNpc, + "Redbeard Frank"); + player.nextChat = 0; + player.pirateTreasure = 1; + QuestAssistant.sendStages(player); + break; + case 569: + if (player.pirateTreasure == 2 + && player.getItemAssistant().playerHasItem(431, 1)) { + sendNpcChat1("Arr, Matey!", player.talkingNpc, "Redbeard Frank"); + player.nextChat = 570; + } else { + sendPlayerChat1("No I still need to get some rum."); + player.nextChat = 0; + } + break; + case 570: + sendNpcChat1("Have ye brought some rum for yer ol' mate Frank?", + player.talkingNpc, "Redbeard Frank"); + player.nextChat = 571; + break; + case 571: + if (player.getItemAssistant().playerHasItem(431, 1)) { + sendPlayerChat1("Yes I've got some."); + player.nextChat = 572; + } else { + sendPlayerChat1("No I still need to get it."); + player.nextChat = 0; + } + break; + case 572: + sendNpcChat2( + "Now a deal's a deal, I'll tell ye about the treasure.", + "I used to server under a pirate captain called One-Eyed Hector.", + player.talkingNpc, "Redbeard Frank"); + player.nextChat = 573; + break; + case 573: + sendNpcChat2( + "Hector were very successful and became very rich.", + "But about a year ago we were boarded by the Customs and Excise Agents.", + player.talkingNpc, "Redbeard Frank"); + player.nextChat = 574; + break; + case 574: + sendNpcChat2("Hector were killed along with many of the crew,", + "I were one of the few to escape and I escaped with this.", + player.talkingNpc, "Redbeard Frank"); + player.nextChat = 575; + break; + case 575: + if (player.getItemAssistant().playerHasItem(431, 1)) { + sendStatement("Frank happily takes the rum... and hands you a key"); + player.getItemAssistant().deleteItem(431, 1); + player.getItemAssistant().addOrDropItem(432, 1); + player.nextChat = 576; + } else { + sendPlayerChat1("I still need to get some rum."); + player.nextChat = 0; + } + break; + case 576: + sendNpcChat2( + "This be Hector's key. ", + "I belive it opens his chest in his old room in the Blue Moon Inn in Varrock.", + player.talkingNpc, "Redbeard Frank"); + player.nextChat = 577; + break; + case 577: + sendNpcChat1("With any luck his treasure will be in there.", + player.talkingNpc, "Redbeard Frank"); + player.nextChat = 578; + break; + case 578: + sendOption2("Ok thanks, I'll go and get it.", + "So why didn't you ever get it?"); + player.dialogueAction = 73; + break; + case 579:// 9157 + sendPlayerChat1("Ok thanks, I'll go and get it."); + player.pirateTreasure = 3; + player.nextChat = 0; + break; + case 580:// 9158 + sendPlayerChat1("So why didn't you ever get it?"); + player.nextChat = 581; + break; + case 581: + sendNpcChat1("That's none of your buisness.", player.talkingNpc, + "Redbeard Frank"); + player.nextChat = 0; + break; + case 582:// 9158 + sendPlayerChat1("Arr!"); + player.nextChat = 0; + break; + + case 583: + if (!player.getItemAssistant().playerHasItem(995, 30)) { + sendPlayerChat1("Sorry, I don't have enough coins for that."); + player.nextChat = 0; + return; + } else { + Sailing.startTravel(player, 5); + player.getItemAssistant().deleteItem(995, 30); + player.nextChat = 0; + } + break; + + case 584: + sendNpcChat1("The trip back to port sarim will cost you 30 coins.", + player.talkingNpc, "Sailor"); + player.nextChat = 585; + break; + + case 585: + sendOption2("Yes", "No"); + player.dialogueAction = 68; + break; + + case 586: + sendPlayerChat1("No thank you."); + player.nextChat = 0; + break; + + case 587: + sendPlayerChat1("Yes please."); + player.nextChat = 588; + break; + + case 588: + if (!player.getItemAssistant().playerHasItem(995, 30)) { + sendPlayerChat1("Sorry, I don't have enough coins for that."); + player.nextChat = 0; + return; + } else { + Sailing.startTravel(player, 6); + player.getItemAssistant().deleteItem(995, 30); + player.nextChat = 0; + } + break; + + case 589: + player.getItemAssistant().deleteItem(995, 30); + player.nextChat = 0; + break; + + case 590: + sendNpcChat1("Hello " + player.playerName + ".", player.talkingNpc, + "Gnome Pilot"); + player.nextChat = 591; + break; + + case 591: + sendNpcChat1("Would you like to fly my glider?", player.talkingNpc, + "Gnome Pilot"); + player.nextChat = 592; + break; + + case 592: + sendOption2("Yes", "No"); + player.dialogueAction = 130; + break; + + case 593: + sendPlayerChat1("No thank you."); + player.nextChat = 0; + break; + + case 594: + sendPlayerChat1("Yes please."); + player.nextChat = 595; + break; + + case 595: + player.gliderOpen = true; + player.getPacketSender().showInterface(802); + break; + + case 596: + sendNpcChat2("You didn't participate enough to take down", + "You've gain less points", player.talkingNpc, "Void Knight"); + player.nextChat = 0; + break; + case 597: + sendNpcChat3("You couldn't take down all the portals in time.", + "Please try harder next time, or ask more", + "people to join your game.", player.talkingNpc, + "Void Knight"); + player.nextChat = 0; + break; + case 598: + sendNpcChat3("Congratulations " + player.playerName + + "! you have taken", + "down all the portals while keeping the Knight alive", + "please accept this reward from us.", player.talkingNpc, + "Void Knight"); + player.getPacketSender().sendMessage( + "You have won the Pest Control game!"); + player.nextChat = 0; + break; + case 599: + sendNpcChat2("Do not let the Void Knights health reach 0!", + "You can regain health by destroying more monsters,", + player.talkingNpc, "Void Knight"); + player.nextChat = 600; + break; + case 600: + sendNpcChat1("NOW GO AND DESTROY THOSE PORTALS!!!", + player.talkingNpc, "Void Knight"); + player.nextChat = 0; + break; + case 601: + sendNpcChat1("You call yourself a Knight?", player.talkingNpc, + "Void Knight"); + player.nextChat = 0; + break; + case 602: + sendNpcChat1("Hi welcome to Pest Control.", player.talkingNpc, + "Void Knight"); + player.nextChat = 84; + break; + case 603: + sendNpcChat1("Would you like to open the Armor Shop or Exp Shop?", + player.talkingNpc, "Void Knight"); + player.nextChat = 85; + break; + case 604: + sendOption2("Void Knight Armor", "Experience Shop"); + player.dialogueAction = 85; + break; + case 605: + sendNpcChat2( + "The party room is a fun place where you can put your items", + "in the chest and drop them and have a party with your friends.", + player.talkingNpc, "Party Pete"); + player.nextChat = 0; + break; + + case 610: + sendNpcChat1("Hello. I am the squire to Sir Vyvin.", player.talkingNpc, "Squire"); + player.nextChat = 611; + break; + case 611: + sendOption2("And how is life as a squire?", "Wouldn't you prefer to be a squire for me?"); + player.dialogueAction = 181;/*DIALOGUE ACTION*/ + break; + case 612: + sendPlayerChat1("And how is life as a squire?"); + player.nextChat = 613; + break; + case 613: + sendNpcChat3("Well, Sir Vyvin is a good guy to work for, however,", "I'm in a spot of trouble today. I've gone and lost Sir", "Vyvin's sword!", player.talkingNpc, "Squire"); + player.nextChat = 614; + break; + case 614: + sendOption3("Do you know where you lost it?", "I can make a new sword if you like...", "Is he angry?"); + player.dialogueAction = 182;/*DIALOGUE ACTION*/ + break; + case 615: + sendPlayerChat1("I can make a new sword if you like..."); + player.nextChat = 616; + break; + case 616: + sendNpcChat2("Thanks for the offer. I'd be surprised if you could", "though.", player.talkingNpc, "Squire"); + player.nextChat = 617; + break; + case 617: + sendNpcChat4("The thing is, this sword is a family heirloom. It has been", "passed down through Vyvin's family for five", "generations! It was originally made by the Imacando", "dwarves, who were", player.talkingNpc, "Squire"); + player.nextChat = 618; + break; + case 618: + sendNpcChat2("a particularly skilled tribe of dwarven smiths.", "I doubt anyone could make it in the style they do.", player.talkingNpc, "Squire"); + player.nextChat = 619; + break; + case 619: + sendOption2("So would these dwarves make another one?", "Well I hope you find it soon."); + player.dialogueAction = 183;/*DIALOGUE ACTION*/ + break; + case 620: + sendPlayerChat1("So would these dwarves make another one?"); + player.nextChat = 621; + break; + case 621: + sendNpcChat4("I'm not a hundred percent sure the Imacando tribe", "exists anymore. I should think Reldo, the palace", "librarian will know; he has done a lot of", "research on the races of Runescape.", player.talkingNpc, "Squire"); + player.nextChat = 622; + break; + case 622: + sendNpcChat3("I don't suppose you could try and track down the", "Imcando dwarves for me? I've got so much work to", "do...", player.talkingNpc, "Squire"); + player.nextChat = 623; + break; + case 623: + sendOption2("Ok, I'll give it a go.", "No, I've got lots of mining work to do."); + player.dialogueAction = 184;/*DIALOGUE ACTION*/ + break; + case 624: + sendPlayerChat1("Ok, I'll give it a go."); + player.knightS = 1; + QuestAssistant.sendStages(player); + player.nextChat = 625; + break; + case 625: + sendNpcChat2("Thank you very much! As I say, the best place to start", "should be with Reldo...", player.talkingNpc, "Squire"); + player.nextChat = 0; + break; + + // reldo starts here + case 626: + sendNpcChat1("Hello stranger.", player.talkingNpc, "Reldo"); + player.nextChat = 627; + break; + case 627: + sendOption3("Do you have anything to trade?", "What do you do?", "What do you know about the Imcando Dwarves?"); + player.dialogueAction = 185;/*DIALOGUE ACTION*/ + break; + case 628: + sendNpcChat1("I work here as a librarian.", player.talkingNpc, "Reldo"); + player.nextChat = 0; + break; + case 629: + sendNpcChat1("I do not have anything to trade, sorry.", player.talkingNpc, "Reldo"); + player.nextChat = 0; + break; + case 630: + if (player.knightS == 1) { + sendPlayerChat1("What do you know about the Imcando dwarves?"); + player.nextChat = 631; + } else { + sendNpcChat1("You are not on this part of the Knights Sword quest.", player.talkingNpc, "Reldo"); + player.nextChat = 0; + } + break; + case 631: + sendNpcChat1("The imcando dwarves, you say?", player.talkingNpc, "Reldo"); + player.nextChat = 632; + break; + case 632: + sendNpcChat3("Ah yes... for many hundreds of years they were the", "world's most skilled smiths. They used secret smithing", "knowledge passed down from generation to generation.", player.talkingNpc, "Reldo"); + player.nextChat = 633; + break; + case 633: + sendNpcChat3("Unfortunately, about century ago, the once thriving", "race was wiped out during the barbarian invasions of", "that time.", player.talkingNpc, "Reldo"); + player.nextChat = 634; + break; + case 634: + sendPlayerChat1("So are there any Imcando left at all?"); + player.nextChat = 635; + break; + case 635: + sendNpcChat3("I believe a few of them survived, but with the bulk of", "their population destroyed their numbers have dwindled", "even further.", player.talkingNpc, "Reldo"); + player.nextChat = 636; + break; + case 636: + sendNpcChat3("I believe I remember a couple living in Asgarnia near", "the cliffs on the Asgarnian southern peninsula, but they", "DO tend to keep to themselves.", player.talkingNpc, "Reldo"); + player.nextChat = 637; + break; + case 637: + sendNpcChat4("They tend not to tell people they're the", "descendents of the Imcando, which is why people think", "that the tribe has died out totally, but you may well", "have more luck talking to them if you bring them some", player.talkingNpc, "Reldo"); + player.nextChat = 639; + break; + case 639: + sendNpcChat1("redberry pie. They REALLY like redberry pie.", player.talkingNpc, "Reldo"); + player.knightS = 2; + player.nextChat = 0; + break; + + // start thurgo + case 640: + if (player.knightS == 2) { + if (player.getItemAssistant().playerHasItem(2325, 1)) { + sendPlayerChat1("Hello. Are you an Imcando dwarf?"); + player.nextChat = 641; + } else if (!player.getItemAssistant().playerHasItem(2325, 1)) { + sendNpcChat1("I am not interested in talking to you right now.", player.talkingNpc, "Thurgo"); + player.nextChat = 0; + } + } + break; + + case 641: + sendNpcChat1("Maybe. Who wants to know?", player.talkingNpc, "Thurgo"); + player.nextChat = 642; + break; + + case 642: + sendPlayerChat1("Would you like some redberry pie?"); + player.nextChat = 644; + break; + + case 644: + sendStatement("You see Thurgo's eyes light up."); + player.nextChat = 645; + break; + + case 645: + sendNpcChat2("I'd never say no to a redberry pie! They're GREAT", "stuff!", player.talkingNpc, "Thurgo"); + player.nextChat = 646; + break; + case 646: + if (player.getItemAssistant().playerHasItem(2325, 1)) { + sendStatement2("You hand over the pie. Thurgo eats the pie. Thurgo pats his", "stomach."); + player.getItemAssistant().deleteItem(2325, 1); + player.nextChat = 647; + } else { + sendPlayerChat1("I don't have pie anymore."); + player.nextChat = 0; + } + break; + case 647: + sendNpcChat2("By Guthix! THAT was a good pie! Anyone who makes", "pie like THAT has got to be alright!", player.talkingNpc, "Thurgo"); + player.knightS = 3; + player.nextChat = 0; + break; + case 648: + sendPlayerChat1("Can you make a special sword?"); + player.nextChat = 649; + break; + case 649: + sendNpcChat2("Well, after bringing me my favorite food I guess I", "should give it a go. What sort of sword is it?", player.talkingNpc, "Thurgo"); + player.nextChat = 650; + break; + case 650: + sendPlayerChat4("I need you to make a sword for one of Falador's", "knights. He had one which was passed down through five", "generations, but his squire lost it. So we need an", "identical one to replace it."); + player.nextChat = 651; + break; + case 651: + sendNpcChat2("A knight's sword eh? Well I'd need to know exactly", "how it looked before I could make a new one.", player.talkingNpc, "Thurgo"); + player.nextChat = 652; + break; + case 652: + sendNpcChat3("All the Faladorian knights used to have sword with", "unique designs according to their position. Could you bring me", "a picture or something?", player.talkingNpc, "Thurgo"); + player.nextChat = 653; + break; + case 653: + sendPlayerChat1("I'll go ask his squire and see if I can find one."); + player.knightS = 4; + player.nextChat = 0; + break; + // back to squire + case 654: + sendNpcChat1("So how are you doing getting the sword?", player.talkingNpc, "Squire"); + player.nextChat = 655; + break; + case 655: + sendPlayerChat2("I've found an Imcando dwarf but he needs a picture of", "the sword before he can make it."); + player.nextChat = 656; + break; + case 656: + sendNpcChat3("A picture eh? Hmmm.... The only one I can think of is", "in a small portrait of Sir Vyvin's father... Sir Vyvin", "keeps it in a cupboard in his room I think.", player.talkingNpc, "Squire"); + player.nextChat = 657; + break; + case 657: + sendPlayerChat1("Ok, I'll try and get that then."); + player.nextChat = 658; + break; + case 658: + sendNpcChat2("Please don't let him catch you! He MUSTN'T know", "what happened!", player.talkingNpc, "Squire"); + player.knightS = 5; + player.nextChat = 0; + break; + case 659: + sendStatement("You find a small portrait in here which you take."); + player.getItemAssistant().addItem(666, 1); + player.nextChat = 0; + break; + // back to thurgo + case 660: + sendPlayerChat2("I have found a picture of the sword I would like you to", "make."); + player.nextChat = 661; + break; + case 661: + sendStatement("You give the portrait to Thurgo. Thurgo studies the portrait."); + player.getItemAssistant().deleteItem(666, 1); + player.nextChat = 662; + break; + case 662: + sendNpcChat2("Ok. You'll need to get me some stuff in order for me", "to make this.", player.talkingNpc, "Thurgo"); + player.nextChat = 663; + break; + case 663: + sendNpcChat4("I'll need two iron bars to make the sword to start with.", "I'll also need an ore called blurite. It's useless for", "making actual weapons for fighting with except", "crossbows, but I'll need some as decoration for the hilt.", player.talkingNpc, "Thurgo"); + player.nextChat = 664; + break; + case 664: + sendNpcChat2("It is a fairly rare sort of ore... The only place I know", "where to get it is under the cliff here...", player.talkingNpc, "Thurgo"); + player.nextChat = 665; + break; + case 665: + sendNpcChat1("But it is guarded by a very powerful ice giant.", player.talkingNpc, "Thurgo"); + player.nextChat = 666; + break; + case 666: + sendNpcChat3("Most of the rocks in that cliff are pretty useless, and", "don't contain much of anything, but there's", "DEFINITELY some blurite in there.", player.talkingNpc, "Thurgo"); + player.nextChat = 667; + break; + case 667: + sendNpcChat2("You'll need a little bit of mining experience to be able to", "find it.", player.talkingNpc, "Thurgo"); + player.knightS = 7; + player.nextChat = 668; + break; + case 668: + sendPlayerChat1("Ok. I'll go and find them then."); + player.nextChat = 0; + break; + + // after getting the materials + case 669: + sendNpcChat1("How are you doing finding those sword materials?", player.talkingNpc, "Thurgo"); + player.nextChat = 670; + break; + case 670: + if (player.getItemAssistant().playerHasItem(2351, 2) && player.getItemAssistant().playerHasItem(668, 1)) { + sendPlayerChat1("I have them right here."); + player.nextChat = 671; + } else { + sendPlayerChat1("I'm still working on it."); + player.nextChat = 0; + } + break; + case 671: + if (player.knightS == 7 || player.knightS == 8) { + sendStatement2("You give the blurite ore and two bars to Thurgo. Thurgo starts", "to make the sword. Thurgo hands you a sword."); + player.getItemAssistant().deleteItem(2351, 1); + player.getItemAssistant().deleteItem(2351, 1); + player.getItemAssistant().deleteItem(668, 1); + player.getItemAssistant().addItem(667, 1); + player.knightS = 8; + player.nextChat = 672; + } else { + sendNpcChat1("You are not on this part of the quest right now.", player.talkingNpc, "Thurgo"); + player.nextChat = 0; + } + break; + case 672: + sendPlayerChat1("Thank you very much!"); + player.nextChat = 673; + break; + + case 673: + sendNpcChat1("Just remember to call in with more pie some time!", player.talkingNpc, "Thurgo"); + player.nextChat = 0; + break; + + case 674: + if (player.getItemAssistant().playerHasItem(667, 1)) { + sendNpcChat1("You should bring the Squire that sword.", player.talkingNpc, "Thurgo"); + player.nextChat = 0; + } else { + sendNpcChat1("Did the sword work?", player.talkingNpc, "Thurgo"); + player.nextChat = 675; + } + break; + + case 675: + sendPlayerChat2("I've seemed to have lost my sword.", "Can you make me another?"); + player.nextChat = 676; + break; + + case 676: + if (player.getItemAssistant().playerHasItem(2351, 2) && player.getItemAssistant().playerHasItem(668, 1)) { + sendNpcChat1("Sure, just let me see that blurite, and iron bars.", player.talkingNpc, "Thurgo"); + player.nextChat = 677; + } else { + sendNpcChat2("Sure, but you need to get more", "blurite ore, and iron bars.", player.talkingNpc, "Thurgo"); + player.nextChat = 0; + } + break; + case 677: + sendStatement("You give the bluerite ore and two bars to Thurgo"); + player.getItemAssistant().deleteItem(2351, 1); + player.getItemAssistant().deleteItem(2351, 1); + player.getItemAssistant().deleteItem(668, 1); + player.nextChat = 678; + break; + case 678: + sendStatement("Thurgo starts to make the sword"); + player.nextChat = 679; + break; + case 679: + sendStatement("Thurgo hands you the sword"); + player.getItemAssistant().addItem(667, 1); + player.nextChat = 680; + break; + case 680: + sendPlayerChat1("Thank you very much!"); + player.nextChat = 681; + break; + case 681: + sendNpcChat1("Just remember to call in with more pie some time!", player.talkingNpc, "Thurgo"); + player.nextChat = 0; + break; + + // back to squire + case 682: + sendPlayerChat1("I have retrieved your sword for you."); + player.nextChat = 683; + break; + case 683: + sendNpcChat2("Thank you, thank you, thank you! I was seriously", "worried I would have to own up to Sir Vyvin!", player.talkingNpc, "Squire"); + player.nextChat = 684; + break; + case 684: + sendStatement("You give the sword to the squire."); + player.getItemAssistant().deleteItem(667, 1); + player.knightS = 8; + player.nextChat = 685; + break; + case 685: + QuestRewards.knightsReward(player); + break; + + //Shield of Arrav Quest line: + //Reldo + case 690: + sendOption3("Do you have anything to trade?", "What do you do?", "I'm in search of a quest."); + player.dialogueAction = 186;/*DIALOGUE ACTION*/ + break; + case 691: + sendNpcChat1("Hmmm. I don't... believe there are any here...", player.talkingNpc, "Reldo"); + player.nextChat = 692; + break; + case 692: + sendNpcChat1("Let me think actually...", player.talkingNpc, "Reldo"); + player.nextChat = 693; + break; + case 693: + sendNpcChat2("Ah yes. I know. If you look in a book called 'The Shield", "of Arrav', you'll find a quest in there.", player.talkingNpc, "Reldo"); + player.nextChat = 694; + break; + case 694: + sendNpcChat2("I'm not sure where the book is mind you... but I'm", "sure it's around here somewhere.", player.talkingNpc, "Reldo"); + player.nextChat = 695; + break; + case 695: + sendPlayerChat1("Thank you."); + player.shieldArrav = 1; + player.nextChat = 0; + break; + //bookcase + case 696: + sendPlayerChat2("Aha! 'The Shield of Arrav'! Exactly what I was looking", "for"); + player.getItemAssistant().addOrDropItem(757, 1); + player.shieldArrav = 2; + player.nextChat = 0; + break; + //reldo + case 697: + sendPlayerChat2("Ok. I've read the book. Do you know where I can find", "the Phoenix Gang?"); + player.nextChat = 698; + break; + case 698: + sendNpcChat2("No, I don't. I think I know someone who might", "however.", player.talkingNpc, "Reldo"); + player.nextChat = 699; + break; + case 699: + sendNpcChat3("If i were you I would talk to Baraek, the fur trader in", "the market place. I've heard he has connections with the", "Phoenix Gang.", player.talkingNpc, "Reldo"); + player.shieldArrav = 3; + player.nextChat = 700; + break; + case 700: + sendPlayerChat1("Thanks, I'll try that!"); + player.nextChat = 0; + break; + //Baraek + case 701: + sendPlayerChat1("Can you tell me where I can find the Phoenix Gang?"); + player.nextChat = 702; + break; + case 702: + sendNpcChat2("Sh sh sh, not so loud! You don't want to get me in", "trouble!", player.talkingNpc, "Baraek"); + player.nextChat = 703; + break; + case 703: + sendPlayerChat1("So DO you know where they are?"); + player.nextChat = 704; + break; + case 704: + sendNpcChat1("I may do.", player.talkingNpc, "Baraek"); + player.nextChat = 705; + break; + case 705: + sendNpcChat2("But I don't want to get into trouble for revealing their", "hideout.", player.talkingNpc, "Baraek"); + player.nextChat = 706; + break; + case 706: + sendNpcChat2("Of course, if I was, say 20 gold coins richer I may", "happen to be more inclined to take that sort of risk...", player.talkingNpc, "Baraek"); + player.nextChat = 707; + break; + case 707: + if (player.getItemAssistant().playerHasItem(995, 20)) { + sendPlayerChat1("Okay. Have 20 gold coins."); + player.nextChat = 708; + } else { + sendPlayerChat1("I'm a little short on gold coins right now.."); + player.nextChat = 0; + } + break; + case 708: + sendNpcChat4("Ok, to get to the gang hideout, enter Varrock through", + "the south gate. Then, if you take the first turn east,", + "somewhere along there is an alleyway to the south. The", + "door at the end of there is the entrance to the Phoenix", + player.talkingNpc, "Baraek"); + player.shieldArrav = 4; + player.nextChat = 709; + break; + case 709: + sendNpcChat3("Gang. They're operating there under the name of", + "VTAM Corporation. Be careful. The Pheonixes ain't", + "the types to be messed about.", + player.talkingNpc, "Baraek"); + player.nextChat = 710; + break; + case 710: + sendPlayerChat1("Thanks!"); + player.nextChat = 0; + break; + //Straven + case 711: + sendPlayerChat1("What's through that door?"); + player.nextChat = 712; + break; + case 712: + sendNpcChat2("Hey! You can't go in there. Only authorised personnel", + "of the VTAM Corporation are allowed beyond this point.", + player.talkingNpc, "Straven"); + if (player.shieldArrav < 4) + player.nextChat = 0; + else if (player.shieldArrav == 4) + player.nextChat = 713; + break; + case 713: + sendPlayerChat1("I know who you are!"); + player.nextChat = 714; + break; + case 714: + sendNpcChat1("Really.", player.talkingNpc, "Straven"); + player.nextChat = 715; + break; + case 715: + sendNpcChat1("Well?", player.talkingNpc, "Straven"); + player.nextChat = 716; + break; + case 716: + sendNpcChat1("Who are we then?", player.talkingNpc, "Straven"); + player.nextChat = 717; + break; + case 717: + sendPlayerChat2("This is the headquarters of the Phoenix Gang, the most", "powerful crime syndicate this city has ever seen!"); + player.nextChat = 718; + break; + case 718: + sendNpcChat2("No, this is a legitimate business run by legitimate", "businessmen.", player.talkingNpc, "Straven"); + player.nextChat = 719; + break; + case 719: + sendNpcChat2("Supposing we were this crime gang however, what would", "you want with us?", player.talkingNpc, "Straven"); + player.nextChat = 720; + break; + case 720: + sendPlayerChat1("I'd like to offer you my services."); + player.nextChat = 721; + break; + case 721: + sendNpcChat1("You mean you'd like to join the Phoenix Gang?", player.talkingNpc, "Straven"); + player.nextChat = 722; + break; + case 722: + sendNpcChat2("Well, obviously I can't speak for them, but the Phoenix", "Gang doesn't let people join just like that.", player.talkingNpc, "Straven"); + player.nextChat = 723; + break; + case 723: + sendNpcChat1("You can't be too careful, you understand.", player.talkingNpc, "Straven"); + player.nextChat = 724; + break; + case 724: + sendNpcChat2("Generally someone has to prove their loyalty before", "they can join.", player.talkingNpc, "Straven"); + player.nextChat = 725; + break; + case 725: + sendPlayerChat1("How would I go about doing that?"); + player.nextChat = 726; + break; + case 726: + sendNpcChat1("Obviously, I would have no idea about that.", player.talkingNpc, "Straven"); + player.nextChat = 727; + break; + case 727: + sendNpcChat4("Although having said that, a rival gang of ours, er,", + "theirs, called the Black Arm Gang is supposedly meeting", + "a contact from Port Sarim today in the Blue Moon", + "Inn.", + player.talkingNpc, "Straven"); + player.nextChat = 728; + break; + case 728: + sendNpcChat4("OBVIOUSLY I know NOTHING about the dealings", + "of the Phoenix Gang, but I bet if SOMEBODY were", + "to kill him and bring back his intelligence report, they", + "would be considered loyal enough to join.", + player.talkingNpc, "Straven"); + player.nextChat = 729; + break; + case 729: + sendPlayerChat1("Ok, I'll get right on it."); + player.shieldArrav = 5; + player.nextChat = 0; + break; + case 730: + sendNpcChat1("How's your little mission going?", player.talkingNpc, "Straven"); + if (player.getItemAssistant().playerHasItem(761, 1)) + player.nextChat = 733; + else + player.nextChat = 731; + break; + case 731: + sendPlayerChat1("I haven't managed to find the report yet..."); + player.nextChat = 732; + break; + case 732: + sendNpcChat3("You need to kill Jonny the Beard, who should be in", + "the Blue Moon Inn ...I would guess.", + "Not being a member of the Phoenix Gang and all.", + player.talkingNpc, "Straven"); + player.nextChat = 0; + break; + case 733: + sendPlayerChat1("I have the intelligence report!"); + player.nextChat = 734; + break; + case 734: + sendNpcChat1("Let's see it then.", player.talkingNpc, "Straven"); + player.nextChat = 735; + break; + case 735: + sendStatement("You hand over the report. The man reads the report."); + player.getItemAssistant().deleteItem(761, 1); + player.nextChat = 736; + break; + case 736: + sendNpcChat1("Yes. Yes, this is very good.", player.talkingNpc, "Straven"); + player.nextChat = 737; + break; + case 737: + sendNpcChat2("Ok! You can join the Phoenix Gang! I am Straven, one", "of the gang leaders.", player.talkingNpc, "Straven"); + player.nextChat = 738; + break; + case 738: + sendPlayerChat1("Nice to meet you."); + player.nextChat = 739; + break; + case 739: + sendNpcChat1("Take this key.", player.talkingNpc, "Straven"); + player.nextChat = 740; + break; + case 740: + sendItemChat1(player, "", "Straven hands you a key", 759, 150); + player.getItemAssistant().addOrDropItem(759, 1); + player.shieldArrav = 6; + player.nextChat = 0; + break; + case 741: + sendNpcChat1("Greetings, fellow gang member.", player.talkingNpc, "Straven"); + player.nextChat = 0; + break; + //Phoenix gang weapons chest + case 742: + sendStatement("You search the chest."); + if (player.getItemAssistant().playerHasItem(763) || player.shieldArrav < 6) + player.nextChat = 743; + else + player.nextChat = 744; + break; + case 743: + sendStatement("It's empty."); + break; + case 744: + sendItemChat1(player, "", "You find half of a shield, which you take.", 763, 150); + player.getItemAssistant().addOrDropItem(763, 1); + player.nextChat = 0; + break; + //Curator Haig Halen + case 745: + sendNpcChat1("Welcome to the museum of Varrock.", player.talkingNpc, "Curator Haig Halen"); + if (player.shieldArrav == 6 && (player.getItemAssistant().playerHasItem(763) || player.getItemAssistant().playerHasItem(765))) + player.nextChat = 746; + else + player.nextChat = 0; + break; + case 746: + sendPlayerChat2("I have half the shield of Arrav here. Can I get a", "reward?"); + player.nextChat = 747; + break; + case 747: + sendNpcChat3("The Shield of Arrav! Goodness, the Museum has been", + "searching for that for years! The late King Roald II", + "offered a reward for it years ago!", + player.talkingNpc, "Curator Haig Halen"); + player.nextChat = 748; + break; + case 748: + sendPlayerChat1("Well, I'm here to claim it."); + player.nextChat = 749; + break; + case 749: + sendNpcChat1("Let me have a look at it first.", player.talkingNpc, "Curator Haig Halen"); + player.nextChat = 750; + break; + case 750: + if (player.getItemAssistant().playerHasItem(763)) + sendItemChat1(player, "", "The curator peers at the shield", 763, 150); + else if (player.getItemAssistant().playerHasItem(765)) + sendItemChat1(player, "", "The curator peers at the shield", 765, 150); + player.nextChat = 751; + break; + case 751: + sendNpcChat1("This is incredible!", player.talkingNpc, "Curator Haig Halen"); + player.nextChat = 752; + break; + case 752: + sendNpcChat1("That shield has been missing for over twenty-fice years!", player.talkingNpc, "Curator Haig Halen"); + player.nextChat = 753; + break; + case 753: + sendNpcChat3("Leave the shield here with me and I'll write you out a", + "certificate saying that you have returned the shield, so", + "that you can claim your reward from the King.", + player.talkingNpc, "Curator Haig Halen"); + player.nextChat = 754; + break; + case 754: + if (player.getItemAssistant().playerHasItem(763)) { + sendItemChat1(player, "", "You hand over the shield half.", 763, 150); + player.getItemAssistant().deleteItem(763, 1); + } else if (player.getItemAssistant().playerHasItem(765)) { + sendItemChat1(player, "", "You hand over the shield half.", 765, 150); + player.getItemAssistant().deleteItem(765, 1); + } + player.nextChat = 755; + break; + case 755: + sendItemChat1(player, "", "The curator writes out a certificate.", 769, 150); + player.getItemAssistant().addOrDropItem(769, 1); + player.shieldArrav = 7; + player.nextChat = 0; + break; + //King Roald + case 756: + sendPlayerChat1("Greetings, your majesty."); + player.nextChat = 757; + break; + case 757: + sendPlayerChat2("Your majesty, I have come to claim the reward for the", "return of the Shield of Arrav."); + player.nextChat = 758; + break; + case 758: + sendItemChat1(player, "", "You show the certificate to the king.", 769, 150); + player.nextChat = 759; + break; + case 759: + sendNpcChat2("My goodness! This claim is for the reward offered by", + "my father many years ago!", + player.talkingNpc, "King Roald"); + player.nextChat = 760; + break; + case 760: + sendNpcChat2("I never thought I would live to see the day when", + "someone came forward to claim this reward", + player.talkingNpc, "King Roald"); + player.nextChat = 761; + break; + case 761: + sendItemChat1(player, "", "You hand over the certificate, The king gives you 1,200gp.", 995, 150); + player.nextChat = 762; + break; + case 762: + player.getItemAssistant().deleteItem(769, 1); + QuestRewards.shieldArravReward(player); + player.nextChat = 0; + break; + + + case 908: + sendPlayerChat1("Hello there " + NpcHandler.getNpcListName(player.talkingNpc) + "!"); + player.nextChat = 909; + break; + case 909: + sendNpcChat1("Meeeooow.", npcId, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 0; + break; + case 910: + sendOption3("Pet", "Catch Rat", "Shoo Away"); + player.dialogueAction = 222; + player.nextChat = 0; + break; + case 911: + sendStatement("You pet your cat."); + // Server.npcHandler.startAnimation(9166, client.rememberNpcIndex); + // client.startAnimation(9087); + NpcHandler.npcs[player.rememberNpcIndex].forceChat("Meow!"); + player.nextChat = 0; + break; + case 912: + player.getDialogueHandler().sendStatement( + "Catching rats is currently disabled."); + player.nextChat = 0; + break; + case 913: + sendStatement("You shoo your cat away."); + if (NpcHandler.npcs[player.rememberNpcIndex].npcType >= 761 + && NpcHandler.npcs[player.rememberNpcIndex].npcType >= 766) + // client.ratsCaught = 0; + NpcHandler.npcs[player.rememberNpcIndex].absX = 0; + NpcHandler.npcs[player.rememberNpcIndex].absY = 0; + NpcHandler.npcs[player.rememberNpcIndex] = null; + player.summonId = 0; + player.hasNpc = false; + player.nextChat = 0; + break; + + case 1000: + sendNpcChat1("Is it nice and tidy round the back now?", + player.talkingNpc, "Wydin"); + player.pirateTreasure = 2; + player.nextChat = 1001; + break; + case 1001: + sendOption4("Yes, can I work out front now?", + "Yes, are you going to pay me yet?", + "No it's a complete mess", "Can I buy something please?"); + player.dialogueAction = 69; + break; + case 1002:// 9179 + sendNpcChat1("Not yet.", player.talkingNpc, "Wydin"); + player.nextChat = 0; + break; + case 1003:// 9180 + sendPlayerChat1("No it's a complete mess"); + player.nextChat = 0; + break; + case 1004:// 9181 + sendPlayerChat1("Can I buy something please?"); + player.getShopAssistant().openShop(34); + player.nextChat = 0; + break; + case 1005:// 9178 + sendPlayerChat1("Yes can I work out front now?"); + player.nextChat = 1006; + break; + case 1006: + sendNpcChat1("No I'm the person who works here.", + player.talkingNpc, "Wydin"); + player.nextChat = 0; + break; + case 1007: + sendStatement("You find a hole. Would you like to enter it?"); + player.nextChat = 1008; + break; + case 1008: + sendOption2("Yes", "No"); + player.dialogueAction = 70; + break; + case 1009: + sendPlayerChat1("Yes."); + player.getPlayerAssistant().movePlayer(1761, 5192, 0); + player.nextChat = 0; + break; + case 1011: + sendNpcChat2("How dare you try to take dangerous equipment?", + "Come back when you have left it all behind.", + player.talkingNpc, "Monk of Entrana"); + player.nextChat = 0; + break; + case 1012: + sendNpcChat2("You even defeated TzTok-Jad, I am most impressed!", + "Please accept this gift as a reward.", player.talkingNpc, + "Tzhaar-Mej-Tal"); + player.nextChat = 0; + break; + + /** Bank Settings **/ + case 1013: + if (SkillHandler.isSkilling(player)) { + return; + } + sendNpcChat1("Good day. How may I help you?", player.talkingNpc, "Banker"); + player.nextChat = 1014; + break; + case 1014:// bank open done, this place done, settings done, to do + // delete pin + sendOption3("I'd like to access my bank account, please.", "I'd like to check my my P I N settings.", "What is this place?"); + player.dialogueAction = 251; + break; + /** What is this place? **/ + case 1015: + sendPlayerChat1("What is this place?"); + player.nextChat = 1016; + break; + case 1016: + sendNpcChat2("This is the bank of " + GameConstants.SERVER_NAME + ".", "We have many branches in many towns.", player.talkingNpc, "Banker"); + player.nextChat = 0; + break; + /** + * Note on P I N. In order to check your "Pin Settings. You must have + * enter your Bank Pin first + **/ + /** I don't know option for Bank Pin **/ + case 1017: + sendStartInfo("Since you don't know your P I N, it will be deleted in @red@3 days@bla@. If you", "wish to cancel this change, you may do so by entering your P I N", "correctly next time you attempt to use your bank.", "", "", false); + player.nextChat = 0; + break; + + case 1018: + sendPlayerChat1("Can I come through this gate?"); + player.nextChat = 1019; + break; + case 1019: + if (player.absX == 3267 || player.absX == 3268) { + sendNpcChat1("You must pay a toll of 10 gold coins to pass.", + player.talkingNpc, "Border Guard"); + player.nextChat = 1020; + } else { + sendNpcChat1("You need to be closer to the gate to use it.", player.talkingNpc, "Border Guard"); + player.nextChat = 0; + } + break; + case 1020: + sendOption3("Okay, I'll pay.", "Who does my money go to?", + "No thanks, I'll walk around."); + player.dialogueAction = 502; + break; + case 1022: + sendPlayerChat1("Who does my money go to?"); + player.nextChat = 1023; + break; + case 1023: + sendNpcChat2("The money goes to the city of Al-Kharid.", + "Will you pay the toll?", player.talkingNpc, "Border Guard"); + player.nextChat = 1024; + break; + case 1024: + sendOption2("Okay, I'll pay.", "No thanks, I'll walk around."); + player.dialogueAction = 508; + break; + case 1025: + sendPlayerChat1("No thanks, I'll walk around."); + player.nextChat = 0; + break; + + case 1026: + if (!player.getItemAssistant().playerHasItem(995, 10)) { + sendPlayerChat1("I haven't got that much."); + player.nextChat = 0; + } else { + sendPlayerChat1("Okay, I'll pay."); + player.nextChat = 1027; + } + break; + + case 1027: + player.getDialogueHandler().sendStatement( + "10 coins are removed from your inventory."); + SpecialObjects.initKharid(player, player.objectId); + player.nextChat = 0; + break; + + /* + * case 1028: client.getDialogues().sendStatement( + * "10 coins are removed from your inventory."); client.nextChat = 0; + * break; + */ + + case 1033: + sendOption2( + "I would like to skip tutorial Island and go to Mainland", + "I would like to continue"); + player.dialogueAction = 132; + break; + + case 1034: + sendNpcChat1("You have been warned, you can't go back now.", + player.talkingNpc, "Runescape Guide"); + player.getPlayerAssistant().movePlayer(3098, 3107, 0); + player.nextChat = 0; + break; + + case 1035: + sendNpcChat1("You have successfully skipped tutorial island.", + player.talkingNpc, "Runescape Guide"); + player.getPlayerAssistant().startTeleport(3222, 3218, 0, "modern"); + player.nextChat = 0; + break; + + case 1036: + sendNpcChat1("Good day to you Bwana.", player.talkingNpc, + "Saniboch"); + player.nextChat = 1037; + break; + case 1037: + sendOption4("Can I go through that door please?", + "Where does this strange entrance lead?", + "Good day to you too.", + "I'm impressed, that tree is growing on that shed."); + player.dialogueAction = 228; + break; + case 1038: + sendPlayerChat1("I'm impressed, that tree is growing on that shed."); + player.nextChat = 1039; + break; + case 1040: + sendNpcChat2("My employer tells me it is an uncommon sort of tree", + "called the Fyburglars tree.", player.talkingNpc, + "Saniboch"); + player.nextChat = 0; + break; + case 1041: + sendPlayerChat1("Good day to you too."); + player.nextChat = 0; + break; + case 1042: + sendPlayerChat1("Where does this strange entrance lead?"); + player.nextChat = 1043; + break; + case 1043: + sendNpcChat3("To a huge fearsome dungeon, populated by giants and", + "strange dogs. Adventurers come from all around to", + "explore its depths", player.talkingNpc, "Saniboch"); + player.nextChat = 1044; + break; + case 1044: + sendNpcChat2( + "I know not what lies deeper in myself, for my skills in", + "agility and woodcutting are inadequate.", + player.talkingNpc, "Saniboch"); + player.nextChat = 0; + break; + case 1045: + sendPlayerChat1("Can I go through that door please?"); + player.nextChat = 1046; + break; + case 1046: + sendNpcChat2( + "Most certainly, but I must charge you the sum of 875", + "coins first.", player.talkingNpc, "Saniboch"); + player.nextChat = 1047; + break; + case 1047: + sendOption3("Ok, here's 875 coins.", "Never mind.", + "Why is it worth the entry cost?"); + player.dialogueAction = 230; + break; + case 1048: + sendNpcChat1("You can't go in there without paying me!", + player.talkingNpc, "Saniboch"); + player.nextChat = 0; + break; + case 1049: + sendPlayerChat1("Never mind."); + player.nextChat = 0; + break; + case 1050: + sendPlayerChat1("Why is it worth the entry cost?"); + player.nextChat = 1051; + break; + case 1051: + sendNpcChat3("It leads to a huge fearsome dungeon, populated by", + "giants and strange dogs. Adventurers come from all", + "around to explore its depths.", player.talkingNpc, + "Saniboch"); + player.nextChat = 1052; + break; + case 1052: + sendNpcChat3( + "I know not what lies deeper in myself, for my skills in", + "agility and woodcutting are inadequate, but I hear tell", + "of even greater dangers deeper in.", player.talkingNpc, + "Saniboch"); + player.nextChat = 0; + break; + case 1053: + if (player.getItemAssistant().playerHasItem(995, 875)) { + sendPlayerChat1("Ok, here's 875 coins."); + player.nextChat = 1054; + } else { + sendPlayerChat1("I don't have the money at the moment."); + player.nextChat = 1057; + } + break; + case 1054: + sendStatement("You give Saniboch 875 coins."); + player.nextChat = 1055; + player.getItemAssistant().deleteItem(995, 875); + player.hasPaidBrim = true; + break; + case 1055: + sendNpcChat2("Many thanks. You may now pass the door. May your", + "death be a glorious one!", player.talkingNpc, "Saniboch"); + player.nextChat = 0; + break; + case 1056: + sendPlayerChat1("I don't have the money at the moment."); + player.nextChat = 1057; + break; + case 1057: + sendNpcChat2( + "Well this is a dungeon for the more wealthy discerning", + "adventurer, be gone with you riff raff.", + player.talkingNpc, "Saniboch"); + player.nextChat = 1058; + break; + case 1058: + sendPlayerChat2( + "But you don't even have clothes, how can you seriously", + "call anyone riff raff"); + player.nextChat = 1059; + break; + case 1059: + sendNpcChat1("Hummph.", player.talkingNpc, "Saniboch"); + player.nextChat = 0; + break; + // Slayer masters + case 1226: + sendNpcChat2("You already have a slayer task", + "please finish it talk to me again.", player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 0; + break; + case 1227: + sendNpcChat1( + "You already have an easier slayer task. Please finish it then talk to me again.", + player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 0; + break; + case 1228: + if (!Slayer.getMasterRequirment(player, player.talkingNpc)) { + sendNpcChat1("Increase your combat level then come back.", player.talkingNpc, NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 0; + } else { + sendNpcChat1("'Ello and what are you after then?", player.talkingNpc, NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 1229; + } + break; + case 1229: + sendOption4("I need another assignement.", + "Where is the location of my task?", + "I would like to view your shop.", + "I would like to cancel or remove my task."); + player.dialogueAction = 142; + break; + case 1231: + sendOption2("I want to cancel my current task.", + "I want to remove my task for ever."); + player.dialogueAction = 143; + break; + case 1232: + player.getSlayer().cancelTask(); + player.getPacketSender().closeAllWindows(); + player.nextChat = 0; + break; + case 1233: + player.getSlayer().removeTask(); + player.getPacketSender().closeAllWindows(); + player.nextChat = 0; + break; + case 1234: + player.getSlayer().generateTask(); + break; + case 1235: + if (player.getSlayer().hasTask()) { + sendNpcChat1("Your Slayer Task is located at " + player.getSlayer().getLocation(player.slayerTask) + ".", player.talkingNpc, NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 0; + } else { + sendNpcChat2("You don't have a slayer task", + "if you wish to get one talk to a slayer master.", + player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 0; + } + break; + case 1236: + player.getShopAssistant().openShop(109); + player.nextChat = 0; + break; + case 1237: + sendNpcChat2("You have been assigned " + player.taskAmount + " " + player.getSlayer().getTaskName(player.slayerTask) + ",", + "Good luck " + player.playerName + ".", + player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 0; + break; + + case 1300: + sendNpcChat2( + "Good afternoon, sir. In need of a haircut or shave, are", + "we?", player.talkingNpc, "Hairdresser"); + player.nextChat = 1301; + break; + + case 1301: + sendOption3("A haircut, please.", "A shave, please.", + "No, thank you."); + player.dialogueAction = 1301; + break; + + case 1302:// first option + sendPlayerChat1("A haircut, please."); + player.nextChat = 1303; + break; + + case 1303: + sendNpcChat1("Certainly, sir. The fee will be 2,000 coins.", + player.talkingNpc, "Hairdresser"); + player.nextChat = 1304; + break; + + case 1304: + if (player.getItemAssistant().playerHasItem(995, 2000)) { + sendNpcChat2("Please select a hairstyle you would", + "like from this brochure.", 598, "Hairdresser"); + player.nextChat = 1305; + } else { + sendNpcChat2("It looks like you don't have 2,000 coins,", + "please revisit when you do.", 598, "Hairdresser"); + player.nextChat = 0; + } + break; + + case 1305: + player.getPacketSender().showInterface(2653); // hairstyle + // interface + break; + // end of hairstyle cut. + + case 1306: // dialogue option 3 + sendPlayerChat1("No, thank you."); + player.nextChat = 1307; + break; + + case 1307: + sendNpcChat1("Very well. Come back if you change your mind.", + player.talkingNpc, "Hairdresser"); + player.nextChat = 0; + break; + // END + case 1308: // start of shaving + sendPlayerChat1("A shave, please."); + player.nextChat = 1309; + break; + + case 1309: + sendNpcChat1("Certainly, sir. The fee will be 2,000 coins.", + player.talkingNpc, "Hairdresser"); + player.nextChat = 1310; + break; + + case 1310: + if (player.getItemAssistant().playerHasItem(995, 2000)) { + sendNpcChat2("Please select a beard and color you would", + "like from this brochure.", player.talkingNpc, + "Hairdresser"); + player.nextChat = 1311; + } else { + sendNpcChat2("It looks like you don't have 2,000 coins,", + "please revisit when you do.", player.talkingNpc, + "Hairdresser"); + player.nextChat = 0; + } + break; + case 1311: + player.getPacketSender().showInterface(2007); // hair/beard + // interface + player.nextChat = 0; + break; + case 1312: + sendNpcChat1( + "What sort of dye would you like? Red, yellow, or blue?", + player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 1313; + break; + case 1313: + sendOption3("Red Dye", "Yellow Dye", "Blue Dye"); + player.dialogueAction = 144; + break; + case 1314:// red 1763, yellow 1765, blue 1767 + if (player.getItemAssistant().playerHasItem(1951, 3) + && player.getItemAssistant().playerHasItem(995, 5)) { + player.getItemAssistant().deleteItem(1951, 3); + player.getItemAssistant().addOrDropItem(1763, 1); + sendPlayerChat1("Red Dye Please."); + player.nextChat = 0; + } else { + sendNpcChat1( + "You need 5 coins and 3 redberries to make red dye.", + player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 0; + } + break; + case 1315:// red 1763, yellow 1765, blue 1767 + if (player.getItemAssistant().playerHasItem(1957, 2) + && player.getItemAssistant().playerHasItem(995, 5)) { + player.getItemAssistant().deleteItem(1957, 2); + player.getItemAssistant().addOrDropItem(1765, 1); + sendPlayerChat1("Yellow Dye Please."); + player.nextChat = 0; + } else { + sendNpcChat1( + "You need 5 coins and 2 onions to make yellow dye.", + player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 0; + } + break; + case 1316:// red 1763, yellow 1765, blue 1767 + if (player.getItemAssistant().playerHasItem(1793, 2) + && player.getItemAssistant().playerHasItem(995, 5)) { + player.getItemAssistant().deleteItem(1793, 2); + player.getItemAssistant().addOrDropItem(1767, 1); + sendPlayerChat1("Blue Dye Please."); + player.nextChat = 0; + } else { + sendNpcChat1( + "You need 5 coins and 2 woad leaves to make blue dye.", + player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 0; + } + break; + case 1317: + sendNpcChat1("Welcome to the Guild of Master Craftsman.", + player.talkingNpc, "Master Crafter"); + player.nextChat = 0; + break; + + /* Slayer Gem */ + + case 1318: + if (player.getSlayer().hasTask()) { + sendNpcChat3( + "Hello " + player.playerName + ".", + "You currently need to kill " + + player.taskAmount + + " more " + + player.getSlayer().getTaskName( + player.slayerTask) + ".", + "in the " + + player.getSlayer().getLocation( + player.slayerTask) + ".", + player.talkingNpc, + NpcHandler.getNpcListName(player.SlayerMaster)); + player.nextChat = 0; + } else { + sendNpcChat1("You don't have a slayer task.", + player.talkingNpc, + NpcHandler.getNpcListName(player.SlayerMaster)); + } + break; + case 1319: + if (player.getSlayer().hasTask()) { + sendNpcChat1( + "I am " + + player.getSlayer().getSlayerMaster( + player.SlayerMaster) + ".", + player.talkingNpc, + NpcHandler.getNpcListName(player.SlayerMaster)); + player.nextChat = 0; + } else { + sendNpcChat1("You don't have a slayer task.", + player.talkingNpc, + NpcHandler.getNpcListName(player.SlayerMaster)); + } + break; + case 1320: + if (player.getSlayer().hasTask()) { + sendNpcChat2( + "Hello " + player.playerName + ".", + "I am located in " + + player.getSlayer().getMasterLocation( + player.SlayerMaster) + ".", + player.talkingNpc, + NpcHandler.getNpcListName(player.SlayerMaster)); + player.nextChat = 0; + } else { + sendNpcChat1("You don't have a slayer task.", + player.talkingNpc, + NpcHandler.getNpcListName(player.SlayerMaster)); + } + break; + case 1321: + sendNpcChat1("You have " + player.slayerPoints + " slayer points nice job!", player.talkingNpc, NpcHandler.getNpcListName(player.SlayerMaster)); + player.nextChat = 0; + break; + + case 1322: + sendNpcChat2("Hello " + player.playerName + ".", "Are you interested in buying anything?", player.talkingNpc, NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 1323; + break; + + case 1323: + sendOption2("Yes please.", "No thanks."); + player.dialogueAction = 146; + break; + + case 1324: + sendPlayerChat1("No thanks."); + player.nextChat = 0; + break; + + case 1325: + sendPlayerChat1("Yes please."); + player.nextChat = 1326; + break; + + case 1326: + for (Shop shop : Shop.values()) { + if (shop != null) { + if (shop.getNpc() == player.talkingNpc) { + player.getShopAssistant().openShop(shop.getShop()); + RandomEventHandler.addRandom(player); + player.nextChat = 0; + } + } + } + break; + + case 1329: + sendNpcChat2("Hello " + player.playerName + ".", + "Are you interested in buying anything?", + player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 1330; + break; + + case 1330: + sendOption3("Yes please.", "No Thanks.", + "I have a frog token I would like to exchange."); + player.dialogueAction = 148; + break; + + case 1331: + sendPlayerChat1("No thanks."); + player.nextChat = 0; + break; + + case 1332: + sendPlayerChat1("Yes please."); + player.nextChat = 1334; + break; + + case 1333: + sendOption2("A frog mask please!", "A frog outfit, please!"); + player.dialogueAction = 149; + break; + + case 1334: + player.getShopAssistant().openShop(12); + RandomEventHandler.addRandom(player); + break; + + case 1335: + if (player.getItemAssistant().playerHasItem(6183, 1)) { + sendPlayerChat1("A frog mask please!"); + player.getItemAssistant().deleteItem(6183, 1); + player.getItemAssistant().addOrDropItem(6188, 1); + player.nextChat = 0; + } else { + sendNpcChat1("You don't have any frog tokens.", + player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 0; + } + break; + + case 1336: + if (player.getItemAssistant().playerHasItem(6183, 1) + && player.playerAppearance[0] == 0) { + sendPlayerChat1("A frog prince outfit, please!"); + player.getItemAssistant().deleteItem(6183, 1); + player.getItemAssistant().addOrDropItem(6184, 1); + player.getItemAssistant().addOrDropItem(6185, 1); + player.nextChat = 0; + } else if (player.getItemAssistant().playerHasItem(6183, 1) + && player.playerAppearance[0] == 1) { + sendPlayerChat1("A frog princess outfit, please!"); + player.getItemAssistant().deleteItem(6183, 1); + player.getItemAssistant().addOrDropItem(6186, 1); + player.getItemAssistant().addOrDropItem(6187, 1); + player.nextChat = 0; + } else { + sendNpcChat1("You don't have any frog tokens.", + player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 0; + } + break; + + case 1337: + sendNpcChat1("Hello, would you like some rope?", player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 1338; + break; + + case 1338: + sendOption2("Yes please.", "No thanks."); + player.dialogueAction = 166; + break; + + case 1339: + sendPlayerChat1("No thanks."); + player.nextChat = 0; + break; + + case 1340: + sendPlayerChat1("Yes please."); + player.nextChat = 1341; + break; + + case 1341: + sendOption3("I will give you 15 coins for 1 rope.", + "I will give you 4 balls of wool for 1 rope.", + "Never mind."); + player.dialogueAction = 167; + break; + + case 1342: + sendPlayerChat1("Never mind."); + player.nextChat = 0; + break; + + case 1343: + if (player.getItemAssistant().playerHasItem(995, 15)) { + player.getItemAssistant().deleteItem(995, 15); + player.getItemAssistant().addOrDropItem(954, 1); + sendPlayerChat1("I will give you 15 coins for 1 rope."); + player.nextChat = 0; + } else { + sendNpcChat1("You don't even have 15 coins.", + player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 0; + } + break; + + case 1344: + if (player.getItemAssistant().playerHasItem(1759, 4)) { + player.getItemAssistant().deleteItem(1759, 4); + player.getItemAssistant().addOrDropItem(954, 1); + sendPlayerChat1("I will give you 4 balls of wool for 1 rope."); + player.nextChat = 0; + } else { + sendNpcChat1("You don't even have 4 balls of wool.", + player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 0; + } + break; + + case 1345: + sendNpcChat1( + "Hello, would you like to buy climbing boots for 12 gp?", + player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 1346; + break; + + case 1346: + sendOption2("Yes please.", "No thanks."); + player.dialogueAction = 170; + break; + + case 1347: + sendPlayerChat1("No thanks."); + player.nextChat = 0; + break; + + case 1348: + if (player.getItemAssistant().playerHasItem(995, 12)) { + player.getItemAssistant().deleteItem(995, 12); + player.getItemAssistant().addOrDropItem(3105, 1); + sendPlayerChat1("Yes please."); + player.nextChat = 0; + } else { + sendNpcChat1("You need 12 gp to buy these.", player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 0; + } + break; + + case 1349: + if (player.absY > 3485 && player.absY < 3489 + && player.hasPaid != true) { + sendNpcChat2( + "Hello, are you interested in traveling up the river", + "for 50 coins?", player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 1350; + } else if (player.hasPaid != true) { + sendNpcChat2( + "Hello, are you interested in traveling back down the river", + "for 50 coins?", player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 1350; + } else if (player.hasPaid == true && player.absY > 3485 + && player.absY < 3489) { + sendNpcChat1( + "Hello, are you interested in a free ride up the river?", + player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 1350; + } else if (player.hasPaid == true) { + sendNpcChat1( + "Hello, are you interested in a free back down the river?", + player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 1350; + } + break; + + case 1350: + sendOption2("Yes please.", "No thanks."); + player.dialogueAction = 171; + break; + + case 1351: + sendPlayerChat1("No thanks."); + player.nextChat = 0; + break; + + case 1352: + if (player.getItemAssistant().playerHasItem(995, 50) + && player.absY > 3485 && player.absY < 3489) { + player.getItemAssistant().deleteItem(995, 50); + sendPlayerChat1("Yes please."); + player.getPlayerAssistant().startTeleport(2358, 3640, 0, + "modern"); + player.hasPaid = true; + player.nextChat = 0; + } else if (player.getItemAssistant().playerHasItem(995, 50)) { + player.getItemAssistant().deleteItem(995, 50); + sendPlayerChat1("Yes please."); + player.getPlayerAssistant().startTeleport(2367, 3488, 0, + "modern"); + player.hasPaid = true; + player.nextChat = 0; + } else if (player.hasPaid == true && player.absY > 3485 + && player.absY < 3489) { + sendPlayerChat1("Yes please."); + player.getPlayerAssistant().startTeleport(2358, 3640, 0, + "modern"); + } else if (player.hasPaid == true) { + sendPlayerChat1("Yes please."); + player.getPlayerAssistant().startTeleport(2367, 3488, 0, + "modern"); + } + break; + + case 1353: + sendNpcChat1("Would you like to travel to Keldagrim?", + player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 1354; + break; + + case 1354: + sendOption2("Yes please.", "No thanks."); + player.dialogueAction = 172; + break; + + case 1355: + sendPlayerChat1("Yes please."); + player.nextChat = 1357; + break; + + case 1356: + sendPlayerChat1("No thanks."); + player.nextChat = 0; + break; + + case 1357: + player.getPlayerAssistant().startTeleport(2827, 10214, 0, "modern"); + player.nextChat = 0; + break; + + case 1358: + sendNpcChat1("Hello, would you like some monk robes?", + player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 1359; + break; + + case 1359: + sendOption2("Yes please.", "No thanks."); + player.dialogueAction = 173; + break; + + case 1360: + sendPlayerChat1("Yes please."); + player.nextChat = 1362; + break; + + case 1361: + sendPlayerChat1("No thanks."); + player.nextChat = 0; + break; + + case 1362: + if (player.getItemAssistant().playerHasItem(542) + || player.getItemAssistant().playerHasItem(544) + || player.playerEquipment[player.playerLegs] == 542 + || player.playerEquipment[player.playerChest] == 544) { + sendNpcChat1("You already have some monks robes", + player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 0; + } else { + player.getItemAssistant().addOrDropItem(542, 1); + player.getItemAssistant().addOrDropItem(544, 1); + player.nextChat = 0; + } + break; + + case 1363: + sendNpcChat4( + "You already have the slayer task of " + player.slayerTask + + " and have", + " " + player.taskAmount + " left to kill", + "are you sure you would like an easier task?", + "it will be something much simpiler than your previous task.", + player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 1364; + break; + + case 1364: + sendOption2("Yes please.", "No thanks."); + player.dialogueAction = 174; + break; + + case 1365: + sendPlayerChat1("No thanks I would like to stay with my task."); + player.nextChat = 0; + break; + + case 1366: + sendPlayerChat1("Yes please I would like an easier task."); + player.nextChat = 1367; + break; + + case 1367: + player.getSlayer().generateTask(); + break; + + case 1368: + sendNpcChat2("You have been assigned " + player.taskAmount + " " + + player.getSlayer().getTaskName(player.slayerTask) + ",", + "Good luck " + player.playerName + ".", player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 0; + break; + + case 1369: + sendNpcChat2("Hello, " + player.playerName + + " would you like to change your appearance?", "for 3k?", + player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 1370; + break; + + case 1370: + sendOption2("Yes please.", "No thanks, I'm not interested."); + player.dialogueAction = 176; + break; + + case 1371: + sendPlayerChat1("No thanks, I'm not interested."); + player.nextChat = 0; + break; + + case 1372: + if (player.getItemAssistant().playerHasItem(995, 3000)) { + sendPlayerChat1("Yes please."); + player.getPacketSender().showInterface(3559); + player.canChangeAppearance = true; + player.getItemAssistant().deleteItem(995, 3000); + player.nextChat = 0; + } else { + sendNpcChat1("You don't have enough gold to do that.", + player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 0; + } + break; + + case 1373: + sendNpcChat2("Hello " + player.playerName + ".", + "Are you interested in buying anything?", + player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 1374; + break; + + case 1374: + sendOption2("Yes please.", "No thanks."); + player.dialogueAction = 177; + break; + + case 1375: + sendPlayerChat1("No thanks."); + player.nextChat = 0; + break; + + case 1376: + sendPlayerChat1("Yes please."); + player.nextChat = 1377; + break; + + case 1377: + if (player.npcType == 537) { + player.getShopAssistant().openShop(124); + } else if (player.npcType == 536) { + player.getShopAssistant().openShop(125); + } + RandomEventHandler.addRandom(player); + player.nextChat = 0; + break; + + case 1378: + sendNpcChat2("Hello " + player.playerName + ".", + "Are you interested in buying a candle for 1k?", + player.talkingNpc, "Candle Seller"); + player.nextChat = 1379; + break; + + case 1379: + sendOption2("Yes please.", "No thank you."); + player.dialogueAction = 179; + break; + + case 1380: + if (player.getItemAssistant().playerHasItem(995, 1000)) { + sendPlayerChat1("Yes please."); + player.getItemAssistant().deleteItem(995, 1000); + player.nextChat = 0; + } else { + sendNpcChat1("You don't have enough coins to buy a candle.", + player.talkingNpc, "Candle Seller"); + player.nextChat = 0; + } + break; + + case 1381: + sendPlayerChat1("No thank you."); + player.nextChat = 0; + break; + + case 2995: + player.canWalkTutorial = false; + sendStatement2( + "Before you start if you would like to skip Tutorial Island,", + "now is your chance. If you skip you will be brought to mainland."); + player.nextChat = 2996; + break; + + case 2996: + sendStatement2( + "If you don't want to skip Tutorial Island you can stay here.", + "Would you like to skip Tutorial Island, or stay here?"); + player.nextChat = 2997; + break; + + case 2997: + sendOption2( + "I would like to skip Tutorial Island and go to Mainland.", + "I would like to stay here and complete Tutorial island."); + player.dialogueAction = 151; + break; + + case 2998: + sendPlayerChat1("Yes I would like to skip Tutorial Island."); + player.nextChat = 3115; + break; + + case 2999: + if (!player.getItemAssistant().playerHasItem(1549) && player.vampSlayer == 3) { + player.getItemAssistant().addOrDropItem(1549, 1); + sendPlayerChat1("Thank you, I will be more careful next time."); + player.nextChat = 0; + } + break; + + case 3000: // first part. Entering the tutorial island + player.getPacketSender().chatbox(6180); // displays + // client.getPacketDispatcher().chatbox + // client.getPlayerAssistant().tutorialIslandInterface(0, 0); // + // progress bar + tutorial int + player.getPacketSender().createArrow(1, 1); + chatboxText( + player, + "To start the tutorial use your left mouse button to click on the", + "" + GameConstants.SERVER_NAME + + " in this room. He is indicated by a flashing", + "yellow arrow above his head. If you can't see him, use your", + "keyboard's arrow keys to rotate the view.", + "@blu@Getting started"); + player.getPacketSender().chatbox(6179); // displays + // client.getPacketDispatcher().chatbox + player.tutorialProgress = 0; + player.canWalkTutorial = true; + player.nextChat = 0; + break; + /* + * RS guide section + */ + case 3001: // RS GUIDE + sendNpcChat2( + "Greetings! I see you are a new arrival to the land. My", + "job is to welcome all new visitors. So welcome!", + player.talkingNpc, "Runescape Guide"); + player.nextChat = 3002; + break; + case 3002: // 2 + sendNpcChat2("You have already learned the first thing needed to", + "succeed in this world: talking to other people!", + player.talkingNpc, "Runescape Guide"); + player.nextChat = 3003; + break; + + case 3003: // 3 + sendNpcChat3( + "You will find many inhabitants of this world have useful", + "things to say to you. By clicking on them with your", + "mouse you can talk to them.", player.talkingNpc, + "Runescape Guide"); + player.nextChat = 3004; + break; + case 3004: + sendNpcChat4( + "I would also suggest reading through some of the", + "supporting information on the website. There you can", + "find the Knowledge Base, which contains all the", + "additional information you're ever likely to need. It also", + player.talkingNpc, "Runescape Guide"); + player.nextChat = 3005; + break; + case 3005: + sendNpcChat2("contains maps and helpful tips to help you on your", + "journey.", player.talkingNpc, "Runescape Guide"); + player.nextChat = 3006; + break; + + case 3006:// show tab wrentch + clearChatBoxText(player); // call this every time there is new + // client.getPacketDispatcher().chatboxtext + // coming up + sendNpcChat2( + "You will notice a flashing icon of a wrench, please click", + "on this to continue the tutorial.", player.talkingNpc, + "Runescape Guide"); + player.getPacketSender().setSidebarInterface(11, 904); // wrench + // tab + player.getPacketSender().flashSideBarIcon(-11); + player.nextChat = 3007; + break; + + case 3007: // Player controls + player.getPacketSender().closeAllWindows(); + chatboxText( + player, + "Please click on the flashing wrench icon found at the bottom", + "right of your screen. This will display your player controls.", + "", "", "Player controls"); + player.nextChat = 0; + break; + + case 3008: // Glad your making progress + sendNpcChat1("I'm glad you're making progress!", player.talkingNpc, + "Runescape Guide"); + player.nextChat = 3009; + break; + + case 3009: + sendNpcChat2("To continue the tutorial go through that door over", + "there and speak to your first instructor!", + player.talkingNpc, "Runescape Guide"); + player.nextChat = 3010; + break; + case 3010: + player.tutorialProgress = 2; + player.getPacketSender().chatbox(6180); + player.getPacketSender().closeAllWindows(); + chatboxText( + player, + "You can interact with many items of scenery by simply clicking", + "on them. Right clicking will also give more options. Feel free to", + "try it with the things in this room, then click on the door", + "indicated with the yellow arrow to go through to the next instructor.", + "Interacting with scenery"); + player.getPacketSender().chatbox(6179); + player.getPacketSender().createArrow(3098, 3107, player.getH(), + 2); + player.nextChat = 0; + break; + + case 3011: // door handling + player.getPacketSender().closeAllWindows(); + chatboxText( + player, + "Follow the path to find the next instructor. Clicking on the", + "ground will walk you to that point. Talk to the Survival Expert by", + "the pond to the continue the tutorial. Remember you can rotate", + "the view by pressing the arrow keys.", "Moving around"); + player.getPacketSender().createArrow(1, 2); + // client.getPacketDispatcher().tutorialIslandInterface(5, 2); + // // progress bar + tutorial int + player.nextChat = 0; + break; + // end end end end end + + /* + * Survival Expert. Second part. + */ + case 3012: // Survival Expert + sendNpcChat4( + "Hello there, newcomer. My name is Brynna. My job is", + "to teach you a few survival tips and tricks. First off", + "we're going to start with the most basic survival skill of", + "all: making a fire.", player.talkingNpc, "Survival Expert"); + player.nextChat = 3013; + break; + + case 3013: // giving bronze and tinder + sendItemChat2(player, "", + "The Survival Guide gives you a @blu@tinderbox @bla@and a", + "@blu@bronze axe!", 590, 150); + player.getItemAssistant().addOrDropItem(590, 1); + player.getItemAssistant().addOrDropItem(1351, 1); + player.nextChat = 0; + chatboxText( + player, + "Click on the flashing backpack icons to the right hand side of", + "the main window to view your inventory. Your inventory is a list", + "of everything you have on your backpack.", "", + "Viewing the items that you were given"); + player.getPacketSender().setSidebarInterface(3, 3213);// sends + // interface + player.getPacketSender().flashSideBarIcon(-3); // flashes + // inventory + player.tutorialProgress = 3; + break; + case 3014: // finished cutting tree + sendItemChat1(player, "", "You got some logs", 1511, 150); + PlayerAssistant.removeHintIcon(player); + player.nextChat = 3015; + break; + case 3015: // firemaking time + player.getPacketSender().closeAllWindows(); + chatboxText( + player, + "Well done! You managed to cut some logs from the tree! Next,", + "use the tinderbox in your inventory to light the logs.", + "First click on the tinderbox to use it.", + "Then click on the logs in your inventory to light them.", + "Making a fire"); + // client.getPacketDispatcher().createArrow(1, 2); // sends to + // Survival Expert + player.tutorialProgress = 4; + break; + + case 3016: // firemaking done skill tab flashing now. + // client.getPacketSender().closeAllWindows(); + chatboxText( + player, + "Click on the flashing bar graph icon near the inventory button", + "to see your skill stats.", "", "", + "You gained some experience."); + player.getPacketSender().flashSideBarIcon(-1); // flashes + // skill + player.getPacketSender().setSidebarInterface(1, 3917); // sets + // the + // skill + // tab + player.nextChat = 3017; + break; + + case 3017: // survival expert part 2 + sendNpcChat3("Well done! Next we need to get some food in our", + "bellies. We'll need something to cook. There are shrimp", + "in the pond there so let's catch and cook some.", + player.talkingNpc, "Survival Expert"); + player.nextChat = 3018; + + break; + + case 3018: + sendItemChat1(player, "", + "The Survival Guide gives you a @blu@net!", 303, 150); + player.getItemAssistant().addOrDropItem(303, 1); + player.nextChat = 0; + chatboxText( + player, + "Click on the sparkling fishing spot indicated by the flashing", + "arrow. Remember, you can check your inventory by clicking the", + "backpack icon.", "", "Catch some Shrimp"); + player.getPacketSender().createArrow(3101, 3092, player.getH(), + 2); + player.tutorialProgress = 6; + break; + + case 3019: // Cooking the shrimp + player.getPacketSender().chatbox(6180); + chatboxText( + player, + "Now you have caught some shrimp let's cook it. First light a", + "fire, chop down a tree and then use the tinderbox on the logs.", + "If you've lost your axe or tinderbox, Brynna will give you", + "another.", "Cooking your shrimp."); + player.getPacketSender().chatbox(6179); + break; + // END + + /* + * Finding next tutor FAT BITCH + */ + case 3020: // tutorial PROGRESS = 7 + // client.getPacketDispatcher().tutorialIslandInterface(15,4); + // // 15 percent + player.getPacketSender().chatbox(6180); + chatboxText( + player, + "Talk to the chef indicated. He will teach you the more advanced", + "aspects of Cooking such as combining ingredients. He will also", + "teach you about your music player menu as well.", "", + "Find your next instructor"); + player.getPacketSender().chatbox(6179); + player.getPacketSender().createArrow(3078, 3084, player.getH(), + 2); + break; + + case 3021: // start of dialogue. + sendNpcChat3( + "Ah! Welcome newcomer. I am the Master Chef Leo. It", + "is here I will teach you how to cook food truly fit for a", + "king.", player.talkingNpc, "Master Chef"); + player.nextChat = 3022; + break; + + case 3022: + sendPlayerChat2( + "I already know how to cook. Brynna taught me just", "now."); + player.nextChat = 3023; + break; + case 3023: + sendNpcChat3("Hahahahahaha! You call THAT cooking? Some shrimp", + "on an open log fire? Oh no, no, no. I am going to", + "teach you the fine art of cooking bread.", + player.talkingNpc, "Master Chef"); + player.nextChat = 3024; + break; + case 3024: + sendNpcChat2("And no fine meal is complete without good music, so", + "we'll cover that while you're here too.", + player.talkingNpc, "Master Chef"); + player.nextChat = 3025; + break; + + case 3025: // he gives u bucket of water etc TTUOTRIAL PROG 8 + sendItemChat2( + player, + "", + "The Cooking Guide gives you a @blu@bucket of water@bla@ and a", + "@blu@pot of flour!", 1933, 150); + player.getItemAssistant().addOrDropItem(1933, 1); + player.getItemAssistant().addOrDropItem(1929, 1); + player.nextChat = 0; + chatboxText( + player, + "This is the base for many of the meals. To make dough we must", + "mix flour and water. First right click the bucket of water and", + "select use, then left click on the pot of flour.", "", + "Making dough"); + PlayerAssistant.removeHintIcon(player); + player.tutorialProgress = 8; + + break; + case 3026: // cooking dough + player.getPacketSender().chatbox(6180); + chatboxText( + player, + "Now you have made dough, you can cook it. To cook the dough", + "use it with the range shown by the arrow. If you lose your", + "dough, talk to Leo - he will give you more ingredients.", + "", "Cooking dough"); + player.getPacketSender().chatbox(6179); + player.getPacketSender().createArrow(3075, 3081, player.getH(), + 2); + + player.nextChat = 0; + break; + + case 3037: // new tutorial prog + player.getPacketSender().chatbox(6180); + chatboxText( + player, + "Well done! Your first loaf of bread. As you gain experience in", + "Cooking you will be able to make other things like pies, cakes", + "and even kebabs. Now you've got the hang of cooking, let's", + "move on. Click on the flashing icon in the bottom right.", + "Cooking dough"); + player.getPacketSender().chatbox(6179); + PlayerAssistant.removeHintIcon(player); + // client.getPacketDispatcher().tutorialIslandInterface(20, 5); + player.getPacketSender().setSidebarInterface(13, 962); // sets + // music + player.getPacketSender().flashSideBarIcon(-13); + player.tutorialProgress = 9; + player.nextChat = 0; + break; + + case 3038: // Emotes + player.getPacketSender().chatbox(6180); + chatboxText( + player, + "", + "Now, how about showing some feelings? You will see a flashing", + "icon in the shape of a person. Click on that to access your", + "emotes.", "Emotes"); + player.getPacketSender().chatbox(6179); + PlayerAssistant.removeHintIcon(player); + // client.getPacketDispatcher().tutorialIslandInterface(25, 6); + // // 25 percent now + player.getPacketSender().setSidebarInterface(12, 147); // run + // tab + player.getPacketSender().flashSideBarIcon(-12); + player.nextChat = 0; + break; + case 3039: // running + player.tutorialProgress = 11; + player.getPacketSender().chatbox(6180); + chatboxText(player, + "It's only a short distance to the next guide.", + "Why not try running there? Start by opening the player", + "settings, that's the flashing icon of a wrench.", "", + "Running"); + player.getPacketSender().chatbox(6179); + player.getPacketSender().flashSideBarIcon(-12); + player.getPacketSender().createArrow(3086, 3126, player.getH(), + 2); + player.nextChat = 0; + break; + case 3040: + player.getPacketSender().chatbox(6180); + chatboxText( + player, + "In this menu you will see many options. At the bottom in the", + "middle is a button with the symbol of a running shoe. You can", + "turn this button on or off to select run or walk. Give it a go,", + "click on the run button now.", "Running"); + player.getPacketSender().chatbox(6179); + player.nextChat = 0; + break; + case 3041: // clicked on run + player.getPacketSender().chatbox(6180); + chatboxText( + player, + "Now that you have the run button turned on, follow the path", + "until you come to the end. You may notice that the numbers on", + "the button goes down. This is your run energy. If your run", + "energy reaches zero, you'll stop running.", + "Run to the next guide"); + player.getPacketSender().chatbox(6179); + player.getPacketSender().createArrow(3086, 3125, player.getH(), + 2); + + player.nextChat = 0; + break; + + /** + * Quest Guide + */ + case 3042: // entering the quest GUIDE + player.getPacketSender().createArrow(1, 4); // sends to + // quest + // guide + // client.getPacketDispatcher().tutorialIslandInterface(35, 8);//30 or 35 percent + player.getPacketSender().chatbox(6180); + chatboxText(player, "Talk with the Quest Guide.", "", + "He will tell you all about quests.", "", ""); + player.getPacketSender().chatbox(6179); + player.tutorialProgress = 12; + PassDoor.passThroughDoor(player, 3019, 2, 3, 0, 0, -1, 0); + player.nextChat = 0; + break; + + case 3043: // quest guide dialogue START + sendNpcChat2( + "Ah. Welcome, adventurer. I'm here to tell you all about", + "quests. Let's start by opening the quest side panel.", + player.talkingNpc, "Quest Guide"); + player.nextChat = 3044; + break; + + case 3044: // Send quest tab + player.getPacketSender().closeAllWindows(); + player.getPacketSender().chatbox(6180); + chatboxText(player, "Open the Quest Journal.", "", + "Click on the flashing icon next to your inventory.", "", + ""); + player.getPacketSender().chatbox(6179); + player.getPacketSender().setSidebarInterface(2, 638); // quest + player.getPacketSender().flashSideBarIcon(-2); + player.nextChat = 0; + break; + + case 3045: // quest guide 2 prog 13 + sendNpcChat3( + "Now you have the journal open. I'll tell you a bit about", + "it. At the moment all the quests shown in red which", + "means you have not started them yet.", player.talkingNpc, + "Quest Guide"); + player.nextChat = 3046; + + break; + + case 3046: + sendNpcChat4( + "When you start a quest it will change colour to yellow", + "and to green when you've finished. This is so you can", + "easily see what's complete, what's started, and what's left", + "to begin.", player.talkingNpc, "Quest Guide"); + player.nextChat = 3047; + break; + + case 3047: + sendNpcChat3( + "The start of quests are easy to find. Look out for the", + "star icons on the minimap, just like the one you should", + "see marking my house.", player.talkingNpc, "Quest Guide"); + player.nextChat = 3048; + break; + + case 3048: + sendNpcChat4( + "The quests themselves can vary greatly from collecting", + "beads to hunting down dragons. Generally quests are", + "started by talking to a non-player character like me,", + "and will involve a series of tasks.", player.talkingNpc, + "Quest Guide"); + player.nextChat = 3049; + break; + + case 3049: // last + sendNpcChat4( + "There's not a lot more I can tell you about questing.", + "You have to experience the thrill of it yourself to fully", + "understand. You may find some adventure in the caves", + "under my house.", player.talkingNpc, "Quest Guide"); + player.nextChat = 3050; + break; + + case 3050: // moving on. Cave time biaches + player.getPacketSender().closeAllWindows(); + player.getPacketSender().chatbox(6180); + chatboxText( + player, + "", + "It's time to enter some caves. Click on the ladder to go down to", + "the next area.", "", "Moving on"); + player.getPacketSender().chatbox(6179); + player.getPacketSender().createArrow(3088, 3119, player.getH(), + 2); + player.nextChat = 0; + player.tutorialProgress = 14; + break; + // end + + /* + * Start of Mining/Smithing + */ + case 3051: + player.getPacketSender().closeAllWindows(); + player.getPacketSender().chatbox(6180); + chatboxText( + player, + "Next let's get you a weapon or more to the point, you can", + "make your first weapon yourself. Don't panic, the Mining", + "Instructor will help you. Talk to him and he'll tell you all about it.", + "", "Mining and Smithing"); + player.getPacketSender().chatbox(6179); + // client.getPacketDispatcher().tutorialIslandInterface(40,9); + player.getPacketSender().createArrow(1, 5); + player.nextChat = 0; + break; + + case 3052:// mining tutor start + sendNpcChat4("Hi there. You must be new around here. So what do I", + "call you? Newcomer seems so impersonal and if we're", + "going to be working together, I'd rather call you by", + "name.", player.talkingNpc, "Mining Instructor"); + player.nextChat = 3053; + break; + + case 3053:// mining tutor start + sendPlayerChat1("You can call me " + + Misc.capitalize(player.playerName) + "."); + player.nextChat = 3054; + break; + + case 3054:// mining tutor start + sendNpcChat2("Ok then, " + Misc.capitalize(player.playerName) + "." + + " My name is Dezzick and I'm a", + "miner by trade. Let's prospect some of those rocks.", + player.talkingNpc, "Mining Instructor"); + player.nextChat = 3055; + break; + + case 3055: // prospecting + player.getPacketSender().closeAllWindows(); + player.getPacketSender().chatbox(6180); + chatboxText( + player, + "To prospect a mineable rock, just right click it and select the", + "'prospect rock' option. This will tell you the type of ore you can", + "mine from it. Try it now on one of the rocks indicated.", + "", "Prospecting"); + player.getPacketSender().chatbox(6179); + // client.getPacketDispatcher().tutorialIslandInterface(40,9); + player.getPacketSender().createArrow(3076, 9504, player.getH(), + 2); + player.nextChat = 0; + player.tutorialProgress = 15; + break; + case 3056: // done prospecting + sendPlayerChat2( + "I prospected both types of rocks! One set contains tin", + "and the other has copper ore inside."); + player.nextChat = 3057; + break; + + case 3057: + sendNpcChat2( + "Absolutely right, " + Misc.capitalize(player.playerName) + + "." + " These two ore types", + "can be smelted together to make bronze.", + player.talkingNpc, "Mining Instructor"); + player.nextChat = 3058; + break; + + case 3058: + sendNpcChat3( + "So now you know what ore is in the rocks over there,", + "why don't you have a go at mining some tin and", + "copper? here, you'll need this to start with.", + player.talkingNpc, "Mining Instructor"); + player.nextChat = 3060; + break; + case 3060: + sendItemChat1(player, "", + "Dezzick gives you a @blu@bronze pickaxe!", 1265, 300); + player.getItemAssistant().addOrDropItem(1265, 1); + player.nextChat = 0; + chatboxText( + player, + "It's quite simple really. All you need to do is right click on the", + "rock and select 'mine'. You can only mine when you have a", + "pickaxe. So give a try: first mine one tin ore.", "", + "Mining"); + player.getPacketSender().createArrow(3076, 9504, player.getH(), + 2); // sends + // hint + // to + // ore + player.tutorialProgress = 17; + break; + + case 3061: // furnace time + player.tutorialProgress = 19; + player.nextChat = 0; + chatboxText( + player, + "You should now have both some copper and tin ore. So let's", + "smelt them to make a bronze bar. To do this, right click on", + "either tin or copper ore and select use, then left click on the", + "furnace. Try it now.", "Smelting"); + break; + case 3062: // smelting + player.tutorialProgress = 20; + player.nextChat = 0; + player.getPacketSender().chatbox(6180); + chatboxText(player, "", "Speak to the Mining Instructor and he'll show you how to make", "it into a weapon.", "", "You've made a bronze bar!"); + player.getPacketSender().chatbox(6179); + player.getPacketSender().createArrow(1, 5); + break; + + case 3063: + player.nextChat = 3064; + sendPlayerChat1("How do I make a weapon out of this?"); + break; + + case 3064: + sendNpcChat2("Okay, I'll show you how to make a dagger out of it.", + "You'll be needing this...", player.talkingNpc, + "Mining Instructor"); + player.nextChat = 3065; + break; + + case 3065: // giving you the hammer + sendItemChat1(player, "", "Dezzick gives you a @blu@hammer!", 2347, 300); + player.getItemAssistant().addOrDropItem(2347, 1); + player.nextChat = 0; + chatboxText(player, "To smith you'll need a hammer - like the one you were given by", "Dezzick - access to an anvil like the one with the arrow over it", "and enough metal bars to make what you are trying to smith.", "", "Smithing a dagger"); + player.getPacketSender().createArrow(3082, 9499, player.getH(), 2); // send + // hint + // to + // furnace + break; + + case 3066: + chatboxText(player, "So let's move on. Go through the gates shown by the arrow.", "Remember you may need to move the camera to see your,", "surroundings. Speak to the guide for a recap at any time.", "", "You've finished in this area"); + player.tutorialProgress = 21; + player.getPacketSender().createArrow(3094, 9503, player.getH(), 2); // send + // hint + // to + // furnace + break; + + // end of mining/smithing + + /* + * start of melee + */ + case 3067:// Melee instructor c.tutorialProgress = 22 + sendPlayerChat1("Hi! My name is " + + Misc.capitalize(player.playerName) + "."); + player.nextChat = 3068; + break; + + case 3068: + sendNpcChat2("Do I look like I care? To me you're just another", + "newcomer who thinks they're ready to fight.", + player.talkingNpc, "Combat Instructor"); + player.nextChat = 3069; + break; + + case 3069: + sendNpcChat1("I am Vannaka, the greatest swordsman alive.", + player.talkingNpc, "Combat Instructor"); + player.nextChat = 3070; + break; + + case 3070: + sendNpcChat1("Let's get started by teaching you to wield a weapon", + player.talkingNpc, "Combat Instructor"); + player.nextChat = 3071; + break; + + case 3071: // send wear interface + player.getPacketSender().closeAllWindows(); + player.getPacketSender().chatbox(6180); + chatboxText( + player, + "", + "You now have access to a new interface. Click on the flashing", + "icon of a man the one to the right of your backpack icon.", + "", "Wielding weapons"); + player.getPacketSender().chatbox(6179); + player.getPacketSender().setSidebarInterface(4, 1644);// worn + player.getPacketSender().flashSideBarIcon(-4); + player.nextChat = 0; + break; + + case 3072: + sendNpcChat2( + "Very good, but that little butter knife isn't going to", + "protect you much. Here, take these.", player.talkingNpc, + "Combat Instructor"); + player.nextChat = 3073; + break; + + case 3073: + sendItemChat2( + player, + "",// Gives me sword and shield + "The Combat Guide gives you a @blu@bronze sword@bla@ and a", + "@blu@wooden shield!", 1171, 300); + player.getItemAssistant().addOrDropItem(1171, 1); + player.getItemAssistant().addOrDropItem(1277, 1); + player.nextChat = 0; + chatboxText( + player, + "In your worn inventory panel, right click on the dagger and", + "select the remove option from the drop down list. After you've", + "unequipped the dagger, wield the sword and shield. As you", + "pass the mouse over an item you will see its name.", + "Unequipping items"); + PlayerAssistant.removeHintIcon(player); + break; + + case 3074: + sendPlayerChat1("I did it! I killed a giant rat!"); + player.nextChat = 3075; + break; + + case 3075: + sendNpcChat3("I saw, " + Misc.capitalize(player.playerName) + "." + + " You seem better at this than I", + "thought. Now that you have grasped basic swordplay", + "let's move on.", player.talkingNpc, "Combat Instructor"); + + player.nextChat = 3076; + break; + + case 3076: + sendNpcChat4( + "Let's try some ranged attacking, with this you can kill", + "foes from a distance. Also, foes unable to reach you are", + "as good as dead. You'll be able to attack the rats", + "without entering the pit.", player.talkingNpc, + "Combat Instructor"); + + player.nextChat = 3077; + break; + + case 3077: // gives me bow and arrow + sendItemChat2( + player, + "", + "The Combat Guide gives you some @blu@bronze arrows@bla@ and", + "a @blu@shortbow!", 841, 300); + player.getItemAssistant().addOrDropItem(841, 1); + player.getItemAssistant().addOrDropItem(882, 50); + player.nextChat = 0; + chatboxText( + player, + "Now you have a bow and some arrows. Before you can use", + "them you'll need to equip them. Remember: to attack, right", + "click on the monster and select attack.", "", + "Rat ranging"); + player.ratdied2 = true; + player.getPacketSender().drawHeadicon(1, 13, 0, 0); // draws + // headicon + // to + // rat + break; + /* + * FINISH . Last parts, Finacial,prayer,magic + */ + + case 3078: // fresh + player.getPacketSender().chatbox(6180); + chatboxText( + player, + "Follow the path and you will come to the front of the building.", + "This is the Bank of " + GameConstants.SERVER_NAME + + ", where you can store all your", + "most valued items. To open your bank box just right click on an", + "open booth indicated and select 'use'.", "Banking"); + player.getPacketSender().chatbox(6179); + player.getPacketSender().createArrow(3122, 3124, player.getH(), + 2); + break; + + case 3079: // fiancial dude start + sendPlayerChat1("Hello. Who are you?"); + player.nextChat = 3080; + + break; + + case 3080: + sendNpcChat2( + "I'm the Financial Advisor. I'm here to tell people how to", + "make money.", player.talkingNpc, "Financial Advisor"); + player.nextChat = 3081; + break; + + case 3081: + sendPlayerChat1("Okay. How can I make money then?"); + player.nextChat = 3082; + break; + + case 3082: + sendNpcChat1("How you can make money? Quite.", player.talkingNpc, + "Financial Advisor"); + player.nextChat = 3083; + break; + + case 3083: + sendNpcChat3( + "Well there are three basic ways of making money here:", + "combat, quests, and trading. I will talk you through each", + "of them very quickly.", player.talkingNpc, + "Financial Advisor"); + player.nextChat = 3084; + break; + + case 3084: + sendNpcChat3( + "Let's start with combat as it is probably still fresh in", + "your mind. Many enemies, both human and monster,", + "will drop items when they die.", player.talkingNpc, + "Financial Advisor"); + player.nextChat = 3085; + break; + + case 3085: + sendNpcChat3( + "Now, the next way to earn money quickly is by quests.", + "Many people on " + GameConstants.SERVER_NAME + + " have things they need", + "doing, which they will reward you for.", + player.talkingNpc, "Financial Advisor"); + player.nextChat = 3086; + break; + + case 3086: + sendNpcChat3( + "By getting a high level in skills such as Cooking, Mining,", + "Smithing or Fishing, you can create or catch your own", + "items and sell them for pure profit.", player.talkingNpc, + "Financial Advisor"); + player.nextChat = 3087; + break; + + case 3087: + sendNpcChat2( + "Well that about covers it. Come back if you'd like to go", + "over this again.", player.talkingNpc, "Financial Advisor"); + player.nextChat = 3088; + break; + + case 3088: // end + player.getPacketSender().closeAllWindows(); + player.tutorialProgress = 28; + player.getPacketSender().chatbox(6180); + chatboxText(player, "", "Continue through the next door.", "", "", + ""); + player.getPacketSender().chatbox(6179); + player.getPacketSender().createArrow(3129, 3124, player.getH(), + 2); + player.getPacketSender().createArrow(1, 8); + player.nextChat = 0; + break; + // end of FINANCIAL + + /* + * Section Prayer + */ + + case 3089: // start of dialogue + sendPlayerChat1("Good day, brother, my name's " + + Misc.capitalize(player.playerName) + "."); + player.nextChat = 3090; + break; + + case 3090: + sendNpcChat2("Hello, " + Misc.capitalize(player.playerName) + "." + + " I'm Brother Brace. I'm here to", + "tell you all about Prayer.", player.talkingNpc, + "Brother Brace"); + player.nextChat = 3091; + + break; + case 3091: + player.getPacketSender().closeAllWindows(); + player.getPacketSender().chatbox(6180); + chatboxText(player, "", + "Click on the flashing icon to open the Prayer menu.", "", + "", "Your Prayer menu"); + player.getPacketSender().chatbox(6179); + player.getPacketSender().setSidebarInterface(5, 5608); + player.getPacketSender().flashSideBarIcon(-5); + player.tutorialProgress = 29; + player.nextChat = 0; + break; + + case 3092: + sendNpcChat3("This is your Prayer list. Prayers can help a lot in", + "combat. Click on the prayer you wish to use to activate", + "it and click it again to deactivate it.", + player.talkingNpc, "Brother Brace"); + player.nextChat = 3093; + + break; + case 3093: + sendNpcChat3("Active prayers will drain your Prayer Points which", + "you can recharge by finding an altar or other holy spot", + "and praying there.", player.talkingNpc, "Brother Brace"); + player.nextChat = 3094; + break; + + case 3094: + sendNpcChat3("As you noticed, most enemies will drop bones when", + "defeated. Burying bones by clicking them in your", + "inventory will gain you Prayer experience.", + player.talkingNpc, "Brother Brace"); + player.nextChat = 3095; + break; + + case 3095: + sendNpcChat2( + "I'm also the community officer 'round here, so it's my", + "job to tell you about your friends and ignore list.", + player.talkingNpc, "Brother Brace"); + player.nextChat = 3096; + break; + + case 3096: + player.getPacketSender().closeAllWindows(); + player.getPacketSender().chatbox(6180); + chatboxText( + player, + "You should now see another new icon. Click on the flashing", + "icon to open your friends list.", "", "", "Friends list"); + player.getPacketSender().chatbox(6179); + player.getPacketSender().setSidebarInterface(8, 5065); + player.getPacketSender().flashSideBarIcon(-8); + player.tutorialProgress = 30; + player.nextChat = 0; + break; + + case 3097: // long dialogue START + // client.getPacketDispatcher().tutorialIslandInterface(75, 16); + sendNpcChat4("Good. Now you have both menus open, I'll tell you a", + "little about each. You can add people to either list by", + "clicking the add button then typing their name into the", + "box that appears.", player.talkingNpc, "Brother Brace"); + player.nextChat = 3098; + break; + + case 3098: + sendNpcChat4( + "You remove people from the lists in the same way. If", + "you add someone to your ignore list they will not be", + "able to talk to you or send any form of message to", + "you.", player.talkingNpc, "Brother Brace"); + player.nextChat = 3099; + + break; + case 3099: + sendNpcChat4( + "Your friends list shows the online status of your", + "friends. Friends in the red are offline, friends in green are", + "online and on the same server and friends in yellow", + "are online but on a different server.", player.talkingNpc, + "Brother Brace"); + player.nextChat = 3100; + break; + + case 3100: + sendPlayerChat1("Are there rules on in-game behaviour?"); + player.nextChat = 3101; + break; + case 3101: + sendNpcChat3("Yes, you should read the rules of conduct on the", + "website to make sure you do nothing to get yourself", + "banned.", player.talkingNpc, "Brother Brace"); + player.nextChat = 3102; + break; + case 3102: + sendNpcChat3("But in general, always try to be courteous to other", + "players - remember the people in the game are real", + "people with real feelings.", player.talkingNpc, + "Brother Brace"); + player.nextChat = 3103; + break; + case 3103: + sendNpcChat2( + "If you go 'round being abusive or causing trouble your", + "character could end up being the one in trouble.", + player.talkingNpc, "Brother Brace"); + player.nextChat = 3104; + break; + case 3104: // last one + sendPlayerChat1("Okay thanks. I'll bear that in mind."); + player.getPacketSender().chatbox(6180); + chatboxText( + player, + "You're almost finished on tutorial island. Pass through the", + "door to find the path leading to your final instructor.", + "", "", "Your final instructor!"); + PlayerAssistant.removeHintIcon(player); + player.tutorialProgress = 32; + player.getPacketSender().chatbox(6179); + player.getPacketSender().createArrow(1, 9); + player.nextChat = 0; + break; + // END BROTHER BRACE PRAYER + + /* + * Start magic instructor + */ + + case 3105: + sendPlayerChat1("Hello."); + player.nextChat = 3106; + break; + + case 3106: + sendNpcChat3("Good day, newcomer. My name is Terrova. I'm here", + "to tell you about Magic. Let's start by opening your", + "spell list.", player.talkingNpc, "Magic Instructor"); + player.nextChat = 3107; + break; + + case 3107: + // sendItemChat1(client, "", "", 0, 50); + player.getPacketSender().closeAllWindows(); + player.getPacketSender().chatbox(6180); + chatboxText( + player, + "", + "Open up the Magic menu by clicking on the flashing icon next", + "to the Prayer button you just learned about.", "", + "Open up your final menu"); + player.getPacketSender().chatbox(6179); + player.nextChat = 0; + player.getPacketSender().setSidebarInterface(6, 1151); // modern + player.getPacketSender().flashSideBarIcon(-6); + break; + + case 3108: + sendNpcChat3( + "Good. This is a list of your spells. Currently you can", + "only cast one offensive spell called Wind Strike. Let's", + "try it out on one of those chickens.", player.talkingNpc, + "Magic Instructor"); + player.nextChat = 3109; + break; + + case 3109: + sendItemChat1( + player, + "", + "Terrova gives you five @blu@air runes@bla@ and @blu@five mind runes!", + 556, 300); + player.getItemAssistant().addOrDropItem(558, 5); + player.getItemAssistant().addOrDropItem(556, 5); + player.nextChat = 0; + chatboxText( + player, + "Now you have runes you should see the Wind Strike icon at the", + "top left corner of the Magic interface - second in from the", + "left. Walk over to the caged chickens, click the Wind Strike icon", + "and then select one of the chicken to cast it on.", + "Cast Wind Strke at a chicken"); + // sendStatement4("Now you have runes you should see the Wind Strike icon at the", + // "top left corner of the Magic interface - second in from the", + // "left. Walk over to the caged chickens, click the Wind Strike icon", + // "and then select one of the chicken to cast it on."); + player.getPacketSender().drawHeadicon(1, 20, 0, 0); // draws + // headicon + // to + // chicken + break; + + case 3110: + sendNpcChat2("Well you're all finished here now. I'll give you a", + "reasonable number of runes when you leave.", + player.talkingNpc, "Magic Instructor"); + player.nextChat = 3111; + break; + + case 3111: + sendOption2("Mainland", "Stay here"); + player.dialogueAction = 3111; + player.nextChat = 0; + break; + + case 3112:// Mainland + player.tutorialProgress = 35; + sendNpcChat4( + "When you get to the mainland you will find yourself in", + "the town of Lumbridge. If you want some ideas on", + "where to go next talk to my friend the Lumbridge", + "Guide. You can't miss him; he's holding a big staff with", + player.talkingNpc, "Magic Instructor"); + player.nextChat = 3113; + break; + case 3113: + sendNpcChat4( + "a question mark on the end. He also has a white beard", + "and carries a rucksack full of scrolls. There are also", + "many tutors willing to teach you about the many skills", + "you could learn.", player.talkingNpc, "Magic Instructor"); + player.nextChat = 3114; + break; + + case 3114: + sendNpcChat3( + "If all else fails, visit the " + GameConstants.SERVER_NAME + + " website for a whole", + "chestload of information on quests, skills, and minigames", + "as well as a very good starter's guide.", + player.talkingNpc, "Magic Instructor"); + player.nextChat = 3115; + break; + + case 3115: + player.tutorialProgress = 36; + sendStatement4( + "Welcome to Lumbridge! To get more help, simply click on the", + "Lumbridge Guide or one of the Tutors - these can be found by", + "looking for the question mark icon on your mini-map. If you find", + "you are lost at any time, look for a signpost."); + player.nextChat = 3116; + player.canWalkTutorial = true; + break; + + case 3116: + player.getPacketSender().showInterface(3559); + player.canChangeAppearance = true; + player.closeTutorialInterface = true; + player.nextChat = 0; + break; + + case 3117: + sendNpcChat1( + "You can't stay here you've completed the tutorial already.", + player.talkingNpc, "Magic Instructor"); + player.nextChat = 3112; + break; + + case 3118: + sendNpcChat2("Hello " + player.playerName + ".", + "Are you interested in buying any beer?", + player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 3119; + break; + + case 3119: + sendOption2("Yes please.", "No Thanks."); + player.dialogueAction = 152; + break; + + case 3120: + sendPlayerChat1("No thanks."); + player.nextChat = 0; + break; + + case 3121: + sendPlayerChat1("Yes please."); + player.nextChat = 3122; + break; + + case 3122: + sendOption4("Asgarnain Ale", "Wizard's Mind Bomb", "Dwarven Stout", + "Never Mind"); + player.dialogueAction = 153; + break; + + case 3123: + if (player.getItemAssistant().playerHasItem(995, 3)) { + sendPlayerChat1("Asgarnian Ale please."); + player.getItemAssistant().deleteItem(995, 3); + player.getItemAssistant().addOrDropItem(1905, 1); + player.nextChat = 0; + } else { + sendNpcChat1("You don't have enough coins to buy that.", + player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + } + break; + + case 3124: + sendPlayerChat1("Wizard's Mind Bomb please."); + player.getItemAssistant().deleteItem(995, 3); + player.getItemAssistant().addOrDropItem(1907, 1); + player.nextChat = 0; + break; + + case 3125: + sendPlayerChat1("Dwarven Stout please."); + player.getItemAssistant().deleteItem(995, 3); + player.getItemAssistant().addOrDropItem(1913, 1); + player.nextChat = 0; + break; + + case 3126: + sendPlayerChat1("Never mind."); + player.nextChat = 0; + break; + + /*case 3127: + sendNpcChat3("Im sorry...", "I can't seem to find your reward,", "Did you vote correctly?", 945, "" + Constants.SERVER_NAME + " Guide"); + client.nextChat = 0; + break; + + case 3128: + sendNpcChat2("Im sorry,", "An error occured, please try again later.", 945, "" + Constants.SERVER_NAME + " Guide"); + client.nextChat = 0; + break; + + case 3129: + sendNpcChat2("Thank you so much for voting!", "Enjoy your free experience lamp!", 945, "" + Constants.SERVER_NAME + " Guide"); + client.getItemAssistant().addOrDropItem(2528, 1); + VotingHandler.setAsReceived(client.playerName); + client.nextChat = 0; + break; + + case 3130: + int reward = 1000 + Misc.random(3000); + sendNpcChat2("Thank you so much for voting!", "Enjoy your " + reward + " coins!", 945, "" + Constants.SERVER_NAME + " Guide"); + client.getItemAssistant().addOrDropItem(995, reward); + VotingHandler.setAsReceived(client.playerName); + client.nextChat = 0; + break; + + case 3131: + sendNpcChat2("Thank you so much for voting!", "Enjoy your magical lamp that restores your run!", 945, "" + Constants.SERVER_NAME + " Guide"); + client.getItemAssistant().addOrDropItem(VotingRewards.ITEM, 1); + VotingHandler.setAsReceived(client.playerName); + client.nextChat = 0; + break; + + case 3132: + sendNpcChat2("We couldn't find your reward,", "Please report this with a screenshot of your chatbox!", 945, "" + Constants.SERVER_NAME + " Guide"); + client.nextChat = 0; + break;*/ + + case 3133: + sendNpcChat2( + "Thank you for rescuing me! It isn't very comfy in this", + "cell!", player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 3134; + break; + + case 3134: + sendOption2("So... do you know anywhere good to explore?", + "Do I get a reward?"); + player.dialogueAction = 154; + break; + + case 3135: + sendPlayerChat1("Do I get a reward? For freeing you and all..."); + player.nextChat = 3136; + break; + + case 3136: + sendNpcChat2( + "Well... not really... The Black Knights took all of my", + "stuff before throwing me in here to rot!", + player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 0; + break; + + case 3137: + sendPlayerChat1("So... do you know anywhere good to explore?"); + player.nextChat = 3138; + break; + + case 3138: + sendNpcChat3( + "Well, this dungeon was quite good to explore ...until I", + "got captured, anyway. I was given a key to an inner", + "part of this dungeon by a mysterious cloaked stranger!", + player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 3139; + break; + + case 3139: + sendNpcChat3("It's rather tough for me to get that far into the", + "dungeon however... I just keep getting captured! Would", + "you like to give it a go?", player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 3140; + break; + + case 3140: + sendOption2("Yes please!", "No, it's too dangerous for me."); + player.dialogueAction = 155; + break; + + case 3141: + sendPlayerChat1("No, it's too dangerous for me."); + player.nextChat = 0; + break; + + case 3142: + sendPlayerChat1("Yes please!"); + player.nextChat = 3143; + break; + + case 3143: + sendStatement("Velrak reaches somewhere mysterious and passes you a key."); + player.getItemAssistant().addOrDropItem(1590, 1); + player.nextChat = 0; + break; + + case 3144: + sendNpcChat1("Would you like me to teleport you to rune essence?", + player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 3145; + break; + + case 3145: + sendOption2("Yes please.", "No thanks."); + player.dialogueAction = 156; + break; + + case 3146: + sendPlayerChat1("No thanks."); + player.nextChat = 0; + break; + + case 3147: + sendPlayerChat1("Yes please."); + player.nextChat = 3148; + break; + + case 3148: + String type = player.playerMagicBook == 0 ? "modern" : "ancient"; + player.getPlayerAssistant().startTeleport(2911, 4832, 0, type); + break; + + case 3149: + sendNpcChat1("Welcome to the Wizards Guild.", player.talkingNpc, + "Wizard Distenor"); + player.nextChat = 0; + break; + + case 3150: + sendNpcChat1("Hello are you interested in buying anything?", + player.talkingNpc, "Bartender"); + player.nextChat = 3151; + break; + + case 3151: + sendOption2("Yes please.", "No thanks."); + player.dialogueAction = 157; + break; + + case 3152: + sendPlayerChat1("No thanks."); + player.nextChat = 0; + break; + + case 3153: + sendPlayerChat1("Yes please."); + player.nextChat = 3154; + break; + + case 3154: + sendNpcChat1("What would you like?", player.talkingNpc, "Bartender"); + player.nextChat = 3155; + break; + + case 3155: + sendOption2("Meat Pie", "Stew"); + player.dialogueAction = 158; + break; + + case 3156: + if (player.getItemAssistant().playerHasItem(995, 16)) { + sendPlayerChat1("Meat Pie please."); + player.getItemAssistant().deleteItem(995, 16); + player.getItemAssistant().addOrDropItem(2327, 1); + player.nextChat = 0; + } else { + sendNpcChat1("You need 16 coins to buy that.", + player.talkingNpc, "Bartender"); + player.nextChat = 0; + } + break; + + case 3157: + if (player.getItemAssistant().playerHasItem(995, 20)) { + sendPlayerChat1("Stew please."); + player.getItemAssistant().deleteItem(995, 20); + player.getItemAssistant().addOrDropItem(2003, 1); + player.nextChat = 0; + } else { + sendNpcChat1("You need 20 coins to buy that.", + player.talkingNpc, "Bartender"); + player.nextChat = 0; + } + break; + + case 3158: + sendNpcChat1("Hello, " + player.playerName + " what would you like to do?", player.talkingNpc, "Wyson the Gardener"); + player.nextChat = 3159; + break; + + case 3159: + sendOption3("Buy woad leaves.", "Exchange mole skins/claws for nests.", "Nothing."); + player.dialogueAction = 159; + break; + + case 3160: + sendPlayerChat1("I don't want to do anything."); + player.nextChat = 0; + break; + + case 3161: + sendPlayerChat1("I would like to buy woad leaves."); + player.nextChat = 3162; + break; + + case 3162: + sendNpcChat1("How much are you willing to pay for a woad leaf?", + player.talkingNpc, "Wyson the Gardener"); + player.nextChat = 3163; + break; + + case 3163: + sendOption4("5 coins", "10 coins", "15 coins", "20 coins"); + player.dialogueAction = 160; + break; + + case 3164: + sendNpcChat2("Don't be ridiculous offer me more", + "and I may sell you one!", player.talkingNpc, + "Wyson the Gardener"); + player.nextChat = 0; + break; + + case 3165: + if (player.getItemAssistant().playerHasItem(995, 15)) { + sendNpcChat1( + "That sounds like a fair offer, here's one woaf leaf.", + player.talkingNpc, "Wyson the Gardener"); + player.getItemAssistant().addOrDropItem(1793, 1); + player.getItemAssistant().deleteItem(995, 15); + player.nextChat = 0; + } else { + sendNpcChat1("You don't have enough coins to buy a woad leaf.", + player.talkingNpc, "Wyson the Gardener"); + } + break; + + case 3166: + if (player.getItemAssistant().playerHasItem(995, 15)) { + sendNpcChat1( + "That offer sounds generous, I will give you two woaf leaves!", + player.talkingNpc, "Wyson the Gardener"); + player.getItemAssistant().addOrDropItem(1793, 2); + player.getItemAssistant().deleteItem(995, 20); + player.nextChat = 0; + } else { + sendNpcChat1("You don't have enough coins to buy a woad leaf.", + player.talkingNpc, "Wyson the Gardener"); + } + break; + + case 3167: + sendNpcChat1("Hello are you interested in buying anything?", + player.talkingNpc, "Roavar"); + player.nextChat = 3168; + break; + + case 3168: + sendOption2("Yes please.", "No Thanks."); + player.dialogueAction = 162; + break; + + case 3169: + sendPlayerChat1("No thanks."); + player.nextChat = 0; + break; + + case 3170: + sendPlayerChat1("Yes please can I get a moonlight mean?"); + player.nextChat = 3171; + break; + + case 3171: + if (player.getItemAssistant().playerHasItem(995, 5)) { + sendNpcChat1("Sure thing.", player.talkingNpc, "Roavar"); + player.getItemAssistant().deleteItem(995, 5); + player.getItemAssistant().addOrDropItem(2955, 1); + player.nextChat = 0; + } else { + sendNpcChat1("You need 5 coins to buy that.", + player.talkingNpc, "Roavar"); + player.nextChat = 0; + } + break; + + case 3172: + sendOption2("Experience Lamp", + "Magical Lamp that restores your run to full"); + player.dialogueAction = 163; + break; + + case 3173: + sendNpcChat2("Hello, would you like to travel to Shilo Village", + "for 200 coins?", player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 3174; + break; + + case 3174: + sendOption2("Yes please.", "No Thanks."); + player.dialogueAction = 164; + break; + + case 3175: + sendPlayerChat1("No thanks."); + player.nextChat = 0; + break; + + case 3176: + sendPlayerChat1("Yes please."); + player.nextChat = 3177; + break; + + case 3177: + if (player.getItemAssistant().playerHasItem(995, 200)) { + player.getItemAssistant().deleteItem(995, 200); + player.getPlayerAssistant().startTeleport(2834, 2953, 0, + "modern"); + player.nextChat = 0; + } else { + sendNpcChat1("You don't have enough coins", player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 0; + } + break; + + case 3178: + sendNpcChat2( + "Hello, would you like to travel to back to Brimhaven", + "for 200 coins?", player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 3179; + break; + + case 3179: + sendOption2("Yes please.", "No Thanks."); + player.dialogueAction = 165; + break; + + case 3180: + sendPlayerChat1("No thanks."); + player.nextChat = 0; + break; + + case 3181: + sendPlayerChat1("Yes please."); + player.nextChat = 3182; + break; + + case 3182: + if (player.getItemAssistant().playerHasItem(995, 200)) { + player.getItemAssistant().deleteItem(995, 200); + player.getPlayerAssistant().startTeleport(2779, 3212, 0, "modern"); + player.nextChat = 0; + } else { + sendNpcChat1("You don't have enough coins", player.talkingNpc, NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 0; + } + break; + + case 3183: + sendNpcChat2("Hello, are you interested in buying cooking gauntlets", "for 25k?", player.talkingNpc, NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 3184; + break; + + case 3184: + sendOption2("Yes please.", "No thank you."); + player.dialogueAction = 178; + break; + + case 3185: + sendPlayerChat1("No thank you, do I look like I'm a cook?"); + player.nextChat = 0; + break; + + case 3186: + if (player.getItemAssistant().playerHasItem(995, 25000) + && !player.getItemAssistant().playerHasItem(775) + && player.playerEquipment[player.playerHands] != 775) { + sendPlayerChat1("Yes please."); + player.getItemAssistant().deleteItem(995, 25000); + player.getPlayerAssistant().removeGloves(); + player.getItemAssistant().addOrDropItem(775, 1); + player.nextChat = 0; + } else if (player.getItemAssistant().playerHasItem(775) + || player.playerEquipment[player.playerHands] == 775) { + sendNpcChat1("Why would you want another pair?", + player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 0; + } else { + sendNpcChat1("You need 25k to buy these.", player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 0; + } + break; + + case 3187: + sendStatement("You found a hidden tunnel! Do you want to enter it?"); + player.nextChat = 3188; + break; + + case 3188: + sendOption2("Yea! I'm fearless!", "No way! That looks scary!"); + player.dialogueAction = 1; + player.nextChat = 0; + break; + + case 3189: + sendNpcChat2( + "Hello, are you interested in buying goldsmith gantlets", + "for 25k?", player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 3190; + break; + + case 3190: + sendOption2("Yes please.", "No thank you."); + player.dialogueAction = 175; + break; + + case 3191: + sendPlayerChat1("No thank you, do I look like I'm a smither?"); + player.nextChat = 0; + break; + + case 3192: + if (player.getItemAssistant().playerHasItem(995, 25000) + && !player.getItemAssistant().playerHasItem(776) + && player.playerEquipment[player.playerHands] != 776) { + sendPlayerChat1("Yes please."); + player.getItemAssistant().deleteItem(995, 25000); + player.getPlayerAssistant().removeGloves(); + player.getItemAssistant().addOrDropItem(776, 1); + player.nextChat = 0; + } else if (player.getItemAssistant().playerHasItem(776) + || player.playerEquipment[player.playerHands] == 776) { + sendNpcChat1("Why would you want another pair?", + player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 0; + } else { + sendNpcChat1("You need 25k to buy these.", player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 0; + } + break; + + case 3193: + if (!player.getItemAssistant().playerHasItem(1540)) { + player.getItemAssistant().addOrDropItem(1540, 1); + sendNpcChat1("Enjoy!", player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 0; + } else { + sendNpcChat1("You already have one of those shields.", + player.talkingNpc, + NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 0; + } + break; + + case 3194: + QuestRewards.vampFinish(player); + break; + + case 3195: + sendPlayerChat1("I would like to exchange mole skins/claws for nests."); + player.nextChat = 3196; + break; + + case 3196: + sendOption2("Mole skins.", "Mole claws."); + player.dialogueAction = 180; + break; + + case 3197: + if (MOLE_SKIN > 0) { + sendPlayerChat2("I would like to exchange my " + MOLE_SKIN + " mole skins,", "for bird nests."); + player.nextChat = 3198; + } else { + sendNpcChat1("You don't have any mole skins.", player.talkingNpc, NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 0; + } + break; + + case 3198: + player.getItemAssistant().deleteItem(7418, MOLE_SKIN); + player.getItemAssistant().addOrDropItem(7413, MOLE_SKIN); + sendNpcChat1("Here you go", player.talkingNpc, NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 0; + break; + + case 3199: + if (MOLE_CLAW > 0) { + sendPlayerChat2("I would like to exchange my " + MOLE_CLAW + " mole claws,", "for bird nests."); + player.nextChat = 3200; + } else { + sendNpcChat1("You don't have any mole claws.", player.talkingNpc, NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 0; + } + break; + + case 3200: + player.getItemAssistant().deleteItem(7416, MOLE_CLAW); + player.getItemAssistant().addOrDropItem(7413, MOLE_CLAW); + sendNpcChat1("Here you go", player.talkingNpc, NpcHandler.getNpcListName(player.talkingNpc)); + player.nextChat = 0; + break; + + //483 + case 3201: //competition judge + sendNpcChat4("Hello!", "I'm the competition judge of the Ranging Guild.", "You can buy shots from me and shoot the targets", "for points. You can exchange the points with me.", player.talkingNpc, "Judge"); + player.nextChat = 3202; + break; + + case 3202: + sendNpcChat1("What would you like to do?", player.talkingNpc, "Judge"); + player.nextChat = 3203; + break; + + case 3203: + sendOption4("I would like to buy shots.", "I would like to exchange my points.", "How am I doing right now?", "Never mind."); + player.dialogueAction = 485; + break; + + case 3204: + sendOption2("Pastry Dough", "Bread Dough"); + player.dialogueAction = 3204;//186 + break; + + case 3205: + sendOption2("Pastry Dough", "Bread Dough"); + player.dialogueAction = 3205;//187 + break; + + /*case 3206: + if (Constants.HALLOWEEN == false) { + sendNpcChat2("The halloween event is now over,", "what would you like?", 945, "" + Constants.SERVER_NAME + " Guide"); + client.nextChat = 3207; + } else if (client.recievedMask == false && Constants.HALLOWEEN) { + sendNpcChat2("Thank you so much for voting!", "Enjoy your mask!", 945, "" + Constants.SERVER_NAME + " Guide"); + client.getItemAssistant().addOrDropItem(client.getPlayerAssistant().randomReward(), 1); + VotingHandler.setAsReceived(client.playerName); + client.recievedMask = true; + client.nextChat = 0; + } else if (client.recievedMask == true && Constants.HALLOWEEN) { + sendNpcChat2("You have already recieved a halloween mask.", "What reward would you like?", 945, "" + Constants.SERVER_NAME + " Guide"); + client.nextChat = 3207; + } + break; + + case 3207: + sendOption3("Experience Lamp (Depends on Level of Skill)", "Coins (1-4k)", "Energy Lamp"); + client.dialogueAction = 188; + break;*/ + + case 3208: + sendNpcChat1("Hello, " + player.playerName + " what would you like to do?", 958, "Fadli"); + player.nextChat = 3209; + break; + + case 3209: + sendOption2("I would like to open my bank.", "I would like to view your shop."); + player.dialogueAction = 189; + break; + + case 3210: + sendPlayerChat1("I would like to open my bank."); + player.nextChat = 3211; + break; + + case 3211: + player.getPacketSender().openUpBank(); + player.nextChat = 0; + break; + + case 3212: + sendPlayerChat1("I would like to view your shop."); + player.nextChat = 3213; + break; + + case 3213: + player.getShopAssistant().openShop(143); + player.nextChat = 0; + break; + + case 3214: + sendPlayerChat1("How's it going?"); + player.nextChat = 3215; + break; + + case 3215: + if (Misc.random(1) == 1) { + sendNpcChat1("I'm good, thank you for asking.", 2238, "Donie"); + player.nextChat = 0; + } else { + sendNpcChat1("I feel great, thanks for asking.", 2238, "Donie"); + player.nextChat = 0; + } + break; + + case 3216://23 + sendStartInfo("As you collect your reward, you notice an aweful smell.", "You look below the remaining debris to the bottom of the", "chest. You see a trapdoor. You open it and it leads to a ladder", "that goes down a long ways.", "Continue?"); + break; + + case 3217://24 + sendStatement("Would you like to continue?"); + player.nextChat = 3218; + break; + + case 3218://25 + sendOption2("Yes, I'm not afraid of anything!", "No way, the smell itself turns me away."); + player.dialogueAction = 3218; + break; + + case 3219://26 + sendStatement("This is a very dangerous minigame, are you sure?"); + player.nextChat = 3220; + break; + + case 3220://27 + player.dialogueAction = 3220; + sendOption2("Yes, I'm a brave warrior!", "Maybe I shouldn't, I could lose my items!"); + break; + + case 3221://28 + sendStatement("Congratulations, " + player.playerName + ". You've completed the barrows challenge & your reward has been delivered."); + player.nextChat = 0; + break; + + case 3222://29 + sendStatement("Are you ready to visit the chest room?"); + player.nextChat = 3223; + player.dialogueAction = 3222; + break; + + case 3223://30 + sendOption2("Yes, I've killed all the other brothers!", "No, I still need to kill more brothers"); + player.nextChat = 0; + break; + + /** + * CANNNON + * @author Andrew + */ + case 3500: + if (player.getCannon().needsCannon()) { + sendNpcChat2("Hello, " + Misc.capitalize(player.playerName) + ".", "I see that you lost your cannon.", player.talkingNpc, "Nulodion"); + player.nextChat = 3501; + } else { + sendNpcChat1("" + Misc.capitalize(player.playerName) + " you do not have anything to collect currently.", player.talkingNpc, "Nulodion"); + player.nextChat = 0; + } + break; + + case 3501: + if (player.getCannon().needsCannon()) { + sendNpcChat1("Here is your cannon, try not to lose it again.", player.talkingNpc, "Nulodion"); + for (int i = 0; i < 4; i++) { + player.getItemAssistant().addItem(player.getCannon().ITEM_PARTS[i], 1); + } + player.lostCannon = false; + player.nextChat = 0; + } else { + sendNpcChat1("" + Misc.capitalize(player.playerName) + " you do not have a cannon to collect currently.", player.talkingNpc, "Nulodion"); + player.nextChat = 0; + } + break; + case 3902: + sendNpcChat2( + "I am the leader of the White Knights of Falador.", + "Why do you seek my audience?", + player.talkingNpc, "Sir Amik Varze"); + player.nextChat = 3523; + break; + /*case 3503: + sendOption2( + "I seek a Quest!", + "I don't, I'm just looking around."); + player.dialogueAction = 1000; + break;*/ + case 3523: + sendPlayerChat1("I Seek a Quest!"); + player.nextChat = 3504; + break; + case 3524: + sendPlayerChat1("I don't, I'm just looking around."); + player.nextChat = 0; + break; + case 3504: + sendNpcChat2("Well, I need some spy work doing but it's quite dangerous. ", + "It will involve going into the Black Knights'Fortress.", + player.talkingNpc, "Sir Amik Varze"); + player.nextChat = 3506; + break; + /*case 3505: + sendOption2("I laugh in the face of danger!", "I go and cower in a corner at the fist sign of danger!"); + player.nextChat = 3506; + break;*/ + case 3506: + sendPlayerChat1("I laugh in the face on danger!");// 9158 + player.nextChat = 3507; + break; + case 3507: + sendNpcChat2("Good, I need you to kill 30 Black Knights", + "and collect their notes." + , player.talkingNpc, "Sir Amik Varze"); + player.nextChat = 3508; + break; + case 3508: + sendPlayerChat1("Alright, I better get going!"); + player.blackKnight = 1; + QuestAssistant.sendStages(player); + player.nextChat = 3509; + break; + case 3509: + sendNpcChat1("Thank you so much " + player.playerName + "!", player.talkingNpc, "Sir Amik Varze"); + player.nextChat = 0; + break; + case 3510: + if (player.getItemAssistant().playerHasItem(291, 30)) { + sendPlayerChat1("Here's all the items!"); + player.blackKnight = 2; + player.nextChat = 3511; + } else { + sendPlayerChat1("I don't have all the items yet."); + player.nextChat = 0; + } + break; + case 3511: + sendNpcChat1("Thank you very much " + player.playerName + "!", + player.talkingNpc, "Sir Amik Varze"); + player.nextChat = 3512; + break; + case 3512: + player.getItemAssistant().deleteItem(291, 30); + sendNpcChat2("You brought me everything I need!", + "Thank you!", player.talkingNpc, "Sir Amik Varze"); + player.nextChat = 3513; + break; + case 3513: + sendNpcChat1("One last thing" + player.playerName + ", here is your reward.", + player.talkingNpc, "Sir Amik Varze"); + QuestRewards.blackKnightReward(player); + player.nextChat = 0; + break; + + } + + } + + public void chatboxText(Player c, String text, String text1, String text2, + String text3, String title) { + player.getPacketSender().sendFrame126(title, 6180); + player.getPacketSender().sendFrame126(text, 6181); + player.getPacketSender().sendFrame126(text1, 6182); + player.getPacketSender().sendFrame126(text2, 6183); + player.getPacketSender().sendFrame126(text3, 6184); + } + + public void clearChatBoxText(Player c) { + player.getPacketSender().sendFrame126("", 6180); + player.getPacketSender().sendFrame126("", 6181); + player.getPacketSender().sendFrame126("", 6182); + player.getPacketSender().sendFrame126("", 6183); + player.getPacketSender().sendFrame126("", 6184); + } + + public void sendStartInfo(String text, String text1, String text2, String text3, String title, boolean send) { + player.getPacketSender().sendFrame126(title, 6180); + player.getPacketSender().sendFrame126(text, 6181); + player.getPacketSender().sendFrame126(text1, 6182); + player.getPacketSender().sendFrame126(text2, 6183); + player.getPacketSender().sendFrame126(text3, 6184); + player.getPacketSender().sendChatInterface(6179); + } + + /* + * Options + */ + + public void sendPlayerChat1(String s) { + player.getPacketSender().sendDialogueAnimation(969, 591); + player.getPacketSender().sendFrame126(player.playerName, 970); + player.getPacketSender().sendFrame126(s, 971); + player.getPacketSender().sendPlayerDialogueHead(969); + player.getPacketSender().sendChatInterface(968); + } + + public void sendPlayerChat2(String s, String s1) { + player.getPacketSender().sendDialogueAnimation(974, 591); + player.getPacketSender().sendFrame126(player.playerName, 975); + player.getPacketSender().sendFrame126(s, 976); + player.getPacketSender().sendFrame126(s1, 977); + player.getPacketSender().sendPlayerDialogueHead(974); + player.getPacketSender().sendChatInterface(973); + } + + private void sendPlayerChat3(String s, String s1, String s2) { + player.getPacketSender().sendDialogueAnimation(980, 591); + player.getPacketSender().sendFrame126(player.playerName, 981); + player.getPacketSender().sendFrame126(s, 982); + player.getPacketSender().sendFrame126(s1, 983); + player.getPacketSender().sendFrame126(s2, 984); + player.getPacketSender().sendPlayerDialogueHead(980); + player.getPacketSender().sendChatInterface(979); + } + + private void sendPlayerChat4(String s, String s1, String s2, String s3) { + player.getPacketSender().sendDialogueAnimation(987, 591); + player.getPacketSender().sendFrame126(player.playerName, 988); + player.getPacketSender().sendFrame126(s, 989); + player.getPacketSender().sendFrame126(s1, 990); + player.getPacketSender().sendFrame126(s2, 991); + player.getPacketSender().sendFrame126(s3, 992); + player.getPacketSender().sendPlayerDialogueHead(987); + player.getPacketSender().sendChatInterface(986); + } + + public void sendOption2(String s, String s1) { + player.getPacketSender().sendFrame126("Select an Option", 2460); + player.getPacketSender().sendFrame126(s, 2461); + player.getPacketSender().sendFrame126(s1, 2462); + player.getPacketSender().sendChatInterface(2459); + } + + public void sendOption3(String s, String s1, String s2) { + player.getPacketSender().sendFrame126("Select an Option", 2470); + player.getPacketSender().sendFrame126(s, 2471); + player.getPacketSender().sendFrame126(s1, 2472); + player.getPacketSender().sendFrame126(s2, 2473); + player.getPacketSender().sendChatInterface(2469); + } + + public void sendOption4(String s, String s1, String s2, String s3) { + player.getPacketSender().sendFrame126("Select an Option", 2481); + player.getPacketSender().sendFrame126(s, 2482); + player.getPacketSender().sendFrame126(s1, 2483); + player.getPacketSender().sendFrame126(s2, 2484); + player.getPacketSender().sendFrame126(s3, 2485); + player.getPacketSender().sendChatInterface(2480); + } + + public void sendOption5(String s, String s1, String s2, String s3, String s4) { + player.getPacketSender().sendFrame126("Select an Option", 2493); + player.getPacketSender().sendFrame126(s, 2494); + player.getPacketSender().sendFrame126(s1, 2495); + player.getPacketSender().sendFrame126(s2, 2496); + player.getPacketSender().sendFrame126(s3, 2497); + player.getPacketSender().sendFrame126(s4, 2498); + player.getPacketSender().sendChatInterface(2492); + } + + /* + * Statements + */ + + public void sendStatement(String s) { // 1 line click here to continue chat + // box interface + player.getPacketSender().sendFrame126(s, 357); + player.getPacketSender().sendFrame126("Click here to continue", 358); + player.getPacketSender().sendChatInterface(356); + } + + public void sendStatement2(String s, String s1) { + player.getPacketSender().sendFrame126(s, 360); + player.getPacketSender().sendFrame126(s1, 361); + player.getPacketSender().sendFrame126("Click here to continue", 362); + player.getPacketSender().sendChatInterface(359); + } + + public void sendStatement3(String s, String s1, String s2) { + player.getPacketSender().sendFrame126(s, 364); + player.getPacketSender().sendFrame126(s1, 365); + player.getPacketSender().sendFrame126(s1, 366); + player.getPacketSender().sendFrame126("Click here to continue", 367); + player.getPacketSender().sendChatInterface(363); + } + + public void sendStatement4(String s, String s1, String s2, String s3) { + player.getPacketSender().sendFrame126(s, 369); + player.getPacketSender().sendFrame126(s1, 370); + player.getPacketSender().sendFrame126(s2, 371); + player.getPacketSender().sendFrame126(s3, 372); + player.getPacketSender().sendFrame126("Click here to continue", 373); + player.getPacketSender().sendChatInterface(368); + } + + public void itemMessage(String title, String message, int itemid, int size) { + player.getPacketSender().sendDialogueAnimation(4883, 591); + player.getPacketSender().sendFrame126(title, 4884); + player.getPacketSender().sendFrame126(message, 4885); + player.getPacketSender().sendFrame126("Click here to continue.", 4886); + player.getPacketSender().sendFrame246(4883, size, itemid); + player.getPacketSender().sendChatInterface(4882); + } + + /* + * Npc Chatting + */ + + public void sendNpcChat1(String s, int ChatNpc, String name) { + player.getPacketSender().sendDialogueAnimation(4883, 591); + player.getPacketSender().sendFrame126(name, 4884); + player.getPacketSender().sendFrame126(s, 4885); + player.getPacketSender().sendNPCDialogueHead(ChatNpc, 4883); + player.getPacketSender().sendChatInterface(4882); + } + + public void sendNpcChat2(String s, String s1, int ChatNpc, String name) { + player.getPacketSender().sendDialogueAnimation(4888, 591); + player.getPacketSender().sendFrame126(name, 4889); + player.getPacketSender().sendFrame126(s, 4890); + player.getPacketSender().sendFrame126(s1, 4891); + player.getPacketSender().sendNPCDialogueHead(ChatNpc, 4888); + player.getPacketSender().sendChatInterface(4887); + } + + public void sendNpcChat3(String s, String s1, String s2, int ChatNpc, + String name) { + player.getPacketSender().sendDialogueAnimation(4894, 591); + player.getPacketSender().sendFrame126(name, 4895); + player.getPacketSender().sendFrame126(s, 4896); + player.getPacketSender().sendFrame126(s1, 4897); + player.getPacketSender().sendFrame126(s2, 4898); + player.getPacketSender().sendNPCDialogueHead(ChatNpc, 4894); + player.getPacketSender().sendChatInterface(4893); + } + + + public void sendNpcChat4(String s, String s1, String s2, String s3, + int ChatNpc, String name) { + player.getPacketSender().sendDialogueAnimation(4901, 591); + player.getPacketSender().sendFrame126(name, 4902); + player.getPacketSender().sendFrame126(s, 4903); + player.getPacketSender().sendFrame126(s1, 4904); + player.getPacketSender().sendFrame126(s2, 4905); + player.getPacketSender().sendFrame126(s3, 4906); + player.getPacketSender().sendNPCDialogueHead(ChatNpc, 4901); + player.getPacketSender().sendChatInterface(4900); + } + + /* + * Tutorial interface + */ + + public void sendStartInfo(String text, String text1, String text2, + String text3, String title) { + player.getPacketSender().sendFrame126(title, 6180); + player.getPacketSender().sendFrame126(text, 6181); + player.getPacketSender().sendFrame126(text1, 6182); + player.getPacketSender().sendFrame126(text2, 6183); + player.getPacketSender().sendFrame126(text3, 6184); + player.getPacketSender().sendChatInterface(6179); + } + + /* + * ItemInformation Box + */ + + public void itemMessage1(String message1, int itemid, int size) { + player.getPacketSender().sendDialogueAnimation(307, 591); + player.getPacketSender().sendFrame126(message1, 308); + player.getPacketSender().sendFrame246(307, size, itemid); + player.getPacketSender().sendChatInterface(306); + player.nextChat = 0; + } + + /* + * Give items + */ + + public void sendGiveItemNpc(String text1, String text2, int item1, int item2) { + player.getPacketSender().sendFrame126(text1, 6232); + player.getPacketSender().sendFrame126(text2, 6233); + player.getPacketSender().sendFrame246(6235, 170, item1); + player.getPacketSender().sendFrame246(6236, 170, item2); + player.getPacketSender().sendChatInterface(6231); + } + + public void sendGiveItemNpc(String text, int item) { + player.getPacketSender().sendFrame126(text, 308); + player.getPacketSender().sendFrame246(307, 200, item); + player.getPacketSender().sendChatInterface(306); + } + + /** + * USAGE: displayTwoItemsOption(c, new String {"Whip", "DDS", new int { + * 4151, 5698}, new int { 150, 150}); Displays two items with a select one + * option. + */ + public void displayTwoItemsOption(Player c, String[] s, int items[], + int[] zoom) { + player.getPacketSender().sendFrame126(s[0], 144); + player.getPacketSender().sendFrame126(s[1], 145); + player.getPacketSender().sendFrame246(items[0], zoom[0], 142); + player.getPacketSender().sendFrame246(items[1], zoom[1], 143); + player.getPacketSender().sendChatInterface(139); + } + + /** + * Displays single line text + */ + public void displaySingleLine(Player c, String s) { + player.getPacketSender().sendFrame126(s, 357); + player.getPacketSender().sendChatInterface(356); + } + + /** + * Displays two lined text + */ + public void displayTwoLined(Player c, String[] s) { + player.getPacketSender().sendFrame126(s[0], 360); + player.getPacketSender().sendFrame126(s[1], 361); + player.getPacketSender().sendChatInterface(359); + } + + /** + * Displays Three lined text + */ + public void displayThreeLined(Player c, String[] s) { + player.getPacketSender().sendFrame126(s[0], 364); + player.getPacketSender().sendFrame126(s[1], 365); + player.getPacketSender().sendFrame126(s[2], 366); + player.getPacketSender().sendChatInterface(363); + } + + /** + * Displays Four lined text + */ + public void displayFourLined(Player c, String[] s) { + player.getPacketSender().sendFrame126(s[0], 369); + player.getPacketSender().sendFrame126(s[1], 370); + player.getPacketSender().sendFrame126(s[2], 371); + player.getPacketSender().sendFrame126(s[2], 372); + player.getPacketSender().sendChatInterface(368); + } + + /** + * Select Option 2 + */ + public void displaySelectOption2(Player c, String[] s) { + player.getPacketSender().sendFrame126(s[0], 2461); + player.getPacketSender().sendFrame126(s[1], 2462); + player.getPacketSender().sendChatInterface(2459); + } + + /** + * Select Option 3 + */ + public void displaySelectOption3(Player c, String[] s) { + player.getPacketSender().sendFrame126(s[0], 2471); + player.getPacketSender().sendFrame126(s[1], 2472); + player.getPacketSender().sendFrame126(s[2], 2473); + player.getPacketSender().sendChatInterface(2469); + } + + /** + * Select Option 4 + */ + public void displaySelectOption4(Player c, String[] s) { + player.getPacketSender().sendFrame126(s[0], 2482); + player.getPacketSender().sendFrame126(s[1], 2483); + player.getPacketSender().sendFrame126(s[2], 2484); + player.getPacketSender().sendFrame126(s[3], 2485); + player.getPacketSender().sendChatInterface(2480); + } + + /** + * Select Option 5 + */ + public void displaySelectOption5(Player c, String[] s) { + player.getPacketSender().sendFrame126(s[0], 2494); + player.getPacketSender().sendFrame126(s[1], 2495); + player.getPacketSender().sendFrame126(s[2], 2496); + player.getPacketSender().sendFrame126(s[3], 2497); + player.getPacketSender().sendFrame126(s[4], 2498); + player.getPacketSender().sendChatInterface(2492); + } + + public void itemMessage(Player c, String message1, int itemid, int size) { + player.getPacketSender().sendDialogueAnimation(307, 591); + player.getPacketSender().sendFrame126(message1, 308); + player.getPacketSender().sendFrame246(307, size, itemid); + player.getPacketSender().sendChatInterface(306); + c.nextChat = 0; + } + + public void sendItemChat1(Player c, String header, String one, int item, + int zoom) { + player.getPacketSender().sendFrame246(4883, zoom, item); + player.getPacketSender().sendFrame126(header, 4884); + player.getPacketSender().sendFrame126(one, 4885); + player.getPacketSender().sendChatInterface(4882); + } + + public void sendItemChat2(Player player, String header, String one, String two, + int item, int zoom) { + player.getPacketSender().sendFrame246(4888, zoom, item); + player.getPacketSender().sendFrame126(header, 4889); + player.getPacketSender().sendFrame126(one, 4890); + player.getPacketSender().sendFrame126(two, 4891); + player.getPacketSender().sendChatInterface(4887); + } + + public void sendItemChat3(Player c, String header, String one, String two, + String three, int item, int zoom) { + player.getPacketSender().sendFrame246(4894, zoom, item); + player.getPacketSender().sendFrame126(header, 4895); + player.getPacketSender().sendFrame126(one, 4896); + player.getPacketSender().sendFrame126(two, 4897); + player.getPacketSender().sendFrame126(three, 4898); + player.getPacketSender().sendChatInterface(4893); + } + + public void sendItemChat4(Player c, String header, String one, String two, + String three, String four, int item, int zoom) { + player.getPacketSender().sendFrame246(4901, zoom, item); + player.getPacketSender().sendFrame126(header, 4902); + player.getPacketSender().sendFrame126(one, 4903); + player.getPacketSender().sendFrame126(two, 4904); + player.getPacketSender().sendFrame126(three, 4905); + player.getPacketSender().sendFrame126(four, 4906); + player.getPacketSender().sendChatInterface(4900); + } +} diff --git a/2006Redone Server/src/redone/game/globalworldobjects/ClimbOther.java b/2006Redone Server/src/com/rebotted/game/globalworldobjects/ClimbOther.java similarity index 69% rename from 2006Redone Server/src/redone/game/globalworldobjects/ClimbOther.java rename to 2006Redone Server/src/com/rebotted/game/globalworldobjects/ClimbOther.java index d744ba5d..864086e5 100644 --- a/2006Redone Server/src/redone/game/globalworldobjects/ClimbOther.java +++ b/2006Redone Server/src/com/rebotted/game/globalworldobjects/ClimbOther.java @@ -1,56 +1,56 @@ -package redone.game.globalworldobjects; - -import redone.game.objects.Object; -import redone.game.objects.ObjectDefaults; -import redone.game.players.Client; -import redone.world.clip.ObjectDef; -import redone.world.clip.Region; - -public class ClimbOther { - - public enum ClimbData { - - VARROCK_MANHOLE(881, 882), - LUMBRIDGE_TRAPDOOR(14879, 10698), - VARROCK_TRAPDOOR(1568, 10698); - - private int closedId, openId; - - private ClimbData(int closedId, int openId) { - this.closedId = closedId; - this.openId = openId; - } - - public int getClosed() { - return closedId; - } - - public int getOpen() { - return openId; - } - } - - public static void handleOpenOther(Client player, int objectType) { - for (ClimbData t: ClimbData.values()) { - if (objectType == t.getClosed()) { - new Object(t.getOpen(), player.objectX, player.objectY, player.heightLevel, ObjectDefaults.getObjectFace(player, t.getClosed()), 10, t.getClosed(), 100); - Region.addObject(t.getOpen(), player.objectX, player.objectY, player.heightLevel, 10, ObjectDefaults.getObjectFace(player, t.getClosed()), false); - } - } - } - - public static void useOther(Client player, int objectType) { - final String objectName = ObjectDef.getObjectDef(objectType).name; - if (System.currentTimeMillis() - player.climbDelay < 1800) { - return; - } - player.stopMovement(); - player.startAnimation(827); - player.getPlayerAssistant().removeAllWindows(); - player.teleportToX = player.absX; - player.teleportToY = player.absY + 6400; - player.getActionSender().sendMessage("You climb down the " + objectName.toLowerCase() + "."); - player.climbDelay = System.currentTimeMillis(); - } - -} +package com.rebotted.game.globalworldobjects; + +import com.rebotted.game.objects.Object; +import com.rebotted.game.objects.ObjectDefaults; +import com.rebotted.game.players.Player; +import com.rebotted.world.clip.ObjectDef; +import com.rebotted.world.clip.Region; + +public class ClimbOther { + + public enum ClimbData { + + VARROCK_MANHOLE(881, 882), + LUMBRIDGE_TRAPDOOR(14879, 10698), + VARROCK_TRAPDOOR(1568, 10698); + + private int closedId, openId; + + private ClimbData(int closedId, int openId) { + this.closedId = closedId; + this.openId = openId; + } + + public int getClosed() { + return closedId; + } + + public int getOpen() { + return openId; + } + } + + public static void handleOpenOther(Player player, int objectType) { + for (ClimbData t: ClimbData.values()) { + if (objectType == t.getClosed()) { + new Object(t.getOpen(), player.objectX, player.objectY, player.heightLevel, ObjectDefaults.getObjectFace(player, t.getClosed()), 10, t.getClosed(), 100); + Region.addObject(t.getOpen(), player.objectX, player.objectY, player.heightLevel, 10, ObjectDefaults.getObjectFace(player, t.getClosed()), false); + } + } + } + + public static void useOther(Player player, int objectType) { + final String objectName = ObjectDef.getObjectDef(objectType).name; + if (System.currentTimeMillis() - player.climbDelay < 1800) { + return; + } + player.stopMovement(); + player.startAnimation(827); + player.getPacketSender().closeAllWindows(); + player.teleportToX = player.absX; + player.teleportToY = player.absY + 6400; + player.getPacketSender().sendMessage("You climb down the " + objectName.toLowerCase() + "."); + player.climbDelay = System.currentTimeMillis(); + } + +} diff --git a/2006Redone Server/src/redone/game/globalworldobjects/Doors.java b/2006Redone Server/src/com/rebotted/game/globalworldobjects/Doors.java similarity index 92% rename from 2006Redone Server/src/redone/game/globalworldobjects/Doors.java rename to 2006Redone Server/src/com/rebotted/game/globalworldobjects/Doors.java index c231c1e5..be9c9650 100644 --- a/2006Redone Server/src/redone/game/globalworldobjects/Doors.java +++ b/2006Redone Server/src/com/rebotted/game/globalworldobjects/Doors.java @@ -1,276 +1,276 @@ -package redone.game.globalworldobjects; - -import java.util.ArrayList; -import java.util.List; -import java.io.*; -import java.util.Scanner; - -import redone.Server; -import redone.game.objects.Objects; -import redone.game.players.Player; - - -public class Doors { - - private static Doors singleton = null; - - private List doors = new ArrayList(); - - private File doorFile; - - public static Doors getSingleton() { - if (singleton == null) { - singleton = new Doors(System.getProperty("user.dir") + "/data/doors.txt"); - } - return singleton; - } - - private Doors(String file){ - doorFile = new File(file); - } - - private Doors(int door, int x, int y, int z, int face, int type, int open) { - this.doorId = door; - this.originalId = door; - this.doorX = x; - this.doorY = y; - this.originalX = x; - this.originalY = y; - this.doorZ = z; - this.originalFace = face; - this.currentFace = face; - this.type = type; - this.open = open; - } - - private Doors getDoor(int id, int x, int y, int z) { - for (Doors d : doors) { - if (d.doorId == id) { - if (d.doorX == x && d.doorY == y && d.doorZ == z) { - return d; - } - } - } - return null; - } - - public boolean handleDoor(int id, int x, int y, int z, Player player) { - - Doors d = getDoor(id, x, y, z); - - if (d == null) { - if (DoubleDoors.getSingleton().handleDoor(id, x, y, z)) { - return true; - } - return false; - } - - //todo: improvment: if player manage to get to door then open the door. - if(player.distanceToPoint(x, y) > 1) return false; - - int xAdjustment = 0, yAdjustment = 0; - if (d.type == 0) { - if (d.open == 0) { - if (d.originalFace == 0 && d.currentFace == 0) { - xAdjustment = -1; - } else if (d.originalFace == 1 && d.currentFace == 1) { - yAdjustment = 1; - } else if (d.originalFace == 2 && d.currentFace == 2) { - xAdjustment = 1; - } else if (d.originalFace == 3 && d.currentFace == 3) { - yAdjustment = -1; - } - } else if (d.open == 1) { - if (d.originalFace == 0 && d.currentFace == 0) { - yAdjustment = 1; - } else if (d.originalFace == 1 && d.currentFace == 1) { - xAdjustment = 1; - } else if (d.originalFace == 2 && d.currentFace == 2) { - yAdjustment = -1; - } else if (d.originalFace == 3 && d.currentFace == 3) { - xAdjustment = -1; - } - } - } else if (d.type == 9) { - if (d.open == 0) { - if (d.originalFace == 0 && d.currentFace == 0) { - xAdjustment = 1; - } else if (d.originalFace == 1 && d.currentFace == 1) { - xAdjustment = 1; - } else if (d.originalFace == 2 && d.currentFace == 2) { - xAdjustment = -1; - } else if (d.originalFace == 3 && d.currentFace == 3) { - xAdjustment = -1; - } - } else if (d.open == 1) { - if (d.originalFace == 0 && d.currentFace == 0) { - xAdjustment = 1; - } else if (d.originalFace == 1 && d.currentFace == 1) { - xAdjustment = 1; - } else if (d.originalFace == 2 && d.currentFace == 2) { - xAdjustment = -1; - } else if (d.originalFace == 3 && d.currentFace == 3) { - xAdjustment = -1; - } - } - } - if (xAdjustment != 0 || yAdjustment != 0) { - Objects o = new Objects(-1, d.doorX, d.doorY, d.doorZ, 0, d.type, 0); - Server.objectHandler.placeObject(o); - } - if (d.doorX == d.originalX && d.doorY == d.originalY) { - d.doorX += xAdjustment; - d.doorY += yAdjustment; - } else { - Objects o = new Objects(-1, d.doorX, d.doorY, d.doorZ, 0, d.type, 0); - Server.objectHandler.placeObject(o); - d.doorX = d.originalX; - d.doorY = d.originalY; - } - if (d.doorId == d.originalId) { - if (d.open == 0) { - d.doorId += 1; - } else if (d.open == 1) { - d.doorId -= 1; - } - } else if (d.doorId != d.originalId) { - if (d.open == 0) { - d.doorId -= 1; - } else if (d.open == 1) { - d.doorId += 1; - } - } - Server.objectHandler.placeObject(new Objects(d.doorId, d.doorX, d.doorY, d.doorZ, getNextFace(d), d.type, 0)); - return true; - } - - private int getNextFace(Doors d) { - int f = d.originalFace; - if (d.type == 0) { - if (d.open == 0) { - if (d.originalFace == 0 && d.currentFace == 0) { - f = 1; - } else if (d.originalFace == 1 && d.currentFace == 1) { - f = 2; - } else if (d.originalFace == 2 && d.currentFace == 2) { - f = 3; - } else if (d.originalFace == 3 && d.currentFace == 3) { - f = 0; - } else if (d.originalFace != d.currentFace){ - f = d.originalFace; - } - } else if (d.open == 1) { - if (d.originalFace == 0 && d.currentFace == 0) { - f = 3; - } else if (d.originalFace == 1 && d.currentFace == 1) { - f = 0; - } else if (d.originalFace == 2 && d.currentFace == 2) { - f = 1; - } else if (d.originalFace == 3 && d.currentFace == 3) { - f = 2; - } else if (d.originalFace != d.currentFace){ - f = d.originalFace; - } - } - } else if (d.type == 9) { - if (d.open == 0) { - if (d.originalFace == 0 && d.currentFace == 0) { - f = 3; - } else if (d.originalFace == 1 && d.currentFace == 1) { - f = 2; - } else if (d.originalFace == 2 && d.currentFace == 2) { - f = 1; - } else if (d.originalFace == 3 && d.currentFace == 3) { - f = 0; - } else if (d.originalFace != d.currentFace){ - f = d.originalFace; - } - } else if (d.open == 1) { - if (d.originalFace == 0 && d.currentFace == 0) { - f = 3; - } else if (d.originalFace == 1 && d.currentFace == 1) { - f = 0; - } else if (d.originalFace == 2 && d.currentFace == 2) { - f = 1; - } else if (d.originalFace == 3 && d.currentFace == 3) { - f = 2; - } else if (d.originalFace != d.currentFace){ - f = d.originalFace; - } - } - } - d.currentFace = f; - return f; - } - - public void load() { - //long start = System.currentTimeMillis(); - try { - singleton.processLineByLine(); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - //System.out.println("Loaded "+ doors.size() +" doors in "+ (System.currentTimeMillis() - start) +"ms."); - } - - private final void processLineByLine() throws FileNotFoundException { - Scanner scanner = new Scanner(new FileReader(doorFile)); - try { - while(scanner.hasNextLine()) { - processLine(scanner.nextLine()); - } - } finally { - scanner.close(); - } - } - - protected void processLine(String line){ - Scanner scanner = new Scanner(line); - scanner.useDelimiter(" "); - try { - while(scanner.hasNextLine()) { - int id = Integer.parseInt(scanner.next()); - int x = Integer.parseInt(scanner.next()); - int y = Integer.parseInt(scanner.next()); - int f = Integer.parseInt(scanner.next()); - int z = Integer.parseInt(scanner.next()); - int t = Integer.parseInt(scanner.next()); - doors.add(new Doors(id,x,y,z,f,t,alreadyOpen(id)?1:0)); - } - } finally { - scanner.close(); - } - } - - private boolean alreadyOpen(int id) { - for (int i = 0; i < openDoors.length; i++) { - if (openDoors[i] == id) { - return true; - } - } - return false; - } - - private int doorId; - private int originalId; - private int doorX; - private int doorY; - private int originalX; - private int originalY; - private int doorZ; - private int originalFace; - private int currentFace; - private int type; - private int open; - - private static int[] openDoors = { - 1504, 1514, 1517, 1520, 1531, - 1534, 2033, 2035, 2037, 2998, - 3271, 4468, 4697, 6101,6103, - 6105, 6107, 6109, 6111, 6113, - 6115, 6976, 6978, 8696, 8819, - 10261, 10263,10265,11708,11710, - 11712,11715,11994,12445, 13002, - }; - +package com.rebotted.game.globalworldobjects; + +import java.util.ArrayList; +import java.util.List; +import java.io.*; +import java.util.Scanner; + +import com.rebotted.GameEngine; +import com.rebotted.game.objects.Objects; +import com.rebotted.game.players.Player; + + +public class Doors { + + private static Doors singleton = null; + + private List doors = new ArrayList(); + + private File doorFile; + + public static Doors getSingleton() { + if (singleton == null) { + singleton = new Doors(System.getProperty("user.dir") + "/data/doors.txt"); + } + return singleton; + } + + private Doors(String file){ + doorFile = new File(file); + } + + private Doors(int door, int x, int y, int z, int face, int type, int open) { + this.doorId = door; + this.originalId = door; + this.doorX = x; + this.doorY = y; + this.originalX = x; + this.originalY = y; + this.doorZ = z; + this.originalFace = face; + this.currentFace = face; + this.type = type; + this.open = open; + } + + private Doors getDoor(int id, int x, int y, int z) { + for (Doors d : doors) { + if (d.doorId == id) { + if (d.doorX == x && d.doorY == y && d.doorZ == z) { + return d; + } + } + } + return null; + } + + public boolean handleDoor(int id, int x, int y, int z, Player player) { + + Doors d = getDoor(id, x, y, z); + + if (d == null) { + if (DoubleDoors.getSingleton().handleDoor(id, x, y, z)) { + return true; + } + return false; + } + + //todo: improvment: if player manage to get to door then open the door. + if(player.distanceToPoint(x, y) > 1) return false; + + int xAdjustment = 0, yAdjustment = 0; + if (d.type == 0) { + if (d.open == 0) { + if (d.originalFace == 0 && d.currentFace == 0) { + xAdjustment = -1; + } else if (d.originalFace == 1 && d.currentFace == 1) { + yAdjustment = 1; + } else if (d.originalFace == 2 && d.currentFace == 2) { + xAdjustment = 1; + } else if (d.originalFace == 3 && d.currentFace == 3) { + yAdjustment = -1; + } + } else if (d.open == 1) { + if (d.originalFace == 0 && d.currentFace == 0) { + yAdjustment = 1; + } else if (d.originalFace == 1 && d.currentFace == 1) { + xAdjustment = 1; + } else if (d.originalFace == 2 && d.currentFace == 2) { + yAdjustment = -1; + } else if (d.originalFace == 3 && d.currentFace == 3) { + xAdjustment = -1; + } + } + } else if (d.type == 9) { + if (d.open == 0) { + if (d.originalFace == 0 && d.currentFace == 0) { + xAdjustment = 1; + } else if (d.originalFace == 1 && d.currentFace == 1) { + xAdjustment = 1; + } else if (d.originalFace == 2 && d.currentFace == 2) { + xAdjustment = -1; + } else if (d.originalFace == 3 && d.currentFace == 3) { + xAdjustment = -1; + } + } else if (d.open == 1) { + if (d.originalFace == 0 && d.currentFace == 0) { + xAdjustment = 1; + } else if (d.originalFace == 1 && d.currentFace == 1) { + xAdjustment = 1; + } else if (d.originalFace == 2 && d.currentFace == 2) { + xAdjustment = -1; + } else if (d.originalFace == 3 && d.currentFace == 3) { + xAdjustment = -1; + } + } + } + if (xAdjustment != 0 || yAdjustment != 0) { + Objects o = new Objects(-1, d.doorX, d.doorY, d.doorZ, 0, d.type, 0); + GameEngine.objectHandler.placeObject(o); + } + if (d.doorX == d.originalX && d.doorY == d.originalY) { + d.doorX += xAdjustment; + d.doorY += yAdjustment; + } else { + Objects o = new Objects(-1, d.doorX, d.doorY, d.doorZ, 0, d.type, 0); + GameEngine.objectHandler.placeObject(o); + d.doorX = d.originalX; + d.doorY = d.originalY; + } + if (d.doorId == d.originalId) { + if (d.open == 0) { + d.doorId += 1; + } else if (d.open == 1) { + d.doorId -= 1; + } + } else if (d.doorId != d.originalId) { + if (d.open == 0) { + d.doorId -= 1; + } else if (d.open == 1) { + d.doorId += 1; + } + } + GameEngine.objectHandler.placeObject(new Objects(d.doorId, d.doorX, d.doorY, d.doorZ, getNextFace(d), d.type, 0)); + return true; + } + + private int getNextFace(Doors d) { + int f = d.originalFace; + if (d.type == 0) { + if (d.open == 0) { + if (d.originalFace == 0 && d.currentFace == 0) { + f = 1; + } else if (d.originalFace == 1 && d.currentFace == 1) { + f = 2; + } else if (d.originalFace == 2 && d.currentFace == 2) { + f = 3; + } else if (d.originalFace == 3 && d.currentFace == 3) { + f = 0; + } else if (d.originalFace != d.currentFace){ + f = d.originalFace; + } + } else if (d.open == 1) { + if (d.originalFace == 0 && d.currentFace == 0) { + f = 3; + } else if (d.originalFace == 1 && d.currentFace == 1) { + f = 0; + } else if (d.originalFace == 2 && d.currentFace == 2) { + f = 1; + } else if (d.originalFace == 3 && d.currentFace == 3) { + f = 2; + } else if (d.originalFace != d.currentFace){ + f = d.originalFace; + } + } + } else if (d.type == 9) { + if (d.open == 0) { + if (d.originalFace == 0 && d.currentFace == 0) { + f = 3; + } else if (d.originalFace == 1 && d.currentFace == 1) { + f = 2; + } else if (d.originalFace == 2 && d.currentFace == 2) { + f = 1; + } else if (d.originalFace == 3 && d.currentFace == 3) { + f = 0; + } else if (d.originalFace != d.currentFace){ + f = d.originalFace; + } + } else if (d.open == 1) { + if (d.originalFace == 0 && d.currentFace == 0) { + f = 3; + } else if (d.originalFace == 1 && d.currentFace == 1) { + f = 0; + } else if (d.originalFace == 2 && d.currentFace == 2) { + f = 1; + } else if (d.originalFace == 3 && d.currentFace == 3) { + f = 2; + } else if (d.originalFace != d.currentFace){ + f = d.originalFace; + } + } + } + d.currentFace = f; + return f; + } + + public void load() { + //long start = System.currentTimeMillis(); + try { + singleton.processLineByLine(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + //System.out.println("Loaded "+ doors.size() +" doors in "+ (System.currentTimeMillis() - start) +"ms."); + } + + private final void processLineByLine() throws FileNotFoundException { + Scanner scanner = new Scanner(new FileReader(doorFile)); + try { + while(scanner.hasNextLine()) { + processLine(scanner.nextLine()); + } + } finally { + scanner.close(); + } + } + + protected void processLine(String line){ + Scanner scanner = new Scanner(line); + scanner.useDelimiter(" "); + try { + while(scanner.hasNextLine()) { + int id = Integer.parseInt(scanner.next()); + int x = Integer.parseInt(scanner.next()); + int y = Integer.parseInt(scanner.next()); + int f = Integer.parseInt(scanner.next()); + int z = Integer.parseInt(scanner.next()); + int t = Integer.parseInt(scanner.next()); + doors.add(new Doors(id,x,y,z,f,t,alreadyOpen(id)?1:0)); + } + } finally { + scanner.close(); + } + } + + private boolean alreadyOpen(int id) { + for (int i = 0; i < openDoors.length; i++) { + if (openDoors[i] == id) { + return true; + } + } + return false; + } + + private int doorId; + private int originalId; + private int doorX; + private int doorY; + private int originalX; + private int originalY; + private int doorZ; + private int originalFace; + private int currentFace; + private int type; + private int open; + + private static int[] openDoors = { + 1504, 1514, 1517, 1520, 1531, + 1534, 2033, 2035, 2037, 2998, + 3271, 4468, 4697, 6101,6103, + 6105, 6107, 6109, 6111, 6113, + 6115, 6976, 6978, 8696, 8819, + 10261, 10263,10265,11708,11710, + 11712,11715,11994,12445, 13002, + }; + } \ No newline at end of file diff --git a/2006Redone Server/src/redone/game/globalworldobjects/DoubleDoors.java b/2006Redone Server/src/com/rebotted/game/globalworldobjects/DoubleDoors.java similarity index 90% rename from 2006Redone Server/src/redone/game/globalworldobjects/DoubleDoors.java rename to 2006Redone Server/src/com/rebotted/game/globalworldobjects/DoubleDoors.java index bc4641d0..d56d830a 100644 --- a/2006Redone Server/src/redone/game/globalworldobjects/DoubleDoors.java +++ b/2006Redone Server/src/com/rebotted/game/globalworldobjects/DoubleDoors.java @@ -1,388 +1,388 @@ -package redone.game.globalworldobjects; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.util.ArrayList; -import java.util.List; -import java.util.Scanner; - -import redone.Server; -import redone.game.objects.Objects; - -/** - * - * @author Killamess - * - */ -public class DoubleDoors { - - private static DoubleDoors singleton = null; - - private List doors = new ArrayList(); - - private File doorFile; - - public static DoubleDoors getSingleton() { - if (singleton == null) { - singleton = new DoubleDoors("./data/doubledoors.txt"); - } - return singleton; - } - - private DoubleDoors(String file){ - doorFile = new File(file); - } - - private DoubleDoors getDoor(int id, int x, int y, int z) { - for (DoubleDoors d : doors) { - if (d.doorId == id) { - if (d.x == x && d.y == y && d.z == z) { - return d; - } - } - } - return null; - } - - public boolean handleDoor(int id, int x, int y, int z) { - DoubleDoors doorClicked = getDoor(id, x, y, z); - - if (doorClicked == null) { - Server.objectHandler.placeObject(new Objects(-1, x, y, z, 0, 0, 0)); - return true; - } - if (doorClicked.doorId > 12000) { - return true; //nearly all of these are not opened - } - if (doorClicked.open == 0) { - if (doorClicked.originalFace == 0) { - DoubleDoors lowerDoor = getDoor(id - 3, x, y -1, z); - DoubleDoors upperDoor = getDoor(id + 3, x, y +1, z); - if (lowerDoor != null) { - changeLeftDoor(lowerDoor); - changeRightDoor(doorClicked); - } else if (upperDoor != null) { - changeLeftDoor(doorClicked); - changeRightDoor(upperDoor); - } - } else if (doorClicked.originalFace == 1) { - DoubleDoors westDoor = getDoor(id - 3, x -1, y, z); - DoubleDoors eastDoor = getDoor(id + 3, x +1, y, z); - if (westDoor != null) { - changeLeftDoor(westDoor); - changeRightDoor(doorClicked); - } else if (eastDoor != null) { - changeLeftDoor(doorClicked); - changeRightDoor(eastDoor); - } - } else if (doorClicked.originalFace == 2) { - DoubleDoors lowerDoor = getDoor(id - 3, x, y +1, z); - DoubleDoors upperDoor = getDoor(id + 3, x, y -1, z); - if (lowerDoor != null) { - changeLeftDoor(lowerDoor); - changeRightDoor(doorClicked); - } else if (upperDoor != null) { - changeLeftDoor(doorClicked); - changeRightDoor(upperDoor); - } - } else if (doorClicked.originalFace == 3) { - DoubleDoors westDoor = getDoor(id + 3, x -1, y, z); - DoubleDoors eastDoor = getDoor(id - 3, x +1, y, z); - if (westDoor != null) { - changeLeftDoor(westDoor); - changeRightDoor(doorClicked); - } else if (eastDoor != null) { - changeLeftDoor(doorClicked); - changeRightDoor(eastDoor); - } - } - } else if (doorClicked.open == 1) { - if (doorClicked.originalFace == 0) { - DoubleDoors westDoor = getDoor(id - 3, x -1, y, z); - DoubleDoors upperDoor = getDoor(id + 3, x +1, y, z); - if (westDoor != null) { - changeLeftDoor(westDoor); - changeRightDoor(doorClicked); - } else if (upperDoor != null) { - changeLeftDoor(doorClicked); - changeRightDoor(upperDoor); - } - } else if (doorClicked.originalFace == 1) { - DoubleDoors northDoor = getDoor(id - 3, x, y + 1, z); - DoubleDoors southDoor = getDoor(id + 3, x, y -1, z); - if (northDoor != null) { - changeLeftDoor(northDoor); - changeRightDoor(doorClicked); - } else if (southDoor != null) { - changeLeftDoor(doorClicked); - changeRightDoor(southDoor); - } - } else if (doorClicked.originalFace == 2) { - DoubleDoors westDoor = getDoor(id - 3, x -1, y, z); - DoubleDoors eastDoor = getDoor(id + 3, x, y -1, z); - if (westDoor != null) { - changeLeftDoor(westDoor); - changeRightDoor(doorClicked); - } else if (eastDoor != null) { - changeLeftDoor(doorClicked); - changeRightDoor(eastDoor); - } - } else if (doorClicked.originalFace == 3) { - DoubleDoors northDoor = getDoor(id - 3, x, y + 1, z); - DoubleDoors southDoor = getDoor(id + 3, x, y -1, z); - if (northDoor != null) { - changeLeftDoor(northDoor); - changeRightDoor(doorClicked); - } else if (southDoor != null) { - changeLeftDoor(doorClicked); - changeRightDoor(southDoor); - } - } - } - return true; - } - - public void changeLeftDoor(DoubleDoors d) { - int xAdjustment = 0, yAdjustment = 0; - - if (d.open == 0) { - if (d.originalFace == 0 && d.currentFace == 0) { - xAdjustment = -1; - } else if (d.originalFace == 1 && d.currentFace == 1) { - yAdjustment = 1; - } else if (d.originalFace == 2 && d.currentFace == 2) { - xAdjustment = +1; - } else if (d.originalFace == 3 && d.currentFace == 3) { - yAdjustment = -1; - } - } else if (d.open == 1) { - if (d.originalFace == 0 && d.currentFace == 0) { - yAdjustment = -1; - } else if (d.originalFace == 1 && d.currentFace == 1) { - xAdjustment = -1; - } else if (d.originalFace == 2 && d.currentFace == 2) { - xAdjustment = -1; - } else if (d.originalFace == 3 && d.currentFace == 3) { - xAdjustment = -1; - } - } - if (xAdjustment != 0 || yAdjustment != 0) { - Server.objectHandler.placeObject(new Objects(-1, d.x, d.y, d.z, 0, 0, 0)); - } - if (d.x == d.originalX && d.y == d.originalY) { - d.x += xAdjustment; - d.y += yAdjustment; - } else { - Server.objectHandler.placeObject(new Objects(-1, d.x, d.y, d.z, 0, 0, 0)); - d.x = d.originalX; - d.y = d.originalY; - } - if (d.doorId == d.originalId) { - if (d.open == 0) { - d.doorId += 1; - } else if (d.open == 1) { - d.doorId -= 1; - } - } else if (d.doorId != d.originalId) { - if (d.open == 0) { - d.doorId = d.originalId; - } else if (d.open == 1) { - d.doorId = d.originalId; - } - } - Server.objectHandler.placeObject(new Objects(d.doorId, d.x, d.y, d.z, getNextLeftFace(d), 0, 0)); - } - - private int getNextLeftFace(DoubleDoors d) { - int f = d.originalFace; - - if (d.open == 0) { - if (d.originalFace == 0 && d.currentFace == 0) { - f = 3; - } else if (d.originalFace == 1 && d.currentFace == 1) { - f = 0; - } else if (d.originalFace == 2 && d.currentFace == 2) { - f = 1; - } else if (d.originalFace == 3 && d.currentFace == 3) { - f = 0; - } else if (d.originalFace != d.currentFace){ - f = d.originalFace; - } - } else if (d.open == 1) { - if (d.originalFace == 0 && d.currentFace == 0) { - f = 1; - } else if (d.originalFace == 1 && d.currentFace == 1) { - f = 2; - } else if (d.originalFace == 2 && d.currentFace == 2) { - f = 1; - } else if (d.originalFace == 3 && d.currentFace == 3) { - f = 2; - } else if (d.originalFace != d.currentFace){ - f = d.originalFace; - } - } - d.currentFace = f; - return f; - } - - public void changeRightDoor(DoubleDoors d) { - int xAdjustment = 0, yAdjustment = 0; - - if (d.open == 0) { - if (d.originalFace == 0 && d.currentFace == 0) { - xAdjustment = -1; - } else if (d.originalFace == 1 && d.currentFace == 1) { - yAdjustment = 1; - } else if (d.originalFace == 2 && d.currentFace == 2) { - xAdjustment = +1; - } else if (d.originalFace == 3 && d.currentFace == 3) { - yAdjustment = -1; - } - } else if (d.open == 1) { - if (d.originalFace == 0 && d.currentFace == 0) { - xAdjustment = 1; - } else if (d.originalFace == 1 && d.currentFace == 1) { - xAdjustment = -1; - } else if (d.originalFace == 2 && d.currentFace == 2) { - yAdjustment = -1; - } else if (d.originalFace == 3 && d.currentFace == 3) { - xAdjustment = -1; - } - } - if (xAdjustment != 0 || yAdjustment != 0) { - Server.objectHandler.placeObject(new Objects(-1, d.x, d.y, d.z, 0, 0, 0)); - } - if (d.x == d.originalX && d.y == d.originalY) { - d.x += xAdjustment; - d.y += yAdjustment; - } else { - Server.objectHandler.placeObject(new Objects(-1, d.x, d.y, d.z, 0, 0, 0)); - d.x = d.originalX; - d.y = d.originalY; - } - if (d.doorId == d.originalId) { - if (d.open == 0) { - d.doorId += 1; - } else if (d.open == 1) { - d.doorId -= 1; - } - } else if (d.doorId != d.originalId) { - if (d.open == 0) { - d.doorId = d.originalId; - } else if (d.open == 1) { - d.doorId = d.originalId; - } - } - Server.objectHandler.placeObject(new Objects(d.doorId, d.x, d.y, d.z, getNextRightFace(d), 0, 0)); - } - - private int getNextRightFace(DoubleDoors d) { - int f = d.originalFace; - - if (d.open == 0) { - if (d.originalFace == 0 && d.currentFace == 0) { - f = 1; - } else if (d.originalFace == 1 && d.currentFace == 1) { - f = 2; - } else if (d.originalFace == 2 && d.currentFace == 2) { - f = 3; - } else if (d.originalFace == 3 && d.currentFace == 3) { - f = 2; - } else if (d.originalFace != d.currentFace){ - f = d.originalFace; - } - } else if (d.open == 1) { - if (d.originalFace == 0 && d.currentFace == 0) { - f = 3; - } else if (d.originalFace == 1 && d.currentFace == 1) { - f = 0; - } else if (d.originalFace == 2 && d.currentFace == 2) { - f = 1; - } else if (d.originalFace == 3 && d.currentFace == 3) { - f = 2; - } else if (d.originalFace != d.currentFace){ - f = d.originalFace; - } - } - d.currentFace = f; - return f; - } - - private int doorId; - private int originalId; - private int open; - private int x; - private int y; - private int z; - private int originalX; - private int originalY; - private int currentFace; - private int originalFace; - - public DoubleDoors(int id, int x, int y, int z, int f, int open) { - this.doorId = id; - this.originalId = id; - this.open = open; - this.x = x; - this.originalX = x; - this.y = y; - this.z = z; - this.originalY = y; - this.currentFace = f; - this.originalFace = f; - } - - public boolean isOpenDoor(int id){ - for (int i = 0; i < openDoors.length; i++) { - if (id == openDoors[i] || id + 3 == openDoors[i]) { - return true; - } - } - return false; - } - - //Have not found any others yet. Maybe only 1 type of double - //doors exist to operate. - private static int[] openDoors = { - 1520, 1517 - }; - - public void load() { - //long start = System.currentTimeMillis(); - try { - singleton.processLineByLine(); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - //System.out.println("Loaded "+ doors.size() +" Double doors in "+ (System.currentTimeMillis() - start) +"ms."); - } - - private final void processLineByLine() throws FileNotFoundException { - Scanner scanner = new Scanner(new FileReader(doorFile)); - try { - while(scanner.hasNextLine()) { - processLine(scanner.nextLine()); - } - } finally { - scanner.close(); - } - } - - protected void processLine(String line){ - Scanner scanner = new Scanner(line); - scanner.useDelimiter(" "); - try { - while(scanner.hasNextLine()) { - int id = Integer.parseInt(scanner.next()); - int x = Integer.parseInt(scanner.next()); - int y = Integer.parseInt(scanner.next()); - int f = Integer.parseInt(scanner.next()); - int z = Integer.parseInt(scanner.next()); - doors.add(new DoubleDoors(id, x, y, z, f, isOpenDoor(id) ? 1 : 0)); - } - } finally { - scanner.close(); - } - } +package com.rebotted.game.globalworldobjects; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; + +import com.rebotted.GameEngine; +import com.rebotted.game.objects.Objects; + +/** + * + * @author Killamess + * + */ +public class DoubleDoors { + + private static DoubleDoors singleton = null; + + private List doors = new ArrayList(); + + private File doorFile; + + public static DoubleDoors getSingleton() { + if (singleton == null) { + singleton = new DoubleDoors("./data/doubledoors.txt"); + } + return singleton; + } + + private DoubleDoors(String file){ + doorFile = new File(file); + } + + private DoubleDoors getDoor(int id, int x, int y, int z) { + for (DoubleDoors d : doors) { + if (d.doorId == id) { + if (d.x == x && d.y == y && d.z == z) { + return d; + } + } + } + return null; + } + + public boolean handleDoor(int id, int x, int y, int z) { + DoubleDoors doorClicked = getDoor(id, x, y, z); + + if (doorClicked == null) { + GameEngine.objectHandler.placeObject(new Objects(-1, x, y, z, 0, 0, 0)); + return true; + } + if (doorClicked.doorId > 12000) { + return true; //nearly all of these are not opened + } + if (doorClicked.open == 0) { + if (doorClicked.originalFace == 0) { + DoubleDoors lowerDoor = getDoor(id - 3, x, y -1, z); + DoubleDoors upperDoor = getDoor(id + 3, x, y +1, z); + if (lowerDoor != null) { + changeLeftDoor(lowerDoor); + changeRightDoor(doorClicked); + } else if (upperDoor != null) { + changeLeftDoor(doorClicked); + changeRightDoor(upperDoor); + } + } else if (doorClicked.originalFace == 1) { + DoubleDoors westDoor = getDoor(id - 3, x -1, y, z); + DoubleDoors eastDoor = getDoor(id + 3, x +1, y, z); + if (westDoor != null) { + changeLeftDoor(westDoor); + changeRightDoor(doorClicked); + } else if (eastDoor != null) { + changeLeftDoor(doorClicked); + changeRightDoor(eastDoor); + } + } else if (doorClicked.originalFace == 2) { + DoubleDoors lowerDoor = getDoor(id - 3, x, y +1, z); + DoubleDoors upperDoor = getDoor(id + 3, x, y -1, z); + if (lowerDoor != null) { + changeLeftDoor(lowerDoor); + changeRightDoor(doorClicked); + } else if (upperDoor != null) { + changeLeftDoor(doorClicked); + changeRightDoor(upperDoor); + } + } else if (doorClicked.originalFace == 3) { + DoubleDoors westDoor = getDoor(id + 3, x -1, y, z); + DoubleDoors eastDoor = getDoor(id - 3, x +1, y, z); + if (westDoor != null) { + changeLeftDoor(westDoor); + changeRightDoor(doorClicked); + } else if (eastDoor != null) { + changeLeftDoor(doorClicked); + changeRightDoor(eastDoor); + } + } + } else if (doorClicked.open == 1) { + if (doorClicked.originalFace == 0) { + DoubleDoors westDoor = getDoor(id - 3, x -1, y, z); + DoubleDoors upperDoor = getDoor(id + 3, x +1, y, z); + if (westDoor != null) { + changeLeftDoor(westDoor); + changeRightDoor(doorClicked); + } else if (upperDoor != null) { + changeLeftDoor(doorClicked); + changeRightDoor(upperDoor); + } + } else if (doorClicked.originalFace == 1) { + DoubleDoors northDoor = getDoor(id - 3, x, y + 1, z); + DoubleDoors southDoor = getDoor(id + 3, x, y -1, z); + if (northDoor != null) { + changeLeftDoor(northDoor); + changeRightDoor(doorClicked); + } else if (southDoor != null) { + changeLeftDoor(doorClicked); + changeRightDoor(southDoor); + } + } else if (doorClicked.originalFace == 2) { + DoubleDoors westDoor = getDoor(id - 3, x -1, y, z); + DoubleDoors eastDoor = getDoor(id + 3, x, y -1, z); + if (westDoor != null) { + changeLeftDoor(westDoor); + changeRightDoor(doorClicked); + } else if (eastDoor != null) { + changeLeftDoor(doorClicked); + changeRightDoor(eastDoor); + } + } else if (doorClicked.originalFace == 3) { + DoubleDoors northDoor = getDoor(id - 3, x, y + 1, z); + DoubleDoors southDoor = getDoor(id + 3, x, y -1, z); + if (northDoor != null) { + changeLeftDoor(northDoor); + changeRightDoor(doorClicked); + } else if (southDoor != null) { + changeLeftDoor(doorClicked); + changeRightDoor(southDoor); + } + } + } + return true; + } + + public void changeLeftDoor(DoubleDoors d) { + int xAdjustment = 0, yAdjustment = 0; + + if (d.open == 0) { + if (d.originalFace == 0 && d.currentFace == 0) { + xAdjustment = -1; + } else if (d.originalFace == 1 && d.currentFace == 1) { + yAdjustment = 1; + } else if (d.originalFace == 2 && d.currentFace == 2) { + xAdjustment = +1; + } else if (d.originalFace == 3 && d.currentFace == 3) { + yAdjustment = -1; + } + } else if (d.open == 1) { + if (d.originalFace == 0 && d.currentFace == 0) { + yAdjustment = -1; + } else if (d.originalFace == 1 && d.currentFace == 1) { + xAdjustment = -1; + } else if (d.originalFace == 2 && d.currentFace == 2) { + xAdjustment = -1; + } else if (d.originalFace == 3 && d.currentFace == 3) { + xAdjustment = -1; + } + } + if (xAdjustment != 0 || yAdjustment != 0) { + GameEngine.objectHandler.placeObject(new Objects(-1, d.x, d.y, d.z, 0, 0, 0)); + } + if (d.x == d.originalX && d.y == d.originalY) { + d.x += xAdjustment; + d.y += yAdjustment; + } else { + GameEngine.objectHandler.placeObject(new Objects(-1, d.x, d.y, d.z, 0, 0, 0)); + d.x = d.originalX; + d.y = d.originalY; + } + if (d.doorId == d.originalId) { + if (d.open == 0) { + d.doorId += 1; + } else if (d.open == 1) { + d.doorId -= 1; + } + } else if (d.doorId != d.originalId) { + if (d.open == 0) { + d.doorId = d.originalId; + } else if (d.open == 1) { + d.doorId = d.originalId; + } + } + GameEngine.objectHandler.placeObject(new Objects(d.doorId, d.x, d.y, d.z, getNextLeftFace(d), 0, 0)); + } + + private int getNextLeftFace(DoubleDoors d) { + int f = d.originalFace; + + if (d.open == 0) { + if (d.originalFace == 0 && d.currentFace == 0) { + f = 3; + } else if (d.originalFace == 1 && d.currentFace == 1) { + f = 0; + } else if (d.originalFace == 2 && d.currentFace == 2) { + f = 1; + } else if (d.originalFace == 3 && d.currentFace == 3) { + f = 0; + } else if (d.originalFace != d.currentFace){ + f = d.originalFace; + } + } else if (d.open == 1) { + if (d.originalFace == 0 && d.currentFace == 0) { + f = 1; + } else if (d.originalFace == 1 && d.currentFace == 1) { + f = 2; + } else if (d.originalFace == 2 && d.currentFace == 2) { + f = 1; + } else if (d.originalFace == 3 && d.currentFace == 3) { + f = 2; + } else if (d.originalFace != d.currentFace){ + f = d.originalFace; + } + } + d.currentFace = f; + return f; + } + + public void changeRightDoor(DoubleDoors d) { + int xAdjustment = 0, yAdjustment = 0; + + if (d.open == 0) { + if (d.originalFace == 0 && d.currentFace == 0) { + xAdjustment = -1; + } else if (d.originalFace == 1 && d.currentFace == 1) { + yAdjustment = 1; + } else if (d.originalFace == 2 && d.currentFace == 2) { + xAdjustment = +1; + } else if (d.originalFace == 3 && d.currentFace == 3) { + yAdjustment = -1; + } + } else if (d.open == 1) { + if (d.originalFace == 0 && d.currentFace == 0) { + xAdjustment = 1; + } else if (d.originalFace == 1 && d.currentFace == 1) { + xAdjustment = -1; + } else if (d.originalFace == 2 && d.currentFace == 2) { + yAdjustment = -1; + } else if (d.originalFace == 3 && d.currentFace == 3) { + xAdjustment = -1; + } + } + if (xAdjustment != 0 || yAdjustment != 0) { + GameEngine.objectHandler.placeObject(new Objects(-1, d.x, d.y, d.z, 0, 0, 0)); + } + if (d.x == d.originalX && d.y == d.originalY) { + d.x += xAdjustment; + d.y += yAdjustment; + } else { + GameEngine.objectHandler.placeObject(new Objects(-1, d.x, d.y, d.z, 0, 0, 0)); + d.x = d.originalX; + d.y = d.originalY; + } + if (d.doorId == d.originalId) { + if (d.open == 0) { + d.doorId += 1; + } else if (d.open == 1) { + d.doorId -= 1; + } + } else if (d.doorId != d.originalId) { + if (d.open == 0) { + d.doorId = d.originalId; + } else if (d.open == 1) { + d.doorId = d.originalId; + } + } + GameEngine.objectHandler.placeObject(new Objects(d.doorId, d.x, d.y, d.z, getNextRightFace(d), 0, 0)); + } + + private int getNextRightFace(DoubleDoors d) { + int f = d.originalFace; + + if (d.open == 0) { + if (d.originalFace == 0 && d.currentFace == 0) { + f = 1; + } else if (d.originalFace == 1 && d.currentFace == 1) { + f = 2; + } else if (d.originalFace == 2 && d.currentFace == 2) { + f = 3; + } else if (d.originalFace == 3 && d.currentFace == 3) { + f = 2; + } else if (d.originalFace != d.currentFace){ + f = d.originalFace; + } + } else if (d.open == 1) { + if (d.originalFace == 0 && d.currentFace == 0) { + f = 3; + } else if (d.originalFace == 1 && d.currentFace == 1) { + f = 0; + } else if (d.originalFace == 2 && d.currentFace == 2) { + f = 1; + } else if (d.originalFace == 3 && d.currentFace == 3) { + f = 2; + } else if (d.originalFace != d.currentFace){ + f = d.originalFace; + } + } + d.currentFace = f; + return f; + } + + private int doorId; + private int originalId; + private int open; + private int x; + private int y; + private int z; + private int originalX; + private int originalY; + private int currentFace; + private int originalFace; + + public DoubleDoors(int id, int x, int y, int z, int f, int open) { + this.doorId = id; + this.originalId = id; + this.open = open; + this.x = x; + this.originalX = x; + this.y = y; + this.z = z; + this.originalY = y; + this.currentFace = f; + this.originalFace = f; + } + + public boolean isOpenDoor(int id){ + for (int i = 0; i < openDoors.length; i++) { + if (id == openDoors[i] || id + 3 == openDoors[i]) { + return true; + } + } + return false; + } + + //Have not found any others yet. Maybe only 1 type of double + //doors exist to operate. + private static int[] openDoors = { + 1520, 1517 + }; + + public void load() { + //long start = System.currentTimeMillis(); + try { + singleton.processLineByLine(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + //System.out.println("Loaded "+ doors.size() +" Double doors in "+ (System.currentTimeMillis() - start) +"ms."); + } + + private final void processLineByLine() throws FileNotFoundException { + Scanner scanner = new Scanner(new FileReader(doorFile)); + try { + while(scanner.hasNextLine()) { + processLine(scanner.nextLine()); + } + } finally { + scanner.close(); + } + } + + protected void processLine(String line){ + Scanner scanner = new Scanner(line); + scanner.useDelimiter(" "); + try { + while(scanner.hasNextLine()) { + int id = Integer.parseInt(scanner.next()); + int x = Integer.parseInt(scanner.next()); + int y = Integer.parseInt(scanner.next()); + int f = Integer.parseInt(scanner.next()); + int z = Integer.parseInt(scanner.next()); + doors.add(new DoubleDoors(id, x, y, z, f, isOpenDoor(id) ? 1 : 0)); + } + } finally { + scanner.close(); + } + } } \ No newline at end of file diff --git a/2006Redone Server/src/redone/game/globalworldobjects/DoubleGates.java b/2006Redone Server/src/com/rebotted/game/globalworldobjects/DoubleGates.java similarity index 96% rename from 2006Redone Server/src/redone/game/globalworldobjects/DoubleGates.java rename to 2006Redone Server/src/com/rebotted/game/globalworldobjects/DoubleGates.java index 4359c836..96fa6473 100644 --- a/2006Redone Server/src/redone/game/globalworldobjects/DoubleGates.java +++ b/2006Redone Server/src/com/rebotted/game/globalworldobjects/DoubleGates.java @@ -1,180 +1,180 @@ -package redone.game.globalworldobjects; - -import redone.game.players.Client; -/** - * Single Gates - * @author Andrew (I'm A Boss on Rune-Server and Mr Extremez on Mopar & Runelocus) - */ - -public class DoubleGates extends GateHandler { - - public static void useDoubleGate(Client player, int objectId) { - switch (objectId) { - case 7049: - handleGate(player, 7049, 7050, 3077, 3259, 3077, 3260, 3077, 3258, 3078, 3258, 2); - break; - case 7050: - handleGate(player, 7050, 7049, 3077, 3260, 3077, 3259, 3078, 3258, 3077, 3258, 2); - break; - case 1598: - handleGate(player, 1598, 1599, 3319, 3467, 3318, 3467, 3320, 3467, 3320, 3468, 1); - break; - case 1599: - handleGate(player, 1599, 1598, 3318, 3467, 3319, 3467, 3320, 3468, 3320, 3467, 1); - break; - case 3197: - handleGate(player, 3197, 3198, 3311, 3234, 3310, 3234, 3312, 3234, 3312, 3235, 1); - break; - case 3198: - handleGate(player, 3198, 3197, 3310, 3234, 3311, 3234, 3312, 3235, 3312, 3234, 1); - break; - case 1551: - if (player.objectX > 3179 && player.objectX < 3182) { - handleGate(player, 1551, 1553, 3181, 3288, 3181, 3287, 3181, 3289, 3180, 3289, 0); - } else if (player.objectX > 3161 && player.objectX < 3164) { - handleGate(player, 1551, 1553, 3163, 3289, 3163, 3288, 3163, 3290, 3162, 3290, 0); - } else if (player.objectY > 3290 && player.objectY < 3294) { - handleGate(player, 1551, 1553, 3145, 3292, 3145, 3293, 3145, 3291, 3146, 3291, 2); - } else if (player.objectY > 3272 && player.objectY < 3275) { - handleGate(player, 1551, 1553, 3106, 3273, 3105, 3273, 3107, 3273, 3107, 3274, 1); - } else if (player.objectY > 3265 && player.objectY < 3268) { - handleGate(player, 1551, 1553, 3252, 3266, 3251, 3266, 3253, 3266, 3253, 3267, 1); - } else if (player.objectY > 3283 && player.objectY < 3286) { - handleGate(player, 1551, 1553, 3237, 3285, 3238, 3285, 3236, 3285, 3236, 3284, 5); - } else if (player.objectY > 3294 && player.objectY < 3297) { - handleGate(player, 1551, 1553, 3237, 3296, 3238, 3296, 3236, 3296, 3236, 3295, 5); - } else if (player.objectY > 3300 && player.objectY < 3303) { - handleGate(player, 1551, 1553, 3240, 3301, 3239, 3301, 3241, 3301, 3241, 3302, 1); - } else if (player.objectX > 3260 & player.objectX < 3263) { - handleGate(player, 1551, 1553, 3261, 3322, 3261, 3323, 3261, 3321, 3262, 3321, 2); - } else if (player.objectY > 3348 && player.objectY < 3351) { - handleGate(player, 1551, 1553, 2676, 3350, 2677, 3350, 2675, 3350, 2675, 3349, 5); - } else if (player.objectY > 3313 && player.objectY < 3318) { - handleGate(player, 1551, 1553, 3174, 3314, 3174, 3315, 3175, 3316, 3174, 3316, 4); - } else { - handleGate(player, 1551, 1553, 3198, 3281, 3198, 3280, 3198, 3282, 3197, 3282, 0); - } - break; - case 1553: - if (player.objectX > 3179 && player.objectX < 3182) { - handleGate(player, 1553, 1551, 3181, 3287, 3181, 3288, 3180, 3289, 3181, 3289, 0); - } else if (player.objectX > 3161 && player.objectX < 3164) { - handleGate(player, 1553, 1551, 3163, 3288, 3163, 3289, 3162, 3290, 3163, 3290, 0); - } else if (player.objectY > 3290 && player.objectY < 3294) { - handleGate(player, 1553, 1551, 3145, 3293, 3145, 3292, 3146, 3291, 3145, 3291, 2); - } else if (player.objectY > 3272 && player.objectY < 3275) { - handleGate(player, 1553, 1551, 3105, 3273, 3106, 3273, 3107, 3274, 3107, 3273, 1); - } else if (player.objectY > 3265 && player.objectY < 3268) { - handleGate(player, 1553, 1551, 3251, 3266, 3252, 3266, 3253, 3267, 3253, 3266, 1); - } else if (player.objectY > 3283 && player.objectY < 3286) { - handleGate(player, 1553, 1551, 3238, 3285, 3237, 3285, 3236, 3284, 3236, 3285, 5); - } else if (player.objectY > 3294 && player.objectY < 3297) { - handleGate(player, 1553, 1551, 3238, 3296, 3237, 3296, 3236, 3295, 3236, 3296, 5); - } else if (player.objectY > 3300 && player.objectY < 3303) { - handleGate(player, 1553, 1551, 3239, 3301, 3240, 3301, 3241, 3302, 3241, 3301, 1); - } else if (player.objectX > 3260 & player.objectX < 3263) { - handleGate(player, 1553, 1551, 3261, 3323, 3261, 3322, 3262, 3321, 3261, 3321, 2); - } else if (player.objectY > 3348 && player.objectY < 3351) { - handleGate(player, 1553, 1551, 2677, 3350, 2676, 3350, 2675, 3349, 2675, 3350, 5); - } else if (player.objectY > 3313 && player.objectY < 3318) { - handleGate(player, 1553, 1551, 3174, 3315, 3174, 3314, 3174, 3316, 3175, 3316, 4); - } else { - handleGate(player, 1553, 1551, 3198, 3280, 3198, 3281, 3197, 3282, 3198, 3282, 0); - } - break; - case 12986: - if (player.objectX > 3187 && player.objectX < 3190) { - handleGate(player, 12986, 12987, 3188, 3280, 3188, 3281, 3188, 3279, 3189, 3279, 2); - } else if (player.objectY > 3267 && player.objectY < 3270) { - handleGate(player, 12986, 12987, 3185, 3268, 3184, 3268, 3186, 3268, 3186, 3269, 1); - } else { - handleGate(player, 12986, 12987, 3212, 3261, 3211, 3261, 3213, 3261, 3213, 3262, 1); - } - break; - case 12987: - if (player.objectX > 3187 && player.objectX < 3190) { - handleGate(player, 12987, 12986, 3188, 3281, 3188, 3280, 3189, 3279, 3188, 3279, 2); - } else if (player.objectY > 3267 && player.objectY < 3270) { - handleGate(player, 12987, 12986, 3184, 3268, 3185, 3268, 3186, 3269, 3186, 3268, 1); - } else { - handleGate(player, 12987, 12986, 3211, 3261, 3212, 3261, 3213, 3262, 3213, 3261, 1); - } - break; - case 1596: - if (player.objectX > 3310 && player.objectX < 3313 && player.absY != 3333) { - handleSpecialGate(player, 1596, 1597, 3311, 3331, 3311, 3332, 3312, 3331, 3312, 3332, 3); - } else if (player.objectY > 3318 && player.objectY < 3321 && player.absX != 2935 && player.absX != 2932) { - handleSpecialGate(player, 1596, 1597, 2934, 3319, 2933, 3319, 2934, 3320, 2933, 3320, 0); - } else if (player.objectX > 3130 && player.objectX < 3133) { - handleSpecialGate(player, 1596, 1597, 3131, 9918, 3132, 9918, 3131, 9917, 3132, 9917, 6); - } else if (player.objectY > 3181 && player.objectY < 3184) { - handleSpecialGate(player, 1596, 1597, 2815, 3182, 2815, 3183, 2816, 3182, 2816, 3183, 3); - } else if (player.objectY > 3449 && player.objectY < 3452) { - handleSpecialGate(player, 1596, 1597, 2936, 3451, 2936, 3450, 2935, 3451, 2935, 3450, 7); - } - break; - case 1597: - if (player.objectX > 3310 && player.objectX < 3313 && player.absY != 3333) { - handleSpecialGate(player, 1597, 1596, 3311, 3332, 3311, 3331, 3312, 3332, 3312, 3331, 1); - } else if (player.objectY > 3318 && player.objectY < 3321 && player.absX != 2935 && player.absX != 2932) { - handleSpecialGate(player, 1597, 1596, 2933, 3319, 2934, 3319, 2933, 3320, 2934, 3320, 2); - } else if (player.objectX > 3130 && player.objectX < 3133) { - handleSpecialGate(player, 1597, 1596, 3132, 9918, 3131, 9918, 3132, 9917, 3131, 9917, 4); - } else if (player.objectY > 3181 && player.objectY < 3184) { - handleSpecialGate(player, 1597, 1596, 2815, 3183, 2815, 3182, 2816, 3183, 2816, 3182, 1); - } else if (player.objectY > 3449 && player.objectY < 3452) { - handleSpecialGate(player, 1597, 1596, 2936, 3450, 2936, 3451, 2935, 3450, 2935, 3451, 5); - } - break; - case 1557: - if (player.objectY > 9830 && player.objectY < 9833 && player.absY != 9830) { - handleSpecialGate(player, 1557, 1558, 2897, 9831, 2897, 9832, 2898, 9831, 2898, 9832, 3); - } else if (player.objectY > 3866 && player.objectY < 3869) { - handleSpecialGate(player, 1557, 1558, 3075, 3868, 3076, 3868, 3075, 3867, 3076, 3867, 4); - /*Heroes Guild*/ - } else if (player.objectX > 2908 && player.objectX < 2911) { - //newx, newy, newx2, newy2, oldx, oldy, oldx2, oldy2 - handleSpecialGate(player, 1557, 1558, 2910, 9909, 2909, 9909, 2910, 9910, 2909, 9910, 0); - } else if (player.objectY > 9908 && player.objectY < 9911) { - handleSpecialGate(player, 1557, 1558, 3104, 9910, 3104, 9909, 3103, 9910, 3103, 9909, 7); - } else if (player.objectX > 3110 && player.objectX < 3113 && player.absY != 3513 && player.absY != 3516) { - handleSpecialGate(player, 1557, 1558, 3111, 3514, 3111, 3515, 3112, 3514, 3112, 3515, 3); - } else if (player.objectX > 3104 && player.objectX < 3107 && player.absX != 3104 && player.absX != 3107) { - handleSpecialGate(player, 1557, 1558, 3105, 9945, 3106, 9945, 3105, 9944, 3106, 9944, 6); - } else if (player.objectX > 3144 && player.objectX < 3147) { - handleSpecialGate(player, 1558, 1557, 3146, 9871, 3146, 9870, 3145, 9871, 3145, 9870, 1); - } - break; - case 1558: - if (player.objectY > 9830 && player.objectY < 9833 && player.absY != 9830) { - handleSpecialGate(player, 1558, 1557, 2897, 9832, 2897, 9831, 2898, 9832, 2898, 9831, 1); - } else if (player.objectY > 3866 && player.objectY < 3869) { - handleSpecialGate(player, 1558, 1557, 3076, 3868, 3075, 3868, 3076, 3867, 3075, 3867, 4); - /* Heroes Guild*/ - } else if (player.objectX > 2908 && player.objectX < 2911) { - //newx, newy, newx2, newy2, oldx, oldy, oldx2, oldy2 - handleSpecialGate(player, 1558, 1557, 2909, 9909, 2910, 9909, 2909, 9910, 2910, 9910, 2); - } else if (player.objectY > 9908 && player.objectY < 9911) { - handleSpecialGate(player, 1558, 1557, 3104, 9909, 3104, 9910, 3103, 9909, 3103, 9910, 5); - } else if (player.objectX > 3110 && player.objectX < 3113 && player.absY != 3513 && player.absY != 3516) { - handleSpecialGate(player, 1558, 1557, 3111, 3515, 3111, 3514, 3112, 3515, 3112, 3514, 3); - } else if (player.objectX > 3104 && player.objectX < 3107 && player.absX != 3104 && player.absX != 3107) { - handleSpecialGate(player, 1558, 1557, 3106, 9945, 3105, 9945, 3106, 9944, 3105, 9944, 4); - } else if (player.objectX > 3144 && player.objectX < 3147) { - handleSpecialGate(player, 1558, 1557, 3146, 9870, 3146, 9871, 3145, 9870, 3145, 9871, 5); - } - break; - case 3506: - if (player.absX != 3445 && player.absX != 3442) { - openSpecialWalkGate(player, 3506, 3507, 3444, 3457, 3443, 3457, 3444, 3458, 3443, 3458, 0, player.absY == 3457 ? 1 : -1, 2, 0, 3); - } - break; - case 3507: - if (player.absX != 3445 && player.absX != 3442) { - openSpecialWalkGate(player, 3507, 3506, 3443, 3457, 3444, 3457, 3443, 3458, 3444, 3458, 0, player.absY == 3457 ? 1 : -1, 0, 2, 3); - } - break; - } - } - -} +package com.rebotted.game.globalworldobjects; + +import com.rebotted.game.players.Player; +/** + * Single Gates + * @author Andrew (Mr Extremez) + */ + +public class DoubleGates extends GateHandler { + + public static void useDoubleGate(Player player, int objectId) { + switch (objectId) { + case 7049: + handleGate(player, 7049, 7050, 3077, 3259, 3077, 3260, 3077, 3258, 3078, 3258, 2); + break; + case 7050: + handleGate(player, 7050, 7049, 3077, 3260, 3077, 3259, 3078, 3258, 3077, 3258, 2); + break; + case 1598: + handleGate(player, 1598, 1599, 3319, 3467, 3318, 3467, 3320, 3467, 3320, 3468, 1); + break; + case 1599: + handleGate(player, 1599, 1598, 3318, 3467, 3319, 3467, 3320, 3468, 3320, 3467, 1); + break; + case 3197: + handleGate(player, 3197, 3198, 3311, 3234, 3310, 3234, 3312, 3234, 3312, 3235, 1); + break; + case 3198: + handleGate(player, 3198, 3197, 3310, 3234, 3311, 3234, 3312, 3235, 3312, 3234, 1); + break; + case 1551: + if (player.objectX > 3179 && player.objectX < 3182) { + handleGate(player, 1551, 1553, 3181, 3288, 3181, 3287, 3181, 3289, 3180, 3289, 0); + } else if (player.objectX > 3161 && player.objectX < 3164) { + handleGate(player, 1551, 1553, 3163, 3289, 3163, 3288, 3163, 3290, 3162, 3290, 0); + } else if (player.objectY > 3290 && player.objectY < 3294) { + handleGate(player, 1551, 1553, 3145, 3292, 3145, 3293, 3145, 3291, 3146, 3291, 2); + } else if (player.objectY > 3272 && player.objectY < 3275) { + handleGate(player, 1551, 1553, 3106, 3273, 3105, 3273, 3107, 3273, 3107, 3274, 1); + } else if (player.objectY > 3265 && player.objectY < 3268) { + handleGate(player, 1551, 1553, 3252, 3266, 3251, 3266, 3253, 3266, 3253, 3267, 1); + } else if (player.objectY > 3283 && player.objectY < 3286) { + handleGate(player, 1551, 1553, 3237, 3285, 3238, 3285, 3236, 3285, 3236, 3284, 5); + } else if (player.objectY > 3294 && player.objectY < 3297) { + handleGate(player, 1551, 1553, 3237, 3296, 3238, 3296, 3236, 3296, 3236, 3295, 5); + } else if (player.objectY > 3300 && player.objectY < 3303) { + handleGate(player, 1551, 1553, 3240, 3301, 3239, 3301, 3241, 3301, 3241, 3302, 1); + } else if (player.objectX > 3260 & player.objectX < 3263) { + handleGate(player, 1551, 1553, 3261, 3322, 3261, 3323, 3261, 3321, 3262, 3321, 2); + } else if (player.objectY > 3348 && player.objectY < 3351) { + handleGate(player, 1551, 1553, 2676, 3350, 2677, 3350, 2675, 3350, 2675, 3349, 5); + } else if (player.objectY > 3313 && player.objectY < 3318) { + handleGate(player, 1551, 1553, 3174, 3314, 3174, 3315, 3175, 3316, 3174, 3316, 4); + } else { + handleGate(player, 1551, 1553, 3198, 3281, 3198, 3280, 3198, 3282, 3197, 3282, 0); + } + break; + case 1553: + if (player.objectX > 3179 && player.objectX < 3182) { + handleGate(player, 1553, 1551, 3181, 3287, 3181, 3288, 3180, 3289, 3181, 3289, 0); + } else if (player.objectX > 3161 && player.objectX < 3164) { + handleGate(player, 1553, 1551, 3163, 3288, 3163, 3289, 3162, 3290, 3163, 3290, 0); + } else if (player.objectY > 3290 && player.objectY < 3294) { + handleGate(player, 1553, 1551, 3145, 3293, 3145, 3292, 3146, 3291, 3145, 3291, 2); + } else if (player.objectY > 3272 && player.objectY < 3275) { + handleGate(player, 1553, 1551, 3105, 3273, 3106, 3273, 3107, 3274, 3107, 3273, 1); + } else if (player.objectY > 3265 && player.objectY < 3268) { + handleGate(player, 1553, 1551, 3251, 3266, 3252, 3266, 3253, 3267, 3253, 3266, 1); + } else if (player.objectY > 3283 && player.objectY < 3286) { + handleGate(player, 1553, 1551, 3238, 3285, 3237, 3285, 3236, 3284, 3236, 3285, 5); + } else if (player.objectY > 3294 && player.objectY < 3297) { + handleGate(player, 1553, 1551, 3238, 3296, 3237, 3296, 3236, 3295, 3236, 3296, 5); + } else if (player.objectY > 3300 && player.objectY < 3303) { + handleGate(player, 1553, 1551, 3239, 3301, 3240, 3301, 3241, 3302, 3241, 3301, 1); + } else if (player.objectX > 3260 & player.objectX < 3263) { + handleGate(player, 1553, 1551, 3261, 3323, 3261, 3322, 3262, 3321, 3261, 3321, 2); + } else if (player.objectY > 3348 && player.objectY < 3351) { + handleGate(player, 1553, 1551, 2677, 3350, 2676, 3350, 2675, 3349, 2675, 3350, 5); + } else if (player.objectY > 3313 && player.objectY < 3318) { + handleGate(player, 1553, 1551, 3174, 3315, 3174, 3314, 3174, 3316, 3175, 3316, 4); + } else { + handleGate(player, 1553, 1551, 3198, 3280, 3198, 3281, 3197, 3282, 3198, 3282, 0); + } + break; + case 12986: + if (player.objectX > 3187 && player.objectX < 3190) { + handleGate(player, 12986, 12987, 3188, 3280, 3188, 3281, 3188, 3279, 3189, 3279, 2); + } else if (player.objectY > 3267 && player.objectY < 3270) { + handleGate(player, 12986, 12987, 3185, 3268, 3184, 3268, 3186, 3268, 3186, 3269, 1); + } else { + handleGate(player, 12986, 12987, 3212, 3261, 3211, 3261, 3213, 3261, 3213, 3262, 1); + } + break; + case 12987: + if (player.objectX > 3187 && player.objectX < 3190) { + handleGate(player, 12987, 12986, 3188, 3281, 3188, 3280, 3189, 3279, 3188, 3279, 2); + } else if (player.objectY > 3267 && player.objectY < 3270) { + handleGate(player, 12987, 12986, 3184, 3268, 3185, 3268, 3186, 3269, 3186, 3268, 1); + } else { + handleGate(player, 12987, 12986, 3211, 3261, 3212, 3261, 3213, 3262, 3213, 3261, 1); + } + break; + case 1596: + if (player.objectX > 3310 && player.objectX < 3313 && player.absY != 3333) { + handleSpecialGate(player, 1596, 1597, 3311, 3331, 3311, 3332, 3312, 3331, 3312, 3332, 3); + } else if (player.objectY > 3318 && player.objectY < 3321 && player.absX != 2935 && player.absX != 2932) { + handleSpecialGate(player, 1596, 1597, 2934, 3319, 2933, 3319, 2934, 3320, 2933, 3320, 0); + } else if (player.objectX > 3130 && player.objectX < 3133) { + handleSpecialGate(player, 1596, 1597, 3131, 9918, 3132, 9918, 3131, 9917, 3132, 9917, 6); + } else if (player.objectY > 3181 && player.objectY < 3184) { + handleSpecialGate(player, 1596, 1597, 2815, 3182, 2815, 3183, 2816, 3182, 2816, 3183, 3); + } else if (player.objectY > 3449 && player.objectY < 3452) { + handleSpecialGate(player, 1596, 1597, 2936, 3451, 2936, 3450, 2935, 3451, 2935, 3450, 7); + } + break; + case 1597: + if (player.objectX > 3310 && player.objectX < 3313 && player.absY != 3333) { + handleSpecialGate(player, 1597, 1596, 3311, 3332, 3311, 3331, 3312, 3332, 3312, 3331, 1); + } else if (player.objectY > 3318 && player.objectY < 3321 && player.absX != 2935 && player.absX != 2932) { + handleSpecialGate(player, 1597, 1596, 2933, 3319, 2934, 3319, 2933, 3320, 2934, 3320, 2); + } else if (player.objectX > 3130 && player.objectX < 3133) { + handleSpecialGate(player, 1597, 1596, 3132, 9918, 3131, 9918, 3132, 9917, 3131, 9917, 4); + } else if (player.objectY > 3181 && player.objectY < 3184) { + handleSpecialGate(player, 1597, 1596, 2815, 3183, 2815, 3182, 2816, 3183, 2816, 3182, 1); + } else if (player.objectY > 3449 && player.objectY < 3452) { + handleSpecialGate(player, 1597, 1596, 2936, 3450, 2936, 3451, 2935, 3450, 2935, 3451, 5); + } + break; + case 1557: + if (player.objectY > 9830 && player.objectY < 9833 && player.absY != 9830) { + handleSpecialGate(player, 1557, 1558, 2897, 9831, 2897, 9832, 2898, 9831, 2898, 9832, 3); + } else if (player.objectY > 3866 && player.objectY < 3869) { + handleSpecialGate(player, 1557, 1558, 3075, 3868, 3076, 3868, 3075, 3867, 3076, 3867, 4); + /*Heroes Guild*/ + } else if (player.objectX > 2908 && player.objectX < 2911) { + //newx, newy, newx2, newy2, oldx, oldy, oldx2, oldy2 + handleSpecialGate(player, 1557, 1558, 2910, 9909, 2909, 9909, 2910, 9910, 2909, 9910, 0); + } else if (player.objectY > 9908 && player.objectY < 9911) { + handleSpecialGate(player, 1557, 1558, 3104, 9910, 3104, 9909, 3103, 9910, 3103, 9909, 7); + } else if (player.objectX > 3110 && player.objectX < 3113 && player.absY != 3513 && player.absY != 3516) { + handleSpecialGate(player, 1557, 1558, 3111, 3514, 3111, 3515, 3112, 3514, 3112, 3515, 3); + } else if (player.objectX > 3104 && player.objectX < 3107 && player.absX != 3104 && player.absX != 3107) { + handleSpecialGate(player, 1557, 1558, 3105, 9945, 3106, 9945, 3105, 9944, 3106, 9944, 6); + } else if (player.objectX > 3144 && player.objectX < 3147) { + handleSpecialGate(player, 1558, 1557, 3146, 9871, 3146, 9870, 3145, 9871, 3145, 9870, 1); + } + break; + case 1558: + if (player.objectY > 9830 && player.objectY < 9833 && player.absY != 9830) { + handleSpecialGate(player, 1558, 1557, 2897, 9832, 2897, 9831, 2898, 9832, 2898, 9831, 1); + } else if (player.objectY > 3866 && player.objectY < 3869) { + handleSpecialGate(player, 1558, 1557, 3076, 3868, 3075, 3868, 3076, 3867, 3075, 3867, 4); + /* Heroes Guild*/ + } else if (player.objectX > 2908 && player.objectX < 2911) { + //newx, newy, newx2, newy2, oldx, oldy, oldx2, oldy2 + handleSpecialGate(player, 1558, 1557, 2909, 9909, 2910, 9909, 2909, 9910, 2910, 9910, 2); + } else if (player.objectY > 9908 && player.objectY < 9911) { + handleSpecialGate(player, 1558, 1557, 3104, 9909, 3104, 9910, 3103, 9909, 3103, 9910, 5); + } else if (player.objectX > 3110 && player.objectX < 3113 && player.absY != 3513 && player.absY != 3516) { + handleSpecialGate(player, 1558, 1557, 3111, 3515, 3111, 3514, 3112, 3515, 3112, 3514, 3); + } else if (player.objectX > 3104 && player.objectX < 3107 && player.absX != 3104 && player.absX != 3107) { + handleSpecialGate(player, 1558, 1557, 3106, 9945, 3105, 9945, 3106, 9944, 3105, 9944, 4); + } else if (player.objectX > 3144 && player.objectX < 3147) { + handleSpecialGate(player, 1558, 1557, 3146, 9870, 3146, 9871, 3145, 9870, 3145, 9871, 5); + } + break; + case 3506: + if (player.absX != 3445 && player.absX != 3442) { + openSpecialWalkGate(player, 3506, 3507, 3444, 3457, 3443, 3457, 3444, 3458, 3443, 3458, 0, player.absY == 3457 ? 1 : -1, 2, 0, 3); + } + break; + case 3507: + if (player.absX != 3445 && player.absX != 3442) { + openSpecialWalkGate(player, 3507, 3506, 3443, 3457, 3444, 3457, 3443, 3458, 3444, 3458, 0, player.absY == 3457 ? 1 : -1, 0, 2, 3); + } + break; + } + } + +} diff --git a/2006Redone Server/src/redone/game/globalworldobjects/GateHandler.java b/2006Redone Server/src/com/rebotted/game/globalworldobjects/GateHandler.java similarity index 86% rename from 2006Redone Server/src/redone/game/globalworldobjects/GateHandler.java rename to 2006Redone Server/src/com/rebotted/game/globalworldobjects/GateHandler.java index b4c4be03..a09795c2 100644 --- a/2006Redone Server/src/redone/game/globalworldobjects/GateHandler.java +++ b/2006Redone Server/src/com/rebotted/game/globalworldobjects/GateHandler.java @@ -1,195 +1,195 @@ -package redone.game.globalworldobjects; - -import redone.Server; -import redone.game.objects.Objects; -import redone.game.players.Client; -import redone.world.ObjectManager; -import redone.world.clip.ObjectDef; -import redone.world.clip.Region; - -/** - * GateHandler - * @author Andrew (I'm A Boss on Rune-Server and Mr Extremez on Mopar & Runelocus) - */ -public class GateHandler { - - public static int gateAmount = 0, gateTicks = 100; - - public static boolean isGate(int objectId) { - String objectName = ObjectDef.getObjectDef(objectId).name; - return objectName.equalsIgnoreCase("gate") || objectName.equalsIgnoreCase("Gate"); - } - - public static void spawnGate(int objectId, int x, int y, int h, int face) { - Server.objectHandler.placeObject(new Objects(objectId, x, y, h, face, 0, 0)); - } - - public static void openSingleGate(Client player, int objectId, int x1, int y1, int x2, int y2, int walkX, int walkY, int face1, int face2) { - if (isGate(objectId) && gateAmount == 0) { - spawnGate(-1, x2, y2, player.heightLevel, 0); - spawnGate(objectId, x1, y1, player.heightLevel, face1); - gateAmount = 1; - player.getPlayerAssistant().walkTo(walkX, walkY); - ObjectManager.singleGateTicks(player, objectId, x2, y2, x1, y1, player.heightLevel, face2, 2); - } - } - - private static void openDoubleGate(Client player, int objectId, int objectId2, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int face1, int face2) { - if (isGate(objectId) && isGate(objectId2) && gateAmount == 0) { - // open gate from default map object - spawnGate(-1, x3, y3, player.heightLevel, 0); - spawnGate(-1, x4, y4, player.heightLevel, 0); - spawnGate(objectId, x1, y1, player.heightLevel, face1); - Region.addObject(objectId, x1, y1, player.heightLevel, 0, face1, false); - gateAmount = 1; - spawnGate(objectId2, x2, y2, player.heightLevel, face1); - Region.addObject(objectId2, x2, y2, player.heightLevel, 0, face1, false); - gateAmount = 2; - ObjectManager.doubleGateTicks(player, objectId, x3, y3, x1, y1, x2, y2, player.heightLevel, face2, gateTicks); - ObjectManager.doubleGateTicks(player, objectId2, x4, y4, x1, y1, x2, y2, player.heightLevel, face2, gateTicks); - } else if (isGate(objectId) && isGate(objectId2) && gateAmount == 2) { - // close gate back to default - ObjectManager.doubleGateTicks(player, objectId, x3, y3, x1, y1, x2, y2, player.heightLevel, face2, 0); - ObjectManager.doubleGateTicks(player, objectId2, x4, y4, x1, y1, x2, y2, player.heightLevel, face2, 0); - } - } - - private static void openSpecialGate(Client player, int objectId, int objectId2, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int face1, int face2, int face3) { - if (isGate(objectId) && isGate(objectId2) && gateAmount == 0) { - spawnGate(-1, x3, y3, player.heightLevel, 0); - spawnGate(-1, x4, y4, player.heightLevel, 0); - spawnGate(objectId, x1, y1, player.heightLevel, face1); - Region.addObject(objectId, x1, y1, player.heightLevel, 0, face1, false); - gateAmount = 1; - spawnGate(objectId2, x2, y2, player.heightLevel, face2); - Region.addObject(objectId2, x2, y2, player.heightLevel, 0, face2, false); - gateAmount = 2; - ObjectManager.doubleGateTicks(player, objectId, x3, y3, x1, y1, x2, y2, player.heightLevel, face3, gateTicks); - ObjectManager.doubleGateTicks(player, objectId2, x4, y4, x1, y1, x2, y2, player.heightLevel, face3, gateTicks); - } else if (isGate(objectId) && isGate(objectId2) && gateAmount == 2) { - ObjectManager.doubleGateTicks(player, objectId, x3, y3, x1, y1, x2, y2, player.heightLevel, face3, 0); - ObjectManager.doubleGateTicks(player, objectId2, x4, y4, x1, y1, x2, y2, player.heightLevel, face3, 0); - } - } - - public static void openSpecialWalkGate(Client player, int objectId, int objectId2, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int walkX, int walkY, int face1, int face2, int face3) { - if (isGate(objectId) && isGate(objectId2) && gateAmount == 0) { - spawnGate(-1, x3, y3, player.heightLevel, 0); - spawnGate(-1, x4, y4, player.heightLevel, 0); - spawnGate(objectId, x1, y1, player.heightLevel, face1); - gateAmount = 1; - spawnGate(objectId2, x2, y2, player.heightLevel, face2); - gateAmount = 2; - player.getPlayerAssistant().walkTo(walkX, walkY); - ObjectManager.doubleGateTicks(player, objectId, x3, y3, x1, y1, x2, y2, player.heightLevel, face3, 2); - ObjectManager.doubleGateTicks(player, objectId2, x4, y4, x1, y1, x2, y2, player.heightLevel, face3, 2); - } - } - - public static void handleGate(Client player, int objectId, int objectId2, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int type) { - switch (type) { - /** - * X Gate 1 - */ - case 0: - openDoubleGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 2, 3); - break; - /** - * Y Gate 1 - */ - case 1: - openDoubleGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 3, 0); - break; - /** - * X Gate 2 - */ - case 2: - openDoubleGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 0, 1); - break; - /** - * Y Gate 2 - */ - case 3: - openDoubleGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 1, 0); - break; - /** - * X Gate 3 - */ - case 4: - openDoubleGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 0, 3); - break; - /** - * Y Gate 3 - */ - case 5: - openDoubleGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 1, 2); - break; - /** - * X Gate 4 - */ - case 6: - openDoubleGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 2, 1); - break; - /** - * Y Gate 4 - */ - case 7: - openDoubleGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 3, 2); - break; - } - } - - public static void handleSpecialGate(Client player, int objectId, int objectId2, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int type) { - switch (type) { - /** - * X Gate 1 - */ - case 0: - openSpecialGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 2, 0, 3); - break; - /** - * Y Gate 1 - */ - case 1: - openSpecialGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 1, 3, 0); - break; - /** - * X Gate 2 - */ - case 2: - openSpecialGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 0, 2, 3); - break; - /** - * Y Gate 2 - */ - case 3: - openSpecialGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 3, 1, 0); - break; - /** - * X Gate 3 - */ - case 4: - openSpecialGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 2, 0, 1); - break; - /** - * Y Gate 3 - */ - case 5: - openSpecialGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 3, 1, 2); - break; - /** - * X Gate 4 - */ - case 6: - openSpecialGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 0, 2, 1); - break; - /** - * Y Gate 4 - */ - case 7: - openSpecialGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 1, 3, 2); - break; - } - } - -} +package com.rebotted.game.globalworldobjects; + +import com.rebotted.GameEngine; +import com.rebotted.game.objects.Objects; +import com.rebotted.game.players.Player; +import com.rebotted.world.ObjectManager; +import com.rebotted.world.clip.ObjectDef; +import com.rebotted.world.clip.Region; + +/** + * GateHandler + * @author Andrew (Mr Extremez) + */ +public class GateHandler { + + public static int gateAmount = 0, gateTicks = 100; + + public static boolean isGate(int objectId) { + String objectName = ObjectDef.getObjectDef(objectId).name; + return objectName.equalsIgnoreCase("gate") || objectName.equalsIgnoreCase("Gate"); + } + + public static void spawnGate(int objectId, int x, int y, int h, int face) { + GameEngine.objectHandler.placeObject(new Objects(objectId, x, y, h, face, 0, 0)); + } + + public static void openSingleGate(Player player, int objectId, int x1, int y1, int x2, int y2, int walkX, int walkY, int face1, int face2) { + if (isGate(objectId) && gateAmount == 0) { + spawnGate(-1, x2, y2, player.heightLevel, 0); + spawnGate(objectId, x1, y1, player.heightLevel, face1); + gateAmount = 1; + player.getPlayerAssistant().walkTo(walkX, walkY); + ObjectManager.singleGateTicks(player, objectId, x2, y2, x1, y1, player.heightLevel, face2, 2); + } + } + + private static void openDoubleGate(Player player, int objectId, int objectId2, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int face1, int face2) { + if (isGate(objectId) && isGate(objectId2) && gateAmount == 0) { + // open gate from default map object + spawnGate(-1, x3, y3, player.heightLevel, 0); + spawnGate(-1, x4, y4, player.heightLevel, 0); + spawnGate(objectId, x1, y1, player.heightLevel, face1); + Region.addObject(objectId, x1, y1, player.heightLevel, 0, face1, false); + gateAmount = 1; + spawnGate(objectId2, x2, y2, player.heightLevel, face1); + Region.addObject(objectId2, x2, y2, player.heightLevel, 0, face1, false); + gateAmount = 2; + ObjectManager.doubleGateTicks(player, objectId, x3, y3, x1, y1, x2, y2, player.heightLevel, face2, gateTicks); + ObjectManager.doubleGateTicks(player, objectId2, x4, y4, x1, y1, x2, y2, player.heightLevel, face2, gateTicks); + } else if (isGate(objectId) && isGate(objectId2) && gateAmount == 2) { + // close gate back to default + ObjectManager.doubleGateTicks(player, objectId, x3, y3, x1, y1, x2, y2, player.heightLevel, face2, 0); + ObjectManager.doubleGateTicks(player, objectId2, x4, y4, x1, y1, x2, y2, player.heightLevel, face2, 0); + } + } + + private static void openSpecialGate(Player player, int objectId, int objectId2, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int face1, int face2, int face3) { + if (isGate(objectId) && isGate(objectId2) && gateAmount == 0) { + spawnGate(-1, x3, y3, player.heightLevel, 0); + spawnGate(-1, x4, y4, player.heightLevel, 0); + spawnGate(objectId, x1, y1, player.heightLevel, face1); + Region.addObject(objectId, x1, y1, player.heightLevel, 0, face1, false); + gateAmount = 1; + spawnGate(objectId2, x2, y2, player.heightLevel, face2); + Region.addObject(objectId2, x2, y2, player.heightLevel, 0, face2, false); + gateAmount = 2; + ObjectManager.doubleGateTicks(player, objectId, x3, y3, x1, y1, x2, y2, player.heightLevel, face3, gateTicks); + ObjectManager.doubleGateTicks(player, objectId2, x4, y4, x1, y1, x2, y2, player.heightLevel, face3, gateTicks); + } else if (isGate(objectId) && isGate(objectId2) && gateAmount == 2) { + ObjectManager.doubleGateTicks(player, objectId, x3, y3, x1, y1, x2, y2, player.heightLevel, face3, 0); + ObjectManager.doubleGateTicks(player, objectId2, x4, y4, x1, y1, x2, y2, player.heightLevel, face3, 0); + } + } + + public static void openSpecialWalkGate(Player player, int objectId, int objectId2, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int walkX, int walkY, int face1, int face2, int face3) { + if (isGate(objectId) && isGate(objectId2) && gateAmount == 0) { + spawnGate(-1, x3, y3, player.heightLevel, 0); + spawnGate(-1, x4, y4, player.heightLevel, 0); + spawnGate(objectId, x1, y1, player.heightLevel, face1); + gateAmount = 1; + spawnGate(objectId2, x2, y2, player.heightLevel, face2); + gateAmount = 2; + player.getPlayerAssistant().walkTo(walkX, walkY); + ObjectManager.doubleGateTicks(player, objectId, x3, y3, x1, y1, x2, y2, player.heightLevel, face3, 2); + ObjectManager.doubleGateTicks(player, objectId2, x4, y4, x1, y1, x2, y2, player.heightLevel, face3, 2); + } + } + + public static void handleGate(Player player, int objectId, int objectId2, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int type) { + switch (type) { + /** + * X Gate 1 + */ + case 0: + openDoubleGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 2, 3); + break; + /** + * Y Gate 1 + */ + case 1: + openDoubleGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 3, 0); + break; + /** + * X Gate 2 + */ + case 2: + openDoubleGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 0, 1); + break; + /** + * Y Gate 2 + */ + case 3: + openDoubleGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 1, 0); + break; + /** + * X Gate 3 + */ + case 4: + openDoubleGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 0, 3); + break; + /** + * Y Gate 3 + */ + case 5: + openDoubleGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 1, 2); + break; + /** + * X Gate 4 + */ + case 6: + openDoubleGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 2, 1); + break; + /** + * Y Gate 4 + */ + case 7: + openDoubleGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 3, 2); + break; + } + } + + public static void handleSpecialGate(Player player, int objectId, int objectId2, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int type) { + switch (type) { + /** + * X Gate 1 + */ + case 0: + openSpecialGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 2, 0, 3); + break; + /** + * Y Gate 1 + */ + case 1: + openSpecialGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 1, 3, 0); + break; + /** + * X Gate 2 + */ + case 2: + openSpecialGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 0, 2, 3); + break; + /** + * Y Gate 2 + */ + case 3: + openSpecialGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 3, 1, 0); + break; + /** + * X Gate 3 + */ + case 4: + openSpecialGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 2, 0, 1); + break; + /** + * Y Gate 3 + */ + case 5: + openSpecialGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 3, 1, 2); + break; + /** + * X Gate 4 + */ + case 6: + openSpecialGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 0, 2, 1); + break; + /** + * Y Gate 4 + */ + case 7: + openSpecialGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 1, 3, 2); + break; + } + } + +} diff --git a/2006Redone Server/src/com/rebotted/game/globalworldobjects/PassDoor.java b/2006Redone Server/src/com/rebotted/game/globalworldobjects/PassDoor.java new file mode 100644 index 00000000..28add334 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/globalworldobjects/PassDoor.java @@ -0,0 +1,114 @@ +package com.rebotted.game.globalworldobjects; + +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.Position; + +/** + * Passdoor + * @author Andrew (Mr Extremez) + */ + +public class PassDoor { + + private static long doorDelay; + + public static boolean passThroughDoor(final Player player, final int objectType, int face1, final int face2, final int type, int x, int y, final int height) { + if (System.currentTimeMillis() - doorDelay < 1200) { + player.getPacketSender().sendMessage("You must wait longer to pass this door."); + return false; + } + + final int objX = player.objectX; + final int objY = player.objectY; + + player.getPacketSender().object(objectType, objX, objY, height, face1, type); + player.getPlayerAssistant().walkTo(x, y); + player.stopPlayer = true; + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + player.getPacketSender().object(objectType, objX, objY, height, face2, type); + container.stop(); + } + + @Override + public void stop() { + player.stopPlayer = false; + doorDelay = System.currentTimeMillis(); + } + }, 2); + return true; + } + + public static void processDoor(Player player, int objectType) { + //player, object, face1, face2, type, x, y, height + switch (objectType) { + case 2550: + if (Position.checkPosition(player, 2674, 3306, 0)) { + passThroughDoor(player, objectType, 0, 1, 0, 0, -1, 0); + } + break; + case 2551: + if (Position.checkPosition(player, 2674, 3303, 0)) { + passThroughDoor(player, objectType, 0, 3, 0, 0, 1, 0); + } + break; + case 1530: + if (Position.checkPosition(player, 2715, 3472, 0)) { + passThroughDoor(player, objectType, 1, 0, 0, 1, 0, 0); + } else if (Position.checkPosition(player, 2716, 3472, 0)) { + passThroughDoor(player, objectType, 1, 0, 0, -1, 0, 0); + } else if (Position.checkPosition(player, 3246, 9892, 0)) { + passThroughDoor(player, objectType, 1, 0, 0, 1, 0, 0); + } else if (Position.checkPosition(player, 3247, 9892, 0)) { + passThroughDoor(player, objectType, 1, 0, 0, -1, 0, 0); + } else if (Position.checkPosition(player, 3108, 9570, 0)) { + passThroughDoor(player, objectType, 1, 0, 0, -1, 0, 0); + } else if (Position.checkPosition(player, 3107, 9570, 0)) { + passThroughDoor(player, objectType, 1, 0, 0, 1, 0, 0); + } else if (Position.checkPosition(player, 3110, 9559, 0)) { + passThroughDoor(player, objectType, 3, 0, 0, 1, 0, 0); + } else if (Position.checkPosition(player, 3111, 9559, 0)) { + passThroughDoor(player, objectType, 3, 0, 0, -1, 0, 0); + } + break; + case 11993: + if (Position.checkPlayerY(player, 3167, 0)) { + passThroughDoor(player, objectType, 0, 3, 0, 0, -1, 0); + } else if (Position.checkPlayerY(player, 3166, 0)) { + passThroughDoor(player, objectType, 0, 3, 0, 0, 1, 0); + } else if (Position.checkPlayerY(player, 3163, 0) && player.absX != 3107) { + passThroughDoor(player, objectType, 2, 1, 0, 0, -1, 0); + } else if (Position.checkPlayerY(player, 3162, 0) && player.absX != 3108 && player.absX != 3106) { + passThroughDoor(player, objectType, 2, 1, 0, 0, 1, 0); + } else if (Position.checkPosition(player, 3107, 3162, 2)) { + passThroughDoor(player, objectType, 1, 2, 0, 1, 0, 2); + } else if (Position.checkPosition(player, 3108, 3162, 2)) { + passThroughDoor(player, objectType, 1, 2, 0, -1, 0, 2); + } else if (Position.checkPosition(player, 3109, 3159, 1)) { + passThroughDoor(player, objectType, 1, 2, 0, 1, 0, 1); + } else if (Position.checkPosition(player, 3110, 3159, 1)) { + passThroughDoor(player, objectType, 1, 2, 0, -1, 0, 1); + } else if (Position.checkPosition(player, 3108, 3159, 1)) { + passThroughDoor(player, objectType, 2, 1, 0, 0, -1, 1); + } else if (Position.checkPosition(player, 3108, 3158, 1)) { + passThroughDoor(player, objectType, 2, 1, 0, 0, 1, 1); + } else if (Position.checkObject(player, 3107, 3162, 0)) { + if (Position.checkPosition(player, 3108, 3162, 0)) { + passThroughDoor(player, objectType, 2, 1, 9, -1, -1, 0); + } else if (Position.checkPosition(player, 3107, 3163, 0)) { + // wizz tower + passThroughDoor(player, objectType, 2, 1, 9, -1, -1, 0); + } else { + if (player.heightLevel == 0) { + passThroughDoor(player, objectType, 2, 1, 9, 1, 1, 0); + } + } + } + break; + } + } +} diff --git a/2006Redone Server/src/redone/game/globalworldobjects/SingleGates.java b/2006Redone Server/src/com/rebotted/game/globalworldobjects/SingleGates.java similarity index 58% rename from 2006Redone Server/src/redone/game/globalworldobjects/SingleGates.java rename to 2006Redone Server/src/com/rebotted/game/globalworldobjects/SingleGates.java index 41370f91..6cfe467f 100644 --- a/2006Redone Server/src/redone/game/globalworldobjects/SingleGates.java +++ b/2006Redone Server/src/com/rebotted/game/globalworldobjects/SingleGates.java @@ -1,23 +1,23 @@ -package redone.game.globalworldobjects; - -import redone.game.players.Client; - -/** - * SingleGates - * @author Andrew (I'm A Boss on Rune-Server and Mr Extremez on Mopar & Runelocus) - */ - -public class SingleGates extends GateHandler { - - public static void useSingleGate(Client player, int objectId) { - switch (objectId) { - case 3444: - openSingleGate(player, 3444, 3405, 9894, 3405, 9895, 0, player.absY == 9894 ? 1 : -1, 0, 3); - break; - case 3445: - openSingleGate(player, 3445, 3432, 9897, 3431, 9897, player.absX == 3432 ? -1 : 1, 0, 3, 2); - break; - } - } - -} +package com.rebotted.game.globalworldobjects; + +import com.rebotted.game.players.Player; + +/** + * SingleGates + * @author Andrew (Mr Extremez) + */ + +public class SingleGates extends GateHandler { + + public static void useSingleGate(Player player, int objectId) { + switch (objectId) { + case 3444: + openSingleGate(player, 3444, 3405, 9894, 3405, 9895, 0, player.absY == 9894 ? 1 : -1, 0, 3); + break; + case 3445: + openSingleGate(player, 3445, 3432, 9897, 3431, 9897, player.absX == 3432 ? -1 : 1, 0, 3, 2); + break; + } + } + +} diff --git a/2006Redone Server/src/com/rebotted/game/items/GameItem.java b/2006Redone Server/src/com/rebotted/game/items/GameItem.java new file mode 100644 index 00000000..9b76f281 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/items/GameItem.java @@ -0,0 +1,16 @@ +package com.rebotted.game.items; + +public class GameItem { + + public int id, amount; + public boolean stackable = false; + + public GameItem(int id, int amount) { + if (Item.itemStackable[id]) { + stackable = true; + } + this.id = id; + this.amount = amount; + } + +} \ No newline at end of file diff --git a/2006Redone Server/src/redone/game/items/GroundItem.java b/2006Redone Server/src/com/rebotted/game/items/GroundItem.java similarity index 87% rename from 2006Redone Server/src/redone/game/items/GroundItem.java rename to 2006Redone Server/src/com/rebotted/game/items/GroundItem.java index 7203c866..94e8f79f 100644 --- a/2006Redone Server/src/redone/game/items/GroundItem.java +++ b/2006Redone Server/src/com/rebotted/game/items/GroundItem.java @@ -1,44 +1,44 @@ -package redone.game.items; - -public class GroundItem { - - public int itemId, itemX, itemY, itemAmount, itemController, hideTicks, - removeTicks; - public String ownerName; - - public GroundItem(int id, int x, int y, int h, int amount, int controller, - int hideTicks, String name) { - itemId = id; - itemX = x; - itemY = y; - itemAmount = amount; - itemController = controller; - this.hideTicks = hideTicks; - ownerName = name; - } - - public int getItemId() { - return itemId; - } - - public int getItemX() { - return itemX; - } - - public int getItemY() { - return itemY; - } - - public int getItemAmount() { - return itemAmount; - } - - public int getItemController() { - return itemController; - } - - public String getName() { - return ownerName; - } - -} +package com.rebotted.game.items; + +public class GroundItem { + + public int itemId, itemX, itemY, itemAmount, itemController, hideTicks, removeTicks; + + public String ownerName; + + public GroundItem(int id, int x, int y, int h, int amount, int controller, + int hideTicks, String name) { + itemId = id; + itemX = x; + itemY = y; + itemAmount = amount; + itemController = controller; + this.hideTicks = hideTicks; + ownerName = name; + } + + public int getItemId() { + return itemId; + } + + public int getItemX() { + return itemX; + } + + public int getItemY() { + return itemY; + } + + public int getItemAmount() { + return itemAmount; + } + + public int getItemController() { + return itemController; + } + + public String getName() { + return ownerName; + } + +} diff --git a/2006Redone Server/src/redone/game/items/Item.java b/2006Redone Server/src/com/rebotted/game/items/Item.java similarity index 92% rename from 2006Redone Server/src/redone/game/items/Item.java rename to 2006Redone Server/src/com/rebotted/game/items/Item.java index 3748ec53..7b3f0ea4 100644 --- a/2006Redone Server/src/redone/game/items/Item.java +++ b/2006Redone Server/src/com/rebotted/game/items/Item.java @@ -1,11 +1,11 @@ -package redone.game.items; +package com.rebotted.game.items; import java.io.File; import java.io.FileInputStream; import java.io.IOException; -import redone.Constants; -import redone.Server; +import com.rebotted.GameConstants; +import com.rebotted.GameEngine; public class Item { @@ -187,7 +187,7 @@ public class Item { } public static String getItemName(int id) { - for (ItemList element : Server.itemHandler.ItemList) { + for (ItemList element : GameEngine.itemHandler.ItemList) { if (element != null) { if (element.itemId == id) { return element.itemName; @@ -197,9 +197,9 @@ public class Item { return null; } - public static boolean[] itemStackable = new boolean[Constants.ITEM_LIMIT]; - public static boolean[] itemIsNote = new boolean[Constants.ITEM_LIMIT]; - public static int[] targetSlots = new int[Constants.ITEM_LIMIT]; + public static boolean[] itemStackable = new boolean[GameConstants.ITEM_LIMIT]; + public static boolean[] itemIsNote = new boolean[GameConstants.ITEM_LIMIT]; + public static int[] targetSlots = new int[GameConstants.ITEM_LIMIT]; static { int counter = 0; int c; @@ -269,7 +269,7 @@ public class Item { case 7138: case 548: case 6185: - slot = Constants.LEGS; + slot = GameConstants.LEGS; break; // Hats case 4166: @@ -293,7 +293,7 @@ public class Item { case 5543: case 5545: case 5547: - slot = Constants.HAT; + slot = GameConstants.HAT; break; // Cape case 4304: @@ -310,12 +310,12 @@ public class Item { case 3789: case 4514: case 4516: - slot = Constants.CAPE; + slot = GameConstants.CAPE; break; // Shield case 7051: case 7053: - slot = Constants.SHIELD; + slot = GameConstants.SHIELD; break; // Chest case 577: @@ -338,7 +338,7 @@ public class Item { case 7390: case 7392: case 6186: - slot = Constants.CHEST; + slot = GameConstants.CHEST; break; // Amulet case 3853: @@ -352,11 +352,11 @@ public class Item { case 4306: case 3867: case 1702: - slot = Constants.AMULET; + slot = GameConstants.AMULET; break; // Hands case 776: - slot = Constants.HANDS; + slot = GameConstants.HANDS; break; default: slot = c; @@ -369,18 +369,6 @@ public class Item { System.out.println("Critical error while loading equipment data! Trace:"); e.printStackTrace(); } - - /* - * try { BufferedReader in = new BufferedReader(new - * FileReader("./data/data/equipment.dat")); String name = null; while - * ((name = in.readLine()) != null) { int itemId = - * Integer.parseInt(name.substring(0, name.indexOf(":"))); int equipId = - * Integer.parseInt(name.substring(name.indexOf(":") + 1)); - * targetSlots[itemId] = equipId; } in.close(); in = null; } catch - * (Exception e) { System.out.println("Error loading equipment list."); - * } - */ - } } diff --git a/2006Redone Server/src/redone/game/items/ItemAssistant.java b/2006Redone Server/src/com/rebotted/game/items/ItemAssistant.java similarity index 78% rename from 2006Redone Server/src/redone/game/items/ItemAssistant.java rename to 2006Redone Server/src/com/rebotted/game/items/ItemAssistant.java index aeee7adc..1e561878 100644 --- a/2006Redone Server/src/redone/game/items/ItemAssistant.java +++ b/2006Redone Server/src/com/rebotted/game/items/ItemAssistant.java @@ -1,2738 +1,2737 @@ -package redone.game.items; - -import redone.Constants; -import redone.Server; -import redone.game.content.minigames.castlewars.CastleWars; -import redone.game.items.impl.Weight; -import redone.game.npcs.NpcHandler; -import redone.game.players.Client; -import redone.game.players.PlayerHandler; -import redone.util.Misc; - -public class ItemAssistant { - - private final Client c; - - public ItemAssistant(Client client) { - c = client; - } - - private static int COMMON = Misc.random(5), UNCOMMON = Misc.random(25), - RARE = Misc.random(100); - - private static final int[][] CASKET = { { 995, Misc.random(3000), COMMON }, - { 1621, 1, UNCOMMON }, { 1619, 1, UNCOMMON }, { 1617, 1, RARE }, - { 987, 1, RARE }, { 985, 1, RARE }, { 1454, 1, COMMON }, - { 1452, 1, UNCOMMON }, { 1462, 1, RARE }, { 1623, 1, COMMON } }; - - public void addCasketRewards(int itemId) { - long clickTimer = 0; - c.getActionSender().sendMessage("You search the casket..."); - for (int[] element : CASKET) { - int item = element[0]; - int amount = element[1]; - int chance = element[2]; - if (Misc.random(chance) == 0 && System.currentTimeMillis() - clickTimer > 1800) { - addItem(item, amount); - deleteItem(itemId, 1); - clickTimer = System.currentTimeMillis(); - c.getActionSender().sendMessage( - "You find " + amount + " " + getItemName(item) + "."); - } else { - if (System.currentTimeMillis() - clickTimer > 1800) { - addItem(995, 100); - deleteItem(itemId, 1); - clickTimer = System.currentTimeMillis(); - c.getActionSender().sendMessage("You find 100 coins."); - } - } - } - } - - private final int[] TREE_SEEDS = { 5291, 5292, 5293, 5294, 5295, 5296, 5297, - 5298, 5299, 5300, 5301, 5302, 5303, 5304, 5315, 5316, 5313, 5314 }; - - public void handleTreeSeeds(int itemId) { - c.getActionSender().sendMessage("You search the nest..."); - final int reward = TREE_SEEDS[Misc.random(TREE_SEEDS.length)]; - addItem(reward, 1 + Misc.random(1)); - deleteItem(itemId, 1); - addItem(5075, 1); - c.getActionSender().sendMessage("You find a " + getItemName(reward) + "."); - } - - private final int[] SEEDS = { 5291, 5292, 5293, 5294, 5295, 5296, 5297, 298, 5299, 5300, 5301, 5302, 5303, 5304 }; - - public void handleNonTreeSeeds(int itemId) { - c.getActionSender().sendMessage("You search the nest..."); - final int reward = SEEDS[Misc.random(SEEDS.length)]; - addItem(reward, 1 + Misc.random(1)); - deleteItem(itemId, 1); - addItem(5075, 1); - c.getActionSender().sendMessage("You find a " + getItemName(reward) + "."); - } - - public int[] RINGS = { 1635, 1637, 1639, 1641, 1643 }; - - public void handleRings(int itemId) { - c.getActionSender().sendMessage("You search the nest..."); - int reward = RINGS[Misc.random(RINGS.length)]; - addItem(reward, 1); - deleteItem(itemId, 1); - addItem(5075, 1); - c.getActionSender().sendMessage("You find a " + getItemName(reward) + "."); - } - - public void updateInventory() { - this.resetItems(3214); - } - - public void destroyInterface(int itemId) { - itemId = c.droppedItem; - String itemName = getItemName(c.droppedItem); - String[][] info = { - { "Are you sure you want to destroy this item?", "14174" }, - { "Yes.", "14175" }, { "No.", "14176" }, { "", "14177" }, - { "You probably won't be able to", "14182" }, { "get this item back once lost.", "14183" }, - { itemName, "14184" } };// make some kind of c.getItemInfo - c.getPlayerAssistant().sendFrame34(itemId, 0, 14171, 1); - for (int i = 0; i < info.length; i++) - c.getPlayerAssistant().sendFrame126(info[i][0], Integer.parseInt(info[i][1])); - c.getPlayerAssistant().sendChatInterface(14170); - } - - public void destroyItem(int itemId) { - itemId = c.droppedItem; - String itemName = getItemName(itemId); - deleteItem(itemId,getItemSlot(itemId), c.playerItemsN[getItemSlot(itemId)]); - c.getActionSender().sendMessage("Your " + itemName + " vanishes as you destroy it."); - c.getPlayerAssistant().removeAllWindows(); - } - - public void dropItem(int itemId) { - itemId = c.droppedItem; - Server.itemHandler.createGroundItem(c, itemId, c.absX, c.absY, c.playerItemsN[getItemSlot(itemId)], c.getId()); - deleteItem(itemId,getItemSlot(itemId), c.playerItemsN[getItemSlot(itemId)]); - c.getPlayerAssistant().removeAllWindows(); - } - - public void addOrDropItem(int item, int amount) { - if (isStackable(item) && hasFreeSlots(1)) { - addItem(item, amount); - } else if (!hasFreeSlots(amount) && !isStackable(item)) { - Server.itemHandler.createGroundItem(c, item, c.absX, c.absY, - amount, c.playerId); - c.getActionSender() - .sendMessage( - "You have no inventory space, so the item(s) appear beneath you."); - } else { - addItem(item, amount); - } - } - - public boolean hasFreeSlots(int slots) { - return freeSlots() >= slots; - } - - public void replaceItem(int itemToReplace, int replaceWith) { - if(playerHasItem(itemToReplace)) { - deleteItem(itemToReplace, 1); - addItem(replaceWith, 1); - } - } - - public static int getTotalAmountEquipment(Client c) { - int total = 0; - for (int element : c.playerEquipment) { - total = (int) Math.floor(c.getShopAssistant().getItemShopValue( - element)); - } - return total; - } - - public static int getTotalAmountItems(Client c) { - int total = 0; - for (int playerItem : c.playerItems) { - total = (int) Math.floor(c.getShopAssistant().getItemShopValue( - playerItem)); - } - return total; - } - - public static int getTotalWealthCarrying(Client c) { - return getTotalAmountItems(c) + getTotalAmountEquipment(c); - } - - public static String getTotalAmount(Client c, int j) { - if (j >= 10000 && j < 10000000) { - return j / 1000 + "K"; - } else if (j >= 10000000 && j < 2147000000) { - return j / 1000000 + "M"; - } else { - return "" + j + " gp"; - } - } - - public int[][] brokenBarrows = { { 4708, 4860 }, { 4710, 4866 }, - { 4712, 4872 }, { 4714, 4878 }, { 4716, 4884 }, { 4720, 4896 }, - { 4718, 4890 }, { 4720, 4896 }, { 4722, 4902 }, { 4732, 4932 }, - { 4734, 4938 }, { 4736, 4944 }, { 4738, 4950 }, { 4724, 4908 }, - { 4726, 4914 }, { 4728, 4920 }, { 4730, 4926 }, { 4745, 4956 }, - { 4747, 4926 }, { 4749, 4968 }, { 4751, 4794 }, { 4753, 4980 }, - { 4755, 4986 }, { 4757, 4992 }, { 4759, 4998 } }; - - public boolean playerHasEquipped(int itemID) { - itemID++; - for (int element : c.playerEquipment) { - if (element == itemID) { - return true; - } - } - return false; - } - - public boolean playerHasEquipped(int slot, int itemID) { - return c.playerEquipment[slot] == itemID; - } - - public void removeItem(int slot) { - // synchronized(c) { - if (c.getOutStream() != null && c != null) { - if (c.playerEquipment[slot] > -1) { - if (addItem(c.playerEquipment[slot], c.playerEquipmentN[slot])) { - c.playerEquipment[slot] = -1; - c.playerEquipmentN[slot] = 0; - sendWeapon(c.playerEquipment[c.playerWeapon], - getItemName(c.playerEquipment[c.playerWeapon])); - resetBonus(); - getBonus(); - writeBonus(); - c.getCombatAssistant().getPlayerAnimIndex(); - c.getOutStream().createFrame(34); - c.getOutStream().writeWord(6); - c.getOutStream().writeWord(1688); - c.getOutStream().writeByte(slot); - c.getOutStream().writeWord(0); - c.getOutStream().writeByte(0); - c.flushOutStream(); - c.updateRequired = true; - c.setAppearanceUpdateRequired(true); - } - } - } - } - - public void addItemToBank(int itemId, int amount) { - itemId++; - for (int i = 0; i < Constants.BANK_SIZE; i++) { - if (c.bankItems[i] <= 0 || c.bankItems[i] == itemId && c.bankItemsN[i] + amount < Integer.MAX_VALUE) { - c.bankItems[i] = itemId; - c.bankItemsN[i] += amount; - resetBank(); - return; - } - } - } - - public void removeitemFromBank(int itemId, int amount) { - itemId++; - for (int i = 0; i < Constants.BANK_SIZE; i++) { - if (c.bankItems[i] == itemId) { - c.bankItemsN[i] -= amount; - if (c.bankItemsN[i] <= 0) { - c.bankItems[i] = 0; - c.bankItemsN[i] = 0; - } - resetBank(); - rearrangeBank(); - return; - } - } - } - - public void resetItems(int WriteFrame) { - // synchronized(c) { - if (c.getOutStream() != null && c != null) { - c.getOutStream().createFrameVarSizeWord(53); - c.getOutStream().writeWord(WriteFrame); - c.getOutStream().writeWord(c.playerItems.length); - for (int i = 0; i < c.playerItems.length; i++) { - if (c.playerItemsN[i] > 254) { - c.getOutStream().writeByte(255); - c.getOutStream().writeDWord_v2(c.playerItemsN[i]); - } else { - c.getOutStream().writeByte(c.playerItemsN[i]); - } - c.getOutStream().writeWordBigEndianA(c.playerItems[i]); - } - c.getOutStream().endFrameVarSizeWord(); - c.flushOutStream(); - } - } - - public int getItemCount(int itemID) { - int count = 0; - for (int j = 0; j < c.playerItems.length; j++) { - if (c.playerItems[j] == itemID + 1) { - count += c.playerItemsN[j]; - } - } - return count; - } - - public void writeBonus() { - int offset = 0; - String send = ""; - for (int i = 0; i < c.playerBonus.length; i++) { - if (c.playerBonus[i] >= 0) { - send = BONUS_NAMES[i] + ": +" + c.playerBonus[i]; - } else { - send = BONUS_NAMES[i] + ": -" + java.lang.Math.abs(c.playerBonus[i]); - } - - if (i == 10) { - offset = 1; - } - c.getPlayerAssistant().sendFrame126(send, 1675 + i + offset); - } - - } - - public int getTotalCount(int itemID) { - int count = 0; - for (int j = 0; j < c.playerItems.length; j++) { - if (Item.itemIsNote[itemID + 1]) { - if (itemID + 2 == c.playerItems[j]) { - count += c.playerItemsN[j]; - } - } - if (!Item.itemIsNote[itemID + 1]) { - if (itemID + 1 == c.playerItems[j]) { - count += c.playerItemsN[j]; - } - } - } - for (int j = 0; j < c.bankItems.length; j++) { - if (c.bankItems[j] == itemID + 1) { - count += c.bankItemsN[j]; - } - } - return count; - } - - public int getBankItemCount() { - int count = 0; - for (int j = 0; j < c.bankItems.length; j++) { - if (c.bankItems[j] > -1) { - count += c.bankItemsN[j]; - } - } - return count; - } - - public void sendItemsKept() { - // synchronized(c) { - if (c.getOutStream() != null && c != null) { - c.getOutStream().createFrameVarSizeWord(53); - c.getOutStream().writeWord(6963); - c.getOutStream().writeWord(c.itemKeptId.length); - for (int i = 0; i < c.itemKeptId.length; i++) { - if (c.playerItemsN[i] > 254) { - c.getOutStream().writeByte(255); - c.getOutStream().writeDWord_v2(1); - } else { - c.getOutStream().writeByte(1); - } - if (c.itemKeptId[i] > 0) { - c.getOutStream().writeWordBigEndianA(c.itemKeptId[i] + 1); - } else { - c.getOutStream().writeWordBigEndianA(0); - } - } - c.getOutStream().endFrameVarSizeWord(); - c.flushOutStream(); - } - } - - /** - * Item kept on death - **/ - - public void keepItem(int keepItem, boolean deleteItem) { - int value = 0; - int item = 0; - int slotId = 0; - boolean itemInInventory = false; - for (int i = 0; i < c.playerItems.length; i++) { - if (c.playerItems[i] - 1 > 0) { - int inventoryItemValue = c.getShopAssistant().getItemShopValue( - c.playerItems[i] - 1); - if (inventoryItemValue > value && !c.invSlot[i]) { - value = inventoryItemValue; - item = c.playerItems[i] - 1; - slotId = i; - itemInInventory = true; - } - } - } - for (int i1 = 0; i1 < c.playerEquipment.length; i1++) { - if (c.playerEquipment[i1] > 0) { - int equipmentItemValue = c.getShopAssistant().getItemShopValue( - c.playerEquipment[i1]); - if (equipmentItemValue > value && !c.equipSlot[i1]) { - value = equipmentItemValue; - item = c.playerEquipment[i1]; - slotId = i1; - itemInInventory = false; - } - } - } - if (itemInInventory) { - c.invSlot[slotId] = true; - if (deleteItem) { - deleteItem(c.playerItems[slotId] - 1, - getItemSlot(c.playerItems[slotId] - 1), 1); - } - } else { - c.equipSlot[slotId] = true; - if (deleteItem) { - deleteEquipment(item, slotId); - } - } - c.itemKeptId[keepItem] = item; - } - - /** - * Reset items kept on death - **/ - - public void resetKeepItems() { - for (int i = 0; i < c.itemKeptId.length; i++) { - c.itemKeptId[i] = -1; - } - for (int i1 = 0; i1 < c.invSlot.length; i1++) { - c.invSlot[i1] = false; - } - for (int i2 = 0; i2 < c.equipSlot.length; i2++) { - c.equipSlot[i2] = false; - } - } - - /** - * delete all items - **/ - - public void deleteAllItems() { - for (int i1 = 0; i1 < c.playerEquipment.length; i1++) { - deleteEquipment(c.playerEquipment[i1], i1); - } - for (int i = 0; i < c.playerItems.length; i++) { - deleteItem(c.playerItems[i] - 1, getItemSlot(c.playerItems[i] - 1), - c.playerItemsN[i]); - } - } - - /** - * Clear Bank - */ - - public void clearBank() { - try { - for (int i = 0; i < c.bankItems[i]; i++) { - c.bankItems[i] = 0; - c.bankItemsN[i] = 0; - } - resetTempItems(); - resetBank(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * Drop all items for your killer - **/ - - public void dropAllItems() { - Client o = (Client) PlayerHandler.players[c.killerId]; - - for (int i = 0; i < c.playerItems.length; i++) { - if (o != null) { - if (tradeable(c.playerItems[i] - 1)) { - Server.itemHandler.createGroundItem(o, - c.playerItems[i] - 1, c.getX(), c.getY(), - c.playerItemsN[i], c.killerId); - } else { - if (specialCase(c.playerItems[i] - 1)) { - Server.itemHandler.createGroundItem(o, 995, c.getX(), - c.getY(), - getUntradePrice(c.playerItems[i] - 1), - c.killerId); - } - Server.itemHandler.createGroundItem(c, - c.playerItems[i] - 1, c.getX(), c.getY(), - c.playerItemsN[i], c.playerId); - } - } else { - Server.itemHandler.createGroundItem(c, c.playerItems[i] - 1, - c.getX(), c.getY(), c.playerItemsN[i], c.playerId); - } - } - for (int e = 0; e < c.playerEquipment.length; e++) { - if (o != null) { - if (tradeable(c.playerEquipment[e])) { - Server.itemHandler.createGroundItem(o, - c.playerEquipment[e], c.getX(), c.getY(), - c.playerEquipmentN[e], c.killerId); - } else { - if (specialCase(c.playerEquipment[e])) { - Server.itemHandler.createGroundItem(o, 995, c.getX(), - c.getY(), - getUntradePrice(c.playerEquipment[e]), - c.killerId); - } - Server.itemHandler.createGroundItem(c, - c.playerEquipment[e], c.getX(), c.getY(), - c.playerEquipmentN[e], c.playerId); - } - } else { - Server.itemHandler.createGroundItem(c, c.playerEquipment[e], - c.getX(), c.getY(), c.playerEquipmentN[e], c.playerId); - } - } - if (o != null) { - Server.itemHandler.createGroundItem(o, 526, c.getX(), c.getY(), 1, - c.killerId); - } - } - - public int getUntradePrice(int item) { - switch (item) { - case 2518: - case 2524: - case 2526: - return 100000; - case 2520: - case 2522: - return 150000; - } - return 0; - } - - public boolean specialCase(int itemId) { - switch (itemId) { - case 2518: - case 2520: - case 2522: - case 2524: - case 2526: - return true; - } - return false; - } - - public void addToVoidList(int itemId) { - switch (itemId) { - case 2518: - c.voidStatus[0]++; - break; - case 2520: - c.voidStatus[1]++; - break; - case 2522: - c.voidStatus[2]++; - break; - case 2524: - c.voidStatus[3]++; - break; - case 2526: - c.voidStatus[4]++; - break; - } - } - - public boolean tradeable(int itemId) { - for (int element : Constants.ITEM_TRADEABLE) { - if (itemId == element) { - return false; - } - } - return true; - } - - /** - * Add Item - **/ - public boolean addItem(int item, int amount) { - // synchronized(c) { - if (item == CastleWars.SARA_BANNER || item == CastleWars.ZAMMY_BANNER) { - return false; - } - if (amount < 1) { - amount = 1; - } - if (item <= 0) { - return false; - } - if ((freeSlots() >= 1 || playerHasItem(item, 1)) - && Item.itemStackable[item] || freeSlots() > 0 - && !Item.itemStackable[item]) { - for (int i = 0; i < c.playerItems.length; i++) { - if (c.playerItems[i] == item + 1 && Item.itemStackable[item] - && c.playerItems[i] > 0) { - c.playerItems[i] = item + 1; - if (c.playerItemsN[i] + amount < Constants.MAXITEM_AMOUNT - && c.playerItemsN[i] + amount > -1) { - c.playerItemsN[i] += amount; - } else { - c.playerItemsN[i] = Constants.MAXITEM_AMOUNT; - } - if (c.getOutStream() != null && c != null) { - c.getOutStream().createFrameVarSizeWord(34); - c.getOutStream().writeWord(3214); - c.getOutStream().writeByte(i); - c.getOutStream().writeWord(c.playerItems[i]); - if (c.playerItemsN[i] > 254) { - c.getOutStream().writeByte(255); - c.getOutStream().writeDWord(c.playerItemsN[i]); - } else { - c.getOutStream().writeByte(c.playerItemsN[i]); - } - c.getOutStream().endFrameVarSizeWord(); - c.flushOutStream(); - } - i = 30; - Weight.calcWeight(c, item, "additem"); - return true; - } - } - for (int i = 0; i < c.playerItems.length; i++) { - if (c.playerItems[i] <= 0) { - c.playerItems[i] = item + 1; - if (amount < Constants.MAXITEM_AMOUNT && amount > -1) { - c.playerItemsN[i] = 1; - if (amount > 1) { - addItem(item, amount - 1); - return true; - } - } else { - c.playerItemsN[i] = Constants.MAXITEM_AMOUNT; - } - resetItems(3214); - i = 30; - Weight.calcWeight(c, item, "additem"); - return true; - } - } - return false; - } else { - resetItems(3214); - c.getActionSender().sendMessage( - "Not enough space in your inventory."); - return false; - } - } - - /** - * Bonuses - **/ - - public final String[] BONUS_NAMES = { "Stab", "Slash", "Crush", "Magic", - "Range", "Stab", "Slash", "Crush", "Magic", "Range", "Strength", - "Prayer" }; - - public void resetBonus() { - for (int i = 0; i < c.playerBonus.length; i++) { - c.playerBonus[i] = 0; - } - } - - public void getBonus() { - for (int element : c.playerEquipment) { - if (element > -1) { - for (int j = 0; j < Constants.ITEM_LIMIT; j++) { - if (Server.itemHandler.ItemList[j] != null) { - if (Server.itemHandler.ItemList[j].itemId == element) { - for (int k = 0; k < c.playerBonus.length; k++) { - c.playerBonus[k] += Server.itemHandler.ItemList[j].Bonuses[k]; - } - break; - } - } - } - } - } - } - - /** - * Wear Item - **/ - - public void sendWeapon(int Weapon, String WeaponName) { - String WeaponName2 = WeaponName.replaceAll("Bronze", ""); - WeaponName2 = WeaponName2.replaceAll("Iron", ""); - WeaponName2 = WeaponName2.replaceAll("Steel", ""); - WeaponName2 = WeaponName2.replaceAll("Black", ""); - WeaponName2 = WeaponName2.replaceAll("Mithril", ""); - WeaponName2 = WeaponName2.replaceAll("Adamant", ""); - WeaponName2 = WeaponName2.replaceAll("Rune", ""); - WeaponName2 = WeaponName2.replaceAll("Granite", ""); - WeaponName2 = WeaponName2.replaceAll("Dragon", ""); - WeaponName2 = WeaponName2.replaceAll("Drag", ""); - WeaponName2 = WeaponName2.replaceAll("Crystal", ""); - WeaponName2 = WeaponName2.trim(); - if (WeaponName.equals("Unarmed")) { - c.getActionSender().setSidebarInterface(0, 5855); // punch, - // kick, - // block - c.getPlayerAssistant().sendFrame126(WeaponName, 5857); - } else if (WeaponName.endsWith("whip")) { - c.getActionSender().setSidebarInterface(0, 12290); // flick, - // lash, - // deflect - c.getPlayerAssistant().sendFrame246(12291, 200, Weapon); - c.getPlayerAssistant().sendFrame126(WeaponName, 12293); - } else if (WeaponName.endsWith("bow") || WeaponName.endsWith("10") - || WeaponName.endsWith("full") - || WeaponName.startsWith("seercull")) { - c.getActionSender().setSidebarInterface(0, 1764); // accurate, - // rapid, - // longrange - c.getPlayerAssistant().sendFrame246(1765, 200, Weapon); - c.getPlayerAssistant().sendFrame126(WeaponName, 1767); - } else if (WeaponName.startsWith("Staff") - || WeaponName.endsWith("staff") || WeaponName.endsWith("wand")) { - c.getActionSender().setSidebarInterface(0, 328); // spike, - // impale, - // smash, - // block - c.getPlayerAssistant().sendFrame246(329, 200, Weapon); - c.getPlayerAssistant().sendFrame126(WeaponName, 331); - } else if (WeaponName2.startsWith("dart") - || WeaponName2.startsWith("knife") - || WeaponName2.startsWith("javelin") - || WeaponName.equalsIgnoreCase("toktz-xil-ul")) { - c.getActionSender().setSidebarInterface(0, 4446); // accurate, - // rapid, - // longrange - c.getPlayerAssistant().sendFrame246(4447, 200, Weapon); - c.getPlayerAssistant().sendFrame126(WeaponName, 4449); - } else if (WeaponName2.startsWith("dagger") - || WeaponName2.contains("sword")) { - c.getActionSender().setSidebarInterface(0, 2276); // stab, - // lunge, - // slash, - // block - c.getPlayerAssistant().sendFrame246(2277, 200, Weapon); - c.getPlayerAssistant().sendFrame126(WeaponName, 2279); - } else if (WeaponName2.startsWith("pickaxe")) { - c.getActionSender().setSidebarInterface(0, 5570); // spike, - // impale, - // smash, - // block - c.getPlayerAssistant().sendFrame246(5571, 200, Weapon); - c.getPlayerAssistant().sendFrame126(WeaponName, 5573); - } else if (WeaponName2.startsWith("axe") - || WeaponName2.startsWith("battleaxe")) { - c.getActionSender().setSidebarInterface(0, 1698); // chop, - // hack, - // smash, - // block - c.getPlayerAssistant().sendFrame246(1699, 200, Weapon); - c.getPlayerAssistant().sendFrame126(WeaponName, 1701); - } else if (WeaponName2.startsWith("halberd")) { - c.getActionSender().setSidebarInterface(0, 8460); // jab, - // swipe, - // fend - c.getPlayerAssistant().sendFrame246(8461, 200, Weapon); - c.getPlayerAssistant().sendFrame126(WeaponName, 8463); - } else if (WeaponName2.startsWith("Scythe")) { - c.getActionSender().setSidebarInterface(0, 8460); // jab, - // swipe, - // fend - c.getPlayerAssistant().sendFrame246(8461, 200, Weapon); - c.getPlayerAssistant().sendFrame126(WeaponName, 8463); - } else if (WeaponName2.startsWith("spear")) { - c.getActionSender().setSidebarInterface(0, 4679); // lunge, - // swipe, - // pound, - // block - c.getPlayerAssistant().sendFrame246(4680, 200, Weapon); - c.getPlayerAssistant().sendFrame126(WeaponName, 4682); - } else if (WeaponName2.toLowerCase().contains("mace")) { - c.getActionSender().setSidebarInterface(0, 3796); - c.getPlayerAssistant().sendFrame246(3797, 200, Weapon); - c.getPlayerAssistant().sendFrame126(WeaponName, 3799); - - } else if (c.playerEquipment[c.playerWeapon] == 4153) { - c.getActionSender().setSidebarInterface(0, 425); // war hamer - // equip. - c.getPlayerAssistant().sendFrame246(426, 200, Weapon); - c.getPlayerAssistant().sendFrame126(WeaponName, 428); - } else { - c.getActionSender().setSidebarInterface(0, 2423); // chop, - // slash, - // lunge, - // block - c.getPlayerAssistant().sendFrame246(2424, 200, Weapon); - c.getPlayerAssistant().sendFrame126(WeaponName, 2426); - } - - } - - /** - * Weapon Requirements - **/ - - public void getRequirements(String itemName, int itemId) { - c.attackLevelReq = c.defenceLevelReq = c.strengthLevelReq = c.rangeLevelReq = c.magicLevelReq = c.agilityLevelReq = c.slayerLevelReq = 0; - if (itemName.contains("mystic") || itemName.contains("nchanted")) { - if (itemName.contains("staff")) { - c.magicLevelReq = 20; - c.attackLevelReq = 40; - } else { - c.magicLevelReq = 20; - c.defenceLevelReq = 20; - } - } - if (itemName.contains("infinity")) { - c.magicLevelReq = 50; - c.defenceLevelReq = 25; - } - if (itemName.contains("splitbark")) { - c.magicLevelReq = 40; - c.defenceLevelReq = 40; - } - if (itemName.contains("green d'hide")) { - c.rangeLevelReq = 40; - if (itemName.contains("body")) { - c.defenceLevelReq = 40; - } - } - if (itemName.contains("blue d'hide")) { - c.rangeLevelReq = 50; - if (itemName.contains("body")) { - c.defenceLevelReq = 40; - } - return; - } - if (itemName.contains("red d'hide")) { - c.rangeLevelReq = 60; - if (itemName.contains("body")) { - c.defenceLevelReq = 40; - } - return; - } - if (itemName.contains("black d'hide")) { - if (itemName.contains("body")) { - c.defenceLevelReq = 40; - } - c.rangeLevelReq = 70; - } - if (itemName.contains("bronze")) { - if (!itemName.contains("knife") && !itemName.contains("dart") - && !itemName.contains("javelin") - && !itemName.contains("thrownaxe")) { - c.attackLevelReq = c.defenceLevelReq = 1; - } - return; - } - if (itemName.contains("iron")) { - if (!itemName.contains("knife") && !itemName.contains("dart") - && !itemName.contains("javelin") - && !itemName.contains("thrownaxe")) { - c.attackLevelReq = c.defenceLevelReq = 1; - } - return; - } - if (itemName.contains("steel")) { - if (!itemName.contains("knife") && !itemName.contains("dart") - && !itemName.contains("javelin") - && !itemName.contains("thrownaxe")) { - c.attackLevelReq = c.defenceLevelReq = 5; - } - return; - } - if (itemName.contains("black")) { - if (!itemName.contains("knife") - && !itemName.equalsIgnoreCase("Black skirt") - && !itemName.contains("dart") - && !itemName.contains("javelin") - && !itemName.contains("thrownaxe") - && !itemName.contains("vamb") && !itemName.contains("chap") && !itemName.equalsIgnoreCase("Black robe")) { - c.attackLevelReq = c.defenceLevelReq = 10; - } - return; - } - if (itemName.contains("mithril")) { - if (!itemName.contains("knife") && !itemName.contains("dart") - && !itemName.contains("javelin") - && !itemName.contains("thrownaxe")) { - c.attackLevelReq = c.defenceLevelReq = 20; - } - return; - } - if (itemName.contains("adamant")) { - if (!itemName.contains("knife") && !itemName.contains("dart") - && !itemName.contains("javelin") - && !itemName.contains("thrownaxe")) { - c.attackLevelReq = c.defenceLevelReq = 30; - } - return; - } - if (itemName.contains("rune")) { - if (!itemName.contains("knife") && !itemName.contains("dart") - && !itemName.contains("javelin") - && !itemName.contains("thrownaxe") - && !itemName.contains("'bow")) { - c.attackLevelReq = c.defenceLevelReq = 40; - } - return; - } - if (itemName.contains("dragon")) { - if (!itemName.contains("nti-") && !itemName.contains("fire")) { - c.attackLevelReq = c.defenceLevelReq = 60; - return; - } - } - if (itemName.contains("crystal")) { - if (itemName.contains("shield")) { - c.defenceLevelReq = 70; - } else { - c.rangeLevelReq = 70; - } - return; - } - if (itemName.contains("ahrim")) { - if (itemName.contains("staff")) { - c.magicLevelReq = 70; - c.attackLevelReq = 70; - } else { - c.magicLevelReq = 70; - c.defenceLevelReq = 70; - } - } - if (itemName.contains("karil")) { - if (itemName.contains("crossbow")) { - c.rangeLevelReq = 70; - } else { - c.rangeLevelReq = 70; - c.defenceLevelReq = 70; - } - } - if (itemName.contains("godsword")) { - c.attackLevelReq = 75; - } - if (itemName.contains("3rd age") && !itemName.contains("amulet")) { - c.defenceLevelReq = 60; - } - if (itemName.contains("Initiate")) { - c.defenceLevelReq = 20; - } - if (itemName.contains("verac") || itemName.contains("guthan") - || itemName.contains("dharok") || itemName.contains("torag")) { - - if (itemName.contains("hammers")) { - c.attackLevelReq = 70; - c.strengthLevelReq = 70; - } else if (itemName.contains("axe")) { - c.attackLevelReq = 70; - c.strengthLevelReq = 70; - } else if (itemName.contains("warspear")) { - c.attackLevelReq = 70; - c.strengthLevelReq = 70; - } else if (itemName.contains("flail")) { - c.attackLevelReq = 70; - c.strengthLevelReq = 70; - } else { - c.defenceLevelReq = 70; - } - } - - switch (itemId) { - case 8839: - case 8840: - case 8842: - case 11663: - case 11664: - case 11665: - c.attackLevelReq = 42; - c.rangeLevelReq = 42; - c.strengthLevelReq = 42; - c.magicLevelReq = 42; - c.defenceLevelReq = 42; - return; - case 10551: - case 2503: - case 2501: - case 2499: - case 1135: - c.defenceLevelReq = 40; - return; - case 1133: - c.defenceLevelReq = 20; - c.rangeLevelReq = 20; - return; - case 11235: - case 6522: - c.rangeLevelReq = 60; - break; - case 1097: - c.rangeLevelReq = 20; - break; - case 864: - case 863: - c.rangeLevelReq = 1; - break; - case 865: - c.rangeLevelReq = 5; - break; - case 866: - c.rangeLevelReq = 20; - break; - case 867: - c.rangeLevelReq = 30; - break; - case 868: - c.rangeLevelReq = 40; - break; - case 6524: - c.defenceLevelReq = 60; - break; - case 11284: - c.defenceLevelReq = 75; - return; - case 6889: - case 6914: - c.magicLevelReq = 60; - break; - case 10828: - c.defenceLevelReq = 55; - break; - case 11724: - case 11726: - case 11728: - c.defenceLevelReq = 65; - break; - case 847: - case 849: - c.rangeLevelReq = 20; - break; - case 843: - case 845: - c.rangeLevelReq = 5; - break; - case 851: - case 853: - c.rangeLevelReq = 30; - break; - case 855: - case 857: - c.rangeLevelReq = 40; - break; - case 859: - case 861: - c.rangeLevelReq = 50; - break; - case 3749: - case 3751: - case 3755: - case 3753: - c.defenceLevelReq = 45; - break; - - case 7462: - case 7461: - c.defenceLevelReq = 40; - break; - case 8846: - c.defenceLevelReq = 5; - break; - case 8847: - c.defenceLevelReq = 10; - break; - case 8848: - c.defenceLevelReq = 20; - break; - case 8849: - c.defenceLevelReq = 30; - break; - case 8850: - c.defenceLevelReq = 40; - break; - - case 7460: - c.defenceLevelReq = 40; - break; - - case 837: - c.rangeLevelReq = 61; - break; - - case 4151: // if you don't want to use names - c.attackLevelReq = 70; - return; - - case 6724: // seercull - c.rangeLevelReq = 60; // idk if that is correct - return; - case 6523: - case 6525: - case 6527: - c.attackLevelReq = 60; - return; - case 6526: - c.attackLevelReq = 60; - c.magicLevelReq = 60; - return; - case 4156: - c.defenceLevelReq = 20; - c.slayerLevelReq = 25; - return; - case 1391: - case 1393: - case 1395: - case 1397: - case 1399: - case 3053: - c.attackLevelReq = 30; - c.magicLevelReq = 30; - return; - case 4158: - c.slayerLevelReq = 55; - c.attackLevelReq = 50; - return; - case 4153: - c.attackLevelReq = 50; - c.strengthLevelReq = 50; - return; - case 6528: - c.strengthLevelReq = 60; - return; - case 4161: - c.slayerLevelReq = 20; - return; - case 4168: - c.slayerLevelReq = 60; - return; - case 6696: - c.slayerLevelReq = 22; - return; - case 8923: - c.slayerLevelReq = 35; - return; - case 7159: - c.slayerLevelReq = 37; - return; - case 6708: - c.slayerLevelReq = 42; - return; - case 4170: - c.slayerLevelReq = 55; - return; - case 4162: - c.slayerLevelReq = 75; - return; - case 7421: - case 7422: - case 7423: - case 7424: - case 7425: - case 7426: - case 7427: - case 7428: - case 7429: - case 7430: - case 7431: - case 7432: - c.slayerLevelReq = 57; - return; - case 4212: - case 4214: - case 4215: - case 4216: - case 4217: - case 4218: - case 4219: - case 4220: - case 4221: - case 4222: - case 4223: - c.agilityLevelReq = 50; - c.rangeLevelReq = 70; - return; - case 4150: - case 4160: - case 4172: - case 4174: - c.slayerLevelReq = 55; - return; - case 1015: - c.defenceLevelReq = 1; - return; - case 6664: - c.slayerLevelReq = 32; - return; - case 4551: - c.defenceLevelReq = 5; - return; - case 7051: - c.slayerLevelReq = 33; - return; - case 4166: - c.slayerLevelReq = 15; - return; - case 4164: - c.slayerLevelReq = 10; - return; - } - } - - /** - * two handed weapon check - **/ - public boolean is2handed(String itemName, int itemId) { - if (itemName.contains("ahrim") || itemName.contains("karil") || itemName.contains("verac") || itemName.contains("guthan") || itemName.contains("dharok") || itemName.contains("torag")) { - return true; - } - if (itemName.contains("claws")) { - return true; - } - if (itemName.contains("longbow") || itemName.contains("shortbow") || itemName.contains("ark bow")) { - return true; - } - if (itemName.contains("crystal")) { - return true; - } - if (itemName.contains("godsword") || itemName.contains("aradomin sword") || itemName.contains("2h") || itemName.contains("spear")) { - return true; - } - switch (itemId) { - case 6724: // seercull - case 11730: - case 4153: - case 6528: - case 14484: - return true; - } - return false; - } - - /** - * Weapons special bar, adds the spec bars to weapons that require them and - * removes the spec bars from weapons which don't require them - **/ - - public void addSpecialBar(int weapon) { - switch (weapon) { - - case 4151: // whip - c.getPlayerAssistant().sendFrame171(0, 12323); - specialAmount(weapon, c.specAmount, 12335); - break; - - case 859: // magic bows - case 861: - case 11235: - c.getPlayerAssistant().sendFrame171(0, 7549); - specialAmount(weapon, c.specAmount, 7561); - break; - - case 4587: // dscimmy - c.getPlayerAssistant().sendFrame171(0, 7599); - specialAmount(weapon, c.specAmount, 7611); - break; - - case 3204: // d hally - c.getPlayerAssistant().sendFrame171(0, 8493); - specialAmount(weapon, c.specAmount, 8505); - break; - - case 1377: // d battleaxe - c.getPlayerAssistant().sendFrame171(0, 7499); - specialAmount(weapon, c.specAmount, 7511); - break; - - case 4153: // gmaul - c.getPlayerAssistant().sendFrame171(0, 7474); - specialAmount(weapon, c.specAmount, 7486); - break; - - case 1249: // dspear - c.getPlayerAssistant().sendFrame171(0, 7674); - specialAmount(weapon, c.specAmount, 7686); - break; - - case 1215:// dragon dagger - case 1231: - case 5680: - case 5698: - case 1305: // dragon long - case 11694: - case 11698: - case 11700: - case 11730: - case 11696: - c.getPlayerAssistant().sendFrame171(0, 7574); - specialAmount(weapon, c.specAmount, 7586); - break; - - case 1434: // dragon mace - c.getPlayerAssistant().sendFrame171(0, 7624); - specialAmount(weapon, c.specAmount, 7636); - break; - - default: - c.getPlayerAssistant().sendFrame171(1, 7624); // mace - // interface - c.getPlayerAssistant().sendFrame171(1, 7474); // hammer, gmaul - c.getPlayerAssistant().sendFrame171(1, 7499); // axe - c.getPlayerAssistant().sendFrame171(1, 7549); // bow interface - c.getPlayerAssistant().sendFrame171(1, 7574); // sword - // interface - c.getPlayerAssistant().sendFrame171(1, 7599); // scimmy sword - // interface, - // for most - // swords - c.getPlayerAssistant().sendFrame171(1, 8493); - c.getPlayerAssistant().sendFrame171(1, 12323); // whip - // interface - break; - } - } - - /** - * Specials bar filling amount - **/ - - public void specialAmount(int weapon, double specAmount, int barId) { - c.specBarId = barId; - c.getPlayerAssistant().sendFrame70(specAmount >= 10 ? 500 : 0, 0, - --barId); - c.getPlayerAssistant().sendFrame70(specAmount >= 9 ? 500 : 0, 0, - --barId); - c.getPlayerAssistant().sendFrame70(specAmount >= 8 ? 500 : 0, 0, - --barId); - c.getPlayerAssistant().sendFrame70(specAmount >= 7 ? 500 : 0, 0, - --barId); - c.getPlayerAssistant().sendFrame70(specAmount >= 6 ? 500 : 0, 0, - --barId); - c.getPlayerAssistant().sendFrame70(specAmount >= 5 ? 500 : 0, 0, - --barId); - c.getPlayerAssistant().sendFrame70(specAmount >= 4 ? 500 : 0, 0, - --barId); - c.getPlayerAssistant().sendFrame70(specAmount >= 3 ? 500 : 0, 0, - --barId); - c.getPlayerAssistant().sendFrame70(specAmount >= 2 ? 500 : 0, 0, - --barId); - c.getPlayerAssistant().sendFrame70(specAmount >= 1 ? 500 : 0, 0, - --barId); - updateSpecialBar(); - sendWeapon(weapon, getItemName(weapon)); - } - - /** - * Special attack text and what to highlight or blackout - **/ - - public void updateSpecialBar() { - if (c.usingSpecial) { - c.getPlayerAssistant() - .sendFrame126( - "" - + (c.specAmount >= 2 ? "@yel@S P" - : "@bla@S P") - + "" - + (c.specAmount >= 3 ? "@yel@ E" - : "@bla@ E") - + "" - + (c.specAmount >= 4 ? "@yel@ C I" - : "@bla@ C I") - + "" - + (c.specAmount >= 5 ? "@yel@ A L" - : "@bla@ A L") - + "" - + (c.specAmount >= 6 ? "@yel@ A" - : "@bla@ A") - + "" - + (c.specAmount >= 7 ? "@yel@ T T" - : "@bla@ T T") - + "" - + (c.specAmount >= 8 ? "@yel@ A" - : "@bla@ A") - + "" - + (c.specAmount >= 9 ? "@yel@ C" - : "@bla@ C") - + "" - + (c.specAmount >= 10 ? "@yel@ K" - : "@bla@ K"), c.specBarId); - } else { - c.getPlayerAssistant().sendFrame126( - "@bla@S P E C I A L A T T A C K", c.specBarId); - } - } - - /** - * Wear Item - **/ - - public boolean wearItem(int wearID, int slot) { - // Check the player has the item the want to wear - if (!playerHasItem(wearID, 1, slot)) { - return false; - } - if (c.tutorialProgress < 22) { - c.getActionSender().sendMessage("You'll be told how to equip items later."); - return false; - } - - if (c.tutorialProgress == 22) { - c.getActionSender().chatbox(6180); - c.getDialogueHandler() - .chatboxText(c, - "Clothes, armour, weapons and many other items are equipped", - "like this. You can unequip items by clicking on the item in the", - "worn inventory. You can close this window by clicking on the", - "small x. Speak to the Combat Instructor to continue.", - "You're now holding your dagger"); - c.getActionSender().chatbox(6179); - c.tutorialProgress = 23; - // c.setSidebarInterface(0, -1);// worn - - } else if (c.tutorialProgress == 23) { - c.getActionSender().chatbox(6180); - c.getDialogueHandler() - .chatboxText( - c, - "", - "Click on the flashing crossed swords icon to see the combat", - "interface.", "", "Combat interface"); - c.getActionSender().chatbox(6179); - c.getActionSender().flashSideBarIcon(0); - // c.getPacketDispatcher().tutorialIslandInterface(50, 11); - } - - int wearAmount = c.playerItemsN[slot]; - if (wearAmount < 1) { - return false; - } - - int targetSlot = Constants.HAT; - boolean canWearItem = true; - if (c.playerItems[slot] == wearID + 1) { - getRequirements(getItemName(wearID).toLowerCase(), wearID); - targetSlot = Item.targetSlots[wearID]; - - if (c.duelRule[11] && targetSlot == 0) { - c.getActionSender().sendMessage("Wearing hats has been disabled in this duel!"); - return false; - } - if (c.duelRule[12] && targetSlot == 1) { - c.getActionSender().sendMessage("Wearing capes has been disabled in this duel!"); - return false; - } - if (c.duelRule[13] && targetSlot == 2) { - c.getActionSender().sendMessage("Wearing amulets has been disabled in this duel!"); - return false; - } - if (c.duelRule[14] && targetSlot == 3) { - c.getActionSender().sendMessage("Wielding weapons has been disabled in this duel!"); - return false; - } - if (c.duelRule[15] && targetSlot == 4) { - c.getActionSender().sendMessage("Wearing bodies has been disabled in this duel!"); - return false; - } - if (c.duelRule[16] && targetSlot == 5 || c.duelRule[16] && is2handed(getItemName(wearID).toLowerCase(), wearID)) { - c.getActionSender().sendMessage("Wearing shield has been disabled in this duel!"); - return false; - } - if (c.duelRule[17] && targetSlot == 7) { - c.getActionSender().sendMessage("Wearing legs has been disabled in this duel!"); - return false; - } - if (c.duelRule[18] && targetSlot == 9) { - c.getActionSender().sendMessage("Wearing gloves has been disabled in this duel!"); - return false; - } - if (c.duelRule[19] && targetSlot == 10) { - c.getActionSender().sendMessage("Wearing boots has been disabled in this duel!"); - return false; - } - if (c.duelRule[20] && targetSlot == 12) { - c.getActionSender().sendMessage("Wearing rings has been disabled in this duel!"); - return false; - } - if (c.duelRule[21] && targetSlot == 13) { - c.getActionSender().sendMessage("Wearing arrows has been disabled in this duel!"); - return false; - } - - if (Constants.itemRequirements) { - // Check if slot is armor - if (targetSlot == Constants.FEET - || targetSlot == Constants.LEGS - || targetSlot == Constants.SHIELD - || targetSlot == Constants.CHEST - || targetSlot == Constants.HAT - || targetSlot == Constants.HANDS) { - if (c.defenceLevelReq > 0) { - if (c.getPlayerAssistant().getLevelForXP(c.playerXP[1]) < c.defenceLevelReq) { - c.getActionSender().sendMessage("You need a defence level of " + c.defenceLevelReq + " to wear this item."); - canWearItem = false; - } - } - if (c.rangeLevelReq > 0) { - if (c.getPlayerAssistant().getLevelForXP(c.playerXP[4]) < c.rangeLevelReq) { - c.getActionSender().sendMessage("You need a range level of " + c.rangeLevelReq + " to wear this item."); - canWearItem = false; - } - } - if (c.magicLevelReq > 0) { - if (c.getPlayerAssistant().getLevelForXP(c.playerXP[6]) < c.magicLevelReq) { - c.getActionSender().sendMessage("You need a magic level of " + c.magicLevelReq + " to wear this item."); - canWearItem = false; - } - } - } - if (c.slayerLevelReq > 0) { - if (c.getPlayerAssistant().getLevelForXP(c.playerXP[18]) < c.slayerLevelReq) { - c.getActionSender().sendMessage("You need a slayer level of " + c.slayerLevelReq + " to wear this item."); - canWearItem = false; - } - } - if (c.agilityLevelReq > 0) { - if (c.getPlayerAssistant().getLevelForXP(c.playerXP[16]) < c.agilityLevelReq) { - c.getActionSender().sendMessage("You need a agility level of " + c.agilityLevelReq + " to wear this item."); - canWearItem = false; - } - } - // Weapon - if (targetSlot == Constants.WEAPON) { - if (c.attackLevelReq > 0) { - if (c.getPlayerAssistant().getLevelForXP(c.playerXP[0]) < c.attackLevelReq) { - c.getActionSender().sendMessage("You need an attack level of " + c.attackLevelReq + " to wield this weapon."); - canWearItem = false; - } - } - if (c.rangeLevelReq > 0) { - if (c.getPlayerAssistant().getLevelForXP(c.playerXP[4]) < c.rangeLevelReq) { - c.getActionSender().sendMessage("You need a range level of " + c.rangeLevelReq + " to wield this weapon."); - canWearItem = false; - } - } - if (c.magicLevelReq > 0) { - if (c.getPlayerAssistant().getLevelForXP(c.playerXP[6]) < c.magicLevelReq) { - c.getActionSender().sendMessage("You need a magic level of " + c.magicLevelReq + " to wield this weapon."); - canWearItem = false; - } - } - } - } - - switch (wearID) { - // Dragon daggers/sword - case 1215: - case 1231: - case 5680: - case 5698: - case 1305: - if (c.spiritTree == false && c.playerRights != 3) { - c.getActionSender().sendMessage("You need to beat the tree spirit to wield this weapon."); - canWearItem = false; - } - } - - if (!canWearItem) { - // return false here so we can send multiple messages of requirements - return false; - } - - if (CastleWars.isInCw(c) || CastleWars.isInCwWait(c)) { - if (targetSlot == Constants.CAPE || targetSlot == Constants.HAT) { - c.getActionSender().sendMessage("You can't wear your own capes or hats in a Castle Wars Game!"); - return false; - } - } - - if (targetSlot == Constants.WEAPON) { - c.autocasting = false; - c.autocastId = 0; - c.getPlayerAssistant().sendConfig(108, 0); - } - - if (slot >= 0 && wearID >= 0) { - int toEquip = c.playerItems[slot]; - int toEquipN = c.playerItemsN[slot]; - int toRemove = c.playerEquipment[targetSlot]; - int toRemoveN = c.playerEquipmentN[targetSlot]; - if (toEquip == toRemove + 1 && Item.itemStackable[toRemove]) { - deleteItem(toRemove, getItemSlot(toRemove), toEquipN); - c.playerEquipmentN[targetSlot] += toEquipN; - } else if (targetSlot != Constants.SHIELD && targetSlot != Constants.WEAPON) { - c.playerItems[slot] = toRemove + 1; - c.playerItemsN[slot] = toRemoveN; - c.playerEquipment[targetSlot] = toEquip - 1; - c.playerEquipmentN[targetSlot] = toEquipN; - } else if (targetSlot == Constants.SHIELD) { - boolean wearing2h = is2handed(getItemName(c.playerEquipment[Constants.WEAPON]).toLowerCase(), c.playerEquipment[Constants.WEAPON]); - if (wearing2h) { - // remove the weapon, add to inventory - toRemove = c.playerEquipment[c.playerWeapon]; - toRemoveN = c.playerEquipmentN[c.playerWeapon]; - c.playerEquipment[c.playerWeapon] = -1; - c.playerEquipmentN[c.playerWeapon] = 0; - updateSlot(Constants.WEAPON); - } - c.playerItems[slot] = toRemove + 1; - c.playerItemsN[slot] = toRemoveN; - c.playerEquipment[targetSlot] = toEquip - 1; - c.playerEquipmentN[targetSlot] = toEquipN; - } else if (targetSlot == Constants.WEAPON) { - if (CastleWars.SARA_BANNER == toRemove || CastleWars.ZAMMY_BANNER == toRemove) { // alk - // update - CastleWars.dropFlag(c, toRemove); - toRemove = -1; - toRemoveN = 0; - } - boolean is2h = is2handed(getItemName(wearID).toLowerCase(), wearID); - boolean wearingShield = c.playerEquipment[Constants.SHIELD] > 0; - boolean wearingWeapon = c.playerEquipment[Constants.WEAPON] > 0; - if (is2h) { - if (wearingShield && wearingWeapon) { - if (freeSlots() > 0) { - c.playerItems[slot] = toRemove + 1; - c.playerItemsN[slot] = toRemoveN; - c.playerEquipment[targetSlot] = toEquip - 1; - c.playerEquipmentN[targetSlot] = toEquipN; - removeItem(c.playerEquipment[Constants.SHIELD], Constants.SHIELD); - } else { - c.getActionSender().sendMessage("You do not have enough inventory space to do this."); - return false; - } - } else if (wearingShield && !wearingWeapon) { - c.playerItems[slot] = c.playerEquipment[Constants.SHIELD] + 1; - c.playerItemsN[slot] = c.playerEquipmentN[Constants.SHIELD]; - c.playerEquipment[targetSlot] = toEquip - 1; - c.playerEquipmentN[targetSlot] = toEquipN; - c.playerEquipment[Constants.SHIELD] = -1; - c.playerEquipmentN[Constants.SHIELD] = 0; - updateSlot(Constants.SHIELD); - } else { - c.playerItems[slot] = toRemove + 1; - c.playerItemsN[slot] = toRemoveN; - c.playerEquipment[targetSlot] = toEquip - 1; - c.playerEquipmentN[targetSlot] = toEquipN; - } - } else { - c.playerItems[slot] = toRemove + 1; - c.playerItemsN[slot] = toRemoveN; - c.playerEquipment[targetSlot] = toEquip - 1; - c.playerEquipmentN[targetSlot] = toEquipN; - } - } - } - resetItems(3214); - if (targetSlot == Constants.WEAPON) { - c.usingSpecial = false; - addSpecialBar(wearID); - } - if (c.getOutStream() != null && c != null) { - c.getOutStream().createFrameVarSizeWord(34); - c.getOutStream().writeWord(1688); - c.getOutStream().writeByte(targetSlot); - c.getOutStream().writeWord(wearID + 1); - - if (c.playerEquipmentN[targetSlot] > 254) { - c.getOutStream().writeByte(255); - c.getOutStream().writeDWord(c.playerEquipmentN[targetSlot]); - } else { - c.getOutStream().writeByte(c.playerEquipmentN[targetSlot]); - } - - c.getOutStream().endFrameVarSizeWord(); - c.flushOutStream(); - } - sendWeapon(c.playerEquipment[c.playerWeapon], getItemName(c.playerEquipment[c.playerWeapon])); - resetBonus(); - getBonus(); - writeBonus(); - c.getCombatAssistant().getPlayerAnimIndex(); - c.getPlayerAssistant().requestUpdates(); - return true; - } else { - return false; - } - } - - public void wearItem(int wearID, int wearAmount, int targetSlot) { - synchronized (c) { - if (c.getOutStream() != null && c != null) { - c.getOutStream().createFrameVarSizeWord(34); - c.getOutStream().writeWord(1688); - c.getOutStream().writeByte(targetSlot); - c.getOutStream().writeWord(wearID + 1); - - if (wearAmount > 254) { - c.getOutStream().writeByte(255); - c.getOutStream().writeDWord(wearAmount); - } else { - c.getOutStream().writeByte(wearAmount); - } - c.getOutStream().endFrameVarSizeWord(); - c.flushOutStream(); - c.playerEquipment[targetSlot] = wearID; - c.playerEquipmentN[targetSlot] = wearAmount; - c.getItemAssistant(); - c.getItemAssistant() - .sendWeapon( - c.playerEquipment[c.playerWeapon], - ItemAssistant - .getItemName(c.playerEquipment[c.playerWeapon])); - resetBonus(); - getBonus(); - /*for (int bowId : RangeData.BOWS) { - if (c.playerEquipment[c.playerWeapon] == bowId) { - for (int arrowId : RangeData.ARROWS) { - if (c.playerEquipment[c.playerArrows] == arrowId && c.playerEquipment[c.playerWeapon] == bowId) { - writeBonus(); - } else if (c.playerEquipment[c.playerWeapon] == bowId && c.playerEquipment[c.playerArrows] != arrowId) { - writeBonus(); - } else if (c.playerEquipment[c.playerArrows] != arrowId && c.playerEquipment[c.playerWeapon] != bowId) { - writeBonus(); - } - } - } - }*/ - writeBonus(); - c.getCombatAssistant().getPlayerAnimIndex(); - c.updateRequired = true; - c.setAppearanceUpdateRequired(true); - } - } - } - - public void updateSlot(int slot) { - // synchronized(c) { - if (c.getOutStream() != null && c != null) { - c.getOutStream().createFrameVarSizeWord(34); - c.getOutStream().writeWord(1688); - c.getOutStream().writeByte(slot); - c.getOutStream().writeWord(c.playerEquipment[slot] + 1); - if (c.playerEquipmentN[slot] > 254) { - c.getOutStream().writeByte(255); - c.getOutStream().writeDWord(c.playerEquipmentN[slot]); - } else { - c.getOutStream().writeByte(c.playerEquipmentN[slot]); - } - c.getOutStream().endFrameVarSizeWord(); - c.flushOutStream(); - } - - } - - /** - * Remove Item - **/ - public void removeItem(int wearID, int slot) { - // synchronized(c) { - if (c.getOutStream() != null && c != null) { - if (c.playerEquipment[slot] > -1) { - if (c.playerEquipment[slot] == CastleWars.SARA_BANNER|| c.playerEquipment[slot] == CastleWars.ZAMMY_BANNER) { - CastleWars.dropFlag(c, c.playerEquipment[slot]); - } - if ((c.playerEquipment[slot] == CastleWars.SARA_CAPE || c.playerEquipment[slot] == CastleWars.ZAMMY_CAPE) && c.inCw()) { - c.getActionSender().sendMessage("You cannot unequip your castle wars cape!"); - return; - } - if (addItem(c.playerEquipment[slot], c.playerEquipmentN[slot])) { - if (c.playerEquipment[slot] == CastleWars.SARA_BANNER || c.playerEquipment[slot] == CastleWars.ZAMMY_BANNER) { - CastleWars.dropFlag(c, c.playerEquipment[slot]); - deleteItem(c.playerEquipment[slot], 1); - } - c.playerEquipment[slot] = -1; - c.playerEquipmentN[slot] = 0; - sendWeapon(c.playerEquipment[c.playerWeapon], - getItemName(c.playerEquipment[c.playerWeapon])); - resetBonus(); - getBonus(); - writeBonus(); - c.getCombatAssistant().getPlayerAnimIndex(); - c.getOutStream().createFrame(34); - c.getOutStream().writeWord(6); - c.getOutStream().writeWord(1688); - c.getOutStream().writeByte(slot); - c.getOutStream().writeWord(0); - c.getOutStream().writeByte(0); - c.flushOutStream(); - c.updateRequired = true; - c.setAppearanceUpdateRequired(true); - Weight.calcWeight(c, wearID, "deleteitem"); - } - } - } - // } - } - - /** - * BANK - */ - - public void rearrangeBank() { - int totalItems = 0; - int highestSlot = 0; - for (int i = 0; i < Constants.BANK_SIZE; i++) { - if (c.bankItems[i] != 0) { - totalItems++; - if (highestSlot <= i) { - highestSlot = i; - } - } - } - - for (int i = 0; i <= highestSlot; i++) { - if (c.bankItems[i] == 0) { - boolean stop = false; - - for (int k = i; k <= highestSlot; k++) { - if (c.bankItems[k] != 0 && !stop) { - int spots = k - i; - for (int j = k; j <= highestSlot; j++) { - c.bankItems[j - spots] = c.bankItems[j]; - c.bankItemsN[j - spots] = c.bankItemsN[j]; - c.bankItemsV[j - spots] = c.bankItemsV[j]; - stop = true; - c.bankItems[j] = 0; - c.bankItemsN[j] = 0; - c.bankItemsV[j] = 0; - } - } - } - } - } - - int totalItemsAfter = 0; - for (int i = 0; i < Constants.BANK_SIZE; i++) { - if (c.bankItems[i] != 0) { - totalItemsAfter++; - } - } - - if (totalItems != totalItemsAfter) { - if (!c.isBot) - c.disconnected = true; - } - } - - public void itemOnInterface(int id, int amount) { - // synchronized(c) { - c.getOutStream().createFrameVarSizeWord(53); - c.getOutStream().writeWord(2274); - c.getOutStream().writeWord(1); - if (amount > 254) { - c.getOutStream().writeByte(255); - c.getOutStream().writeDWord_v2(amount); - } else { - c.getOutStream().writeByte(amount); - } - c.getOutStream().writeWordBigEndianA(id); - c.getOutStream().endFrameVarSizeWord(); - c.flushOutStream(); - } - - public void resetBank() { - synchronized (c) { - if (c.getOutStream() != null) { - c.getOutStream().createFrameVarSizeWord(53); - c.getOutStream().writeWord(5382); // bank - c.getOutStream().writeWord(Constants.BANK_SIZE); - } - for (int i = 0; i < Constants.BANK_SIZE; i++) { - if (c.getOutStream() != null) { - if (c.bankItemsN[i] > 254) { - c.getOutStream().writeByte(255); - c.getOutStream().writeDWord_v2(c.bankItemsN[i]); - } else { - c.getOutStream().writeByte(c.bankItemsN[i]); - } - } - if (c.bankItemsN[i] < 1) { - c.bankItems[i] = 0; - } - if (c.bankItems[i] > Constants.ITEM_LIMIT || c.bankItems[i] < 0) { - c.bankItems[i] = Constants.ITEM_LIMIT; - } - if (c.getOutStream() != null) { - c.getOutStream().writeWordBigEndianA(c.bankItems[i]); - } - } - - if (c.getOutStream() != null) { - c.getOutStream().endFrameVarSizeWord(); - c.flushOutStream(); - } - } - } - - public void resetTempItems() { - // synchronized(c) { - int itemCount = 0; - for (int i = 0; i < c.playerItems.length; i++) { - if (c.playerItems[i] > -1) { - itemCount = i; - } - } - if (c.getOutStream() != null){ - c.getOutStream().createFrameVarSizeWord(53); - c.getOutStream().writeWord(5064); - c.getOutStream().writeWord(itemCount + 1); - } - for (int i = 0; i < itemCount + 1; i++) { - - if (c.getOutStream() != null) { - if (c.playerItemsN[i] > 254) { - c.getOutStream().writeByte(255); - c.getOutStream().writeDWord_v2(c.playerItemsN[i]); - } else { - c.getOutStream().writeByte(c.playerItemsN[i]); - } - } - if (c.playerItems[i] > Constants.ITEM_LIMIT || c.playerItems[i] < 0) { - c.playerItems[i] = Constants.ITEM_LIMIT; - } - if (c.getOutStream() != null) { - c.getOutStream().writeWordBigEndianA(c.playerItems[i]); - } - } - if (c.getOutStream() != null) { - c.getOutStream().endFrameVarSizeWord(); - c.flushOutStream(); - } - } - - public boolean bankItem(int itemID, int fromSlot, int amount) { - if (c.inTrade) { - c.getActionSender().sendMessage("You can't store items while trading!"); - return false; - } - for (int i = 0; i < Constants.ITEM_BANKABLE.length; i++) { - if (itemID == Constants.ITEM_BANKABLE[i]) { - c.getActionSender().sendMessage("You can't bank that item!"); - return false; - } - } - if (!CastleWars.deleteCastleWarsItems(c, itemID)) { - return false; - } - if (c.otherBank == true) { - c.getPlayerAssistant().closeAllWindows(); - c.getActionSender().sendMessage("You can't bank while viewing someones bank!"); - c.otherBank = false; - return false; - } - if (c.playerItemsN[fromSlot] <= 0) { - return false; - } - if (!Item.itemIsNote[c.playerItems[fromSlot] - 1]) { - if (c.playerItems[fromSlot] <= 0) { - return false; - } - if (Item.itemStackable[c.playerItems[fromSlot] - 1] || c.playerItemsN[fromSlot] > 1) { - int toBankSlot = 0; - boolean alreadyInBank = false; - for (int i = 0; i < Constants.BANK_SIZE; i++) { - if (c.bankItems[i] == c.playerItems[fromSlot]) { - if (c.playerItemsN[fromSlot] < amount) { - amount = c.playerItemsN[fromSlot]; - } - alreadyInBank = true; - toBankSlot = i; - i = Constants.BANK_SIZE + 1; - } - } - - if (!alreadyInBank && freeBankSlots() > 0) { - for (int i = 0; i < Constants.BANK_SIZE; i++) { - if (c.bankItems[i] <= 0) { - toBankSlot = i; - i = Constants.BANK_SIZE + 1; - } - } - c.bankItems[toBankSlot] = c.playerItems[fromSlot]; - if (c.playerItemsN[fromSlot] < amount) { - amount = c.playerItemsN[fromSlot]; - } - if (c.bankItemsN[toBankSlot] + amount <= Constants.MAXITEM_AMOUNT - && c.bankItemsN[toBankSlot] + amount > -1) { - c.bankItemsN[toBankSlot] += amount; - } else { - c.getActionSender().sendMessage("Bank full!"); - return false; - } - deleteItem(c.playerItems[fromSlot] - 1, fromSlot, amount); - resetTempItems(); - resetBank(); - return true; - } else if (alreadyInBank) { - if (c.bankItemsN[toBankSlot] + amount <= Constants.MAXITEM_AMOUNT - && c.bankItemsN[toBankSlot] + amount > -1) { - c.bankItemsN[toBankSlot] += amount; - } else { - c.getActionSender().sendMessage("Bank full!"); - return false; - } - deleteItem(c.playerItems[fromSlot] - 1, fromSlot, amount); - resetTempItems(); - resetBank(); - return true; - } else { - c.getActionSender().sendMessage("Your bank is full!"); - return false; - } - } else { - itemID = c.playerItems[fromSlot]; - int toBankSlot = 0; - boolean alreadyInBank = false; - for (int i = 0; i < Constants.BANK_SIZE; i++) { - if (c.bankItems[i] == c.playerItems[fromSlot]) { - alreadyInBank = true; - toBankSlot = i; - i = Constants.BANK_SIZE + 1; - } - } - if (!alreadyInBank && freeBankSlots() > 0) { - for (int i = 0; i < Constants.BANK_SIZE; i++) { - if (c.bankItems[i] <= 0) { - toBankSlot = i; - i = Constants.BANK_SIZE + 1; - } - } - int firstPossibleSlot = 0; - boolean itemExists = false; - while (amount > 0) { - itemExists = false; - for (int i = firstPossibleSlot; i < c.playerItems.length; i++) { - if (c.playerItems[i] == itemID) { - firstPossibleSlot = i; - itemExists = true; - i = 30; - } - } - if (itemExists) { - c.bankItems[toBankSlot] = c.playerItems[firstPossibleSlot]; - c.bankItemsN[toBankSlot] += 1; - deleteItem(c.playerItems[firstPossibleSlot] - 1, - firstPossibleSlot, 1); - amount--; - } else { - amount = 0; - } - } - resetTempItems(); - resetBank(); - return true; - } else if (alreadyInBank) { - int firstPossibleSlot = 0; - boolean itemExists = false; - while (amount > 0) { - itemExists = false; - for (int i = firstPossibleSlot; i < c.playerItems.length; i++) { - if (c.playerItems[i] == itemID) { - firstPossibleSlot = i; - itemExists = true; - i = 30; - } - } - if (itemExists) { - c.bankItemsN[toBankSlot] += 1; - deleteItem(c.playerItems[firstPossibleSlot] - 1, - firstPossibleSlot, 1); - amount--; - } else { - amount = 0; - } - } - resetTempItems(); - resetBank(); - return true; - } else { - c.getActionSender().sendMessage("Bank full!"); - return false; - } - } - } else if (Item.itemIsNote[c.playerItems[fromSlot] - 1] && !Item.itemIsNote[c.playerItems[fromSlot] - 2]) { - if (c.playerItems[fromSlot] <= 0) { - return false; - } - if (Item.itemStackable[c.playerItems[fromSlot] - 1] || c.playerItemsN[fromSlot] > 1) { - int toBankSlot = 0; - boolean alreadyInBank = false; - for (int i = 0; i < Constants.BANK_SIZE; i++) { - if (c.bankItems[i] == c.playerItems[fromSlot] - 1) { - if (c.playerItemsN[fromSlot] < amount) { - amount = c.playerItemsN[fromSlot]; - } - alreadyInBank = true; - toBankSlot = i; - i = Constants.BANK_SIZE + 1; - } - } - - if (!alreadyInBank && freeBankSlots() > 0) { - for (int i = 0; i < Constants.BANK_SIZE; i++) { - if (c.bankItems[i] <= 0) { - toBankSlot = i; - i = Constants.BANK_SIZE + 1; - } - } - c.bankItems[toBankSlot] = c.playerItems[fromSlot] - 1; - if (c.playerItemsN[fromSlot] < amount) { - amount = c.playerItemsN[fromSlot]; - } - if (c.bankItemsN[toBankSlot] + amount <= Constants.MAXITEM_AMOUNT && c.bankItemsN[toBankSlot] + amount > -1) { - c.bankItemsN[toBankSlot] += amount; - } else { - return false; - } - deleteItem(c.playerItems[fromSlot] - 1, fromSlot, amount); - resetTempItems(); - resetBank(); - return true; - } else if (alreadyInBank) { - if (c.bankItemsN[toBankSlot] + amount <= Constants.MAXITEM_AMOUNT && c.bankItemsN[toBankSlot] + amount > -1) { - c.bankItemsN[toBankSlot] += amount; - } else { - return false; - } - deleteItem(c.playerItems[fromSlot] - 1, fromSlot, amount); - resetTempItems(); - resetBank(); - return true; - } else { - c.getActionSender().sendMessage("Bank full!"); - return false; - } - } else { - itemID = c.playerItems[fromSlot]; - int toBankSlot = 0; - boolean alreadyInBank = false; - for (int i = 0; i < Constants.BANK_SIZE; i++) { - if (c.bankItems[i] == c.playerItems[fromSlot] - 1) { - alreadyInBank = true; - toBankSlot = i; - i = Constants.BANK_SIZE + 1; - } - } - if (!alreadyInBank && freeBankSlots() > 0) { - for (int i = 0; i < Constants.BANK_SIZE; i++) { - if (c.bankItems[i] <= 0) { - toBankSlot = i; - i = Constants.BANK_SIZE + 1; - } - } - int firstPossibleSlot = 0; - boolean itemExists = false; - while (amount > 0) { - itemExists = false; - for (int i = firstPossibleSlot; i < c.playerItems.length; i++) { - if (c.playerItems[i] == itemID) { - firstPossibleSlot = i; - itemExists = true; - i = 30; - } - } - if (itemExists) { - c.bankItems[toBankSlot] = c.playerItems[firstPossibleSlot] - 1; - c.bankItemsN[toBankSlot] += 1; - deleteItem(c.playerItems[firstPossibleSlot] - 1, - firstPossibleSlot, 1); - amount--; - } else { - amount = 0; - } - } - resetTempItems(); - resetBank(); - return true; - } else if (alreadyInBank) { - int firstPossibleSlot = 0; - boolean itemExists = false; - while (amount > 0) { - itemExists = false; - for (int i = firstPossibleSlot; i < c.playerItems.length; i++) { - if (c.playerItems[i] == itemID) { - firstPossibleSlot = i; - itemExists = true; - i = 30; - } - } - if (itemExists) { - c.bankItemsN[toBankSlot] += 1; - deleteItem(c.playerItems[firstPossibleSlot] - 1, - firstPossibleSlot, 1); - amount--; - } else { - amount = 0; - } - } - resetTempItems(); - resetBank(); - return true; - } else { - c.getActionSender().sendMessage("Bank full!"); - return false; - } - } - } else { - c.getActionSender().sendMessage("Item not supported " + (c.playerItems[fromSlot] - 1)); - return false; - } - } - - public int freeBankSlots() { - int freeS = 0; - for (int i = 0; i < Constants.BANK_SIZE; i++) { - if (c.bankItems[i] <= 0) { - freeS++; - } - } - return freeS; - } - - public int getBankQuantitiy(int itemID) - { - for (int i = 0; i < c.bankItems.length; i++) { - if (c.bankItems[i] == itemID) - { - return c.bankItemsN[i]; - } - } - return 0; - } - - public void fromBank(int itemID, int fromSlot, int amount) { - if (amount > 0) { - if (c.bankItems[fromSlot] > 0) { - if (!c.takeAsNote) { - if (Item.itemStackable[c.bankItems[fromSlot] - 1]) { - if (c.bankItemsN[fromSlot] > amount) { - if (addItem(c.bankItems[fromSlot] - 1, amount)) { - c.bankItemsN[fromSlot] -= amount; - resetBank(); - resetItems(5064); - } - } else { - if (addItem(c.bankItems[fromSlot] - 1, - c.bankItemsN[fromSlot])) { - c.bankItems[fromSlot] = 0; - c.bankItemsN[fromSlot] = 0; - resetBank(); - resetItems(5064); - } - } - } else { - while (amount > 0) { - if (c.bankItemsN[fromSlot] > 0) { - if (addItem(c.bankItems[fromSlot] - 1, 1)) { - c.bankItemsN[fromSlot] += -1; - amount--; - } else { - amount = 0; - } - } else { - amount = 0; - } - } - resetBank(); - resetItems(5064); - } - } else if (c.takeAsNote && Item.itemIsNote[c.bankItems[fromSlot]]) { - if (c.bankItemsN[fromSlot] > amount) { - if (addItem(c.bankItems[fromSlot], amount)) { - c.bankItemsN[fromSlot] -= amount; - resetBank(); - resetItems(5064); - } - } else { - if (addItem(c.bankItems[fromSlot], c.bankItemsN[fromSlot])) { - c.bankItems[fromSlot] = 0; - c.bankItemsN[fromSlot] = 0; - resetBank(); - resetItems(5064); - } - } - } else { - c.getActionSender().sendMessage("This item can't be withdrawn as a note."); - if (Item.itemStackable[c.bankItems[fromSlot] - 1]) { - if (c.bankItemsN[fromSlot] > amount) { - if (addItem(c.bankItems[fromSlot] - 1, amount)) { - c.bankItemsN[fromSlot] -= amount; - resetBank(); - resetItems(5064); - } - } else { - if (addItem(c.bankItems[fromSlot] - 1, - c.bankItemsN[fromSlot])) { - c.bankItems[fromSlot] = 0; - c.bankItemsN[fromSlot] = 0; - resetBank(); - resetItems(5064); - } - } - } else { - while (amount > 0) { - if (c.bankItemsN[fromSlot] > 0) { - if (addItem(c.bankItems[fromSlot] - 1, 1)) { - c.bankItemsN[fromSlot] += -1; - amount--; - } else { - amount = 0; - } - } else { - amount = 0; - } - } - resetBank(); - resetItems(5064); - } - } - } - } - } - - public int itemAmount(int itemID) { - int tempAmount = 0; - for (int i = 0; i < c.playerItems.length; i++) { - if (c.playerItems[i] == itemID) { - tempAmount += c.playerItemsN[i]; - } - } - return tempAmount; - } - - public boolean isStackable(int itemID) { - return Item.itemStackable[itemID]; - } - - /** - * Update Equip tab - **/ - - public void setEquipment(int wearID, int amount, int targetSlot) { - // synchronized(c) { - if (c.getOutStream() != null) { - c.getOutStream().createFrameVarSizeWord(34); - c.getOutStream().writeWord(1688); - c.getOutStream().writeByte(targetSlot); - c.getOutStream().writeWord(wearID + 1); - if (amount > 254) { - c.getOutStream().writeByte(255); - c.getOutStream().writeDWord(amount); - } else { - c.getOutStream().writeByte(amount); - } - c.getOutStream().endFrameVarSizeWord(); - c.flushOutStream(); - } - c.playerEquipment[targetSlot] = wearID; - c.playerEquipmentN[targetSlot] = amount; - c.updateRequired = true; - c.setAppearanceUpdateRequired(true); - } - - /** - * Move Items - **/ - - public void moveItems(int from, int to, int moveWindow, boolean insertMode) { - if (moveWindow == 3214) { - int tempI; - int tempN; - tempI = c.playerItems[from]; - tempN = c.playerItemsN[from]; - c.playerItems[from] = c.playerItems[to]; - c.playerItemsN[from] = c.playerItemsN[to]; - c.playerItems[to] = tempI; - c.playerItemsN[to] = tempN; - } - - if (moveWindow == 5382 && from >= 0 && to >= 0 - && from < Constants.BANK_SIZE && to < Constants.BANK_SIZE - && to < Constants.BANK_SIZE) { - if (insertMode) { - int tempFrom = from; - for (int tempTo = to; tempFrom != tempTo;) - if (tempFrom > tempTo) { - swapBankItem(tempFrom, tempFrom - 1); - tempFrom--; - } else if (tempFrom < tempTo) { - swapBankItem(tempFrom, tempFrom + 1); - tempFrom++; - } - } else { - swapBankItem(from, to); - } - } - - if (moveWindow == 5382) { - resetBank(); - } - if (moveWindow == 5064) { - int tempI; - int tempN; - tempI = c.playerItems[from]; - tempN = c.playerItemsN[from]; - - c.playerItems[from] = c.playerItems[to]; - c.playerItemsN[from] = c.playerItemsN[to]; - c.playerItems[to] = tempI; - c.playerItemsN[to] = tempN; - resetItems(3214); - } - resetTempItems(); - if (moveWindow == 3214) { - resetItems(3214); - } - - } - - public void swapBankItem(int from, int to) { - int tempI = c.bankItems[from]; - int tempN = c.bankItemsN[from]; - c.bankItems[from] = c.bankItems[to]; - c.bankItemsN[from] = c.bankItemsN[to]; - c.bankItems[to] = tempI; - c.bankItemsN[to] = tempN; - } - - /** - * delete Item - **/ - - public void deleteEquipment(int i, int j) { - // synchronized(c) { - if (PlayerHandler.players[c.playerId] == null) { - return; - } - if (i < 0) { - return; - } - - c.playerEquipment[j] = -1; - c.playerEquipmentN[j] = c.playerEquipmentN[j] - 1; - - if (c.getOutStream() != null) { - c.getOutStream().createFrame(34); - c.getOutStream().writeWord(6); - c.getOutStream().writeWord(1688); - c.getOutStream().writeByte(j); - c.getOutStream().writeWord(0); - c.getOutStream().writeByte(0); - } - getBonus(); - if (j == c.playerWeapon) { - sendWeapon(-1, "Unarmed"); - } - resetBonus(); - getBonus(); - writeBonus(); - c.updateRequired = true; - c.setAppearanceUpdateRequired(true); - } - - public void deleteItem(int id, int amount) { - if (id <= 0 || amount <= 0) { - return; - } - id++; - for (int slot = 0; slot < c.playerItems.length; slot++) { - if (amount <= 0) { - break; - } - if (c.playerItems[slot] == id) { - if (c.playerItemsN[slot] > amount) { - c.playerItemsN[slot] -= amount; - break; - } else { - amount -= c.playerItemsN[slot]; - c.playerItems[slot] = 0; - c.playerItemsN[slot] = 0; - } - } - } - resetItems(3214); - Weight.calcWeight(c, id, "deleteitem"); - } - - public void deleteItem(int id, int slot, int amount) { - if (id <= 0 || slot < 0) { - return; - } - if (c.playerItems[slot] == id + 1) { - if (c.playerItemsN[slot] > amount) { - c.playerItemsN[slot] -= amount; - } else { - c.playerItemsN[slot] = 0; - c.playerItems[slot] = 0; - } - resetItems(3214); - Weight.calcWeight(c, id, "deleteitem"); - } - } - - /** - * Delete Arrows - **/ - public void deleteArrow() { - // synchronized(c) { - if (c.playerEquipment[c.playerCape] == 10499 && Misc.random(5) != 1 - && c.playerEquipment[c.playerArrows] != 4740) { - return; - } - if (c.playerEquipmentN[c.playerArrows] == 1) { - deleteEquipment( - c.playerEquipment[c.playerArrows], c.playerArrows); - } - if (c.playerEquipmentN[c.playerArrows] != 0) { - c.getOutStream().createFrameVarSizeWord(34); - c.getOutStream().writeWord(1688); - c.getOutStream().writeByte(c.playerArrows); - c.getOutStream().writeWord(c.playerEquipment[c.playerArrows] + 1); - if (c.playerEquipmentN[c.playerArrows] - 1 > 254) { - c.getOutStream().writeByte(255); - c.getOutStream().writeDWord( - c.playerEquipmentN[c.playerArrows] - 1); - } else { - c.getOutStream().writeByte( - c.playerEquipmentN[c.playerArrows] - 1); - } - c.getOutStream().endFrameVarSizeWord(); - c.flushOutStream(); - c.playerEquipmentN[c.playerArrows] -= 1; - } - c.updateRequired = true; - c.setAppearanceUpdateRequired(true); - } - - public void deleteEquipment() { - // synchronized(c) { - if (c.playerEquipmentN[c.playerWeapon] == 1) { - deleteEquipment( - c.playerEquipment[c.playerWeapon], c.playerWeapon); - } - if (c.playerEquipmentN[c.playerWeapon] != 0) { - c.getOutStream().createFrameVarSizeWord(34); - c.getOutStream().writeWord(1688); - c.getOutStream().writeByte(c.playerWeapon); - c.getOutStream().writeWord(c.playerEquipment[c.playerWeapon] + 1); - if (c.playerEquipmentN[c.playerWeapon] - 1 > 254) { - c.getOutStream().writeByte(255); - c.getOutStream().writeDWord( - c.playerEquipmentN[c.playerWeapon] - 1); - } else { - c.getOutStream().writeByte( - c.playerEquipmentN[c.playerWeapon] - 1); - } - c.getOutStream().endFrameVarSizeWord(); - c.flushOutStream(); - c.playerEquipmentN[c.playerWeapon] -= 1; - } - c.updateRequired = true; - c.setAppearanceUpdateRequired(true); - } - - /** - * Dropping Arrows - **/ - - public void dropArrowNpc() { - if (c.playerEquipment[c.playerCape] == 10499) { - return; - } - int enemyX = NpcHandler.npcs[c.oldNpcIndex].getX(); - int enemyY = NpcHandler.npcs[c.oldNpcIndex].getY(); - if (Misc.random(10) >= 4) { - if (Server.itemHandler.itemAmount(c.playerName, c.rangeItemUsed, enemyX, enemyY) == 0) { - Server.itemHandler.createGroundItem(c, c.rangeItemUsed, enemyX, - enemyY, 1, c.getId()); - } else if (Server.itemHandler.itemAmount(c.playerName, c.rangeItemUsed, enemyX, - enemyY) != 0) { - int amount = Server.itemHandler.itemAmount(c.playerName, c.rangeItemUsed, - enemyX, enemyY); - Server.itemHandler.removeGroundItem(c, c.rangeItemUsed, enemyX, - enemyY, false); - Server.itemHandler.createGroundItem(c, c.rangeItemUsed, enemyX, - enemyY, amount + 1, c.getId()); - } - } - } - - public void dropArrowPlayer() { - int enemyX = PlayerHandler.players[c.oldPlayerIndex].getX(); - int enemyY = PlayerHandler.players[c.oldPlayerIndex].getY(); - if (c.playerEquipment[c.playerCape] == 10499) { - return; - } - if (Misc.random(10) >= 4) { - if (Server.itemHandler.itemAmount(c.playerName, c.rangeItemUsed, enemyX, enemyY) == 0) { - Server.itemHandler.createGroundItem(c, c.rangeItemUsed, enemyX, - enemyY, 1, c.getId()); - } else if (Server.itemHandler.itemAmount(c.playerName, c.rangeItemUsed, enemyX, - enemyY) != 0) { - int amount = Server.itemHandler.itemAmount(c.playerName, c.rangeItemUsed, - enemyX, enemyY); - Server.itemHandler.removeGroundItem(c, c.rangeItemUsed, enemyX, - enemyY, false); - Server.itemHandler.createGroundItem(c, c.rangeItemUsed, enemyX, - enemyY, amount + 1, c.getId()); - } - } - } - - public void removeAllItems() { - for (int i = 0; i < c.playerItems.length; i++) { - c.playerItems[i] = 0; - } - for (int i = 0; i < c.playerItemsN.length; i++) { - c.playerItemsN[i] = 0; - } - resetItems(3214); - /* - * c.weight = 0; Weight.updateWeight(c); - */ - } - - public int freeSlots() { - int freeS = 0; - for (int playerItem : c.playerItems) { - if (playerItem <= 0) { - freeS++; - } - } - return freeS; - } - - public int findItem(int id, int[] items, int[] amounts) { - for (int i = 0; i < c.playerItems.length; i++) { - if (items[i] - 1 == id && amounts[i] > 0) { - return i; - } - } - return -1; - } - - public static String getItemName(int ItemID) { - for (int i = 0; i < Constants.ITEM_LIMIT; i++) { - if (Server.itemHandler.ItemList[i] != null) { - if (Server.itemHandler.ItemList[i].itemId == ItemID) { - return Server.itemHandler.ItemList[i].itemName; - } - } - } - return "Unarmed"; - } - - public int getItemId(String itemName) { - for (int i = 0; i < Constants.ITEM_LIMIT; i++) { - if (Server.itemHandler.ItemList[i] != null) { - if (Server.itemHandler.ItemList[i].itemName - .equalsIgnoreCase(itemName)) { - return Server.itemHandler.ItemList[i].itemId; - } - } - } - return -1; - } - - public int getItemSlot(int ItemID) { - for (int i = 0; i < c.playerItems.length; i++) { - if (c.playerItems[i] - 1 == ItemID) { - return i; - } - } - return -1; - } - - public int getItemAmount(int ItemID) { - int itemCount = 0; - for (int i = 0; i < c.playerItems.length; i++) { - if (c.playerItems[i] - 1 == ItemID) { - itemCount += c.playerItemsN[i]; - } - } - return itemCount; - } - - public boolean playerHasItem(int itemID, int amt, int slot) { - itemID++; - int found = 0; - if (c.playerItems[slot] == itemID) { - for (int i = 0; i < c.playerItems.length; i++) { - if (c.playerItems[i] == itemID) { - if (c.playerItemsN[i] >= amt) { - return true; - } else { - found++; - } - } - } - if (found >= amt) { - return true; - } - return false; - } - return false; - } - - public boolean playerHasItem(int itemID) { - itemID++; - for (int playerItem : c.playerItems) { - if (playerItem == itemID) { - return true; - } - } - return false; - } - - public boolean playerHasItem(int itemID, int amt) { - itemID++; - int found = 0; - for (int i = 0; i < c.playerItems.length; i++) { - if (c.playerItems[i] == itemID) { - if (c.playerItemsN[i] >= amt) { - return true; - } else { - found++; - } - } - } - if (found >= amt) { - return true; - } - return false; - } - - public int getUnnotedItem(int ItemID) { - int NewID = ItemID - 1; - String NotedName = ""; - for (int i = 0; i < Constants.ITEM_LIMIT; i++) { - if (Server.itemHandler.ItemList[i] != null) { - if (Server.itemHandler.ItemList[i].itemId == ItemID) { - NotedName = Server.itemHandler.ItemList[i].itemName; - } - } - } - for (int i = 0; i < Constants.ITEM_LIMIT; i++) { - if (Server.itemHandler.ItemList[i] != null) { - if (Server.itemHandler.ItemList[i].itemName == NotedName) { - if (Server.itemHandler.ItemList[i].itemDescription.startsWith("Swap this note at any bank for a") == false) { - NewID = Server.itemHandler.ItemList[i].itemId; - break; - } - } - } - } - return NewID; - } - -} +package com.rebotted.game.items; + +import com.rebotted.GameConstants; +import com.rebotted.GameEngine; +import com.rebotted.game.content.minigames.castlewars.CastleWars; +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerHandler; +import com.rebotted.util.Misc; + +public class ItemAssistant { + + private final Player c; + + public ItemAssistant(Player player) { + c = player; + } + + private static int COMMON = Misc.random(5), UNCOMMON = Misc.random(25), + RARE = Misc.random(100); + + private static final int[][] CASKET = { { 995, Misc.random(3000), COMMON }, + { 1621, 1, UNCOMMON }, { 1619, 1, UNCOMMON }, { 1617, 1, RARE }, + { 987, 1, RARE }, { 985, 1, RARE }, { 1454, 1, COMMON }, + { 1452, 1, UNCOMMON }, { 1462, 1, RARE }, { 1623, 1, COMMON } }; + + public void addCasketRewards(int itemId) { + long clickTimer = 0; + c.getPacketSender().sendMessage("You search the casket..."); + for (int[] element : CASKET) { + int item = element[0]; + int amount = element[1]; + int chance = element[2]; + if (Misc.random(chance) == 0 && System.currentTimeMillis() - clickTimer > 1800) { + addItem(item, amount); + deleteItem(itemId, 1); + clickTimer = System.currentTimeMillis(); + c.getPacketSender().sendMessage( + "You find " + amount + " " + getItemName(item) + "."); + } else { + if (System.currentTimeMillis() - clickTimer > 1800) { + addItem(995, 100); + deleteItem(itemId, 1); + clickTimer = System.currentTimeMillis(); + c.getPacketSender().sendMessage("You find 100 coins."); + } + } + } + } + + private final int[] TREE_SEEDS = { 5291, 5292, 5293, 5294, 5295, 5296, 5297, + 5298, 5299, 5300, 5301, 5302, 5303, 5304, 5315, 5316, 5313, 5314 }; + + public void handleTreeSeeds(int itemId) { + c.getPacketSender().sendMessage("You search the nest..."); + final int reward = TREE_SEEDS[Misc.random(TREE_SEEDS.length)]; + addItem(reward, 1 + Misc.random(1)); + deleteItem(itemId, 1); + addItem(5075, 1); + c.getPacketSender().sendMessage("You find a " + getItemName(reward) + "."); + } + + private final int[] SEEDS = { 5291, 5292, 5293, 5294, 5295, 5296, 5297, 298, 5299, 5300, 5301, 5302, 5303, 5304 }; + + public void handleNonTreeSeeds(int itemId) { + c.getPacketSender().sendMessage("You search the nest..."); + final int reward = SEEDS[Misc.random(SEEDS.length)]; + addItem(reward, 1 + Misc.random(1)); + deleteItem(itemId, 1); + addItem(5075, 1); + c.getPacketSender().sendMessage("You find a " + getItemName(reward) + "."); + } + + public int[] RINGS = { 1635, 1637, 1639, 1641, 1643 }; + + public void handleRings(int itemId) { + c.getPacketSender().sendMessage("You search the nest..."); + int reward = RINGS[Misc.random(RINGS.length)]; + addItem(reward, 1); + deleteItem(itemId, 1); + addItem(5075, 1); + c.getPacketSender().sendMessage("You find a " + getItemName(reward) + "."); + } + + public void updateInventory() { + this.resetItems(3214); + } + + public void destroyInterface(int itemId) { + itemId = c.droppedItem; + String itemName = getItemName(c.droppedItem); + String[][] info = { + { "Are you sure you want to destroy this item?", "14174" }, + { "Yes.", "14175" }, { "No.", "14176" }, { "", "14177" }, + { "You probably won't be able to", "14182" }, { "get this item back once lost.", "14183" }, + { itemName, "14184" } };// make some kind of c.getItemInfo + c.getPacketSender().sendFrame34(itemId, 0, 14171, 1); + for (int i = 0; i < info.length; i++) + c.getPacketSender().sendFrame126(info[i][0], Integer.parseInt(info[i][1])); + c.getPacketSender().sendChatInterface(14170); + } + + public void destroyItem(int itemId) { + itemId = c.droppedItem; + String itemName = getItemName(itemId); + deleteItem(itemId,getItemSlot(itemId), c.playerItemsN[getItemSlot(itemId)]); + c.getPacketSender().sendMessage("Your " + itemName + " vanishes as you destroy it."); + c.getPacketSender().closeAllWindows(); + } + + public void dropItem(int itemId) { + itemId = c.droppedItem; + GameEngine.itemHandler.createGroundItem(c, itemId, c.absX, c.absY, c.playerItemsN[getItemSlot(itemId)], c.getId()); + deleteItem(itemId,getItemSlot(itemId), c.playerItemsN[getItemSlot(itemId)]); + c.getPacketSender().closeAllWindows(); + } + + public void addOrDropItem(int item, int amount) { + if (isStackable(item) && hasFreeSlots(1)) { + addItem(item, amount); + } else if (!hasFreeSlots(amount) && !isStackable(item)) { + GameEngine.itemHandler.createGroundItem(c, item, c.absX, c.absY, + amount, c.playerId); + c.getPacketSender() + .sendMessage( + "You have no inventory space, so the item(s) appear beneath you."); + } else { + addItem(item, amount); + } + } + + public boolean hasFreeSlots(int slots) { + return freeSlots() >= slots; + } + + public void replaceItem(int itemToReplace, int replaceWith) { + if(playerHasItem(itemToReplace)) { + deleteItem(itemToReplace, 1); + addItem(replaceWith, 1); + } + } + + public static int getTotalAmountEquipment(Client c) { + int total = 0; + for (int element : c.playerEquipment) { + total = (int) Math.floor(c.getShopAssistant().getItemShopValue( + element)); + } + return total; + } + + public static int getTotalAmountItems(Client c) { + int total = 0; + for (int playerItem : c.playerItems) { + total = (int) Math.floor(c.getShopAssistant().getItemShopValue( + playerItem)); + } + return total; + } + + public static int getTotalWealthCarrying(Client c) { + return getTotalAmountItems(c) + getTotalAmountEquipment(c); + } + + public static String getTotalAmount(Client c, int j) { + if (j >= 10000 && j < 10000000) { + return j / 1000 + "K"; + } else if (j >= 10000000 && j < 2147000000) { + return j / 1000000 + "M"; + } else { + return "" + j + " gp"; + } + } + + public int[][] brokenBarrows = { { 4708, 4860 }, { 4710, 4866 }, + { 4712, 4872 }, { 4714, 4878 }, { 4716, 4884 }, { 4720, 4896 }, + { 4718, 4890 }, { 4720, 4896 }, { 4722, 4902 }, { 4732, 4932 }, + { 4734, 4938 }, { 4736, 4944 }, { 4738, 4950 }, { 4724, 4908 }, + { 4726, 4914 }, { 4728, 4920 }, { 4730, 4926 }, { 4745, 4956 }, + { 4747, 4926 }, { 4749, 4968 }, { 4751, 4794 }, { 4753, 4980 }, + { 4755, 4986 }, { 4757, 4992 }, { 4759, 4998 } }; + + public boolean playerHasEquipped(int itemID) { + itemID++; + for (int element : c.playerEquipment) { + if (element == itemID) { + return true; + } + } + return false; + } + + public boolean playerHasEquipped(int slot, int itemID) { + return c.playerEquipment[slot] == itemID; + } + + public void removeItem(int slot) { + // synchronized(c) { + if (c.getOutStream() != null && c != null) { + if (c.playerEquipment[slot] > -1) { + if (addItem(c.playerEquipment[slot], c.playerEquipmentN[slot])) { + c.playerEquipment[slot] = -1; + c.playerEquipmentN[slot] = 0; + sendWeapon(c.playerEquipment[c.playerWeapon], + getItemName(c.playerEquipment[c.playerWeapon])); + resetBonus(); + getBonus(); + writeBonus(); + c.getCombatAssistant().getPlayerAnimIndex(); + c.getOutStream().createFrame(34); + c.getOutStream().writeWord(6); + c.getOutStream().writeWord(1688); + c.getOutStream().writeByte(slot); + c.getOutStream().writeWord(0); + c.getOutStream().writeByte(0); + c.flushOutStream(); + c.updateRequired = true; + c.setAppearanceUpdateRequired(true); + } + } + } + } + + public void addItemToBank(int itemId, int amount) { + itemId++; + for (int i = 0; i < GameConstants.BANK_SIZE; i++) { + if (c.bankItems[i] <= 0 || c.bankItems[i] == itemId && c.bankItemsN[i] + amount < Integer.MAX_VALUE) { + c.bankItems[i] = itemId; + c.bankItemsN[i] += amount; + resetBank(); + return; + } + } + } + + public void removeitemFromBank(int itemId, int amount) { + itemId++; + for (int i = 0; i < GameConstants.BANK_SIZE; i++) { + if (c.bankItems[i] == itemId) { + c.bankItemsN[i] -= amount; + if (c.bankItemsN[i] <= 0) { + c.bankItems[i] = 0; + c.bankItemsN[i] = 0; + } + resetBank(); + rearrangeBank(); + return; + } + } + } + + public void resetItems(int WriteFrame) { + // synchronized(c) { + if (c.getOutStream() != null && c != null) { + c.getOutStream().createFrameVarSizeWord(53); + c.getOutStream().writeWord(WriteFrame); + c.getOutStream().writeWord(c.playerItems.length); + for (int i = 0; i < c.playerItems.length; i++) { + if (c.playerItemsN[i] > 254) { + c.getOutStream().writeByte(255); + c.getOutStream().writeDWord_v2(c.playerItemsN[i]); + } else { + c.getOutStream().writeByte(c.playerItemsN[i]); + } + c.getOutStream().writeWordBigEndianA(c.playerItems[i]); + } + c.getOutStream().endFrameVarSizeWord(); + c.flushOutStream(); + } + } + + public int getItemCount(int itemID) { + int count = 0; + for (int j = 0; j < c.playerItems.length; j++) { + if (c.playerItems[j] == itemID + 1) { + count += c.playerItemsN[j]; + } + } + return count; + } + + public void writeBonus() { + int offset = 0; + String send = ""; + for (int i = 0; i < c.playerBonus.length; i++) { + if (c.playerBonus[i] >= 0) { + send = BONUS_NAMES[i] + ": +" + c.playerBonus[i]; + } else { + send = BONUS_NAMES[i] + ": -" + java.lang.Math.abs(c.playerBonus[i]); + } + + if (i == 10) { + offset = 1; + } + c.getPacketSender().sendFrame126(send, 1675 + i + offset); + } + + } + + public int getTotalCount(int itemID) { + int count = 0; + for (int j = 0; j < c.playerItems.length; j++) { + if (Item.itemIsNote[itemID + 1]) { + if (itemID + 2 == c.playerItems[j]) { + count += c.playerItemsN[j]; + } + } + if (!Item.itemIsNote[itemID + 1]) { + if (itemID + 1 == c.playerItems[j]) { + count += c.playerItemsN[j]; + } + } + } + for (int j = 0; j < c.bankItems.length; j++) { + if (c.bankItems[j] == itemID + 1) { + count += c.bankItemsN[j]; + } + } + return count; + } + + public int getBankItemCount() { + int count = 0; + for (int j = 0; j < c.bankItems.length; j++) { + if (c.bankItems[j] > -1) { + count += c.bankItemsN[j]; + } + } + return count; + } + + public void sendItemsKept() { + // synchronized(c) { + if (c.getOutStream() != null && c != null) { + c.getOutStream().createFrameVarSizeWord(53); + c.getOutStream().writeWord(6963); + c.getOutStream().writeWord(c.itemKeptId.length); + for (int i = 0; i < c.itemKeptId.length; i++) { + if (c.playerItemsN[i] > 254) { + c.getOutStream().writeByte(255); + c.getOutStream().writeDWord_v2(1); + } else { + c.getOutStream().writeByte(1); + } + if (c.itemKeptId[i] > 0) { + c.getOutStream().writeWordBigEndianA(c.itemKeptId[i] + 1); + } else { + c.getOutStream().writeWordBigEndianA(0); + } + } + c.getOutStream().endFrameVarSizeWord(); + c.flushOutStream(); + } + } + + /** + * Item kept on death + **/ + + public void keepItem(int keepItem, boolean deleteItem) { + int value = 0; + int item = 0; + int slotId = 0; + boolean itemInInventory = false; + for (int i = 0; i < c.playerItems.length; i++) { + if (c.playerItems[i] - 1 > 0) { + int inventoryItemValue = c.getShopAssistant().getItemShopValue( + c.playerItems[i] - 1); + if (inventoryItemValue > value && !c.invSlot[i]) { + value = inventoryItemValue; + item = c.playerItems[i] - 1; + slotId = i; + itemInInventory = true; + } + } + } + for (int i1 = 0; i1 < c.playerEquipment.length; i1++) { + if (c.playerEquipment[i1] > 0) { + int equipmentItemValue = c.getShopAssistant().getItemShopValue( + c.playerEquipment[i1]); + if (equipmentItemValue > value && !c.equipSlot[i1]) { + value = equipmentItemValue; + item = c.playerEquipment[i1]; + slotId = i1; + itemInInventory = false; + } + } + } + if (itemInInventory) { + c.invSlot[slotId] = true; + if (deleteItem) { + deleteItem(c.playerItems[slotId] - 1, + getItemSlot(c.playerItems[slotId] - 1), 1); + } + } else { + c.equipSlot[slotId] = true; + if (deleteItem) { + deleteEquipment(item, slotId); + } + } + c.itemKeptId[keepItem] = item; + } + + /** + * Reset items kept on death + **/ + + public void resetKeepItems() { + for (int i = 0; i < c.itemKeptId.length; i++) { + c.itemKeptId[i] = -1; + } + for (int i1 = 0; i1 < c.invSlot.length; i1++) { + c.invSlot[i1] = false; + } + for (int i2 = 0; i2 < c.equipSlot.length; i2++) { + c.equipSlot[i2] = false; + } + } + + /** + * delete all items + **/ + + public void deleteAllItems() { + for (int i1 = 0; i1 < c.playerEquipment.length; i1++) { + deleteEquipment(c.playerEquipment[i1], i1); + } + for (int i = 0; i < c.playerItems.length; i++) { + deleteItem(c.playerItems[i] - 1, getItemSlot(c.playerItems[i] - 1), + c.playerItemsN[i]); + } + } + + /** + * Clear Bank + */ + + public void clearBank() { + try { + for (int i = 0; i < c.bankItems[i]; i++) { + c.bankItems[i] = 0; + c.bankItemsN[i] = 0; + } + resetTempItems(); + resetBank(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * Drop all items for your killer + **/ + + public void dropAllItems() { + Client o = (Client) PlayerHandler.players[c.killerId]; + + for (int i = 0; i < c.playerItems.length; i++) { + if (o != null) { + if (tradeable(c.playerItems[i] - 1)) { + GameEngine.itemHandler.createGroundItem(o, + c.playerItems[i] - 1, c.getX(), c.getY(), + c.playerItemsN[i], c.killerId); + } else { + if (specialCase(c.playerItems[i] - 1)) { + GameEngine.itemHandler.createGroundItem(o, 995, c.getX(), + c.getY(), + getUntradePrice(c.playerItems[i] - 1), + c.killerId); + } + GameEngine.itemHandler.createGroundItem(c, + c.playerItems[i] - 1, c.getX(), c.getY(), + c.playerItemsN[i], c.playerId); + } + } else { + GameEngine.itemHandler.createGroundItem(c, c.playerItems[i] - 1, + c.getX(), c.getY(), c.playerItemsN[i], c.playerId); + } + } + for (int e = 0; e < c.playerEquipment.length; e++) { + if (o != null) { + if (tradeable(c.playerEquipment[e])) { + GameEngine.itemHandler.createGroundItem(o, + c.playerEquipment[e], c.getX(), c.getY(), + c.playerEquipmentN[e], c.killerId); + } else { + if (specialCase(c.playerEquipment[e])) { + GameEngine.itemHandler.createGroundItem(o, 995, c.getX(), + c.getY(), + getUntradePrice(c.playerEquipment[e]), + c.killerId); + } + GameEngine.itemHandler.createGroundItem(c, + c.playerEquipment[e], c.getX(), c.getY(), + c.playerEquipmentN[e], c.playerId); + } + } else { + GameEngine.itemHandler.createGroundItem(c, c.playerEquipment[e], + c.getX(), c.getY(), c.playerEquipmentN[e], c.playerId); + } + } + if (o != null) { + GameEngine.itemHandler.createGroundItem(o, 526, c.getX(), c.getY(), 1, + c.killerId); + } + } + + public int getUntradePrice(int item) { + switch (item) { + case 2518: + case 2524: + case 2526: + return 100000; + case 2520: + case 2522: + return 150000; + } + return 0; + } + + public boolean specialCase(int itemId) { + switch (itemId) { + case 2518: + case 2520: + case 2522: + case 2524: + case 2526: + return true; + } + return false; + } + + public void addToVoidList(int itemId) { + switch (itemId) { + case 2518: + c.voidStatus[0]++; + break; + case 2520: + c.voidStatus[1]++; + break; + case 2522: + c.voidStatus[2]++; + break; + case 2524: + c.voidStatus[3]++; + break; + case 2526: + c.voidStatus[4]++; + break; + } + } + + public boolean tradeable(int itemId) { + for (int element : GameConstants.ITEM_TRADEABLE) { + if (itemId == element) { + return false; + } + } + return true; + } + + /** + * Add Item + **/ + public boolean addItem(int item, int amount) { + // synchronized(c) { + if (item == CastleWars.SARA_BANNER || item == CastleWars.ZAMMY_BANNER) { + return false; + } + if (amount < 1) { + amount = 1; + } + if (item <= 0) { + return false; + } + if ((freeSlots() >= 1 || playerHasItem(item, 1)) + && Item.itemStackable[item] || freeSlots() > 0 + && !Item.itemStackable[item]) { + for (int i = 0; i < c.playerItems.length; i++) { + if (c.playerItems[i] == item + 1 && Item.itemStackable[item] + && c.playerItems[i] > 0) { + c.playerItems[i] = item + 1; + if (c.playerItemsN[i] + amount < GameConstants.MAXITEM_AMOUNT + && c.playerItemsN[i] + amount > -1) { + c.playerItemsN[i] += amount; + } else { + c.playerItemsN[i] = GameConstants.MAXITEM_AMOUNT; + } + if (c.getOutStream() != null && c != null) { + c.getOutStream().createFrameVarSizeWord(34); + c.getOutStream().writeWord(3214); + c.getOutStream().writeByte(i); + c.getOutStream().writeWord(c.playerItems[i]); + if (c.playerItemsN[i] > 254) { + c.getOutStream().writeByte(255); + c.getOutStream().writeDWord(c.playerItemsN[i]); + } else { + c.getOutStream().writeByte(c.playerItemsN[i]); + } + c.getOutStream().endFrameVarSizeWord(); + c.flushOutStream(); + } + i = 30; + Weight.calcWeight(c, item, "additem"); + return true; + } + } + for (int i = 0; i < c.playerItems.length; i++) { + if (c.playerItems[i] <= 0) { + c.playerItems[i] = item + 1; + if (amount < GameConstants.MAXITEM_AMOUNT && amount > -1) { + c.playerItemsN[i] = 1; + if (amount > 1) { + addItem(item, amount - 1); + return true; + } + } else { + c.playerItemsN[i] = GameConstants.MAXITEM_AMOUNT; + } + resetItems(3214); + i = 30; + Weight.calcWeight(c, item, "additem"); + return true; + } + } + return false; + } else { + resetItems(3214); + c.getPacketSender().sendMessage( + "Not enough space in your inventory."); + return false; + } + } + + /** + * Bonuses + **/ + + public final String[] BONUS_NAMES = { "Stab", "Slash", "Crush", "Magic", + "Range", "Stab", "Slash", "Crush", "Magic", "Range", "Strength", + "Prayer" }; + + public void resetBonus() { + for (int i = 0; i < c.playerBonus.length; i++) { + c.playerBonus[i] = 0; + } + } + + public void getBonus() { + for (int element : c.playerEquipment) { + if (element > -1) { + for (int j = 0; j < GameConstants.ITEM_LIMIT; j++) { + if (GameEngine.itemHandler.ItemList[j] != null) { + if (GameEngine.itemHandler.ItemList[j].itemId == element) { + for (int k = 0; k < c.playerBonus.length; k++) { + c.playerBonus[k] += GameEngine.itemHandler.ItemList[j].Bonuses[k]; + } + break; + } + } + } + } + } + } + + /** + * Wear Item + **/ + + public void sendWeapon(int Weapon, String WeaponName) { + String WeaponName2 = WeaponName.replaceAll("Bronze", ""); + WeaponName2 = WeaponName2.replaceAll("Iron", ""); + WeaponName2 = WeaponName2.replaceAll("Steel", ""); + WeaponName2 = WeaponName2.replaceAll("Black", ""); + WeaponName2 = WeaponName2.replaceAll("Mithril", ""); + WeaponName2 = WeaponName2.replaceAll("Adamant", ""); + WeaponName2 = WeaponName2.replaceAll("Rune", ""); + WeaponName2 = WeaponName2.replaceAll("Granite", ""); + WeaponName2 = WeaponName2.replaceAll("Dragon", ""); + WeaponName2 = WeaponName2.replaceAll("Drag", ""); + WeaponName2 = WeaponName2.replaceAll("Crystal", ""); + WeaponName2 = WeaponName2.trim(); + if (WeaponName.equals("Unarmed")) { + c.getPacketSender().setSidebarInterface(0, 5855); // punch, + // kick, + // block + c.getPacketSender().sendFrame126(WeaponName, 5857); + } else if (WeaponName.endsWith("whip")) { + c.getPacketSender().setSidebarInterface(0, 12290); // flick, + // lash, + // deflect + c.getPacketSender().sendFrame246(12291, 200, Weapon); + c.getPacketSender().sendFrame126(WeaponName, 12293); + } else if (WeaponName.endsWith("bow") || WeaponName.endsWith("10") + || WeaponName.endsWith("full") + || WeaponName.startsWith("seercull")) { + c.getPacketSender().setSidebarInterface(0, 1764); // accurate, + // rapid, + // longrange + c.getPacketSender().sendFrame246(1765, 200, Weapon); + c.getPacketSender().sendFrame126(WeaponName, 1767); + } else if (WeaponName.startsWith("Staff") + || WeaponName.endsWith("staff") || WeaponName.endsWith("wand")) { + c.getPacketSender().setSidebarInterface(0, 328); // spike, + // impale, + // smash, + // block + c.getPacketSender().sendFrame246(329, 200, Weapon); + c.getPacketSender().sendFrame126(WeaponName, 331); + } else if (WeaponName2.startsWith("dart") + || WeaponName2.startsWith("knife") + || WeaponName2.startsWith("javelin") + || WeaponName.equalsIgnoreCase("toktz-xil-ul")) { + c.getPacketSender().setSidebarInterface(0, 4446); // accurate, + // rapid, + // longrange + c.getPacketSender().sendFrame246(4447, 200, Weapon); + c.getPacketSender().sendFrame126(WeaponName, 4449); + } else if (WeaponName2.startsWith("dagger") + || WeaponName2.contains("sword")) { + c.getPacketSender().setSidebarInterface(0, 2276); // stab, + // lunge, + // slash, + // block + c.getPacketSender().sendFrame246(2277, 200, Weapon); + c.getPacketSender().sendFrame126(WeaponName, 2279); + } else if (WeaponName2.startsWith("pickaxe")) { + c.getPacketSender().setSidebarInterface(0, 5570); // spike, + // impale, + // smash, + // block + c.getPacketSender().sendFrame246(5571, 200, Weapon); + c.getPacketSender().sendFrame126(WeaponName, 5573); + } else if (WeaponName2.startsWith("axe") + || WeaponName2.startsWith("battleaxe")) { + c.getPacketSender().setSidebarInterface(0, 1698); // chop, + // hack, + // smash, + // block + c.getPacketSender().sendFrame246(1699, 200, Weapon); + c.getPacketSender().sendFrame126(WeaponName, 1701); + } else if (WeaponName2.startsWith("halberd")) { + c.getPacketSender().setSidebarInterface(0, 8460); // jab, + // swipe, + // fend + c.getPacketSender().sendFrame246(8461, 200, Weapon); + c.getPacketSender().sendFrame126(WeaponName, 8463); + } else if (WeaponName2.startsWith("Scythe")) { + c.getPacketSender().setSidebarInterface(0, 8460); // jab, + // swipe, + // fend + c.getPacketSender().sendFrame246(8461, 200, Weapon); + c.getPacketSender().sendFrame126(WeaponName, 8463); + } else if (WeaponName2.startsWith("spear")) { + c.getPacketSender().setSidebarInterface(0, 4679); // lunge, + // swipe, + // pound, + // block + c.getPacketSender().sendFrame246(4680, 200, Weapon); + c.getPacketSender().sendFrame126(WeaponName, 4682); + } else if (WeaponName2.toLowerCase().contains("mace")) { + c.getPacketSender().setSidebarInterface(0, 3796); + c.getPacketSender().sendFrame246(3797, 200, Weapon); + c.getPacketSender().sendFrame126(WeaponName, 3799); + + } else if (c.playerEquipment[c.playerWeapon] == 4153) { + c.getPacketSender().setSidebarInterface(0, 425); // war hamer + // equip. + c.getPacketSender().sendFrame246(426, 200, Weapon); + c.getPacketSender().sendFrame126(WeaponName, 428); + } else { + c.getPacketSender().setSidebarInterface(0, 2423); // chop, + // slash, + // lunge, + // block + c.getPacketSender().sendFrame246(2424, 200, Weapon); + c.getPacketSender().sendFrame126(WeaponName, 2426); + } + + } + + /** + * Weapon Requirements + **/ + + public void getRequirements(String itemName, int itemId) { + c.attackLevelReq = c.defenceLevelReq = c.strengthLevelReq = c.rangeLevelReq = c.magicLevelReq = c.agilityLevelReq = c.slayerLevelReq = 0; + if (itemName.contains("mystic") || itemName.contains("nchanted")) { + if (itemName.contains("staff")) { + c.magicLevelReq = 20; + c.attackLevelReq = 40; + } else { + c.magicLevelReq = 20; + c.defenceLevelReq = 20; + } + } + if (itemName.contains("infinity")) { + c.magicLevelReq = 50; + c.defenceLevelReq = 25; + } + if (itemName.contains("splitbark")) { + c.magicLevelReq = 40; + c.defenceLevelReq = 40; + } + if (itemName.contains("green d'hide")) { + c.rangeLevelReq = 40; + if (itemName.contains("body")) { + c.defenceLevelReq = 40; + } + } + if (itemName.contains("blue d'hide")) { + c.rangeLevelReq = 50; + if (itemName.contains("body")) { + c.defenceLevelReq = 40; + } + return; + } + if (itemName.contains("red d'hide")) { + c.rangeLevelReq = 60; + if (itemName.contains("body")) { + c.defenceLevelReq = 40; + } + return; + } + if (itemName.contains("black d'hide")) { + if (itemName.contains("body")) { + c.defenceLevelReq = 40; + } + c.rangeLevelReq = 70; + } + if (itemName.contains("bronze")) { + if (!itemName.contains("knife") && !itemName.contains("dart") + && !itemName.contains("javelin") + && !itemName.contains("thrownaxe")) { + c.attackLevelReq = c.defenceLevelReq = 1; + } + return; + } + if (itemName.contains("iron")) { + if (!itemName.contains("knife") && !itemName.contains("dart") + && !itemName.contains("javelin") + && !itemName.contains("thrownaxe")) { + c.attackLevelReq = c.defenceLevelReq = 1; + } + return; + } + if (itemName.contains("steel")) { + if (!itemName.contains("knife") && !itemName.contains("dart") + && !itemName.contains("javelin") + && !itemName.contains("thrownaxe")) { + c.attackLevelReq = c.defenceLevelReq = 5; + } + return; + } + if (itemName.contains("black")) { + if (!itemName.contains("knife") + && !itemName.equalsIgnoreCase("Black skirt") + && !itemName.contains("dart") + && !itemName.contains("javelin") + && !itemName.contains("thrownaxe") + && !itemName.contains("vamb") && !itemName.contains("chap") && !itemName.equalsIgnoreCase("Black robe")) { + c.attackLevelReq = c.defenceLevelReq = 10; + } + return; + } + if (itemName.contains("mithril")) { + if (!itemName.contains("knife") && !itemName.contains("dart") + && !itemName.contains("javelin") + && !itemName.contains("thrownaxe")) { + c.attackLevelReq = c.defenceLevelReq = 20; + } + return; + } + if (itemName.contains("adamant")) { + if (!itemName.contains("knife") && !itemName.contains("dart") + && !itemName.contains("javelin") + && !itemName.contains("thrownaxe")) { + c.attackLevelReq = c.defenceLevelReq = 30; + } + return; + } + if (itemName.contains("rune")) { + if (!itemName.contains("knife") && !itemName.contains("dart") + && !itemName.contains("javelin") + && !itemName.contains("thrownaxe") + && !itemName.contains("'bow")) { + c.attackLevelReq = c.defenceLevelReq = 40; + } + return; + } + if (itemName.contains("dragon")) { + if (!itemName.contains("nti-") && !itemName.contains("fire")) { + c.attackLevelReq = c.defenceLevelReq = 60; + return; + } + } + if (itemName.contains("crystal")) { + if (itemName.contains("shield")) { + c.defenceLevelReq = 70; + } else { + c.rangeLevelReq = 70; + } + return; + } + if (itemName.contains("ahrim")) { + if (itemName.contains("staff")) { + c.magicLevelReq = 70; + c.attackLevelReq = 70; + } else { + c.magicLevelReq = 70; + c.defenceLevelReq = 70; + } + } + if (itemName.contains("karil")) { + if (itemName.contains("crossbow")) { + c.rangeLevelReq = 70; + } else { + c.rangeLevelReq = 70; + c.defenceLevelReq = 70; + } + } + if (itemName.contains("godsword")) { + c.attackLevelReq = 75; + } + if (itemName.contains("3rd age") && !itemName.contains("amulet")) { + c.defenceLevelReq = 60; + } + if (itemName.contains("Initiate")) { + c.defenceLevelReq = 20; + } + if (itemName.contains("verac") || itemName.contains("guthan") + || itemName.contains("dharok") || itemName.contains("torag")) { + + if (itemName.contains("hammers")) { + c.attackLevelReq = 70; + c.strengthLevelReq = 70; + } else if (itemName.contains("axe")) { + c.attackLevelReq = 70; + c.strengthLevelReq = 70; + } else if (itemName.contains("warspear")) { + c.attackLevelReq = 70; + c.strengthLevelReq = 70; + } else if (itemName.contains("flail")) { + c.attackLevelReq = 70; + c.strengthLevelReq = 70; + } else { + c.defenceLevelReq = 70; + } + } + + switch (itemId) { + case 8839: + case 8840: + case 8842: + case 11663: + case 11664: + case 11665: + c.attackLevelReq = 42; + c.rangeLevelReq = 42; + c.strengthLevelReq = 42; + c.magicLevelReq = 42; + c.defenceLevelReq = 42; + return; + case 10551: + case 2503: + case 2501: + case 2499: + case 1135: + c.defenceLevelReq = 40; + return; + case 1133: + c.defenceLevelReq = 20; + c.rangeLevelReq = 20; + return; + case 11235: + case 6522: + c.rangeLevelReq = 60; + break; + case 1097: + c.rangeLevelReq = 20; + break; + case 864: + case 863: + c.rangeLevelReq = 1; + break; + case 865: + c.rangeLevelReq = 5; + break; + case 866: + c.rangeLevelReq = 20; + break; + case 867: + c.rangeLevelReq = 30; + break; + case 868: + c.rangeLevelReq = 40; + break; + case 6524: + c.defenceLevelReq = 60; + break; + case 11284: + c.defenceLevelReq = 75; + return; + case 6889: + case 6914: + c.magicLevelReq = 60; + break; + case 10828: + c.defenceLevelReq = 55; + break; + case 11724: + case 11726: + case 11728: + c.defenceLevelReq = 65; + break; + case 847: + case 849: + c.rangeLevelReq = 20; + break; + case 843: + case 845: + c.rangeLevelReq = 5; + break; + case 851: + case 853: + c.rangeLevelReq = 30; + break; + case 855: + case 857: + c.rangeLevelReq = 40; + break; + case 859: + case 861: + c.rangeLevelReq = 50; + break; + case 3749: + case 3751: + case 3755: + case 3753: + c.defenceLevelReq = 45; + break; + + case 7462: + case 7461: + c.defenceLevelReq = 40; + break; + case 8846: + c.defenceLevelReq = 5; + break; + case 8847: + c.defenceLevelReq = 10; + break; + case 8848: + c.defenceLevelReq = 20; + break; + case 8849: + c.defenceLevelReq = 30; + break; + case 8850: + c.defenceLevelReq = 40; + break; + + case 7460: + c.defenceLevelReq = 40; + break; + + case 837: + c.rangeLevelReq = 61; + break; + + case 4151: // if you don't want to use names + c.attackLevelReq = 70; + return; + + case 6724: // seercull + c.rangeLevelReq = 60; // idk if that is correct + return; + case 6523: + case 6525: + case 6527: + c.attackLevelReq = 60; + return; + case 6526: + c.attackLevelReq = 60; + c.magicLevelReq = 60; + return; + case 4156: + c.defenceLevelReq = 20; + c.slayerLevelReq = 25; + return; + case 1391: + case 1393: + case 1395: + case 1397: + case 1399: + case 3053: + c.attackLevelReq = 30; + c.magicLevelReq = 30; + return; + case 4158: + c.slayerLevelReq = 55; + c.attackLevelReq = 50; + return; + case 4153: + c.attackLevelReq = 50; + c.strengthLevelReq = 50; + return; + case 6528: + c.strengthLevelReq = 60; + return; + case 4161: + c.slayerLevelReq = 20; + return; + case 4168: + c.slayerLevelReq = 60; + return; + case 6696: + c.slayerLevelReq = 22; + return; + case 8923: + c.slayerLevelReq = 35; + return; + case 7159: + c.slayerLevelReq = 37; + return; + case 6708: + c.slayerLevelReq = 42; + return; + case 4170: + c.slayerLevelReq = 55; + return; + case 4162: + c.slayerLevelReq = 75; + return; + case 7421: + case 7422: + case 7423: + case 7424: + case 7425: + case 7426: + case 7427: + case 7428: + case 7429: + case 7430: + case 7431: + case 7432: + c.slayerLevelReq = 57; + return; + case 4212: + case 4214: + case 4215: + case 4216: + case 4217: + case 4218: + case 4219: + case 4220: + case 4221: + case 4222: + case 4223: + c.agilityLevelReq = 50; + c.rangeLevelReq = 70; + return; + case 4150: + case 4160: + case 4172: + case 4174: + c.slayerLevelReq = 55; + return; + case 1015: + c.defenceLevelReq = 1; + return; + case 6664: + c.slayerLevelReq = 32; + return; + case 4551: + c.defenceLevelReq = 5; + return; + case 7051: + c.slayerLevelReq = 33; + return; + case 4166: + c.slayerLevelReq = 15; + return; + case 4164: + c.slayerLevelReq = 10; + return; + } + } + + /** + * two handed weapon check + **/ + public boolean is2handed(String itemName, int itemId) { + if (itemName.contains("ahrim") || itemName.contains("karil") || itemName.contains("verac") || itemName.contains("guthan") || itemName.contains("dharok") || itemName.contains("torag")) { + return true; + } + if (itemName.contains("claws")) { + return true; + } + if (itemName.contains("longbow") || itemName.contains("shortbow") || itemName.contains("ark bow")) { + return true; + } + if (itemName.contains("crystal")) { + return true; + } + if (itemName.contains("godsword") || itemName.contains("aradomin sword") || itemName.contains("2h") || itemName.contains("spear")) { + return true; + } + switch (itemId) { + case 6724: // seercull + case 11730: + case 4153: + case 6528: + case 14484: + return true; + } + return false; + } + + /** + * Weapons special bar, adds the spec bars to weapons that require them and + * removes the spec bars from weapons which don't require them + **/ + + public void addSpecialBar(int weapon) { + switch (weapon) { + + case 4151: // whip + c.getPacketSender().sendFrame171(0, 12323); + specialAmount(weapon, c.specAmount, 12335); + break; + + case 859: // magic bows + case 861: + case 11235: + c.getPacketSender().sendFrame171(0, 7549); + specialAmount(weapon, c.specAmount, 7561); + break; + + case 4587: // dscimmy + c.getPacketSender().sendFrame171(0, 7599); + specialAmount(weapon, c.specAmount, 7611); + break; + + case 3204: // d hally + c.getPacketSender().sendFrame171(0, 8493); + specialAmount(weapon, c.specAmount, 8505); + break; + + case 1377: // d battleaxe + c.getPacketSender().sendFrame171(0, 7499); + specialAmount(weapon, c.specAmount, 7511); + break; + + case 4153: // gmaul + c.getPacketSender().sendFrame171(0, 7474); + specialAmount(weapon, c.specAmount, 7486); + break; + + case 1249: // dspear + c.getPacketSender().sendFrame171(0, 7674); + specialAmount(weapon, c.specAmount, 7686); + break; + + case 1215:// dragon dagger + case 1231: + case 5680: + case 5698: + case 1305: // dragon long + case 11694: + case 11698: + case 11700: + case 11730: + case 11696: + c.getPacketSender().sendFrame171(0, 7574); + specialAmount(weapon, c.specAmount, 7586); + break; + + case 1434: // dragon mace + c.getPacketSender().sendFrame171(0, 7624); + specialAmount(weapon, c.specAmount, 7636); + break; + + default: + c.getPacketSender().sendFrame171(1, 7624); // mace + // interface + c.getPacketSender().sendFrame171(1, 7474); // hammer, gmaul + c.getPacketSender().sendFrame171(1, 7499); // axe + c.getPacketSender().sendFrame171(1, 7549); // bow interface + c.getPacketSender().sendFrame171(1, 7574); // sword + // interface + c.getPacketSender().sendFrame171(1, 7599); // scimmy sword + // interface, + // for most + // swords + c.getPacketSender().sendFrame171(1, 8493); + c.getPacketSender().sendFrame171(1, 12323); // whip + // interface + break; + } + } + + /** + * Specials bar filling amount + **/ + + public void specialAmount(int weapon, double specAmount, int barId) { + c.specBarId = barId; + c.getPacketSender().sendFrame70(specAmount >= 10 ? 500 : 0, 0, + --barId); + c.getPacketSender().sendFrame70(specAmount >= 9 ? 500 : 0, 0, + --barId); + c.getPacketSender().sendFrame70(specAmount >= 8 ? 500 : 0, 0, + --barId); + c.getPacketSender().sendFrame70(specAmount >= 7 ? 500 : 0, 0, + --barId); + c.getPacketSender().sendFrame70(specAmount >= 6 ? 500 : 0, 0, + --barId); + c.getPacketSender().sendFrame70(specAmount >= 5 ? 500 : 0, 0, + --barId); + c.getPacketSender().sendFrame70(specAmount >= 4 ? 500 : 0, 0, + --barId); + c.getPacketSender().sendFrame70(specAmount >= 3 ? 500 : 0, 0, + --barId); + c.getPacketSender().sendFrame70(specAmount >= 2 ? 500 : 0, 0, + --barId); + c.getPacketSender().sendFrame70(specAmount >= 1 ? 500 : 0, 0, + --barId); + updateSpecialBar(); + sendWeapon(weapon, getItemName(weapon)); + } + + /** + * Special attack text and what to highlight or blackout + **/ + + public void updateSpecialBar() { + if (c.usingSpecial) { + c.getPacketSender().sendFrame126( + "" + + (c.specAmount >= 2 ? "@yel@S P" + : "@bla@S P") + + "" + + (c.specAmount >= 3 ? "@yel@ E" + : "@bla@ E") + + "" + + (c.specAmount >= 4 ? "@yel@ C I" + : "@bla@ C I") + + "" + + (c.specAmount >= 5 ? "@yel@ A L" + : "@bla@ A L") + + "" + + (c.specAmount >= 6 ? "@yel@ A" + : "@bla@ A") + + "" + + (c.specAmount >= 7 ? "@yel@ T T" + : "@bla@ T T") + + "" + + (c.specAmount >= 8 ? "@yel@ A" + : "@bla@ A") + + "" + + (c.specAmount >= 9 ? "@yel@ C" + : "@bla@ C") + + "" + + (c.specAmount >= 10 ? "@yel@ K" + : "@bla@ K"), c.specBarId); + } else { + c.getPacketSender().sendFrame126( + "@bla@S P E C I A L A T T A C K", c.specBarId); + } + } + + /** + * Wear Item + **/ + + public boolean wearItem(int wearID, int slot) { + // Check the player has the item the want to wear + if (!playerHasItem(wearID, 1, slot)) { + return false; + } + if (c.tutorialProgress < 22) { + c.getPacketSender().sendMessage("You'll be told how to equip items later."); + return false; + } + + if (c.tutorialProgress == 22) { + c.getPacketSender().chatbox(6180); + c.getDialogueHandler() + .chatboxText(c, + "Clothes, armour, weapons and many other items are equipped", + "like this. You can unequip items by clicking on the item in the", + "worn inventory. You can close this window by clicking on the", + "small x. Speak to the Combat Instructor to continue.", + "You're now holding your dagger"); + c.getPacketSender().chatbox(6179); + c.tutorialProgress = 23; + // c.setSidebarInterface(0, -1);// worn + + } else if (c.tutorialProgress == 23) { + c.getPacketSender().chatbox(6180); + c.getDialogueHandler() + .chatboxText( + c, + "", + "Click on the flashing crossed swords icon to see the combat", + "interface.", "", "Combat interface"); + c.getPacketSender().chatbox(6179); + c.getPacketSender().flashSideBarIcon(0); + // c.getPacketDispatcher().tutorialIslandInterface(50, 11); + } + + int wearAmount = c.playerItemsN[slot]; + if (wearAmount < 1) { + return false; + } + + int targetSlot = GameConstants.HAT; + boolean canWearItem = true; + if (c.playerItems[slot] == wearID + 1) { + getRequirements(getItemName(wearID).toLowerCase(), wearID); + targetSlot = Item.targetSlots[wearID]; + + if (c.duelRule[11] && targetSlot == 0) { + c.getPacketSender().sendMessage("Wearing hats has been disabled in this duel!"); + return false; + } + if (c.duelRule[12] && targetSlot == 1) { + c.getPacketSender().sendMessage("Wearing capes has been disabled in this duel!"); + return false; + } + if (c.duelRule[13] && targetSlot == 2) { + c.getPacketSender().sendMessage("Wearing amulets has been disabled in this duel!"); + return false; + } + if (c.duelRule[14] && targetSlot == 3) { + c.getPacketSender().sendMessage("Wielding weapons has been disabled in this duel!"); + return false; + } + if (c.duelRule[15] && targetSlot == 4) { + c.getPacketSender().sendMessage("Wearing bodies has been disabled in this duel!"); + return false; + } + if (c.duelRule[16] && targetSlot == 5 || c.duelRule[16] && is2handed(getItemName(wearID).toLowerCase(), wearID)) { + c.getPacketSender().sendMessage("Wearing shield has been disabled in this duel!"); + return false; + } + if (c.duelRule[17] && targetSlot == 7) { + c.getPacketSender().sendMessage("Wearing legs has been disabled in this duel!"); + return false; + } + if (c.duelRule[18] && targetSlot == 9) { + c.getPacketSender().sendMessage("Wearing gloves has been disabled in this duel!"); + return false; + } + if (c.duelRule[19] && targetSlot == 10) { + c.getPacketSender().sendMessage("Wearing boots has been disabled in this duel!"); + return false; + } + if (c.duelRule[20] && targetSlot == 12) { + c.getPacketSender().sendMessage("Wearing rings has been disabled in this duel!"); + return false; + } + if (c.duelRule[21] && targetSlot == 13) { + c.getPacketSender().sendMessage("Wearing arrows has been disabled in this duel!"); + return false; + } + + if (GameConstants.ITEM_REQUIREMENTS) { + // Check if slot is armor + if (targetSlot == GameConstants.FEET + || targetSlot == GameConstants.LEGS + || targetSlot == GameConstants.SHIELD + || targetSlot == GameConstants.CHEST + || targetSlot == GameConstants.HAT + || targetSlot == GameConstants.HANDS) { + if (c.defenceLevelReq > 0) { + if (c.getPlayerAssistant().getLevelForXP(c.playerXP[1]) < c.defenceLevelReq) { + c.getPacketSender().sendMessage("You need a defence level of " + c.defenceLevelReq + " to wear this item."); + canWearItem = false; + } + } + if (c.rangeLevelReq > 0) { + if (c.getPlayerAssistant().getLevelForXP(c.playerXP[4]) < c.rangeLevelReq) { + c.getPacketSender().sendMessage("You need a range level of " + c.rangeLevelReq + " to wear this item."); + canWearItem = false; + } + } + if (c.magicLevelReq > 0) { + if (c.getPlayerAssistant().getLevelForXP(c.playerXP[6]) < c.magicLevelReq) { + c.getPacketSender().sendMessage("You need a magic level of " + c.magicLevelReq + " to wear this item."); + canWearItem = false; + } + } + } + if (c.slayerLevelReq > 0) { + if (c.getPlayerAssistant().getLevelForXP(c.playerXP[18]) < c.slayerLevelReq) { + c.getPacketSender().sendMessage("You need a slayer level of " + c.slayerLevelReq + " to wear this item."); + canWearItem = false; + } + } + if (c.agilityLevelReq > 0) { + if (c.getPlayerAssistant().getLevelForXP(c.playerXP[16]) < c.agilityLevelReq) { + c.getPacketSender().sendMessage("You need a agility level of " + c.agilityLevelReq + " to wear this item."); + canWearItem = false; + } + } + // Weapon + if (targetSlot == GameConstants.WEAPON) { + if (c.attackLevelReq > 0) { + if (c.getPlayerAssistant().getLevelForXP(c.playerXP[0]) < c.attackLevelReq) { + c.getPacketSender().sendMessage("You need an attack level of " + c.attackLevelReq + " to wield this weapon."); + canWearItem = false; + } + } + if (c.rangeLevelReq > 0) { + if (c.getPlayerAssistant().getLevelForXP(c.playerXP[4]) < c.rangeLevelReq) { + c.getPacketSender().sendMessage("You need a range level of " + c.rangeLevelReq + " to wield this weapon."); + canWearItem = false; + } + } + if (c.magicLevelReq > 0) { + if (c.getPlayerAssistant().getLevelForXP(c.playerXP[6]) < c.magicLevelReq) { + c.getPacketSender().sendMessage("You need a magic level of " + c.magicLevelReq + " to wield this weapon."); + canWearItem = false; + } + } + } + } + + switch (wearID) { + // Dragon daggers/sword + case 1215: + case 1231: + case 5680: + case 5698: + case 1305: + if (c.spiritTree == false && c.playerRights != 3) { + c.getPacketSender().sendMessage("You need to beat the tree spirit to wield this weapon."); + canWearItem = false; + } + } + + if (!canWearItem) { + // return false here so we can send multiple messages of requirements + return false; + } + + if (CastleWars.isInCw(c) || CastleWars.isInCwWait(c)) { + if (targetSlot == GameConstants.CAPE || targetSlot == GameConstants.HAT) { + c.getPacketSender().sendMessage("You can't wear your own capes or hats in a Castle Wars Game!"); + return false; + } + } + + if (targetSlot == GameConstants.WEAPON) { + c.autocasting = false; + c.autocastId = 0; + c.getPacketSender().sendConfig(108, 0); + } + + if (slot >= 0 && wearID >= 0) { + int toEquip = c.playerItems[slot]; + int toEquipN = c.playerItemsN[slot]; + int toRemove = c.playerEquipment[targetSlot]; + int toRemoveN = c.playerEquipmentN[targetSlot]; + if (toEquip == toRemove + 1 && Item.itemStackable[toRemove]) { + deleteItem(toRemove, getItemSlot(toRemove), toEquipN); + c.playerEquipmentN[targetSlot] += toEquipN; + } else if (targetSlot != GameConstants.SHIELD && targetSlot != GameConstants.WEAPON) { + c.playerItems[slot] = toRemove + 1; + c.playerItemsN[slot] = toRemoveN; + c.playerEquipment[targetSlot] = toEquip - 1; + c.playerEquipmentN[targetSlot] = toEquipN; + } else if (targetSlot == GameConstants.SHIELD) { + boolean wearing2h = is2handed(getItemName(c.playerEquipment[GameConstants.WEAPON]).toLowerCase(), c.playerEquipment[GameConstants.WEAPON]); + if (wearing2h) { + // remove the weapon, add to inventory + toRemove = c.playerEquipment[c.playerWeapon]; + toRemoveN = c.playerEquipmentN[c.playerWeapon]; + c.playerEquipment[c.playerWeapon] = -1; + c.playerEquipmentN[c.playerWeapon] = 0; + updateSlot(GameConstants.WEAPON); + } + c.playerItems[slot] = toRemove + 1; + c.playerItemsN[slot] = toRemoveN; + c.playerEquipment[targetSlot] = toEquip - 1; + c.playerEquipmentN[targetSlot] = toEquipN; + } else if (targetSlot == GameConstants.WEAPON) { + if (CastleWars.SARA_BANNER == toRemove || CastleWars.ZAMMY_BANNER == toRemove) { // alk + // update + CastleWars.dropFlag(c, toRemove); + toRemove = -1; + toRemoveN = 0; + } + boolean is2h = is2handed(getItemName(wearID).toLowerCase(), wearID); + boolean wearingShield = c.playerEquipment[GameConstants.SHIELD] > 0; + boolean wearingWeapon = c.playerEquipment[GameConstants.WEAPON] > 0; + if (is2h) { + if (wearingShield && wearingWeapon) { + if (freeSlots() > 0) { + c.playerItems[slot] = toRemove + 1; + c.playerItemsN[slot] = toRemoveN; + c.playerEquipment[targetSlot] = toEquip - 1; + c.playerEquipmentN[targetSlot] = toEquipN; + removeItem(c.playerEquipment[GameConstants.SHIELD], GameConstants.SHIELD); + } else { + c.getPacketSender().sendMessage("You do not have enough inventory space to do this."); + return false; + } + } else if (wearingShield && !wearingWeapon) { + c.playerItems[slot] = c.playerEquipment[GameConstants.SHIELD] + 1; + c.playerItemsN[slot] = c.playerEquipmentN[GameConstants.SHIELD]; + c.playerEquipment[targetSlot] = toEquip - 1; + c.playerEquipmentN[targetSlot] = toEquipN; + c.playerEquipment[GameConstants.SHIELD] = -1; + c.playerEquipmentN[GameConstants.SHIELD] = 0; + updateSlot(GameConstants.SHIELD); + } else { + c.playerItems[slot] = toRemove + 1; + c.playerItemsN[slot] = toRemoveN; + c.playerEquipment[targetSlot] = toEquip - 1; + c.playerEquipmentN[targetSlot] = toEquipN; + } + } else { + c.playerItems[slot] = toRemove + 1; + c.playerItemsN[slot] = toRemoveN; + c.playerEquipment[targetSlot] = toEquip - 1; + c.playerEquipmentN[targetSlot] = toEquipN; + } + } + } + resetItems(3214); + if (targetSlot == GameConstants.WEAPON) { + c.usingSpecial = false; + addSpecialBar(wearID); + } + if (c.getOutStream() != null && c != null) { + c.getOutStream().createFrameVarSizeWord(34); + c.getOutStream().writeWord(1688); + c.getOutStream().writeByte(targetSlot); + c.getOutStream().writeWord(wearID + 1); + + if (c.playerEquipmentN[targetSlot] > 254) { + c.getOutStream().writeByte(255); + c.getOutStream().writeDWord(c.playerEquipmentN[targetSlot]); + } else { + c.getOutStream().writeByte(c.playerEquipmentN[targetSlot]); + } + + c.getOutStream().endFrameVarSizeWord(); + c.flushOutStream(); + } + sendWeapon(c.playerEquipment[c.playerWeapon], getItemName(c.playerEquipment[c.playerWeapon])); + resetBonus(); + getBonus(); + writeBonus(); + c.getCombatAssistant().getPlayerAnimIndex(); + c.getPlayerAssistant().requestUpdates(); + return true; + } else { + return false; + } + } + + public void wearItem(int wearID, int wearAmount, int targetSlot) { + synchronized (c) { + if (c.getOutStream() != null && c != null) { + c.getOutStream().createFrameVarSizeWord(34); + c.getOutStream().writeWord(1688); + c.getOutStream().writeByte(targetSlot); + c.getOutStream().writeWord(wearID + 1); + + if (wearAmount > 254) { + c.getOutStream().writeByte(255); + c.getOutStream().writeDWord(wearAmount); + } else { + c.getOutStream().writeByte(wearAmount); + } + c.getOutStream().endFrameVarSizeWord(); + c.flushOutStream(); + c.playerEquipment[targetSlot] = wearID; + c.playerEquipmentN[targetSlot] = wearAmount; + c.getItemAssistant(); + c.getItemAssistant() + .sendWeapon( + c.playerEquipment[c.playerWeapon], + ItemAssistant + .getItemName(c.playerEquipment[c.playerWeapon])); + resetBonus(); + getBonus(); + /*for (int bowId : RangeData.BOWS) { + if (c.playerEquipment[c.playerWeapon] == bowId) { + for (int arrowId : RangeData.ARROWS) { + if (c.playerEquipment[c.playerArrows] == arrowId && c.playerEquipment[c.playerWeapon] == bowId) { + writeBonus(); + } else if (c.playerEquipment[c.playerWeapon] == bowId && c.playerEquipment[c.playerArrows] != arrowId) { + writeBonus(); + } else if (c.playerEquipment[c.playerArrows] != arrowId && c.playerEquipment[c.playerWeapon] != bowId) { + writeBonus(); + } + } + } + }*/ + writeBonus(); + c.getCombatAssistant().getPlayerAnimIndex(); + c.updateRequired = true; + c.setAppearanceUpdateRequired(true); + } + } + } + + public void updateSlot(int slot) { + // synchronized(c) { + if (c.getOutStream() != null && c != null) { + c.getOutStream().createFrameVarSizeWord(34); + c.getOutStream().writeWord(1688); + c.getOutStream().writeByte(slot); + c.getOutStream().writeWord(c.playerEquipment[slot] + 1); + if (c.playerEquipmentN[slot] > 254) { + c.getOutStream().writeByte(255); + c.getOutStream().writeDWord(c.playerEquipmentN[slot]); + } else { + c.getOutStream().writeByte(c.playerEquipmentN[slot]); + } + c.getOutStream().endFrameVarSizeWord(); + c.flushOutStream(); + } + + } + + /** + * Remove Item + **/ + public void removeItem(int wearID, int slot) { + // synchronized(c) { + if (c.getOutStream() != null && c != null) { + if (c.playerEquipment[slot] > -1) { + if (c.playerEquipment[slot] == CastleWars.SARA_BANNER|| c.playerEquipment[slot] == CastleWars.ZAMMY_BANNER) { + CastleWars.dropFlag(c, c.playerEquipment[slot]); + } + if ((c.playerEquipment[slot] == CastleWars.SARA_CAPE || c.playerEquipment[slot] == CastleWars.ZAMMY_CAPE) && c.inCw()) { + c.getPacketSender().sendMessage("You cannot unequip your castle wars cape!"); + return; + } + if (addItem(c.playerEquipment[slot], c.playerEquipmentN[slot])) { + if (c.playerEquipment[slot] == CastleWars.SARA_BANNER || c.playerEquipment[slot] == CastleWars.ZAMMY_BANNER) { + CastleWars.dropFlag(c, c.playerEquipment[slot]); + deleteItem(c.playerEquipment[slot], 1); + } + c.playerEquipment[slot] = -1; + c.playerEquipmentN[slot] = 0; + sendWeapon(c.playerEquipment[c.playerWeapon], + getItemName(c.playerEquipment[c.playerWeapon])); + resetBonus(); + getBonus(); + writeBonus(); + c.getCombatAssistant().getPlayerAnimIndex(); + c.getOutStream().createFrame(34); + c.getOutStream().writeWord(6); + c.getOutStream().writeWord(1688); + c.getOutStream().writeByte(slot); + c.getOutStream().writeWord(0); + c.getOutStream().writeByte(0); + c.flushOutStream(); + c.updateRequired = true; + c.setAppearanceUpdateRequired(true); + Weight.calcWeight(c, wearID, "deleteitem"); + } + } + } + // } + } + + /** + * BANK + */ + + public void rearrangeBank() { + int totalItems = 0; + int highestSlot = 0; + for (int i = 0; i < GameConstants.BANK_SIZE; i++) { + if (c.bankItems[i] != 0) { + totalItems++; + if (highestSlot <= i) { + highestSlot = i; + } + } + } + + for (int i = 0; i <= highestSlot; i++) { + if (c.bankItems[i] == 0) { + boolean stop = false; + + for (int k = i; k <= highestSlot; k++) { + if (c.bankItems[k] != 0 && !stop) { + int spots = k - i; + for (int j = k; j <= highestSlot; j++) { + c.bankItems[j - spots] = c.bankItems[j]; + c.bankItemsN[j - spots] = c.bankItemsN[j]; + c.bankItemsV[j - spots] = c.bankItemsV[j]; + stop = true; + c.bankItems[j] = 0; + c.bankItemsN[j] = 0; + c.bankItemsV[j] = 0; + } + } + } + } + } + + int totalItemsAfter = 0; + for (int i = 0; i < GameConstants.BANK_SIZE; i++) { + if (c.bankItems[i] != 0) { + totalItemsAfter++; + } + } + + if (totalItems != totalItemsAfter) { + if (!c.isBot) + c.disconnected = true; + } + } + + public void itemOnInterface(int id, int amount) { + // synchronized(c) { + c.getOutStream().createFrameVarSizeWord(53); + c.getOutStream().writeWord(2274); + c.getOutStream().writeWord(1); + if (amount > 254) { + c.getOutStream().writeByte(255); + c.getOutStream().writeDWord_v2(amount); + } else { + c.getOutStream().writeByte(amount); + } + c.getOutStream().writeWordBigEndianA(id); + c.getOutStream().endFrameVarSizeWord(); + c.flushOutStream(); + } + + public void resetBank() { + synchronized (c) { + if (c.getOutStream() != null) { + c.getOutStream().createFrameVarSizeWord(53); + c.getOutStream().writeWord(5382); // bank + c.getOutStream().writeWord(GameConstants.BANK_SIZE); + } + for (int i = 0; i < GameConstants.BANK_SIZE; i++) { + if (c.getOutStream() != null) { + if (c.bankItemsN[i] > 254) { + c.getOutStream().writeByte(255); + c.getOutStream().writeDWord_v2(c.bankItemsN[i]); + } else { + c.getOutStream().writeByte(c.bankItemsN[i]); + } + } + if (c.bankItemsN[i] < 1) { + c.bankItems[i] = 0; + } + if (c.bankItems[i] > GameConstants.ITEM_LIMIT || c.bankItems[i] < 0) { + c.bankItems[i] = GameConstants.ITEM_LIMIT; + } + if (c.getOutStream() != null) { + c.getOutStream().writeWordBigEndianA(c.bankItems[i]); + } + } + + if (c.getOutStream() != null) { + c.getOutStream().endFrameVarSizeWord(); + c.flushOutStream(); + } + } + } + + public void resetTempItems() { + // synchronized(c) { + int itemCount = 0; + for (int i = 0; i < c.playerItems.length; i++) { + if (c.playerItems[i] > -1) { + itemCount = i; + } + } + if (c.getOutStream() != null){ + c.getOutStream().createFrameVarSizeWord(53); + c.getOutStream().writeWord(5064); + c.getOutStream().writeWord(itemCount + 1); + } + for (int i = 0; i < itemCount + 1; i++) { + + if (c.getOutStream() != null) { + if (c.playerItemsN[i] > 254) { + c.getOutStream().writeByte(255); + c.getOutStream().writeDWord_v2(c.playerItemsN[i]); + } else { + c.getOutStream().writeByte(c.playerItemsN[i]); + } + } + if (c.playerItems[i] > GameConstants.ITEM_LIMIT || c.playerItems[i] < 0) { + c.playerItems[i] = GameConstants.ITEM_LIMIT; + } + if (c.getOutStream() != null) { + c.getOutStream().writeWordBigEndianA(c.playerItems[i]); + } + } + if (c.getOutStream() != null) { + c.getOutStream().endFrameVarSizeWord(); + c.flushOutStream(); + } + } + + public boolean bankItem(int itemID, int fromSlot, int amount) { + if (c.inTrade) { + c.getPacketSender().sendMessage("You can't store items while trading!"); + return false; + } + for (int i = 0; i < GameConstants.ITEM_BANKABLE.length; i++) { + if (itemID == GameConstants.ITEM_BANKABLE[i]) { + c.getPacketSender().sendMessage("You can't bank that item!"); + return false; + } + } + if (!CastleWars.deleteCastleWarsItems(c, itemID)) { + return false; + } + if (c.otherBank == true) { + c.getPacketSender().closeAllWindows(); + c.getPacketSender().sendMessage("You can't bank while viewing someones bank!"); + c.otherBank = false; + return false; + } + if (c.playerItemsN[fromSlot] <= 0) { + return false; + } + if (!Item.itemIsNote[c.playerItems[fromSlot] - 1]) { + if (c.playerItems[fromSlot] <= 0) { + return false; + } + if (Item.itemStackable[c.playerItems[fromSlot] - 1] || c.playerItemsN[fromSlot] > 1) { + int toBankSlot = 0; + boolean alreadyInBank = false; + for (int i = 0; i < GameConstants.BANK_SIZE; i++) { + if (c.bankItems[i] == c.playerItems[fromSlot]) { + if (c.playerItemsN[fromSlot] < amount) { + amount = c.playerItemsN[fromSlot]; + } + alreadyInBank = true; + toBankSlot = i; + i = GameConstants.BANK_SIZE + 1; + } + } + + if (!alreadyInBank && freeBankSlots() > 0) { + for (int i = 0; i < GameConstants.BANK_SIZE; i++) { + if (c.bankItems[i] <= 0) { + toBankSlot = i; + i = GameConstants.BANK_SIZE + 1; + } + } + c.bankItems[toBankSlot] = c.playerItems[fromSlot]; + if (c.playerItemsN[fromSlot] < amount) { + amount = c.playerItemsN[fromSlot]; + } + if (c.bankItemsN[toBankSlot] + amount <= GameConstants.MAXITEM_AMOUNT + && c.bankItemsN[toBankSlot] + amount > -1) { + c.bankItemsN[toBankSlot] += amount; + } else { + c.getPacketSender().sendMessage("Bank full!"); + return false; + } + deleteItem(c.playerItems[fromSlot] - 1, fromSlot, amount); + resetTempItems(); + resetBank(); + return true; + } else if (alreadyInBank) { + if (c.bankItemsN[toBankSlot] + amount <= GameConstants.MAXITEM_AMOUNT + && c.bankItemsN[toBankSlot] + amount > -1) { + c.bankItemsN[toBankSlot] += amount; + } else { + c.getPacketSender().sendMessage("Bank full!"); + return false; + } + deleteItem(c.playerItems[fromSlot] - 1, fromSlot, amount); + resetTempItems(); + resetBank(); + return true; + } else { + c.getPacketSender().sendMessage("Your bank is full!"); + return false; + } + } else { + itemID = c.playerItems[fromSlot]; + int toBankSlot = 0; + boolean alreadyInBank = false; + for (int i = 0; i < GameConstants.BANK_SIZE; i++) { + if (c.bankItems[i] == c.playerItems[fromSlot]) { + alreadyInBank = true; + toBankSlot = i; + i = GameConstants.BANK_SIZE + 1; + } + } + if (!alreadyInBank && freeBankSlots() > 0) { + for (int i = 0; i < GameConstants.BANK_SIZE; i++) { + if (c.bankItems[i] <= 0) { + toBankSlot = i; + i = GameConstants.BANK_SIZE + 1; + } + } + int firstPossibleSlot = 0; + boolean itemExists = false; + while (amount > 0) { + itemExists = false; + for (int i = firstPossibleSlot; i < c.playerItems.length; i++) { + if (c.playerItems[i] == itemID) { + firstPossibleSlot = i; + itemExists = true; + i = 30; + } + } + if (itemExists) { + c.bankItems[toBankSlot] = c.playerItems[firstPossibleSlot]; + c.bankItemsN[toBankSlot] += 1; + deleteItem(c.playerItems[firstPossibleSlot] - 1, + firstPossibleSlot, 1); + amount--; + } else { + amount = 0; + } + } + resetTempItems(); + resetBank(); + return true; + } else if (alreadyInBank) { + int firstPossibleSlot = 0; + boolean itemExists = false; + while (amount > 0) { + itemExists = false; + for (int i = firstPossibleSlot; i < c.playerItems.length; i++) { + if (c.playerItems[i] == itemID) { + firstPossibleSlot = i; + itemExists = true; + i = 30; + } + } + if (itemExists) { + c.bankItemsN[toBankSlot] += 1; + deleteItem(c.playerItems[firstPossibleSlot] - 1, + firstPossibleSlot, 1); + amount--; + } else { + amount = 0; + } + } + resetTempItems(); + resetBank(); + return true; + } else { + c.getPacketSender().sendMessage("Bank full!"); + return false; + } + } + } else if (Item.itemIsNote[c.playerItems[fromSlot] - 1] && !Item.itemIsNote[c.playerItems[fromSlot] - 2]) { + if (c.playerItems[fromSlot] <= 0) { + return false; + } + if (Item.itemStackable[c.playerItems[fromSlot] - 1] || c.playerItemsN[fromSlot] > 1) { + int toBankSlot = 0; + boolean alreadyInBank = false; + for (int i = 0; i < GameConstants.BANK_SIZE; i++) { + if (c.bankItems[i] == c.playerItems[fromSlot] - 1) { + if (c.playerItemsN[fromSlot] < amount) { + amount = c.playerItemsN[fromSlot]; + } + alreadyInBank = true; + toBankSlot = i; + i = GameConstants.BANK_SIZE + 1; + } + } + + if (!alreadyInBank && freeBankSlots() > 0) { + for (int i = 0; i < GameConstants.BANK_SIZE; i++) { + if (c.bankItems[i] <= 0) { + toBankSlot = i; + i = GameConstants.BANK_SIZE + 1; + } + } + c.bankItems[toBankSlot] = c.playerItems[fromSlot] - 1; + if (c.playerItemsN[fromSlot] < amount) { + amount = c.playerItemsN[fromSlot]; + } + if (c.bankItemsN[toBankSlot] + amount <= GameConstants.MAXITEM_AMOUNT && c.bankItemsN[toBankSlot] + amount > -1) { + c.bankItemsN[toBankSlot] += amount; + } else { + return false; + } + deleteItem(c.playerItems[fromSlot] - 1, fromSlot, amount); + resetTempItems(); + resetBank(); + return true; + } else if (alreadyInBank) { + if (c.bankItemsN[toBankSlot] + amount <= GameConstants.MAXITEM_AMOUNT && c.bankItemsN[toBankSlot] + amount > -1) { + c.bankItemsN[toBankSlot] += amount; + } else { + return false; + } + deleteItem(c.playerItems[fromSlot] - 1, fromSlot, amount); + resetTempItems(); + resetBank(); + return true; + } else { + c.getPacketSender().sendMessage("Bank full!"); + return false; + } + } else { + itemID = c.playerItems[fromSlot]; + int toBankSlot = 0; + boolean alreadyInBank = false; + for (int i = 0; i < GameConstants.BANK_SIZE; i++) { + if (c.bankItems[i] == c.playerItems[fromSlot] - 1) { + alreadyInBank = true; + toBankSlot = i; + i = GameConstants.BANK_SIZE + 1; + } + } + if (!alreadyInBank && freeBankSlots() > 0) { + for (int i = 0; i < GameConstants.BANK_SIZE; i++) { + if (c.bankItems[i] <= 0) { + toBankSlot = i; + i = GameConstants.BANK_SIZE + 1; + } + } + int firstPossibleSlot = 0; + boolean itemExists = false; + while (amount > 0) { + itemExists = false; + for (int i = firstPossibleSlot; i < c.playerItems.length; i++) { + if (c.playerItems[i] == itemID) { + firstPossibleSlot = i; + itemExists = true; + i = 30; + } + } + if (itemExists) { + c.bankItems[toBankSlot] = c.playerItems[firstPossibleSlot] - 1; + c.bankItemsN[toBankSlot] += 1; + deleteItem(c.playerItems[firstPossibleSlot] - 1, + firstPossibleSlot, 1); + amount--; + } else { + amount = 0; + } + } + resetTempItems(); + resetBank(); + return true; + } else if (alreadyInBank) { + int firstPossibleSlot = 0; + boolean itemExists = false; + while (amount > 0) { + itemExists = false; + for (int i = firstPossibleSlot; i < c.playerItems.length; i++) { + if (c.playerItems[i] == itemID) { + firstPossibleSlot = i; + itemExists = true; + i = 30; + } + } + if (itemExists) { + c.bankItemsN[toBankSlot] += 1; + deleteItem(c.playerItems[firstPossibleSlot] - 1, + firstPossibleSlot, 1); + amount--; + } else { + amount = 0; + } + } + resetTempItems(); + resetBank(); + return true; + } else { + c.getPacketSender().sendMessage("Bank full!"); + return false; + } + } + } else { + c.getPacketSender().sendMessage("Item not supported " + (c.playerItems[fromSlot] - 1)); + return false; + } + } + + public int freeBankSlots() { + int freeS = 0; + for (int i = 0; i < GameConstants.BANK_SIZE; i++) { + if (c.bankItems[i] <= 0) { + freeS++; + } + } + return freeS; + } + + public int getBankQuantitiy(int itemID) + { + for (int i = 0; i < c.bankItems.length; i++) { + if (c.bankItems[i] == itemID) + { + return c.bankItemsN[i]; + } + } + return 0; + } + + public void fromBank(int itemID, int fromSlot, int amount) { + if (amount > 0) { + if (c.bankItems[fromSlot] > 0) { + if (!c.takeAsNote) { + if (Item.itemStackable[c.bankItems[fromSlot] - 1]) { + if (c.bankItemsN[fromSlot] > amount) { + if (addItem(c.bankItems[fromSlot] - 1, amount)) { + c.bankItemsN[fromSlot] -= amount; + resetBank(); + resetItems(5064); + } + } else { + if (addItem(c.bankItems[fromSlot] - 1, + c.bankItemsN[fromSlot])) { + c.bankItems[fromSlot] = 0; + c.bankItemsN[fromSlot] = 0; + resetBank(); + resetItems(5064); + } + } + } else { + while (amount > 0) { + if (c.bankItemsN[fromSlot] > 0) { + if (addItem(c.bankItems[fromSlot] - 1, 1)) { + c.bankItemsN[fromSlot] += -1; + amount--; + } else { + amount = 0; + } + } else { + amount = 0; + } + } + resetBank(); + resetItems(5064); + } + } else if (c.takeAsNote && Item.itemIsNote[c.bankItems[fromSlot]]) { + if (c.bankItemsN[fromSlot] > amount) { + if (addItem(c.bankItems[fromSlot], amount)) { + c.bankItemsN[fromSlot] -= amount; + resetBank(); + resetItems(5064); + } + } else { + if (addItem(c.bankItems[fromSlot], c.bankItemsN[fromSlot])) { + c.bankItems[fromSlot] = 0; + c.bankItemsN[fromSlot] = 0; + resetBank(); + resetItems(5064); + } + } + } else { + c.getPacketSender().sendMessage("This item can't be withdrawn as a note."); + if (Item.itemStackable[c.bankItems[fromSlot] - 1]) { + if (c.bankItemsN[fromSlot] > amount) { + if (addItem(c.bankItems[fromSlot] - 1, amount)) { + c.bankItemsN[fromSlot] -= amount; + resetBank(); + resetItems(5064); + } + } else { + if (addItem(c.bankItems[fromSlot] - 1, + c.bankItemsN[fromSlot])) { + c.bankItems[fromSlot] = 0; + c.bankItemsN[fromSlot] = 0; + resetBank(); + resetItems(5064); + } + } + } else { + while (amount > 0) { + if (c.bankItemsN[fromSlot] > 0) { + if (addItem(c.bankItems[fromSlot] - 1, 1)) { + c.bankItemsN[fromSlot] += -1; + amount--; + } else { + amount = 0; + } + } else { + amount = 0; + } + } + resetBank(); + resetItems(5064); + } + } + } + } + } + + public int itemAmount(int itemID) { + int tempAmount = 0; + for (int i = 0; i < c.playerItems.length; i++) { + if (c.playerItems[i] == itemID) { + tempAmount += c.playerItemsN[i]; + } + } + return tempAmount; + } + + public boolean isStackable(int itemID) { + return Item.itemStackable[itemID]; + } + + /** + * Update Equip tab + **/ + + public void setEquipment(int wearID, int amount, int targetSlot) { + // synchronized(c) { + if (c.getOutStream() != null) { + c.getOutStream().createFrameVarSizeWord(34); + c.getOutStream().writeWord(1688); + c.getOutStream().writeByte(targetSlot); + c.getOutStream().writeWord(wearID + 1); + if (amount > 254) { + c.getOutStream().writeByte(255); + c.getOutStream().writeDWord(amount); + } else { + c.getOutStream().writeByte(amount); + } + c.getOutStream().endFrameVarSizeWord(); + c.flushOutStream(); + } + c.playerEquipment[targetSlot] = wearID; + c.playerEquipmentN[targetSlot] = amount; + c.updateRequired = true; + c.setAppearanceUpdateRequired(true); + } + + /** + * Move Items + **/ + + public void moveItems(int from, int to, int moveWindow, boolean insertMode) { + if (moveWindow == 3214) { + int tempI; + int tempN; + tempI = c.playerItems[from]; + tempN = c.playerItemsN[from]; + c.playerItems[from] = c.playerItems[to]; + c.playerItemsN[from] = c.playerItemsN[to]; + c.playerItems[to] = tempI; + c.playerItemsN[to] = tempN; + } + + if (moveWindow == 5382 && from >= 0 && to >= 0 + && from < GameConstants.BANK_SIZE && to < GameConstants.BANK_SIZE + && to < GameConstants.BANK_SIZE) { + if (insertMode) { + int tempFrom = from; + for (int tempTo = to; tempFrom != tempTo;) + if (tempFrom > tempTo) { + swapBankItem(tempFrom, tempFrom - 1); + tempFrom--; + } else if (tempFrom < tempTo) { + swapBankItem(tempFrom, tempFrom + 1); + tempFrom++; + } + } else { + swapBankItem(from, to); + } + } + + if (moveWindow == 5382) { + resetBank(); + } + if (moveWindow == 5064) { + int tempI; + int tempN; + tempI = c.playerItems[from]; + tempN = c.playerItemsN[from]; + + c.playerItems[from] = c.playerItems[to]; + c.playerItemsN[from] = c.playerItemsN[to]; + c.playerItems[to] = tempI; + c.playerItemsN[to] = tempN; + resetItems(3214); + } + resetTempItems(); + if (moveWindow == 3214) { + resetItems(3214); + } + + } + + public void swapBankItem(int from, int to) { + int tempI = c.bankItems[from]; + int tempN = c.bankItemsN[from]; + c.bankItems[from] = c.bankItems[to]; + c.bankItemsN[from] = c.bankItemsN[to]; + c.bankItems[to] = tempI; + c.bankItemsN[to] = tempN; + } + + /** + * delete Item + **/ + + public void deleteEquipment(int i, int j) { + // synchronized(c) { + if (PlayerHandler.players[c.playerId] == null) { + return; + } + if (i < 0) { + return; + } + + c.playerEquipment[j] = -1; + c.playerEquipmentN[j] = c.playerEquipmentN[j] - 1; + + if (c.getOutStream() != null) { + c.getOutStream().createFrame(34); + c.getOutStream().writeWord(6); + c.getOutStream().writeWord(1688); + c.getOutStream().writeByte(j); + c.getOutStream().writeWord(0); + c.getOutStream().writeByte(0); + } + getBonus(); + if (j == c.playerWeapon) { + sendWeapon(-1, "Unarmed"); + } + resetBonus(); + getBonus(); + writeBonus(); + c.updateRequired = true; + c.setAppearanceUpdateRequired(true); + } + + public void deleteItem(int id, int amount) { + if (id <= 0 || amount <= 0) { + return; + } + id++; + for (int slot = 0; slot < c.playerItems.length; slot++) { + if (amount <= 0) { + break; + } + if (c.playerItems[slot] == id) { + if (c.playerItemsN[slot] > amount) { + c.playerItemsN[slot] -= amount; + break; + } else { + amount -= c.playerItemsN[slot]; + c.playerItems[slot] = 0; + c.playerItemsN[slot] = 0; + } + } + } + resetItems(3214); + Weight.calcWeight(c, id, "deleteitem"); + } + + public void deleteItem(int id, int slot, int amount) { + if (id <= 0 || slot < 0) { + return; + } + if (c.playerItems[slot] == id + 1) { + if (c.playerItemsN[slot] > amount) { + c.playerItemsN[slot] -= amount; + } else { + c.playerItemsN[slot] = 0; + c.playerItems[slot] = 0; + } + resetItems(3214); + Weight.calcWeight(c, id, "deleteitem"); + } + } + + /** + * Delete Arrows + **/ + public void deleteArrow() { + // synchronized(c) { + if (c.playerEquipment[c.playerCape] == 10499 && Misc.random(5) != 1 + && c.playerEquipment[c.playerArrows] != 4740) { + return; + } + if (c.playerEquipmentN[c.playerArrows] == 1) { + deleteEquipment( + c.playerEquipment[c.playerArrows], c.playerArrows); + } + if (c.playerEquipmentN[c.playerArrows] != 0) { + c.getOutStream().createFrameVarSizeWord(34); + c.getOutStream().writeWord(1688); + c.getOutStream().writeByte(c.playerArrows); + c.getOutStream().writeWord(c.playerEquipment[c.playerArrows] + 1); + if (c.playerEquipmentN[c.playerArrows] - 1 > 254) { + c.getOutStream().writeByte(255); + c.getOutStream().writeDWord( + c.playerEquipmentN[c.playerArrows] - 1); + } else { + c.getOutStream().writeByte( + c.playerEquipmentN[c.playerArrows] - 1); + } + c.getOutStream().endFrameVarSizeWord(); + c.flushOutStream(); + c.playerEquipmentN[c.playerArrows] -= 1; + } + c.updateRequired = true; + c.setAppearanceUpdateRequired(true); + } + + public void deleteEquipment() { + // synchronized(c) { + if (c.playerEquipmentN[c.playerWeapon] == 1) { + deleteEquipment( + c.playerEquipment[c.playerWeapon], c.playerWeapon); + } + if (c.playerEquipmentN[c.playerWeapon] != 0) { + c.getOutStream().createFrameVarSizeWord(34); + c.getOutStream().writeWord(1688); + c.getOutStream().writeByte(c.playerWeapon); + c.getOutStream().writeWord(c.playerEquipment[c.playerWeapon] + 1); + if (c.playerEquipmentN[c.playerWeapon] - 1 > 254) { + c.getOutStream().writeByte(255); + c.getOutStream().writeDWord( + c.playerEquipmentN[c.playerWeapon] - 1); + } else { + c.getOutStream().writeByte( + c.playerEquipmentN[c.playerWeapon] - 1); + } + c.getOutStream().endFrameVarSizeWord(); + c.flushOutStream(); + c.playerEquipmentN[c.playerWeapon] -= 1; + } + c.updateRequired = true; + c.setAppearanceUpdateRequired(true); + } + + /** + * Dropping Arrows + **/ + + public void dropArrowNpc() { + if (c.playerEquipment[c.playerCape] == 10499) { + return; + } + int enemyX = NpcHandler.npcs[c.oldNpcIndex].getX(); + int enemyY = NpcHandler.npcs[c.oldNpcIndex].getY(); + if (Misc.random(10) >= 4) { + if (GameEngine.itemHandler.itemAmount(c.playerName, c.rangeItemUsed, enemyX, enemyY) == 0) { + GameEngine.itemHandler.createGroundItem(c, c.rangeItemUsed, enemyX, + enemyY, 1, c.getId()); + } else if (GameEngine.itemHandler.itemAmount(c.playerName, c.rangeItemUsed, enemyX, + enemyY) != 0) { + int amount = GameEngine.itemHandler.itemAmount(c.playerName, c.rangeItemUsed, + enemyX, enemyY); + GameEngine.itemHandler.removeGroundItem(c, c.rangeItemUsed, enemyX, + enemyY, false); + GameEngine.itemHandler.createGroundItem(c, c.rangeItemUsed, enemyX, + enemyY, amount + 1, c.getId()); + } + } + } + + public void dropArrowPlayer() { + int enemyX = PlayerHandler.players[c.oldPlayerIndex].getX(); + int enemyY = PlayerHandler.players[c.oldPlayerIndex].getY(); + if (c.playerEquipment[c.playerCape] == 10499) { + return; + } + if (Misc.random(10) >= 4) { + if (GameEngine.itemHandler.itemAmount(c.playerName, c.rangeItemUsed, enemyX, enemyY) == 0) { + GameEngine.itemHandler.createGroundItem(c, c.rangeItemUsed, enemyX, + enemyY, 1, c.getId()); + } else if (GameEngine.itemHandler.itemAmount(c.playerName, c.rangeItemUsed, enemyX, + enemyY) != 0) { + int amount = GameEngine.itemHandler.itemAmount(c.playerName, c.rangeItemUsed, + enemyX, enemyY); + GameEngine.itemHandler.removeGroundItem(c, c.rangeItemUsed, enemyX, + enemyY, false); + GameEngine.itemHandler.createGroundItem(c, c.rangeItemUsed, enemyX, + enemyY, amount + 1, c.getId()); + } + } + } + + public void removeAllItems() { + for (int i = 0; i < c.playerItems.length; i++) { + c.playerItems[i] = 0; + } + for (int i = 0; i < c.playerItemsN.length; i++) { + c.playerItemsN[i] = 0; + } + resetItems(3214); + /* + * c.weight = 0; Weight.updateWeight(c); + */ + } + + public int freeSlots() { + int freeS = 0; + for (int playerItem : c.playerItems) { + if (playerItem <= 0) { + freeS++; + } + } + return freeS; + } + + public int findItem(int id, int[] items, int[] amounts) { + for (int i = 0; i < c.playerItems.length; i++) { + if (items[i] - 1 == id && amounts[i] > 0) { + return i; + } + } + return -1; + } + + public static String getItemName(int ItemID) { + for (int i = 0; i < GameConstants.ITEM_LIMIT; i++) { + if (GameEngine.itemHandler.ItemList[i] != null) { + if (GameEngine.itemHandler.ItemList[i].itemId == ItemID) { + return GameEngine.itemHandler.ItemList[i].itemName; + } + } + } + return "Unarmed"; + } + + public int getItemId(String itemName) { + for (int i = 0; i < GameConstants.ITEM_LIMIT; i++) { + if (GameEngine.itemHandler.ItemList[i] != null) { + if (GameEngine.itemHandler.ItemList[i].itemName + .equalsIgnoreCase(itemName)) { + return GameEngine.itemHandler.ItemList[i].itemId; + } + } + } + return -1; + } + + public int getItemSlot(int ItemID) { + for (int i = 0; i < c.playerItems.length; i++) { + if (c.playerItems[i] - 1 == ItemID) { + return i; + } + } + return -1; + } + + public int getItemAmount(int ItemID) { + int itemCount = 0; + for (int i = 0; i < c.playerItems.length; i++) { + if (c.playerItems[i] - 1 == ItemID) { + itemCount += c.playerItemsN[i]; + } + } + return itemCount; + } + + public boolean playerHasItem(int itemID, int amt, int slot) { + itemID++; + int found = 0; + if (c.playerItems[slot] == itemID) { + for (int i = 0; i < c.playerItems.length; i++) { + if (c.playerItems[i] == itemID) { + if (c.playerItemsN[i] >= amt) { + return true; + } else { + found++; + } + } + } + if (found >= amt) { + return true; + } + return false; + } + return false; + } + + public boolean playerHasItem(int itemID) { + itemID++; + for (int playerItem : c.playerItems) { + if (playerItem == itemID) { + return true; + } + } + return false; + } + + public boolean playerHasItem(int itemID, int amt) { + itemID++; + int found = 0; + for (int i = 0; i < c.playerItems.length; i++) { + if (c.playerItems[i] == itemID) { + if (c.playerItemsN[i] >= amt) { + return true; + } else { + found++; + } + } + } + if (found >= amt) { + return true; + } + return false; + } + + public int getUnnotedItem(int ItemID) { + int NewID = ItemID - 1; + String NotedName = ""; + for (int i = 0; i < GameConstants.ITEM_LIMIT; i++) { + if (GameEngine.itemHandler.ItemList[i] != null) { + if (GameEngine.itemHandler.ItemList[i].itemId == ItemID) { + NotedName = GameEngine.itemHandler.ItemList[i].itemName; + } + } + } + for (int i = 0; i < GameConstants.ITEM_LIMIT; i++) { + if (GameEngine.itemHandler.ItemList[i] != null) { + if (GameEngine.itemHandler.ItemList[i].itemName == NotedName) { + if (GameEngine.itemHandler.ItemList[i].itemDescription.startsWith("Swap this note at any bank for a") == false) { + NewID = GameEngine.itemHandler.ItemList[i].itemId; + break; + } + } + } + } + return NewID; + } + +} diff --git a/2006Redone Server/src/redone/game/items/ItemDefinitions.java b/2006Redone Server/src/com/rebotted/game/items/ItemDefinitions.java similarity index 94% rename from 2006Redone Server/src/redone/game/items/ItemDefinitions.java rename to 2006Redone Server/src/com/rebotted/game/items/ItemDefinitions.java index 8e50e0d7..8c5ee3d4 100644 --- a/2006Redone Server/src/redone/game/items/ItemDefinitions.java +++ b/2006Redone Server/src/com/rebotted/game/items/ItemDefinitions.java @@ -1,344 +1,344 @@ -package redone.game.items; - -import java.io.DataInputStream; -import java.io.FileInputStream; -import java.io.IOException; - -public class ItemDefinitions { - - - public static ItemDefinitions getDef()[] { - return definitions; - } - - public ItemDefinitions() { - name = null; - itemDescription = null; - shopValue = 0; - lowAlch = 0; - highAlch = 0; - isStackable = false; - isNoteable = false; - weight = 0; - bonuses = null; - stand = -1; - walk = -1; - run = -1; - turn90left = -1; - turn90right = -1; - turn180 = -1; - attack = -1; - block = -1; - id = -1; - } - - private static int id; - - public static int getId() { - return id; - } - - - /** - * Reads the definitions from the file. - */ - public static void read() { - try { - DataInputStream in = new DataInputStream(new FileInputStream("./data/data/itemdef.gsu")); - total = in.readShort(); - if(definitions == null) - definitions = new ItemDefinitions[total]; - for(int j = 0; j < total; j++) { - if(definitions[j] == null) { - definitions[j] = new ItemDefinitions(); - } - definitions[j].getValues(in); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * Reads the stream values. - * @param in - */ - private void getValues(DataInputStream in) { - try { - do { - int opcode = in.readByte(); - if(opcode == 0) - return; - if(opcode == 1) { - name = in.readUTF(); - } else if(opcode == 2) { - itemDescription = in.readUTF(); - } else if(opcode == 3) { - shopValue = in.readInt(); - } else if(opcode == 4) { - lowAlch = in.readInt(); - } else if(opcode == 5) { - highAlch = in.readInt(); - } else if(opcode == 6) { - isStackable = true; - } else if(opcode == 7) { - isNoteable = true; - } else if(opcode == 8) { - weight = in.readDouble(); - } else if(opcode == 9) { - int length = in.readShort(); - bonuses = new double[length]; - for (int index = 0; index < length; index++) { - bonuses[index] = in.readDouble(); - } - } else if(opcode == 10) { - stand = in.readShort(); - } else if(opcode == 11) { - walk = in.readShort(); - } else if(opcode == 12) { - run = in.readShort(); - } else if(opcode == 13) { - turn90left = in.readShort(); - } else if(opcode == 14) { - turn90right = in.readShort(); - } else if(opcode == 15) { - turn180 = in.readShort(); - } else if(opcode == 16) { - attack = in.readShort(); - } else if(opcode == 17) { - block = in.readShort(); - } else { - System.out.println("Unrecognized opcode: " + opcode); - } - } while(true); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * The item definition cache. - */ - public static ItemDefinitions definitions[]; - - /** - * The total items read from the definitions. - */ - public static int total; - - /** - * Returns the total item number. - */ - public static int getTotal() { - return total; - } - - /** - * The item name. - */ - public String name; - - /** - * Returns the name of the item. - * @return - */ - public static String getName(int id) { - return definitions[id].name; - } - - /** - * The item description. - */ - public String itemDescription; - - /** - * Returns the description of an item. - */ - public static String getDescription(int id) { - return definitions[id].itemDescription; - } - - /** - * The item price. - */ - public int shopValue; - - /** - * Returns the price of an item. - */ - public static int getPrice(int id) { - return definitions[id].shopValue; - } - - /** - * The low alch value. - */ - public int lowAlch; - - /** - * Returns the low alch value of an item. - */ - public static int getLow(int id) { - return definitions[id].lowAlch; - } - - /** - * The high alch value. - */ - public int highAlch; - - /** - * Returns the high alch value of an item. - */ - public static int getHigh(int id) { - return definitions[id].highAlch; - } - - /** - * Can the item be stacked? - */ - public boolean isStackable; - - /** - * Returns whether or not the item can be stacked. - */ - public static boolean canStack(int id) { - return definitions[id].isStackable; - } - - /** - * Can the item be noted? - */ - public boolean isNoteable; - - /** - * Returns whether or not the item can be noted. - */ - public static boolean canNote(int id) { - return definitions[id].isNoteable; - } - - /** - * The weight of an item. - */ - public double weight; - - /** - * Returns the weight of an item. - */ - public static double getWeight(int id) { - if (id >= 0 && id < definitions.length) - return definitions[id].weight; - - System.out.println("WARNING: id " + id + " doesn't have a definition!"); - return 0.0; - } - - /** - * The bonuses of an item. - */ - public double[] bonuses; - - /** - * Returns the array of bonuses for an item. - */ - public double[] getBonuses(int id) { - return definitions[id].bonuses; - } - - /** - * The stand animation of an item. - */ - public int stand; - - /** - * Returns the stand animation of an item. - */ - public static int getStand(int id) { - return definitions[id].stand; - } - - /** - * The walk animation of an item. - */ - public int walk; - - /** - * Returns the walk animation of an item. - */ - public static int getWalk(int id) { - return definitions[id].walk; - } - - /** - * The run animation of an item. - */ - public int run; - - /** - * Returns the run animation of an item. - */ - public static int getRun(int id) { - return definitions[id].run; - } - - /** - * The 90-degree left turn animation of an item. - */ - public int turn90left; - - /** - * Returns the 90-degree left turn animation of an item. - */ - public static int get90left(int id) { - return definitions[id].turn90left; - } - - /** - * The 90-degree right turn animation of an item. - */ - public int turn90right; - - /** - * Returns the 90-degree right turn animation of an item. - */ - public static int get90right(int id) { - return definitions[id].turn90right; - } - - /** - * The 180-degree turn animation of an item. - */ - public int turn180; - - /** - * Returns the 180-degree turn animation of an item. - */ - public static int get180(int id) { - return definitions[id].turn180; - } - - /** - * The attack animation of an item. - */ - public int attack; - - /** - * Returns the attack animation of an item - */ - public static int getAttack(int id) { - return definitions[id].attack; - } - - /** - * The block animation of an item. - */ - public int block; - - /** - * Returns the block animation of an item - */ - public static int getBlock(int id) { - return definitions[id].block; - } +package com.rebotted.game.items; + +import java.io.DataInputStream; +import java.io.FileInputStream; +import java.io.IOException; + +public class ItemDefinitions { + + + public static ItemDefinitions getDef()[] { + return definitions; + } + + public ItemDefinitions() { + name = null; + itemDescription = null; + shopValue = 0; + lowAlch = 0; + highAlch = 0; + isStackable = false; + isNoteable = false; + weight = 0; + bonuses = null; + stand = -1; + walk = -1; + run = -1; + turn90left = -1; + turn90right = -1; + turn180 = -1; + attack = -1; + block = -1; + id = -1; + } + + private static int id; + + public static int getId() { + return id; + } + + + /** + * Reads the definitions from the file. + */ + public static void read() { + try { + DataInputStream in = new DataInputStream(new FileInputStream("./data/data/itemdef.gsu")); + total = in.readShort(); + if(definitions == null) + definitions = new ItemDefinitions[total]; + for(int j = 0; j < total; j++) { + if(definitions[j] == null) { + definitions[j] = new ItemDefinitions(); + } + definitions[j].getValues(in); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * Reads the stream values. + * @param in + */ + private void getValues(DataInputStream in) { + try { + do { + int opcode = in.readByte(); + if(opcode == 0) + return; + if(opcode == 1) { + name = in.readUTF(); + } else if(opcode == 2) { + itemDescription = in.readUTF(); + } else if(opcode == 3) { + shopValue = in.readInt(); + } else if(opcode == 4) { + lowAlch = in.readInt(); + } else if(opcode == 5) { + highAlch = in.readInt(); + } else if(opcode == 6) { + isStackable = true; + } else if(opcode == 7) { + isNoteable = true; + } else if(opcode == 8) { + weight = in.readDouble(); + } else if(opcode == 9) { + int length = in.readShort(); + bonuses = new double[length]; + for (int index = 0; index < length; index++) { + bonuses[index] = in.readDouble(); + } + } else if(opcode == 10) { + stand = in.readShort(); + } else if(opcode == 11) { + walk = in.readShort(); + } else if(opcode == 12) { + run = in.readShort(); + } else if(opcode == 13) { + turn90left = in.readShort(); + } else if(opcode == 14) { + turn90right = in.readShort(); + } else if(opcode == 15) { + turn180 = in.readShort(); + } else if(opcode == 16) { + attack = in.readShort(); + } else if(opcode == 17) { + block = in.readShort(); + } else { + System.out.println("Unrecognized opcode: " + opcode); + } + } while(true); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * The item definition cache. + */ + public static ItemDefinitions definitions[]; + + /** + * The total items read from the definitions. + */ + public static int total; + + /** + * Returns the total item number. + */ + public static int getTotal() { + return total; + } + + /** + * The item name. + */ + public String name; + + /** + * Returns the name of the item. + * @return + */ + public static String getName(int id) { + return definitions[id].name; + } + + /** + * The item description. + */ + public String itemDescription; + + /** + * Returns the description of an item. + */ + public static String getDescription(int id) { + return definitions[id].itemDescription; + } + + /** + * The item price. + */ + public int shopValue; + + /** + * Returns the price of an item. + */ + public static int getPrice(int id) { + return definitions[id].shopValue; + } + + /** + * The low alch value. + */ + public int lowAlch; + + /** + * Returns the low alch value of an item. + */ + public static int getLow(int id) { + return definitions[id].lowAlch; + } + + /** + * The high alch value. + */ + public int highAlch; + + /** + * Returns the high alch value of an item. + */ + public static int getHigh(int id) { + return definitions[id].highAlch; + } + + /** + * Can the item be stacked? + */ + public boolean isStackable; + + /** + * Returns whether or not the item can be stacked. + */ + public static boolean canStack(int id) { + return definitions[id].isStackable; + } + + /** + * Can the item be noted? + */ + public boolean isNoteable; + + /** + * Returns whether or not the item can be noted. + */ + public static boolean canNote(int id) { + return definitions[id].isNoteable; + } + + /** + * The weight of an item. + */ + public double weight; + + /** + * Returns the weight of an item. + */ + public static double getWeight(int id) { + if (id >= 0 && id < definitions.length) + return definitions[id].weight; + + System.out.println("WARNING: id " + id + " doesn't have a definition!"); + return 0.0; + } + + /** + * The bonuses of an item. + */ + public double[] bonuses; + + /** + * Returns the array of bonuses for an item. + */ + public double[] getBonuses(int id) { + return definitions[id].bonuses; + } + + /** + * The stand animation of an item. + */ + public int stand; + + /** + * Returns the stand animation of an item. + */ + public static int getStand(int id) { + return definitions[id].stand; + } + + /** + * The walk animation of an item. + */ + public int walk; + + /** + * Returns the walk animation of an item. + */ + public static int getWalk(int id) { + return definitions[id].walk; + } + + /** + * The run animation of an item. + */ + public int run; + + /** + * Returns the run animation of an item. + */ + public static int getRun(int id) { + return definitions[id].run; + } + + /** + * The 90-degree left turn animation of an item. + */ + public int turn90left; + + /** + * Returns the 90-degree left turn animation of an item. + */ + public static int get90left(int id) { + return definitions[id].turn90left; + } + + /** + * The 90-degree right turn animation of an item. + */ + public int turn90right; + + /** + * Returns the 90-degree right turn animation of an item. + */ + public static int get90right(int id) { + return definitions[id].turn90right; + } + + /** + * The 180-degree turn animation of an item. + */ + public int turn180; + + /** + * Returns the 180-degree turn animation of an item. + */ + public static int get180(int id) { + return definitions[id].turn180; + } + + /** + * The attack animation of an item. + */ + public int attack; + + /** + * Returns the attack animation of an item + */ + public static int getAttack(int id) { + return definitions[id].attack; + } + + /** + * The block animation of an item. + */ + public int block; + + /** + * Returns the block animation of an item + */ + public static int getBlock(int id) { + return definitions[id].block; + } } \ No newline at end of file diff --git a/2006Redone Server/src/redone/game/items/ItemList.java b/2006Redone Server/src/com/rebotted/game/items/ItemList.java similarity index 86% rename from 2006Redone Server/src/redone/game/items/ItemList.java rename to 2006Redone Server/src/com/rebotted/game/items/ItemList.java index 5868fff9..a46fdbcc 100644 --- a/2006Redone Server/src/redone/game/items/ItemList.java +++ b/2006Redone Server/src/com/rebotted/game/items/ItemList.java @@ -1,16 +1,16 @@ -package redone.game.items; - -public class ItemList { - - public int itemId; - public String itemName; - public String itemDescription; - public double ShopValue; - public double LowAlch; - public double HighAlch; - public int[] Bonuses = new int[100]; - - public ItemList(int _itemId) { - itemId = _itemId; - } -} +package com.rebotted.game.items; + +public class ItemList { + + public int itemId; + public String itemName; + public String itemDescription; + public double ShopValue; + public double LowAlch; + public double HighAlch; + public int[] Bonuses = new int[100]; + + public ItemList(int _itemId) { + itemId = _itemId; + } +} diff --git a/2006Redone Server/src/com/rebotted/game/items/UseItem.java b/2006Redone Server/src/com/rebotted/game/items/UseItem.java new file mode 100644 index 00000000..2121e08a --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/items/UseItem.java @@ -0,0 +1,377 @@ +package com.rebotted.game.items; + +import com.rebotted.game.content.skills.cooking.Cooking; +import com.rebotted.game.content.skills.crafting.GemCutting; +import com.rebotted.game.content.skills.crafting.JewelryMaking; +import com.rebotted.game.content.skills.crafting.LeatherMaking; +import com.rebotted.game.content.skills.crafting.SoftClay; +import com.rebotted.game.content.skills.firemaking.Firemaking; +import com.rebotted.game.content.skills.fletching.ArrowMaking; +import com.rebotted.game.content.skills.fletching.LogCutting; +import com.rebotted.game.content.skills.fletching.LogCuttingInterface; +import com.rebotted.game.content.skills.fletching.Stringing; +import com.rebotted.game.content.skills.herblore.GrindingAction; +import com.rebotted.game.content.skills.herblore.Herblore; +import com.rebotted.game.items.impl.CapeDye; +import com.rebotted.game.items.impl.WeaponPoison; +import com.rebotted.game.npcs.impl.MilkCow; +import com.rebotted.game.objects.impl.CrystalChest; +import com.rebotted.game.objects.impl.FlourMill; +import com.rebotted.game.objects.impl.Webs; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +/** + * @author Ryan / Lmctruck30 + */ + +public class UseItem { + + public static void itemOnObject(Player c, int objectID, int objectX, int objectY, int itemId) { + final int goodPosXType1 = objectX - 5; + final int goodPosXType2 = objectX + 5; + final int goodPosYType1 = objectY - 5; + final int goodPosYType2 = objectY + 5; + if (c.absX >= goodPosXType1 && c.absX <= goodPosXType2 && c.absY >= goodPosYType1 && c.absY <= goodPosYType2) { + c.turnPlayerTo(objectX, objectY); + } else { + c.getPlayerAssistant().playerWalk(objectX, objectY); + } + if (!c.getItemAssistant().playerHasItem(itemId, 1)) { + return; + } + switch (objectID) { + case 733: + if (itemId == 946) { + Webs.slashWeb(c, objectID, objectX, objectY); + } + break; + case 8689: + if (c.milking == false) { + MilkCow.milk(c); + } + break; + case 2783: + c.getSmithingInt().showSmithInterface(itemId); + break; + case 2782: + if (c.doricQuest >= 3) { + c.getSmithingInt().showSmithInterface(itemId); + } else { + c.getPacketSender().sendMessage( + "You need to beat dorics quest to use his anvils"); + } + break; + case 879: + case 12279: + case 14868: + if (itemId == SoftClay.CLAY) { + SoftClay.makeClay(c); + } + break; + case 2714: + FlourMill.grainOnHopper(c, objectID, itemId); + break; + case 172: + if (itemId == CrystalChest.KEY) { + CrystalChest.searchChest(c, objectID, objectX, objectY); + } + break; + + case 364: + if (itemId == 1919) { + c.getItemAssistant().deleteItem(1919, 1); + c.getItemAssistant().addItem(1917, 1); + c.getPacketSender().sendMessage( + "You refill your beer glass."); + } + break; + + default: + if (c.playerRights == 3) { + Misc.println("Player At Object id: " + objectID + " objectX: " + + objectX + " objectY: " + objectY + " with Item id: " + + itemId); + } + break; + } + + } + + public static void ItemonItem(Player player, int itemUsed, int useWith) { + LogCuttingInterface.handleItemOnItem(player, itemUsed, useWith); + ArrowMaking.makeArrow(player, itemUsed, useWith); + Stringing.StringBow(player, itemUsed, useWith); + WeaponPoison.execute(player, itemUsed, useWith); + player.getGlassBlowing().ItemOnItem(itemUsed, useWith); + //CapeDye.execute(c, itemUsed, useWith); + if (ItemAssistant.getItemName(itemUsed).contains("(") + && ItemAssistant.getItemName(useWith).contains("(")) { + player.getPotMixing().mixPotion2(itemUsed, useWith); + } + GrindingAction.init(player, itemUsed, useWith); + CapeDye.dyeItem(player, itemUsed, useWith); + if (Herblore.isIngredient(itemUsed) || Herblore.isIngredient(useWith)) { + Herblore.setupPotion(player, itemUsed, useWith); + } + if (itemUsed == 6703 || useWith == 6703) { + player.getPTS().handlePotato(itemUsed, useWith); + } + if (itemUsed == 1755 || useWith == 1755) { + GemCutting.cutGem(player, itemUsed, useWith); + } + if (itemUsed == 1759 || useWith == 1759) { + JewelryMaking.stringAmulet(player, itemUsed, useWith); + } + if (itemUsed == 946 || useWith == 2862) { + LogCutting.makeShafts(player); + } + if (itemUsed == 2862 || useWith == 946) { + LogCutting.makeShafts(player); + } + if (itemUsed == 314 || useWith == 2864) { + LogCutting.flightedArrow(player); + } + if (itemUsed == 2864 || useWith == 314) { + LogCutting.flightedArrow(player); + } + if (itemUsed == 2861 || useWith == 2865) { + LogCutting.ogreArrow(player); + } + if (itemUsed == 2865 || useWith == 2861) { + LogCutting.ogreArrow(player); + } + if (itemUsed == 2859 || useWith == 1755) { + LogCutting.wolfBoneArrow(player); + } + if (itemUsed == 1755 || useWith == 2859) { + LogCutting.wolfBoneArrow(player); + } + if (itemUsed == 771 && useWith == 946 + && player.playerLevel[player.playerCrafting] > 30) { + player.getItemAssistant().deleteItem(771, 1); + player.getItemAssistant().addItem(772, 1); + } else if (player.playerLevel[player.playerCrafting] < 31 && itemUsed == 771 + && useWith == 946) { + player.getPacketSender().sendMessage( + "You need 31 crafting to make this."); + } + if (itemUsed == 946 && useWith == 771 + && player.playerLevel[player.playerCrafting] > 30) { + player.getItemAssistant().deleteItem(771, 1); + player.getItemAssistant().addItem(772, 1); + } else if (player.playerLevel[player.playerCrafting] < 31 && itemUsed == 946 + && useWith == 771) { + player.getPacketSender().sendMessage( + "You need 31 crafting to make this."); + } + if (useWith == 7051 && itemUsed == 590 || itemUsed == 590 + && useWith == 7051) { + player.getItemAssistant().deleteItem(7051, 1); + player.getItemAssistant().addItem(7053, 1); + } + int firemakingItems[] = {590, 7329, 7330, 7331}; + for (int i = 0; i < firemakingItems.length; i++) { + if (itemUsed == firemakingItems[i] || useWith == firemakingItems[i] && player.isFiremaking == false) { + Firemaking.attemptFire(player, itemUsed, useWith, player.absX, player.absY, false); + } else if (itemUsed == firemakingItems[i] || useWith == firemakingItems[i] && player.isFiremaking == true) { + player.getPacketSender().sendMessage("You can't do that, you are already firemaking."); + } + } + if (itemUsed == 1733 || useWith == 1733) { + LeatherMaking.craftLeatherDialogue(player, itemUsed, useWith); + } + if (itemUsed == 1573 && useWith == 327 || itemUsed == 327 && useWith == 1573) { + player.getItemAssistant().deleteItem(1573, 1); + player.getItemAssistant().deleteItem(327, 1); + player.getItemAssistant().addItem(1552, 1); + } + if (itemUsed == 38 && useWith == 590 || useWith == 38 + && itemUsed == 590) {// + player.getItemAssistant().addItem(32, 1); + player.getItemAssistant().deleteItem(38, 1); + } + if (itemUsed == 36 && useWith == 590 || useWith == 36 + && itemUsed == 590) { + player.getItemAssistant().addItem(33, 1); + player.getItemAssistant().deleteItem(36, 1); + } + if (itemUsed == 596 && useWith == 590 || useWith == 596 + && itemUsed == 590) { + player.getItemAssistant().addItem(594, 1); + player.getItemAssistant().deleteItem(596, 1); + } + if (itemUsed == 4537 && useWith == 590 || useWith == 4537 + && itemUsed == 590) { + player.getItemAssistant().addItem(4539, 1); + player.getItemAssistant().deleteItem(4537, 1); + } + if (itemUsed == 4548 && useWith == 590 || useWith == 4548 + && itemUsed == 590) { + player.getItemAssistant().addItem(4550, 1); + player.getItemAssistant().deleteItem(4548, 1); + } + if (itemUsed == 1095 && useWith == 2370 || itemUsed == 2370 + && useWith == 1095 && player.playerLevel[player.playerCrafting] > 43) {// chaps + player.getItemAssistant().deleteItem(2370, 1); + player.getItemAssistant().deleteItem(1095, 1); + player.getItemAssistant().addItem(1097, 1); + player.getPlayerAssistant().addSkillXP(42, player.playerCrafting); + } else if (itemUsed == 1095 && useWith == 2370 || itemUsed == 2370 && useWith == 1095 && player.playerLevel[player.playerCrafting] < 44) { + player.getPacketSender().sendMessage("You need 44 crafting to make this."); + } + if (itemUsed == 946 && useWith == 1963 || itemUsed == 1963 && useWith == 946) { + player.getItemAssistant().deleteItem(1963, 1); + player.getItemAssistant().addItem(3162, 1); + player.getPacketSender().sendMessage("You slice your banana."); + } + if (itemUsed == 946 && useWith == 1973 || itemUsed == 1973 && useWith == 946) { + player.getItemAssistant().deleteItem(1973, 1); + player.getItemAssistant().addItem(1975, 1); + player.getPacketSender().sendMessage("You slice your chocolate bar."); + } + if (itemUsed == 1129 && useWith == 2370 || itemUsed == 2370 && useWith == 1129 && player.playerLevel[player.playerCrafting] > 40) {// body + player.getItemAssistant().deleteItem(2370, 1); + player.getItemAssistant().deleteItem(1129, 1); + player.getItemAssistant().addItem(1133, 1); + player.getPlayerAssistant().addSkillXP(40, player.playerCrafting); + } else if (itemUsed == 1129 && useWith == 2370 || itemUsed == 2370 && useWith == 1129 && player.playerLevel[player.playerCrafting] < 41) { + player.getPacketSender().sendMessage("You need 41 crafting to make this."); + } + if (itemUsed == 4593 && useWith == 4591 || useWith == 4591 && itemUsed == 4593) { + player.getItemAssistant().deleteItem(4591, 1); + player.getItemAssistant().deleteItem(4593, 1); + player.getItemAssistant().addItem(4611, 1); + } + if (itemUsed == 985 && useWith == 987 || itemUsed == 987 && useWith == 985) { + player.getItemAssistant().deleteItem(985, 1); + player.getItemAssistant().deleteItem(987, 1); + player.getItemAssistant().addItem(989, 1); + } + if (itemUsed == 2313 && useWith == 1953 || itemUsed == 1953 && useWith == 2313) { + player.getItemAssistant().deleteItem(2313, 1); + player.getItemAssistant().deleteItem(1953, 1); + player.getItemAssistant().addItem(2315, 1); + } + + /** + * Pizza Creation + */ + if (itemUsed == 1982 && useWith == 2283 || itemUsed == 2283 + && useWith == 1982) { + Cooking.pastryCreation(player, 1982, 2283, 2285, ""); + } + if (itemUsed == 2285 && useWith == 1985 || itemUsed == 1985 + && useWith == 2285) { + Cooking.pastryCreation(player, 2285, 1985, 2287, ""); + } + if (itemUsed == 2140 && useWith == 2289 || itemUsed == 2289 + && useWith == 2140) { + Cooking.cookingAddon(player, 2140, 2289, 2293, 45, 26); + } + if (itemUsed == 319 && useWith == 2289 || itemUsed == 2289 + && useWith == 319) { + Cooking.cookingAddon(player, 319, 2289, 2297, 55, 39); + } + if (itemUsed == 2116 && useWith == 2289 || itemUsed == 2289 + && useWith == 2116) { + Cooking.cookingAddon(player, 2116, 2289, 2301, 65, 45); + } + /** + * Pie Making + */ + if (itemUsed == 2313 && useWith == 1953 || itemUsed == 1953 + && useWith == 2313) { + Cooking.pastryCreation(player, 2313, 1953, 2315, + "You put the pastry dough into the pie dish to make a pie shell."); + } + if (itemUsed == 2315 && useWith == 1955 || itemUsed == 1955 + && useWith == 2315) { + Cooking.pastryCreation(player, 2315, 1955, 2317, + "You fill the pie with cooking apple."); + } + if (itemUsed == 2315 && useWith == 5504 || itemUsed == 5504 + && useWith == 2315) { + Cooking.pastryCreation(player, 2315, 5504, 7212, ""); + } + if (itemUsed == 7212 && useWith == 5982 || itemUsed == 5982 + && useWith == 7212) { + Cooking.pastryCreation(player, 7212, 5982, 7214, ""); + } + if (itemUsed == 1955 && useWith == 7214 || itemUsed == 7214 + && useWith == 1955) { + Cooking.pastryCreation(player, 1955, 7214, 7216, ""); + } + if (itemUsed == 2315 && useWith == 1951 || itemUsed == 1951 && useWith == 2315) { + Cooking.pastryCreation(player, 1951, 2315, 2321, ""); + } + /** + * Pitta/ Ugthanki Kebab + */ + if (itemUsed == 1865 && useWith == 1881 || itemUsed == 1881 + && useWith == 1865) { + Cooking.cookingAddon(player, 1865, 1881, 1883, 0, 40); + } + + if (player.tutorialProgress < 36) { + if (itemUsed == 1929 && useWith == 1933 || itemUsed == 1933 && useWith == 1929) { + player.getItemAssistant().deleteItem(1929, 1); + player.getItemAssistant().deleteItem(1933, 1); + player.getItemAssistant().addItem(2307, 1); + player.getItemAssistant().addItem(1925, 1); + player.getItemAssistant().addItem(1931, 1); + if (player.tutorialProgress == 8) { + player.getDialogueHandler().sendDialogues(3026, -1); + } + } + } + + if (player.tutorialProgress > 35) { + if (itemUsed == 1929 && useWith == 1933 || itemUsed == 1933 && useWith == 1929) { + player.getDialogueHandler().sendDialogues(3204, -1); + } + } + + if (player.tutorialProgress > 35) { + if (itemUsed == 1933 && useWith == 1937 || itemUsed == 1937 && useWith == 1933) { + player.getDialogueHandler().sendDialogues(3205, -1); + } + } + + if (itemUsed == 1987 && useWith == 1937 || itemUsed == 1937 + && useWith == 1987) { + if (player.playerLevel[player.playerCooking] >= 35) { + player.getItemAssistant().addItem(1993, 1); + player.getItemAssistant().deleteItem(1937, 1); + player.getItemAssistant().deleteItem(1987, 1); + player.getPlayerAssistant().addSkillXP(200, player.playerCooking); + } else { + player.getPacketSender().sendMessage( + "You need grapes and a jug of water to make wine."); + } + } + + switch (itemUsed) { + + default: + if (player.playerRights == 3) { + Misc.println("Player used Item id: " + itemUsed + + " with Item id: " + useWith); + } + break; + } + } + + public static void itemOnNpc(final Player c, final int itemId, final int npcId, final int slot) { + switch (itemId) { + + default: + if (c.playerRights == 3) { + Misc.println("Player used Item id: " + itemId + + " with Npc id: " + npcId + " With Slot : " + slot); + } + break; + } + + } +} diff --git a/2006Redone Server/src/redone/game/items/impl/Weight.java b/2006Redone Server/src/com/rebotted/game/items/Weight.java similarity index 53% rename from 2006Redone Server/src/redone/game/items/impl/Weight.java rename to 2006Redone Server/src/com/rebotted/game/items/Weight.java index 8e11df56..cb848b41 100644 --- a/2006Redone Server/src/redone/game/items/impl/Weight.java +++ b/2006Redone Server/src/com/rebotted/game/items/Weight.java @@ -1,82 +1,80 @@ -package redone.game.items.impl; - -import redone.Server; -import redone.game.items.ItemDefinitions; -import redone.game.items.ItemList; -import redone.game.players.Client; - -/** - * @author somedude, credits to Galkon for item weights - */ -public class Weight extends ItemDefinitions { - - /** - * Calculates the weight when doing actions - * - * @param c - * @param item - * @param action - * - deleteitem, additem, equip, unequip. - */ - public static void calcWeight(Client c, int item, String action) { - if (action.equalsIgnoreCase("deleteitem")) { - if (getWeight(item) > 99.20) { - c.weight -= getWeight(item) / 100; - if (c.weight < 0) { - c.weight = 0.0; - } - c.getActionSender().writeWeight((int) c.weight); - return; - } - c.weight -= getWeight(item) / 10; - if (c.weight < 0) { - c.weight = 0.0; - } - c.getActionSender().writeWeight((int) c.weight); - } else if (action.equalsIgnoreCase("additem")) { - if (getWeight(item) > 99.20) { - c.weight += getWeight(item) / 100; - c.getActionSender().writeWeight((int) c.weight); - return; - } - c.weight += getWeight(item) / 10; - c.getActionSender().writeWeight((int) c.weight); - } - } - - /** - * Updates the weight for inventory and equipment. - * - * @param c - */ - public static void updateWeight(Client c) { - if (c != null) { - c.getActionSender().writeWeight((int) c.weight); - // Inventory items - for (int playerItem : c.playerItems) { - if (playerItem > -1) {// inventory - for (ItemList i1 : Server.itemHandler.ItemList) { - if (i1 != null) { - if (i1.itemId == playerItem) { - calcWeight(c, playerItem, "addItem"); - } - } - } - } - } - // Equiped items - for (int element : c.playerEquipment) { - if (element > -1) {// equipment - for (ItemList i1 : Server.itemHandler.ItemList) { - if (i1 != null) { - if (i1.itemId == element) { - calcWeight(c, element, "addItem"); - } - } - } - } - } - } - c.getActionSender().writeWeight((int) c.weight); - } -} +package com.rebotted.game.items; + +import com.rebotted.GameEngine; +import com.rebotted.game.players.Player; + +/** + * @author somedude, credits to Galkon for item weights + */ +public class Weight extends ItemDefinitions { + + /** + * Calculates the weight when doing actions + * + * @param c + * @param item + * @param action + * - deleteitem, additem, equip, unequip. + */ + public static void calcWeight(Player c, int item, String action) { + if (action.equalsIgnoreCase("deleteitem")) { + if (getWeight(item) > 99.20) { + c.weight -= getWeight(item) / 100; + if (c.weight < 0) { + c.weight = 0.0; + } + c.getPacketSender().writeWeight((int) c.weight); + return; + } + c.weight -= getWeight(item) / 10; + if (c.weight < 0) { + c.weight = 0.0; + } + c.getPacketSender().writeWeight((int) c.weight); + } else if (action.equalsIgnoreCase("additem")) { + if (getWeight(item) > 99.20) { + c.weight += getWeight(item) / 100; + c.getPacketSender().writeWeight((int) c.weight); + return; + } + c.weight += getWeight(item) / 10; + c.getPacketSender().writeWeight((int) c.weight); + } + } + + /** + * Updates the weight for inventory and equipment. + * + * @param player + */ + public static void updateWeight(Player player) { + if (player != null) { + player.getPacketSender().writeWeight((int) player.weight); + // Inventory items + for (int playerItem : player.playerItems) { + if (playerItem > -1) {// inventory + for (ItemList i1 : GameEngine.itemHandler.ItemList) { + if (i1 != null) { + if (i1.itemId == playerItem) { + calcWeight(player, playerItem, "addItem"); + } + } + } + } + } + // Equiped items + for (int element : player.playerEquipment) { + if (element > -1) {// equipment + for (ItemList i1 : GameEngine.itemHandler.ItemList) { + if (i1 != null) { + if (i1.itemId == element) { + calcWeight(player, element, "addItem"); + } + } + } + } + } + } + player.getPacketSender().writeWeight((int) player.weight); + } +} diff --git a/2006Redone Server/src/com/rebotted/game/items/impl/CapeDye.java b/2006Redone Server/src/com/rebotted/game/items/impl/CapeDye.java new file mode 100644 index 00000000..1e0af200 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/items/impl/CapeDye.java @@ -0,0 +1,76 @@ +package com.rebotted.game.items.impl; + +import com.rebotted.game.items.Item; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Player; + +/** + * Dye.java + * @author Andrew (Mr Extremez) + */ + +public enum CapeDye { + + RED_CAPE(1763, 1007), + BLUE_CAPE(1767, 1021), + GREEN_CAPE(1771, 1027), + PINK_CAPE(6955, 6959), + ORANGE_CAPE(1769, 1031), + YELLOW_CAPE(1765, 1023), + PURPLE_CAPE(1773, 1029); + + int reward, itemUsed; + + private CapeDye(int itemUsed, int reward) { + this.itemUsed = itemUsed; + this.reward = reward; + } + + private int getItemUsed() { + return itemUsed; + } + + private int getReward() { + return reward; + } + + //blue+yellow =green + //red+blue = purple + + public static final int[][] MAIL_DATA = { + {1769, 288, 286}, + {1769, 287, 286}, + {1767, 288, 287}, + {1767, 286, 287}, + {1767, 1765, 1771}, + {1763, 1767, 1773} + }; + + public static boolean blockDye(Player player, CapeDye dye, int itemUsed, int useWith) { + if (itemUsed == dye.getItemUsed() && ItemAssistant.getItemName(useWith).equalsIgnoreCase("Cape") && Item.itemIsNote[useWith]) { + player.getPacketSender().sendMessage("You can't dye a noted cape."); + return true; + } else if (itemUsed == dye.getItemUsed() && ItemAssistant.getItemName(useWith).equalsIgnoreCase("Cape") && useWith == dye.getReward() && !Item.itemIsNote[useWith]) { + player.getPacketSender().sendMessage("That cape is already that color."); + return true; + } else if (itemUsed == dye.getItemUsed() && !ItemAssistant.getItemName(useWith).equalsIgnoreCase("Cape")) { + return true; + } + return false; + } + + public static void dyeItem(Player player, int itemUsed, int useWith) { + for (CapeDye cape: CapeDye.values()) { + if (blockDye(player, cape, itemUsed, useWith)) { + return; + } + if (itemUsed == cape.getItemUsed() && ItemAssistant.getItemName(useWith).equalsIgnoreCase("Cape") && !Item.itemIsNote[useWith] && useWith != cape.getReward()) { + player.getItemAssistant().deleteItem(itemUsed, 1); + player.getItemAssistant().deleteItem(useWith, 1); + player.getItemAssistant().addItem(cape.getReward(), 1); + player.getPlayerAssistant().addSkillXP(2.5, player.playerCrafting); + } + } + } + +} \ No newline at end of file diff --git a/2006Redone Server/src/com/rebotted/game/items/impl/ExperienceLamp.java b/2006Redone Server/src/com/rebotted/game/items/impl/ExperienceLamp.java new file mode 100644 index 00000000..40b05e4f --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/items/impl/ExperienceLamp.java @@ -0,0 +1,162 @@ +package com.rebotted.game.items.impl; + +import com.rebotted.game.players.Player; + +public class ExperienceLamp { + + public static int LAMP = 4447, LAMP_2 = 2528, SKILL_MENU = 2808, + skill = -1; + + /** + * Handles the actionbuttons + * + * @param player + * @param id + */ + public static void buttons(Player player, int id) { + switch (id) { + case 10252: + skill = 0; + player.getPacketSender().sendMessage("You select Attack."); + break; + case 10253: + skill = 2; + player.getPacketSender().sendMessage("You select Strength."); + break; + case 10254: + skill = 4; + player.getPacketSender().sendMessage("You select Ranged."); + break; + case 10255: + skill = 6; + player.getPacketSender().sendMessage("You select Magic."); + break; + case 11000: + skill = 1; + player.getPacketSender().sendMessage("You select Defence."); + break; + case 11001: + skill = 3; + player.getPacketSender().sendMessage("You select Hitpoints."); + break; + case 11002: + skill = 5; + player.getPacketSender().sendMessage("You select Prayer."); + break; + case 11003: + skill = 16; + player.getPacketSender().sendMessage("You select Agility."); + break; + case 11004: + skill = 15; + player.getPacketSender().sendMessage("You select Herblore."); + break; + case 11005: + skill = 17; + player.getPacketSender().sendMessage("You select Thieving."); + break; + case 11006: + skill = 12; + player.getPacketSender().sendMessage("You select Crafting."); + break; + case 11007: + skill = 20; + player.getPacketSender().sendMessage("You select Runecrafting."); + break; + case 47002: + skill = 18; + player.getPacketSender().sendMessage("You select Slayer."); + break; + case 54090: + skill = -1; + player.getPacketSender().sendMessage("You can't select this skill."); + break; + case 11008: + skill = 14; + player.getPacketSender().sendMessage("You select Mining."); + break; + case 11009: + skill = 13; + player.getPacketSender().sendMessage("You select Smithing."); + break; + case 11010: + skill = 10; + player.getPacketSender().sendMessage("You select Fishing."); + break; + case 11011: + skill = 7; + player.getPacketSender().sendMessage("You select Cooking."); + break; + case 11012: + skill = 11; + player.getPacketSender().sendMessage("You select Firemaking."); + break; + case 11013: + skill = 8; + player.getPacketSender().sendMessage("You select Woodcutting."); + break; + case 11014: + skill = 9; + player.getPacketSender().sendMessage("You select Fletching."); + break; + case 11015: + if (skill == -1) { + player.getPacketSender().closeAllWindows(); + } + if (player.getItemAssistant().playerHasItem(LAMP, 1) && skill > -1) {// normal + // lamp + int xp = player.getPlayerAssistant() + .getLevelForXP(player.playerXP[skill]) * 10; + player.getPlayerAssistant().addSkillXP(xp, skill); + player.getItemAssistant().deleteItem(LAMP, 1); + player.getPacketSender().sendMessage( + "@blu@Your wish has been granted!"); + player.getPacketSender().sendMessage( + "@blu@You have been awarded " + xp + + " experience in your selected skill!"); + player.getPacketSender().closeAllWindows(); + } else if (player.getItemAssistant().playerHasItem(LAMP_2, 1) + && skill > -1) {// vote + // reward + player.getItemAssistant().deleteItem(LAMP_2, 1); + player.getPacketSender().sendMessage( + "@blu@Your wish has been granted!"); + addExp(player); + player.getPacketSender().closeAllWindows(); + } + break; + } + } + + public static void addExp(Player c) { + if (c.getPlayerAssistant().getLevelForXP(c.playerXP[skill]) < 20) { + c.getPlayerAssistant().addSkillXP(1000, skill); + c.getPacketSender() + .sendMessage( + "@blu@You have been awarded 1000 experience in your selected skill!"); + } else if (c.getPlayerAssistant().getLevelForXP(c.playerXP[skill]) > 19 + && c.getPlayerAssistant().getLevelForXP(c.playerXP[skill]) < 35) { + c.getPlayerAssistant().addSkillXP(2000, skill); + c.getPacketSender() + .sendMessage( + "@blu@You have been awarded 2000 experience in your selected skill!"); + } else { + c.getPlayerAssistant().addSkillXP(3000, skill); + c.getPacketSender() + .sendMessage( + "@blu@You have been awarded 3000 experience in your selected skill!"); + } + } + + /** + * Rubbing the lamp. ClickItem + * + * @param c + * @param id + */ + public static void rubLamp(Player c, int id) { + c.getPacketSender().sendMessage("You rub the lamp."); + c.getPacketSender().showInterface(SKILL_MENU); + } + +} diff --git a/2006Redone Server/src/redone/game/items/impl/Fillables.java b/2006Redone Server/src/com/rebotted/game/items/impl/Fillables.java similarity index 88% rename from 2006Redone Server/src/redone/game/items/impl/Fillables.java rename to 2006Redone Server/src/com/rebotted/game/items/impl/Fillables.java index 62a18755..3026ae16 100644 --- a/2006Redone Server/src/redone/game/items/impl/Fillables.java +++ b/2006Redone Server/src/com/rebotted/game/items/impl/Fillables.java @@ -1,115 +1,114 @@ -package redone.game.items.impl; - -public class Fillables { - - public static boolean canFill(int id, int oid) { - return counterpart(id) != -1 && !getObjectName(oid).equals("Error"); - } - - public static String fillMessage(int id, int oid) { - return "You fill the " + getItemName(id) + " from the " - + getObjectName(oid) + "."; - } - - public static int counterpart(int id) { - switch (id) { - case 1925: // bucket - return 1929; - case 1935: // jug - return 1937; - case 229: // vial - return 227; - case 1923: // bowl - return 1921; - case 1980: // cup - return 4458; - case 5331: // watering can - case 5333: - case 5334: - case 5335: - case 5336: - case 5337: - case 5338: - case 5339: - return 5340; - case 1831: // waterskin - case 1825: - case 1827: - case 1829: - return 1823; - case 6667: - return 6668; - } - return -1; - } - - public static String getItemName(int id) { - switch (id) { - case 1925: - return "bucket"; - case 1935: - return "jug"; - case 229: - return "vial"; - case 1923: - return "bowl"; - case 1980: - return "cup"; - case 5331: // watering can - case 5333: - case 5334: - case 5335: - case 5336: - case 5337: - case 5338: - case 5339: - return "watering can"; - case 1831: - case 1825: - case 1827: - case 1829: - return "waterskin"; - case 6667: - return "fishbowl"; - } - return "There was a problem with your current action, please report this to Mod Andrew."; - } - - public static String getObjectName(int id) { - switch (id) { - case 873: - case 874: - case 4063: - case 6151: - case 14917: - return "sink"; - case 14918: - return "washbin"; - case 884: - case 878: - case 3359: - case 3485: - case 4004: - case 4005: - case 5086: - case 6097: - return "well"; - case 2654: - return "Sinclair Family fountain"; - case 12809: - return "Fairy fountain"; - case 11661: - case 3460: - case 6827: - return "waterpump"; - case 879: - case 11759: - case 153: - case 880: - case 6232: - case 2864: - return "fountain"; - } - return "Error"; - } -} +package com.rebotted.game.items.impl; + +public class Fillables { + + public static boolean canFill(int id, int oid) { + return counterpart(id) != -1 && !getObjectName(oid).equals("Error"); + } + + public static String fillMessage(int id, int oid) { + return "You fill the " + getItemName(id) + " from the " + getObjectName(oid) + "."; + } + + public static int counterpart(int id) { + switch (id) { + case 1925: // bucket + return 1929; + case 1935: // jug + return 1937; + case 229: // vial + return 227; + case 1923: // bowl + return 1921; + case 1980: // cup + return 4458; + case 5331: // watering can + case 5333: + case 5334: + case 5335: + case 5336: + case 5337: + case 5338: + case 5339: + return 5340; + case 1831: // waterskin + case 1825: + case 1827: + case 1829: + return 1823; + case 6667: + return 6668; + } + return -1; + } + + public static String getItemName(int id) { + switch (id) { + case 1925: + return "bucket"; + case 1935: + return "jug"; + case 229: + return "vial"; + case 1923: + return "bowl"; + case 1980: + return "cup"; + case 5331: // watering can + case 5333: + case 5334: + case 5335: + case 5336: + case 5337: + case 5338: + case 5339: + return "watering can"; + case 1831: + case 1825: + case 1827: + case 1829: + return "waterskin"; + case 6667: + return "fishbowl"; + } + return "There was a problem with your current action, please report this to Mod Andrew."; + } + + public static String getObjectName(int id) { + switch (id) { + case 873: + case 874: + case 4063: + case 6151: + case 14917: + return "sink"; + case 14918: + return "washbin"; + case 884: + case 878: + case 3359: + case 3485: + case 4004: + case 4005: + case 5086: + case 6097: + return "well"; + case 2654: + return "Sinclair Family fountain"; + case 12809: + return "Fairy fountain"; + case 11661: + case 3460: + case 6827: + return "waterpump"; + case 879: + case 11759: + case 153: + case 880: + case 6232: + case 2864: + return "fountain"; + } + return "Error"; + } +} diff --git a/2006Redone Server/src/redone/game/items/impl/Flowers.java b/2006Redone Server/src/com/rebotted/game/items/impl/Flowers.java similarity index 70% rename from 2006Redone Server/src/redone/game/items/impl/Flowers.java rename to 2006Redone Server/src/com/rebotted/game/items/impl/Flowers.java index 49841e31..332223b3 100644 --- a/2006Redone Server/src/redone/game/items/impl/Flowers.java +++ b/2006Redone Server/src/com/rebotted/game/items/impl/Flowers.java @@ -1,184 +1,185 @@ -package redone.game.items.impl; - -import redone.Server; -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.players.Client; -import redone.util.Misc; -import redone.world.clip.Region; - -/** - * @author Faris - */ -public class Flowers { - - /** - * Constants & boolean checker - */ - private final int FLOWER_IDS[] = { 2980, 2981, 2982, 2983, 2984, 2985, - 2986, 2987, 2988 }; - - /** - * Checks weather user is currently interacting with flower - */ - public boolean clientFlowering = false; - - /** - * Stores temporary variables for each new instance of flower planted - */ - public static int lastObject; - - /** - * algorithm decides which flower to give. - * - * @param flower - * @return - */ - private static int flowerDecoder(final int flower) { - int modifier = flower - 2980; - return modifier + 2460; - } - - /** - * Constructor creates the place flower event - * - * @param c - */ - public Flowers(final Client c) { - if (c.checkBusy()) { - return; - } - c.setBusy(true); - executeAction(c); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - c.setBusy(false); - container.stop(); - } - @Override - public void stop() { - - } - }, 1); - } - - /** - * Main block, Spawns the object & starts animation. Moves player to the - * side Clipped - * - * @param c - */ - private void executeAction(final Client c) { - final int newFlower = getRandom(); - final int[] coords = new int[2]; - coords[0] = c.absX; - coords[1] = c.absY; - updateConstants(newFlower, c); - Server.objectHandler.createAnObject(c, newFlower, coords[0], coords[1], - 1); - deleteSeeds(c); - sendOptions(c); - clientFlowering = true; - moveOneStep(c); - c.turnPlayerTo(coords[0], coords[1]); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - Server.objectHandler.createAnObject(c, -1, coords[0], coords[1], 1); - c.getActionSender().sendMessage( "Your flower is no longer flourishing."); - container.stop(); - } - - @Override - public void stop() { - - } - - }, 10); - } - - /** - * Handles movement direction. - * - * @param c - */ - private static void moveOneStep(Client c) { - if (Region.getClipping(c.getX() - 1, c.getY(), c.heightLevel, -1, 0)) { - c.getPlayerAssistant().walkTo(-1, 0); - } else if (Region.getClipping(c.getX() + 1, c.getY(), c.heightLevel, 1, - 0)) { - c.getPlayerAssistant().walkTo(1, 0); - } else if (Region.getClipping(c.getX(), c.getY() - 1, c.heightLevel, 0, - -1)) { - c.getPlayerAssistant().walkTo(0, -1); - } else if (Region.getClipping(c.getX(), c.getY() + 1, c.heightLevel, 0, - 1)) { - c.getPlayerAssistant().walkTo(0, 1); - } - } - - /** - * Selects a random flower ID - * - * @return - */ - private int getRandom() { - return FLOWER_IDS[Misc.random(FLOWER_IDS.length - 1)]; - } - - /** - * Sends the client an option to handle flowers - * - * @param c - */ - private void sendOptions(Client c) { - c.getDialogueHandler().sendOption2("Leave Flowers", "Harvest Flowers"); - } - - /** - * Removes the seeds from invent - * - * @param c - */ - private static void deleteSeeds(Client c) { - c.getItemAssistant().deleteItem(299, 1); - } - - private void updateConstants(int objectType, Client c) { - lastObject = objectType; - } - - /** - * Method harvests flower from ground - * - * @param c - * @param object - * @param oX - * @param oY - */ - public static void harvestFlower(Client c, int object) { - c.getItemAssistant().addItem(flowerDecoder(object), 1); - c.getActionSender().sendMessage("You receive a random flower."); - c.startAnimation(827); - // c.getPA().checkObjectSpawn(c,-1, c.getX()+1, c.getY(), 1, 10); - // c.getPA().object(c,-1, c.getX()+1, c.getY(), 1, 10); - Server.objectHandler.createAnObject(c, -1, c.getX() + 1, c.getY(), 1); - c.turnPlayerTo(c.getX() + 1, c.getY()); - } - - /** - * Sends the option action - * - * @param option - */ - public void handleOptions(int option, Client c) { - if (option == 0) { - return; - } else { - harvestFlower(c, lastObject); - } - clientFlowering = false; - } -} +package com.rebotted.game.items.impl; + +import com.rebotted.GameEngine; +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; +import com.rebotted.world.clip.Region; + +/** + * @author Faris + */ + +public class Flowers { + + /** + * Constants & boolean checker + */ + private final int FLOWER_IDS[] = { 2980, 2981, 2982, 2983, 2984, 2985, + 2986, 2987, 2988 }; + + /** + * Checks weather user is currently interacting with flower + */ + public boolean clientFlowering = false; + + /** + * Stores temporary variables for each new instance of flower planted + */ + public static int lastObject; + + /** + * algorithm decides which flower to give. + * + * @param flower + * @return + */ + private static int flowerDecoder(final int flower) { + int modifier = flower - 2980; + return modifier + 2460; + } + + /** + * Constructor creates the place flower event + * + * @param c + */ + public Flowers(final Player c) { + if (c.checkBusy()) { + return; + } + c.setBusy(true); + executeAction(c); + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + c.setBusy(false); + container.stop(); + } + @Override + public void stop() { + + } + }, 1); + } + + /** + * Main block, Spawns the object & starts animation. Moves player to the + * side Clipped + * + * @param c + */ + private void executeAction(final Player c) { + final int newFlower = getRandom(); + final int[] coords = new int[2]; + coords[0] = c.absX; + coords[1] = c.absY; + updateConstants(newFlower, c); + GameEngine.objectHandler.createAnObject(c, newFlower, coords[0], coords[1], + 1); + deleteSeeds(c); + sendOptions(c); + clientFlowering = true; + moveOneStep(c); + c.turnPlayerTo(coords[0], coords[1]); + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + GameEngine.objectHandler.createAnObject(c, -1, coords[0], coords[1], 1); + c.getPacketSender().sendMessage( "Your flower is no longer flourishing."); + container.stop(); + } + + @Override + public void stop() { + + } + + }, 10); + } + + /** + * Handles movement direction. + * + * @param c + */ + private static void moveOneStep(Player c) { + if (Region.getClipping(c.getX() - 1, c.getY(), c.heightLevel, -1, 0)) { + c.getPlayerAssistant().walkTo(-1, 0); + } else if (Region.getClipping(c.getX() + 1, c.getY(), c.heightLevel, 1, + 0)) { + c.getPlayerAssistant().walkTo(1, 0); + } else if (Region.getClipping(c.getX(), c.getY() - 1, c.heightLevel, 0, + -1)) { + c.getPlayerAssistant().walkTo(0, -1); + } else if (Region.getClipping(c.getX(), c.getY() + 1, c.heightLevel, 0, + 1)) { + c.getPlayerAssistant().walkTo(0, 1); + } + } + + /** + * Selects a random flower ID + * + * @return + */ + private int getRandom() { + return FLOWER_IDS[Misc.random(FLOWER_IDS.length - 1)]; + } + + /** + * Sends the client an option to handle flowers + * + * @param c + */ + private void sendOptions(Player c) { + c.getDialogueHandler().sendOption2("Leave Flowers", "Harvest Flowers"); + } + + /** + * Removes the seeds from invent + * + * @param c + */ + private static void deleteSeeds(Player c) { + c.getItemAssistant().deleteItem(299, 1); + } + + private void updateConstants(int objectType, Player c) { + lastObject = objectType; + } + + /** + * Method harvests flower from ground + * + * @param player + * @param object + * @param oX + * @param oY + */ + public static void harvestFlower(Player player, int object) { + player.getItemAssistant().addItem(flowerDecoder(object), 1); + player.getPacketSender().sendMessage("You receive a random flower."); + player.startAnimation(827); + // c.getPA().checkObjectSpawn(c,-1, c.getX()+1, c.getY(), 1, 10); + // c.getPA().object(c,-1, c.getX()+1, c.getY(), 1, 10); + GameEngine.objectHandler.createAnObject(player, -1, player.getX() + 1, player.getY(), 1); + player.turnPlayerTo(player.getX() + 1, player.getY()); + } + + /** + * Sends the option action + * + * @param option + */ + public void handleOptions(int option, Player c) { + if (option == 0) { + return; + } else { + harvestFlower(c, lastObject); + } + clientFlowering = false; + } +} diff --git a/2006Redone Server/src/redone/game/items/impl/HandleEmpty.java b/2006Redone Server/src/com/rebotted/game/items/impl/HandleEmpty.java similarity index 57% rename from 2006Redone Server/src/redone/game/items/impl/HandleEmpty.java rename to 2006Redone Server/src/com/rebotted/game/items/impl/HandleEmpty.java index 407a8443..0404aa76 100644 --- a/2006Redone Server/src/redone/game/items/impl/HandleEmpty.java +++ b/2006Redone Server/src/com/rebotted/game/items/impl/HandleEmpty.java @@ -1,53 +1,52 @@ -package redone.game.items.impl; - -import redone.game.content.music.sound.SoundList; -import redone.game.items.ItemAssistant; -import redone.game.players.Client; - -/** - * @author Genesis - */ - -public class HandleEmpty { - - public static boolean canEmpty(Client c, int id) { - return filledToEmpty(c, id) != -1; - } - - public static int filledToEmpty(Client c, int id) { - String itemName = ItemAssistant.getItemName(id); - if (!itemName.contains("Ring") && !itemName.contains("necklace")) { - if (itemName.contains("(3)") || itemName.contains("(4)") || itemName.contains("(2)") || itemName.contains("(1)") || itemName.contains("Weapon poison")) { - if (id != 1712 && id != 1710 && id != 1708 && id != 1706) { - c.getItemAssistant().deleteItem(id, - c.getItemAssistant().getItemSlot(id), 1); - c.getItemAssistant().addItem(229, 1); - c.getActionSender().sendMessage("You empty the vial."); - } - } - } - switch (id) { - case 1937: // Jugs - case 1989: - case 1991: - case 1993: - case 3729: - return 1935; - case 227: // Vial of Water - return 229; - case 1927: // Buckets - case 1929: - return 1925; - } - return -1; - } - - public static void handleEmptyItem(Client c, int itemId, int giveItem) { - final String name = ItemAssistant.getItemName(itemId); - c.getActionSender().sendMessage("You empty your " + name + "."); - c.getItemAssistant().deleteItem(itemId, 1); - c.getItemAssistant().addItem(giveItem, 1); - c.getActionSender().sendSound(SoundList.EMPTY, 100, 0); - } - -} +package com.rebotted.game.items.impl; + +import com.rebotted.game.content.music.sound.SoundList; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Player; + +/** + * @author Genesis + */ + +public class HandleEmpty { + + public static boolean canEmpty(Player c, int id) { + return filledToEmpty(c, id) != -1; + } + + public static int filledToEmpty(Player c, int id) { + String itemName = ItemAssistant.getItemName(id); + if (!itemName.contains("Ring") && !itemName.contains("necklace")) { + if (itemName.contains("(3)") || itemName.contains("(4)") || itemName.contains("(2)") || itemName.contains("(1)") || itemName.contains("Weapon poison")) { + if (id != 1712 && id != 1710 && id != 1708 && id != 1706) { + c.getItemAssistant().deleteItem(id, c.getItemAssistant().getItemSlot(id), 1); + c.getItemAssistant().addItem(229, 1); + c.getPacketSender().sendMessage("You empty the vial."); + } + } + } + switch (id) { + case 1937: // Jugs + case 1989: + case 1991: + case 1993: + case 3729: + return 1935; + case 227: // Vial of Water + return 229; + case 1927: // Buckets + case 1929: + return 1925; + } + return -1; + } + + public static void handleEmptyItem(Player c, int itemId, int giveItem) { + final String name = ItemAssistant.getItemName(itemId); + c.getPacketSender().sendMessage("You empty your " + name + "."); + c.getItemAssistant().deleteItem(itemId, 1); + c.getItemAssistant().addItem(giveItem, 1); + c.getPacketSender().sendSound(SoundList.EMPTY, 100, 0); + } + +} diff --git a/2006Redone Server/src/com/rebotted/game/items/impl/LightSources.java b/2006Redone Server/src/com/rebotted/game/items/impl/LightSources.java new file mode 100644 index 00000000..5c7d85e4 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/items/impl/LightSources.java @@ -0,0 +1,84 @@ +package com.rebotted.game.items.impl; + +import com.rebotted.game.players.Player; + +/** + * Lightsources + * @author Andrew (Mr Extremez) + */ + +public class LightSources { + + public static void saveBrightness(Player player) { + if (player.brightness == 1) { + brightness1(player); + } else if (player.brightness == 2) { + brightness2(player); + } else if (player.brightness == 4) { + brightness4(player); + } else { + brightness3(player); + } + } + + public static void brightness1(Player player) { + player.getPacketSender().sendConfig(505, 1); + player.getPacketSender().sendConfig(506, 0); + player.getPacketSender().sendConfig(507, 0); + player.getPacketSender().sendConfig(508, 0); + player.getPacketSender().sendConfig(166, 1); + player.brightness = 1; + } + + public static void brightness2(Player player) { + player.getPacketSender().sendConfig(505, 0); + player.getPacketSender().sendConfig(506, 1); + player.getPacketSender().sendConfig(507, 0); + player.getPacketSender().sendConfig(508, 0); + player.getPacketSender().sendConfig(166, 2); + player.brightness = 2; + } + + public static void brightness3(Player player) { + player.getPacketSender().sendConfig(505, 0); + player.getPacketSender().sendConfig(506, 0); + player.getPacketSender().sendConfig(507, 1); + player.getPacketSender().sendConfig(508, 0); + player.getPacketSender().sendConfig(166, 3); + player.brightness = 3; + } + + public static void brightness4(Player player) { + player.getPacketSender().sendConfig(505, 0); + player.getPacketSender().sendConfig(506, 0); + player.getPacketSender().sendConfig(507, 0); + player.getPacketSender().sendConfig(508, 1); + player.getPacketSender().sendConfig(166, 4); + player.brightness = 4; + } + + public static void setBrightness(Player c) { + if (c.getItemAssistant().playerHasItem(594) || c.getItemAssistant().playerHasItem(32) || c.getItemAssistant().playerHasItem(33)) { + brightness2(c); + } else if (c.getItemAssistant().playerHasItem(4535) || c.getItemAssistant().playerHasItem(4524)) { + brightness3(c); + } else if (c.getItemAssistant().playerHasItem(4550)) { + brightness4(c); + } + } + + public static final int[] lightSources = { 594, 32, 33, 4524, 4539, 4550 }; + + public static boolean playerHasLightSource(Player client) { + for (int lightSource : lightSources) { + if (client.getItemAssistant().playerHasItem(lightSource)) { + setBrightness(client); + return true; + } + } + client.getPacketSender().sendMessage("It's recommended that you get a light source to continue."); + brightness1(client); + return false; + } + +} diff --git a/2006Redone Server/src/redone/game/items/impl/PotionMixing.java b/2006Redone Server/src/com/rebotted/game/items/impl/PotionMixing.java similarity index 92% rename from 2006Redone Server/src/redone/game/items/impl/PotionMixing.java rename to 2006Redone Server/src/com/rebotted/game/items/impl/PotionMixing.java index e9d682e1..407f23e4 100644 --- a/2006Redone Server/src/redone/game/items/impl/PotionMixing.java +++ b/2006Redone Server/src/com/rebotted/game/items/impl/PotionMixing.java @@ -1,99 +1,99 @@ -package redone.game.items.impl; - -import redone.game.items.ItemAssistant; -import redone.game.players.Client; - -/** - * @author Sanity - */ - -public class PotionMixing { - - Client c; - - public PotionMixing(Client c) { - this.c = c; - } - - public void mixPotion2(int id, int id2) { - String id11 = ItemAssistant.getItemName(id); - String id22 = ItemAssistant.getItemName(id2); - if (id11.substring(0, id11.indexOf("(")).equalsIgnoreCase( - id22.substring(0, id22.indexOf("(")))) { - try { - int amount1 = Integer.parseInt(id11.substring( - id11.indexOf("(") + 1, id11.indexOf("(") + 2)); - int amount2 = Integer.parseInt(id22.substring( - id22.indexOf("(") + 1, id22.indexOf("(") + 2)); - int totalAmount = amount1 + amount2; - if (totalAmount > 4) { - amount1 = 4; - amount2 = totalAmount - 4; - String item1 = id11.substring(0, id11.indexOf("(") + 1) - + amount1 + ")"; - String item2 = id11.substring(0, id11.indexOf("(") + 1) - + amount2 + ")"; - c.getItemAssistant().deleteItem(id, - c.getItemAssistant().getItemSlot(id), 1); - c.getItemAssistant().deleteItem(id2, - c.getItemAssistant().getItemSlot(id2), 1); - c.getItemAssistant().addItem( - c.getItemAssistant().getItemId(item1), 1); - c.getItemAssistant().addItem( - c.getItemAssistant().getItemId(item2), 1); - } else { - amount1 = totalAmount; - String item1 = id11.substring(0, id11.indexOf("(") + 1) - + amount1 + ")"; - c.getItemAssistant().deleteItem(id, - c.getItemAssistant().getItemSlot(id), 1); - c.getItemAssistant().deleteItem(id2, - c.getItemAssistant().getItemSlot(id2), 1); - c.getItemAssistant().addItem( - c.getItemAssistant().getItemId(item1), 1); - c.getItemAssistant().addItem(229, 1); - } - } catch (Exception e) { - e.printStackTrace(); - } - } - } - - private final int[][] potMixing = { { 117, 117, 113, 227 }, - { 119, 115, 113, 227 }, { 115, 119, 113, 227 }, - { 123, 123, 2428, 227 }, { 121, 125, 2428, 227 }, - { 125, 121, 2428, 227 }, { 133, 133, 2432, 227 }, - { 133, 137, 2432, 227 }, { 137, 133, 2432, 227 }, - { 159, 159, 2440, 227 }, { 157, 161, 2440, 227 }, - { 161, 157, 2440, 227 }, { 147, 147, 2436, 227 }, - { 149, 145, 2436, 227 }, { 145, 149, 2436, 227 }, - { 165, 165, 2442, 227 }, { 163, 167, 2442, 227 }, - { 167, 163, 2442, 227 }, { 6689, 6689, 6685, 227 }, - { 6687, 6691, 2442, 227 }, { 6691, 6687, 2442, 227 }, - { 171, 171, 2444, 227 }, { 169, 173, 2444, 227 }, - { 173, 169, 2444, 227 }, { 177, 177, 2446, 227 }, - { 179, 175, 2446, 227 }, { 175, 179, 2446, 227 }, - { 3028, 3028, 3024, 227 }, { 3030, 3026, 3024, 227 }, - { 3026, 3030, 3024, 227 }, { 141, 141, 2434, 227 }, - { 139, 143, 2434, 227 }, { 143, 139, 2434, 227 }, - { 3044, 3044, 3040, 227 }, { 3042, 3046, 3040, 227 }, - { 3046, 3042, 3040, 227 }, { 2456, 2456, 2452, 227 }, - { 2454, 2458, 2452, 227 }, { 2458, 2454, 2452, 227 } }; - - // use id, use id2, new id1, new id2 - public void mixPotion(int id, int id2) { - for (int[] element : potMixing) { - if (element[0] == id && element[1] == id || element[1] == id - && element[0] == id2) { - c.getItemAssistant().deleteItem(id, - c.getItemAssistant().getItemSlot(id), 1); - c.getItemAssistant().deleteItem(id2, - c.getItemAssistant().getItemSlot(id2), 1); - c.getItemAssistant().addItem(element[2], 1); - c.getItemAssistant().addItem(element[3], 1); - break; - } - } - } - -} +package com.rebotted.game.items.impl; + +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Player; + +/** + * @author Sanity + */ + +public class PotionMixing { + + Player c; + + public PotionMixing(Player player) { + this.c = player; + } + + public void mixPotion2(int id, int id2) { + String id11 = ItemAssistant.getItemName(id); + String id22 = ItemAssistant.getItemName(id2); + if (id11.substring(0, id11.indexOf("(")).equalsIgnoreCase( + id22.substring(0, id22.indexOf("(")))) { + try { + int amount1 = Integer.parseInt(id11.substring( + id11.indexOf("(") + 1, id11.indexOf("(") + 2)); + int amount2 = Integer.parseInt(id22.substring( + id22.indexOf("(") + 1, id22.indexOf("(") + 2)); + int totalAmount = amount1 + amount2; + if (totalAmount > 4) { + amount1 = 4; + amount2 = totalAmount - 4; + String item1 = id11.substring(0, id11.indexOf("(") + 1) + + amount1 + ")"; + String item2 = id11.substring(0, id11.indexOf("(") + 1) + + amount2 + ")"; + c.getItemAssistant().deleteItem(id, + c.getItemAssistant().getItemSlot(id), 1); + c.getItemAssistant().deleteItem(id2, + c.getItemAssistant().getItemSlot(id2), 1); + c.getItemAssistant().addItem( + c.getItemAssistant().getItemId(item1), 1); + c.getItemAssistant().addItem( + c.getItemAssistant().getItemId(item2), 1); + } else { + amount1 = totalAmount; + String item1 = id11.substring(0, id11.indexOf("(") + 1) + + amount1 + ")"; + c.getItemAssistant().deleteItem(id, + c.getItemAssistant().getItemSlot(id), 1); + c.getItemAssistant().deleteItem(id2, + c.getItemAssistant().getItemSlot(id2), 1); + c.getItemAssistant().addItem( + c.getItemAssistant().getItemId(item1), 1); + c.getItemAssistant().addItem(229, 1); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + private final int[][] potMixing = { { 117, 117, 113, 227 }, + { 119, 115, 113, 227 }, { 115, 119, 113, 227 }, + { 123, 123, 2428, 227 }, { 121, 125, 2428, 227 }, + { 125, 121, 2428, 227 }, { 133, 133, 2432, 227 }, + { 133, 137, 2432, 227 }, { 137, 133, 2432, 227 }, + { 159, 159, 2440, 227 }, { 157, 161, 2440, 227 }, + { 161, 157, 2440, 227 }, { 147, 147, 2436, 227 }, + { 149, 145, 2436, 227 }, { 145, 149, 2436, 227 }, + { 165, 165, 2442, 227 }, { 163, 167, 2442, 227 }, + { 167, 163, 2442, 227 }, { 6689, 6689, 6685, 227 }, + { 6687, 6691, 2442, 227 }, { 6691, 6687, 2442, 227 }, + { 171, 171, 2444, 227 }, { 169, 173, 2444, 227 }, + { 173, 169, 2444, 227 }, { 177, 177, 2446, 227 }, + { 179, 175, 2446, 227 }, { 175, 179, 2446, 227 }, + { 3028, 3028, 3024, 227 }, { 3030, 3026, 3024, 227 }, + { 3026, 3030, 3024, 227 }, { 141, 141, 2434, 227 }, + { 139, 143, 2434, 227 }, { 143, 139, 2434, 227 }, + { 3044, 3044, 3040, 227 }, { 3042, 3046, 3040, 227 }, + { 3046, 3042, 3040, 227 }, { 2456, 2456, 2452, 227 }, + { 2454, 2458, 2452, 227 }, { 2458, 2454, 2452, 227 } }; + + // use id, use id2, new id1, new id2 + public void mixPotion(int id, int id2) { + for (int[] element : potMixing) { + if (element[0] == id && element[1] == id || element[1] == id + && element[0] == id2) { + c.getItemAssistant().deleteItem(id, + c.getItemAssistant().getItemSlot(id), 1); + c.getItemAssistant().deleteItem(id2, + c.getItemAssistant().getItemSlot(id2), 1); + c.getItemAssistant().addItem(element[2], 1); + c.getItemAssistant().addItem(element[3], 1); + break; + } + } + } + +} diff --git a/2006Redone Server/src/com/rebotted/game/items/impl/RareProtection.java b/2006Redone Server/src/com/rebotted/game/items/impl/RareProtection.java new file mode 100644 index 00000000..60f5791a --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/items/impl/RareProtection.java @@ -0,0 +1,75 @@ +package com.rebotted.game.items.impl; + +import com.rebotted.game.players.Player; + +/** + * Rare Protection + * @author Andrew (Mr Extremez) + */ + +public class RareProtection { + + public static final boolean RARES = true, CRACKERS = false; + private static final int[] RARE_ITEMS = { 1037, 1038, 1039, 1040, 1041, + 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 962, 963, 1959, 1961, 1989 }; + private static final int[] EDIBLE_RARES = { 1959, 1961, 1989 }; + + public static boolean equipItem(Player c) {// check when wearing, removing + for (int element : RARE_ITEMS) { + if (c.wearId == element && c.playerRights < 3) { + c.getPacketSender().sendMessage("You shouldn't have that item!"); + int amountToDelete = c.getItemAssistant().getItemCount(element); + c.getItemAssistant().deleteItem(element, amountToDelete); + return false; + } + } + return true; + } + + public static boolean removeItem(Player c, int itemId) { + for (int element : RARE_ITEMS) { + if (itemId == element && c.playerRights < 3) { + c.getPacketSender().sendMessage("You shouldn't have that item!"); + c.getItemAssistant().deleteEquipment(element, 0); + return false; + } + } + return true; + } + + public static boolean hasDupedItem(Player c) {// check on login + for (int element : RARE_ITEMS) { + if (c.getItemAssistant().playerHasItem(element) && c.playerRights < 3) { + c.getPacketSender().sendMessage("You can't have these items!"); + int amountToDelete = c.getItemAssistant().getItemCount(element); + c.getItemAssistant().deleteItem(element, amountToDelete); + return false; + } + } + return true; + } + + public static boolean eatDupedItem(Player c, int itemId) { + for (int element : EDIBLE_RARES) { + if (itemId == element && c.playerRights < 3) { + c.getPacketSender().sendMessage("You can't eat that item!"); + int amountToDelete = c.getItemAssistant().getItemCount(element); + c.getItemAssistant().deleteItem(element, amountToDelete); + return false; + } + } + return true; + } + + public static boolean doOtherDupe(Player player, int itemId) { + for (int element : RARE_ITEMS) { + if (player.getItemAssistant().playerHasItem(element) && player.playerRights < 3) { + player.getPacketSender().sendMessage("You shouldnt have that item!"); + int amountToDelete = player.getItemAssistant().getItemCount(element); + player.getItemAssistant().deleteItem(element, amountToDelete); + return false; + } + } + return true; + } +} diff --git a/2006Redone Server/src/redone/game/items/impl/Teles.java b/2006Redone Server/src/com/rebotted/game/items/impl/Teles.java similarity index 68% rename from 2006Redone Server/src/redone/game/items/impl/Teles.java rename to 2006Redone Server/src/com/rebotted/game/items/impl/Teles.java index f3f5d5d3..77939e6f 100644 --- a/2006Redone Server/src/redone/game/items/impl/Teles.java +++ b/2006Redone Server/src/com/rebotted/game/items/impl/Teles.java @@ -1,56 +1,56 @@ -package redone.game.items.impl; - -import redone.game.players.Client; - -/** - * Teles - * @author Andrew - */ - -public class Teles { - - public static void useAOG(Client player) { - player.getDialogueHandler().sendOption4("Edgeville", "Al Kharid", "Karamja", "Draynor"); - player.dialogueAction = 51; - player.getActionSender().sendMessage("You rub the Amulet of Glory..."); - } - - public static void useROD(Client player) { - player.getDialogueHandler().sendOption2("Duel Arena", "Castle Wars"); - player.dialogueAction = 161; - player.getActionSender().sendMessage("You rub the Ring of Dueling..."); - } - - public static void useGN(Client player) { - player.getDialogueHandler().sendOption2("Burthrope Games Room", "Barbarian Outpost"); - player.dialogueAction = 50; - player.getActionSender().sendMessage("You rub the Games Necklace..."); - } - - private static final int[][] JEWELERY = { - { 3853, 3855, 7 }, { 3855, 3857, 6 }, { 3857, 3859, 5 }, { 3859, 3861, 4 }, { 3861, 3863, 3 },{ 3863, 3865, 2 }, { 3865, 3867, 1 }, { 3867, 0, 0 }, // gn - { 2552, 2554, 7 }, { 2554, 2556, 6 }, { 2556, 2558, 5 }, { 2558, 2560, 4 }, { 2560, 2562, 3 }, { 2562, 2564, 2 }, { 2564, 2566, 1 }, { 2566, 0, 0 }, // rod - { 1712, 1710, 3 }, { 1710, 1708, 2 }, { 1708, 1706, 1 }, { 1706, 1704, 0 } //aog - }; - - public static void necklaces(Client player) { - for (int[] element : JEWELERY) { - if (player.itemUsing == element[0]) { - if (player.isOperate) { - player.playerEquipment[player.playerAmulet] = element[1]; - } else { - player.getItemAssistant().deleteItem(element[0], 1); - player.getItemAssistant().addItem(element[1], 1); - } - if (element[2] > 1) { - player.getActionSender().sendMessage("You have " + element[2] + " charges left."); - } else { - player.getActionSender().sendMessage("You have " + element[2] + " charge left."); - } - } - } - player.getItemAssistant().updateSlot(player.playerAmulet); - player.isOperate = false; - player.itemUsing = -1; - } -} +package com.rebotted.game.items.impl; + +import com.rebotted.game.players.Player; + +/** + * Teles + * @author Andrew (Mr Extremez) + */ + +public class Teles { + + public static void useAOG(Player player) { + player.getDialogueHandler().sendOption4("Edgeville", "Al Kharid", "Karamja", "Draynor"); + player.dialogueAction = 51; + player.getPacketSender().sendMessage("You rub the Amulet of Glory..."); + } + + public static void useROD(Player player) { + player.getDialogueHandler().sendOption2("Duel Arena", "Castle Wars"); + player.dialogueAction = 161; + player.getPacketSender().sendMessage("You rub the Ring of Dueling..."); + } + + public static void useGN(Player player) { + player.getDialogueHandler().sendOption2("Burthrope Games Room", "Barbarian Outpost"); + player.dialogueAction = 50; + player.getPacketSender().sendMessage("You rub the Games Necklace..."); + } + + private static final int[][] JEWELERY = { + { 3853, 3855, 7 }, { 3855, 3857, 6 }, { 3857, 3859, 5 }, { 3859, 3861, 4 }, { 3861, 3863, 3 },{ 3863, 3865, 2 }, { 3865, 3867, 1 }, { 3867, 0, 0 }, // gn + { 2552, 2554, 7 }, { 2554, 2556, 6 }, { 2556, 2558, 5 }, { 2558, 2560, 4 }, { 2560, 2562, 3 }, { 2562, 2564, 2 }, { 2564, 2566, 1 }, { 2566, 0, 0 }, // rod + { 1712, 1710, 3 }, { 1710, 1708, 2 }, { 1708, 1706, 1 }, { 1706, 1704, 0 } //aog + }; + + public static void necklaces(Player player) { + for (int[] element : JEWELERY) { + if (player.itemUsing == element[0]) { + if (player.isOperate) { + player.playerEquipment[player.playerAmulet] = element[1]; + } else { + player.getItemAssistant().deleteItem(element[0], 1); + player.getItemAssistant().addItem(element[1], 1); + } + if (element[2] > 1) { + player.getPacketSender().sendMessage("You have " + element[2] + " charges left."); + } else { + player.getPacketSender().sendMessage("You have " + element[2] + " charge left."); + } + } + } + player.getItemAssistant().updateSlot(player.playerAmulet); + player.isOperate = false; + player.itemUsing = -1; + } +} diff --git a/2006Redone Server/src/redone/game/items/impl/WeaponPoison.java b/2006Redone Server/src/com/rebotted/game/items/impl/WeaponPoison.java similarity index 93% rename from 2006Redone Server/src/redone/game/items/impl/WeaponPoison.java rename to 2006Redone Server/src/com/rebotted/game/items/impl/WeaponPoison.java index e5b1bd99..ccd48184 100644 --- a/2006Redone Server/src/redone/game/items/impl/WeaponPoison.java +++ b/2006Redone Server/src/com/rebotted/game/items/impl/WeaponPoison.java @@ -1,149 +1,148 @@ -package redone.game.items.impl; - -import java.util.HashMap; - -import redone.game.items.ItemAssistant; -import redone.game.players.Client; - -/** - * Manages weapon poisoning. - * @author Andew added every single weapon to the enum - * @author Hybris writing the system - */ -public class WeaponPoison { - - /** - * Represents a weapon that can be poisoned. Stores the initial weapon item - * id, the type of poison used on the weapon and the new poisoned weapon - * that will be obtained. - */ - private enum Weapon { - BRONZE_DAGGER(1205, new int[][] {{ 5940, 5688 }, { 5937, 5670 }, { 187, 1221 }}), - IRON_DAGGER(1203, new int[][] {{ 5940, 5686 }, { 5937, 5668 }, { 187, 1219 }}), - STEEL_DAGGER(1207, new int[][] {{ 5940, 5690 }, { 5937, 5672 }, { 187, 1223 }}), - BLACK_DAGGER(1217, new int[][] {{ 5940, 5700 }, { 5937, 5682 }, { 187, 1233 }}), - MITHRIL_DAGGER(1209, new int[][] {{ 5940, 5692 }, { 5937, 5674 }, { 187, 1225 }}), - ADAMANT_DAGGER(1211, new int[][] {{ 5940, 5694 }, { 5937, 5676 }, { 187, 1227 }}), - RUNE_DAGGER(1213, new int[][] {{ 5940, 5696 }, { 5937, 5678 }, { 187, 1229 }}), - DRAGON_DAGGER(1215, new int[][] {{ 5940, 5698 }, { 5937, 5680 }, { 187, 1231 }}), - BRONZE_DART(806, new int[][] {{ 5940, 5635 }, { 5937, 5628 }, { 187, 812 }}), - IRON_DART(807, new int[][] {{ 5940, 5636 }, { 5937, 5629 }, { 187, 813 }}), - STEEL_DART(808, new int[][] {{ 5940, 5637 }, { 5937, 5630 }, { 187, 814 }}), - BLACK_DART(3093, new int[][] {{ 5940, 5638 }, { 5937, 5631 }, { 187, 815 }}), - MITHRIL_DART(809, new int[][] {{ 5940, 5639 }, { 5937, 5632 }, { 187, 816 }}), - ADAMANT_DART(810, new int[][] {{ 5940, 5640 }, { 5937, 5633 }, { 187, 817 }}), - RUNE_DART(811, new int[][] {{ 5940, 5641 }, { 5937, 5634 }, { 187, 818 }}), - BRONZE_SPEAR(1237, new int[][] {{ 5940, 5718 }, { 5937, 5704 }, { 187, 1251 }}), - IRON_SPEAR(1239, new int[][] {{ 5940, 5720 }, { 5937, 5706 }, { 187, 1253 }}), - STEEL_SPEAR(1241, new int[][] {{ 5940, 5722 }, { 5937, 5708 }, { 187, 1255 }}), - MITHRIL_SPEAR(1243, new int[][] {{ 5940, 5724 }, { 5937, 5710 }, { 187, 1257 }}), - ADAMANT_SPEAR(1245, new int[][] {{ 5940, 5726 }, { 5937, 5712 }, { 187, 1259 }}), - RUNE_SPEAR(1247, new int[][] {{ 5940, 5728 }, { 5937, 5714 }, { 187, 1261 }}), - DRAGON_SPEAR(1249, new int[][] {{ 5940, 5730 }, { 5937, 5716 }, { 187, 1263 }}), - BRONZE_JAVELIN(825, new int[][] { { 5940, 5648 }, { 5937, 5642 }, { 187, 831 }}), - IRON_JAVELIN(826, new int[][] { { 5940, 5648 }, { 5937, 5643 }, { 187, 832 }}), - STEEL_JAVELIN(827, new int[][] {{ 5940, 5648 }, { 5937, 5644 }, { 187, 833 }}), - MITHRIL_JAVELIN(828, new int[][] {{ 5940, 5648 }, { 5937, 5645 }, { 187, 834 }}), - ADAMANT_JAVELIN(829, new int[][] {{ 5940, 5648 }, { 5937, 5646 }, { 187, 835 }}), - RUNE_JAVELIN(830, new int[][] {{ 5940, 5648 }, { 5937, 5647 }, { 187, 836 }}), - BRONZE_ARROW(882, new int[][] {{ 5940, 5622 }, { 5937, 5616 }, { 187, 883 }}), - IRON_ARROW(884, new int[][] {{ 5940, 5623 }, { 5937, 5617 }, { 187, 885 }}), - STEEL_ARROW(886, new int[][] {{ 5940, 5624 }, { 5937, 5618 }, { 187, 887 }}), - MITHRIL_ARROW(888, new int[][] {{ 5940, 5625 }, { 5937, 5619 }, { 187, 889 }}), - ADAMANT_ARROW(890, new int[][] {{ 5940, 5626 }, { 5937, 5620 }, { 187, 891 }}), - RUNE_ARROW(892, new int[][] {{ 5940, 5627 }, { 5937, 5621 }, { 187, 893 }}), - BRONZE_KNIFE(864, new int[][] {{ 5940, 5661 }, { 5937, 5654 }, { 187, 870 }}), - IRON_KNIFE(863, new int[][] {{ 5940, 5662 }, { 5937, 5655 }, { 187, 871}}), - STEEL_KNIFE(865, new int[][] {{ 5940, 5663 }, { 5937, 5656 }, { 187, 872 }}), - BLACK_KNIFE(869, new int[][] {{ 5940, 5665 }, { 5937, 5658 }, { 187, 873 }}), - MITHRIL_KNIFE(866, new int[][] {{ 5940, 5664 }, { 5937, 5657 }, { 187, 874 }}), - ADAMANT_KNIFE(867, new int[][] {{ 5940, 5666 }, { 5937, 5659 }, { 187, 875 }}), - RUNE_KNIFE(868, new int[][] {{ 5940, 5667 }, { 5937, 5660 }, { 187, 876 }}); - - /** - * Creates the weapon. - * - * @param itemId - * The weapon item id. - * @param newItemId - * The poisoned weapon item id. - */ - private Weapon(int itemId, int[][] newItemId) { - this.itemId = itemId; - this.newItemId = newItemId; - } - - /** - * Gets the item id. - * - * @return the itemId - */ - public int getItemId() { - return itemId; - } - - /** - * The weapon item id. - */ - private final int itemId; - - /** - * The poisoned weapon item id. - */ - private final int[][] newItemId; - - /** - * Represents a map for the weapon item ids. - */ - public static HashMap weapon = new HashMap(); - - /** - * @return the newItemId - */ - public int[][] getNewItemId() { - return newItemId; - } - - /** - * Populates a map for the weapons. - */ - static { - for (Weapon w : Weapon.values()) { - weapon.put(w.getItemId(), w); - } - - } - } - - /** - * The item id for Vial. - */ - private final static int VIAL = 229; - - /** - * Starts the weapon poison event for each individual weapon item from the - * enumeration Weapon. - * - * @param player - * The Player player. - * @param itemUse - * The first item use. - * @param useWith - * The second item use. - */ - public static void execute(final Client player, int itemUse, int useWith) { - final Weapon weapon = Weapon.weapon.get(useWith); - if (weapon != null) { - for (int element[] : weapon.getNewItemId()) { - if (itemUse == element[0]) { - player.getActionSender().sendMessage("You make a " + ItemAssistant.getItemName(element[1]) + "."); - player.getItemAssistant().deleteItem(element[0], player.getItemAssistant().getItemSlot(element[0]), 1); - player.getItemAssistant().deleteItem(weapon.getItemId(), player.getItemAssistant().getItemSlot(weapon.getItemId()), 1); - player.getItemAssistant().addItem(VIAL, 1); - player.getItemAssistant().addItem(element[1], 1); - } - } - } - - } -} +package com.rebotted.game.items.impl; + +import java.util.HashMap; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Player; + +/** + * Manages weapon poisoning. + * @author Andew added every single weapon to the enum + * @author Hybris writing the system + */ +public class WeaponPoison { + + /** + * Represents a weapon that can be poisoned. Stores the initial weapon item + * id, the type of poison used on the weapon and the new poisoned weapon + * that will be obtained. + */ + private enum Weapon { + BRONZE_DAGGER(1205, new int[][] {{ 5940, 5688 }, { 5937, 5670 }, { 187, 1221 }}), + IRON_DAGGER(1203, new int[][] {{ 5940, 5686 }, { 5937, 5668 }, { 187, 1219 }}), + STEEL_DAGGER(1207, new int[][] {{ 5940, 5690 }, { 5937, 5672 }, { 187, 1223 }}), + BLACK_DAGGER(1217, new int[][] {{ 5940, 5700 }, { 5937, 5682 }, { 187, 1233 }}), + MITHRIL_DAGGER(1209, new int[][] {{ 5940, 5692 }, { 5937, 5674 }, { 187, 1225 }}), + ADAMANT_DAGGER(1211, new int[][] {{ 5940, 5694 }, { 5937, 5676 }, { 187, 1227 }}), + RUNE_DAGGER(1213, new int[][] {{ 5940, 5696 }, { 5937, 5678 }, { 187, 1229 }}), + DRAGON_DAGGER(1215, new int[][] {{ 5940, 5698 }, { 5937, 5680 }, { 187, 1231 }}), + BRONZE_DART(806, new int[][] {{ 5940, 5635 }, { 5937, 5628 }, { 187, 812 }}), + IRON_DART(807, new int[][] {{ 5940, 5636 }, { 5937, 5629 }, { 187, 813 }}), + STEEL_DART(808, new int[][] {{ 5940, 5637 }, { 5937, 5630 }, { 187, 814 }}), + BLACK_DART(3093, new int[][] {{ 5940, 5638 }, { 5937, 5631 }, { 187, 815 }}), + MITHRIL_DART(809, new int[][] {{ 5940, 5639 }, { 5937, 5632 }, { 187, 816 }}), + ADAMANT_DART(810, new int[][] {{ 5940, 5640 }, { 5937, 5633 }, { 187, 817 }}), + RUNE_DART(811, new int[][] {{ 5940, 5641 }, { 5937, 5634 }, { 187, 818 }}), + BRONZE_SPEAR(1237, new int[][] {{ 5940, 5718 }, { 5937, 5704 }, { 187, 1251 }}), + IRON_SPEAR(1239, new int[][] {{ 5940, 5720 }, { 5937, 5706 }, { 187, 1253 }}), + STEEL_SPEAR(1241, new int[][] {{ 5940, 5722 }, { 5937, 5708 }, { 187, 1255 }}), + MITHRIL_SPEAR(1243, new int[][] {{ 5940, 5724 }, { 5937, 5710 }, { 187, 1257 }}), + ADAMANT_SPEAR(1245, new int[][] {{ 5940, 5726 }, { 5937, 5712 }, { 187, 1259 }}), + RUNE_SPEAR(1247, new int[][] {{ 5940, 5728 }, { 5937, 5714 }, { 187, 1261 }}), + DRAGON_SPEAR(1249, new int[][] {{ 5940, 5730 }, { 5937, 5716 }, { 187, 1263 }}), + BRONZE_JAVELIN(825, new int[][] { { 5940, 5648 }, { 5937, 5642 }, { 187, 831 }}), + IRON_JAVELIN(826, new int[][] { { 5940, 5648 }, { 5937, 5643 }, { 187, 832 }}), + STEEL_JAVELIN(827, new int[][] {{ 5940, 5648 }, { 5937, 5644 }, { 187, 833 }}), + MITHRIL_JAVELIN(828, new int[][] {{ 5940, 5648 }, { 5937, 5645 }, { 187, 834 }}), + ADAMANT_JAVELIN(829, new int[][] {{ 5940, 5648 }, { 5937, 5646 }, { 187, 835 }}), + RUNE_JAVELIN(830, new int[][] {{ 5940, 5648 }, { 5937, 5647 }, { 187, 836 }}), + BRONZE_ARROW(882, new int[][] {{ 5940, 5622 }, { 5937, 5616 }, { 187, 883 }}), + IRON_ARROW(884, new int[][] {{ 5940, 5623 }, { 5937, 5617 }, { 187, 885 }}), + STEEL_ARROW(886, new int[][] {{ 5940, 5624 }, { 5937, 5618 }, { 187, 887 }}), + MITHRIL_ARROW(888, new int[][] {{ 5940, 5625 }, { 5937, 5619 }, { 187, 889 }}), + ADAMANT_ARROW(890, new int[][] {{ 5940, 5626 }, { 5937, 5620 }, { 187, 891 }}), + RUNE_ARROW(892, new int[][] {{ 5940, 5627 }, { 5937, 5621 }, { 187, 893 }}), + BRONZE_KNIFE(864, new int[][] {{ 5940, 5661 }, { 5937, 5654 }, { 187, 870 }}), + IRON_KNIFE(863, new int[][] {{ 5940, 5662 }, { 5937, 5655 }, { 187, 871}}), + STEEL_KNIFE(865, new int[][] {{ 5940, 5663 }, { 5937, 5656 }, { 187, 872 }}), + BLACK_KNIFE(869, new int[][] {{ 5940, 5665 }, { 5937, 5658 }, { 187, 873 }}), + MITHRIL_KNIFE(866, new int[][] {{ 5940, 5664 }, { 5937, 5657 }, { 187, 874 }}), + ADAMANT_KNIFE(867, new int[][] {{ 5940, 5666 }, { 5937, 5659 }, { 187, 875 }}), + RUNE_KNIFE(868, new int[][] {{ 5940, 5667 }, { 5937, 5660 }, { 187, 876 }}); + + /** + * Creates the weapon. + * + * @param itemId + * The weapon item id. + * @param newItemId + * The poisoned weapon item id. + */ + private Weapon(int itemId, int[][] newItemId) { + this.itemId = itemId; + this.newItemId = newItemId; + } + + /** + * Gets the item id. + * + * @return the itemId + */ + public int getItemId() { + return itemId; + } + + /** + * The weapon item id. + */ + private final int itemId; + + /** + * The poisoned weapon item id. + */ + private final int[][] newItemId; + + /** + * Represents a map for the weapon item ids. + */ + public static HashMap weapon = new HashMap(); + + /** + * @return the newItemId + */ + public int[][] getNewItemId() { + return newItemId; + } + + /** + * Populates a map for the weapons. + */ + static { + for (Weapon w : Weapon.values()) { + weapon.put(w.getItemId(), w); + } + + } + } + + /** + * The item id for Vial. + */ + private final static int VIAL = 229; + + /** + * Starts the weapon poison event for each individual weapon item from the + * enumeration Weapon. + * + * @param player + * The Player player. + * @param itemUse + * The first item use. + * @param useWith + * The second item use. + */ + public static void execute(final Player player, int itemUse, int useWith) { + final Weapon weapon = Weapon.weapon.get(useWith); + if (weapon != null) { + for (int element[] : weapon.getNewItemId()) { + if (itemUse == element[0]) { + player.getPacketSender().sendMessage("You make a " + ItemAssistant.getItemName(element[1]) + "."); + player.getItemAssistant().deleteItem(element[0], player.getItemAssistant().getItemSlot(element[0]), 1); + player.getItemAssistant().deleteItem(weapon.getItemId(), player.getItemAssistant().getItemSlot(weapon.getItemId()), 1); + player.getItemAssistant().addItem(VIAL, 1); + player.getItemAssistant().addItem(element[1], 1); + } + } + } + + } +} diff --git a/2006Redone Server/src/redone/game/npcs/NPCDefinition.java b/2006Redone Server/src/com/rebotted/game/npcs/NPCDefinition.java similarity index 97% rename from 2006Redone Server/src/redone/game/npcs/NPCDefinition.java rename to 2006Redone Server/src/com/rebotted/game/npcs/NPCDefinition.java index dd58503b..49c2cceb 100644 --- a/2006Redone Server/src/redone/game/npcs/NPCDefinition.java +++ b/2006Redone Server/src/com/rebotted/game/npcs/NPCDefinition.java @@ -1,10 +1,10 @@ -package redone.game.npcs; +package com.rebotted.game.npcs; import java.io.FileInputStream; import java.io.IOException; import java.util.List; -import redone.util.XStreamUtil; +import com.rebotted.util.XStreamUtil; public class NPCDefinition { diff --git a/2006Redone Server/src/redone/game/npcs/Npc.java b/2006Redone Server/src/com/rebotted/game/npcs/Npc.java similarity index 91% rename from 2006Redone Server/src/redone/game/npcs/Npc.java rename to 2006Redone Server/src/com/rebotted/game/npcs/Npc.java index d145948b..915e094c 100644 --- a/2006Redone Server/src/redone/game/npcs/Npc.java +++ b/2006Redone Server/src/com/rebotted/game/npcs/Npc.java @@ -1,465 +1,464 @@ -package redone.game.npcs; - -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.items.ItemAssistant; -import redone.game.players.Client; -import redone.game.players.Player; -import redone.game.players.PlayerHandler; -import redone.util.Misc; -import redone.util.Stream; - -public class Npc { - - public int npcId; - public int npcType; - public int absX, absY; - public int heightLevel; - public static int lastX, lastY; - public int makeX, makeY, maxHit, defence, attack, moveX, moveY, direction, walkingType, hitsToHeal; - public int spawnX, spawnY; - public int viewX, viewY; - public boolean summoner; - public int summonedBy, size; - public int focusPointX, focusPointY, masterId; - public boolean turnUpdateRequired; - - /** - * attackType: 0 = melee, 1 = range, 2 = mage - */ - public int attackType, projectileId, endGfx, spawnedBy, hitDelayTimer, HP, - MaxHP, hitDiff, animNumber, actionTimer, enemyX, enemyY, - combatLevel; - public boolean applyDead, isDead, needRespawn, respawns, aggressive; - public boolean walkingHome, underAttack; - public int freezeTimer, attackTimer, killerId, killedBy, oldIndex, - underAttackBy; - public long lastDamageTaken; - public boolean randomWalk; - public boolean dirUpdateRequired; - public boolean animUpdateRequired; - public boolean hitUpdateRequired; - public boolean updateRequired; - public boolean forcedChatRequired; - public boolean faceToUpdateRequired; - public int firstAttacker; - public String forcedText; - public boolean transformUpdateRequired = false, isTransformed = false; - public int transformId; - - public Npc(int _npcId, int _npcType) { - npcId = _npcId; - npcType = _npcType; - direction = -1; - isDead = false; - applyDead = false; - actionTimer = 0; - randomWalk = true; - } - - public void requestTransform(int id) { - transformId = id; - transformUpdateRequired = true; - updateRequired = true; - } - - public boolean requestTransformTime(Client player, int itemId, int animation, final int currentId, final int newId, int transformTime, final int npcId) { - if (!player.getItemAssistant().playerHasItem(itemId)) { - player.getActionSender().sendMessage("You need " + ItemAssistant.getItemName(itemId).toLowerCase() + " to do that."); - return false; - } - if (NpcHandler.npcs[npcId].isTransformed == true) - return false; - if (animation > 0) - player.startAnimation(animation); - NpcHandler.npcs[npcId].isTransformed = true; - requestTransform(newId); - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - - @Override - public void execute(CycleEventContainer container) { - requestTransform(currentId); - container.stop(); - } - - @Override - public void stop() { - NpcHandler.npcs[npcId].isTransformed = false; - } - }, transformTime); - return true; - } - - public void appendTransformUpdate(Stream str) { - str.writeWordBigEndianA(transformId); - } - - - public void updateNPCMovement(Stream str) { - - if (str != null) { - if (direction == -1) { - - if (updateRequired) { - - str.writeBits(1, 1); - str.writeBits(2, 0); - } else { - str.writeBits(1, 0); - } - } else { - - str.writeBits(1, 1); - str.writeBits(2, 1); - str.writeBits(3, Misc.xlateDirectionToClient[direction]); - if (updateRequired) { - str.writeBits(1, 1); - } else { - str.writeBits(1, 0); - } - } - } - } - - /** - * Text update - **/ - - public void forceChat(String text) { - forcedText = text; - forcedChatRequired = true; - updateRequired = true; - } - - - /** - * Graphics - **/ - - public int mask80var1 = 0; - public int mask80var2 = 0; - protected boolean mask80update = false; - - public void appendMask80Update(Stream str) { - str.writeWord(mask80var1); - str.writeDWord(mask80var2); - } - - public void gfx100(int gfx) { - mask80var1 = gfx; - mask80var2 = 6553600; - mask80update = true; - updateRequired = true; - } - - public void gfx0(int gfx) { - mask80var1 = gfx; - mask80var2 = 65536; - mask80update = true; - updateRequired = true; - } - - public void appendAnimUpdate(Stream str) { - str.writeWordBigEndian(animNumber); - str.writeByte(1); - } - - public int startAnimation(int anim, int npcId) { - return animNumber; - } - - /** - * - Face - **/ - - public int FocusPointX = -1, FocusPointY = -1; - public int face = 0; - - private void appendSetFocusDestination(Stream str) { - str.writeWordBigEndian(FocusPointX); - str.writeWordBigEndian(FocusPointY); - } - - public void turnNpc(int i, int j) { - FocusPointX = 2 * i + 1; - FocusPointY = 2 * j + 1; - updateRequired = true; - turnUpdateRequired = true; - } - - public int getNextWalkingDirection2() { - int dir; - dir = Misc.direction(absX, absY, absX + moveX, absY + moveY); - dir >>= 1; - absX += moveX; - absY += moveY; - return dir; - } - - public void getRandomAndHomeNPCWalking(int i) { - direction = -1; - if (NpcHandler.npcs[i].freezeTimer == 0) { - direction = getNextWalkingDirection2(); - } - } - - public void appendFaceEntity(Stream str) { - str.writeWord(face); - } - - public void facePlayer(int player) { - face = player + 32768; - dirUpdateRequired = true; - updateRequired = true; - } - - public void appendFaceToUpdate(Stream str) { - str.writeWordBigEndian(viewX); - str.writeWordBigEndian(viewY); - } - - public void appendNPCUpdateBlock(Stream str) { - if (!updateRequired) { - return; - } - int updateMask = 0; - if (animUpdateRequired) { - updateMask |= 0x10; - } - if (hitUpdateRequired2) { - updateMask |= 8; - } - if (mask80update) { - updateMask |= 0x80; - } - if (dirUpdateRequired) { - updateMask |= 0x20; - } - if (forcedChatRequired) { - updateMask |= 1; - } - if (hitUpdateRequired) { - updateMask |= 0x40; - } - if (transformUpdateRequired) { - updateMask |= 2; - } - if (turnUpdateRequired) { - updateMask |= 4; - } - - str.writeByte(updateMask); - - if (animUpdateRequired) { - appendAnimUpdate(str); - } - if (hitUpdateRequired2) { - appendHitUpdate2(str); - } - if (mask80update) { - appendMask80Update(str); - } - if (dirUpdateRequired) { - appendFaceEntity(str); - } - if (forcedChatRequired) { - str.writeString(forcedText); - } - if (hitUpdateRequired) { - appendHitUpdate(str); - } - if (transformUpdateRequired) { - appendTransformUpdate(str); - } - if (turnUpdateRequired) { - appendSetFocusDestination(str); - } - - } - - public void clearUpdateFlags() { - updateRequired = false; - forcedChatRequired = false; - hitUpdateRequired = false; - hitUpdateRequired2 = false; - animUpdateRequired = false; - dirUpdateRequired = false; - transformUpdateRequired = false; - mask80update = false; - forcedText = null; - moveX = 0; - moveY = 0; - direction = -1; - focusPointX = -1; - focusPointY = -1; - turnUpdateRequired = false; - } - - public int getNextWalkingDirection() { - int nextX = absX + moveX; - int nextY = absY + moveY; - int dir; - dir = Misc.direction(absX, absY, absX + moveX, absY + moveY); - for (Npc npc : NpcHandler.npcs) { - if (npc == null) { - continue; - } - if (npc.absX == nextX && npc.absY == nextY - && npc.heightLevel == heightLevel) { - return -1; - } - } - for (Player p : PlayerHandler.players) { - if (p == null) { - continue; - } - if (p.absX == nextX && p.absY == nextY - && p.heightLevel == heightLevel) { - return -1; - } - } - if (dir == -1) { - return -1; - } - dir >>= 1; - absX += moveX; - absY += moveY; - return dir; - } - - public void getNextNPCMovement(int i) { - direction = -1; - if (NpcHandler.npcs[i].freezeTimer == 0) { - direction = getNextWalkingDirection(); - } - } - - public void appendHitUpdate(Stream str) { - if (HP <= 0) { - isDead = true; - } - str.writeByteC(hitDiff); - if (hitDiff > 0) { - str.writeByteS(1); - } else { - str.writeByteS(0); - } - str.writeByteS(HP); - str.writeByteC(MaxHP); - } - - public int hitDiff2 = 0; - public boolean hitUpdateRequired2 = false; - - public void appendHitUpdate2(Stream str) { - if (HP <= 0) { - isDead = true; - } - str.writeByteA(hitDiff2); - if (hitDiff2 > 0) { - str.writeByteC(1); - } else { - str.writeByteC(0); - } - str.writeByteA(HP); - str.writeByte(MaxHP); - } - - public void handleHitMask(int damage) { - if (!hitUpdateRequired) { - hitUpdateRequired = true; - hitDiff = damage; - } else if (!hitUpdateRequired2) { - hitUpdateRequired2 = true; - hitDiff2 = damage; - } - updateRequired = true; - } - - public int getX() { - return absX; - } - - public int getY() { - return absY; - } - - public int getLastX() { - return lastX; - } - - public int getLastY() { - return lastY; - } - - public void setAbsX(int absX) { - Npc.lastX = this.absX; - this.absX = absX; - } - - public void setAbsY(int absY) { - Npc.lastY = this.absY; - this.absY = absY; - } - - public void deleteNPC(Npc npc) { - setAbsX(0); - setAbsY(0); - npc = null; - } - - public boolean inLesserNpc() { - return (absX >= 3108 && absX <= 3112 && absY >= 3156 && absY <= 3158 && heightLevel == 2); - } - - public boolean inMulti() { - if (absX >= 3136 - && absX <= 3327 - && absY >= 3519 - && absY <= 3607 - || absX >= 2625 - && absX <= 2685 - && absY >= 2550 - && absY <= 2620 // Pest - // Control - || absX >= 3190 && absX <= 3327 && absY >= 3648 && absY <= 3839 - || absX >= 3200 && absX <= 3390 && absY >= 3840 && absY <= 3967 - || absX >= 2992 - && absX <= 3007 - && absY >= 3912 - && absY <= 3967 - || absX >= 2946 - && absX <= 2959 - && absY >= 3816 - && absY <= 3831 - || absX >= 3008 - && absX <= 3199 - && absY >= 3856 - && absY <= 3903 - || absX >= 2667 - && absX <= 2685 - && absY >= 3712 - && absY <= 3730 // rock - // crabs - || absX >= 3008 && absX <= 3071 && absY >= 3600 && absY <= 3711 - || absX >= 3072 && absX <= 3327 && absY >= 3608 && absY <= 3647 - || absX >= 2624 && absX <= 2690 && absY >= 2550 && absY <= 2619 - || absX >= 2371 && absX <= 2422 && absY >= 5062 && absY <= 5117 - || absX >= 2896 && absX <= 2927 && absY >= 3595 && absY <= 3630 - || absX >= 2892 && absX <= 2932 && absY >= 4435 && absY <= 4464 - || absX >= 2256 && absX <= 2287 && absY >= 4680 && absY <= 4711) { - return true; - } - return false; - } - - public boolean inWild() {// beg, end, beg, end, beg, end, beg, end - if (absX > 2941 && absX < 3392 && absY > 3518 && absY < 3966 - || absX > 2941 && absX < 3392 && absY > 9918 && absY < 10366) { - return true; - } - return false; - } -} +package com.rebotted.game.npcs; + +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerHandler; +import com.rebotted.util.Misc; +import com.rebotted.util.Stream; + +public class Npc { + + public int npcId; + public int npcType; + public int absX, absY; + public int heightLevel; + public static int lastX, lastY; + public int makeX, makeY, maxHit, defence, attack, moveX, moveY, direction, walkingType, hitsToHeal; + public int spawnX, spawnY; + public int viewX, viewY; + public boolean summoner; + public int summonedBy, size; + public int focusPointX, focusPointY, masterId; + public boolean turnUpdateRequired; + + /** + * attackType: 0 = melee, 1 = range, 2 = mage + */ + public int attackType, projectileId, endGfx, spawnedBy, hitDelayTimer, HP, + MaxHP, hitDiff, animNumber, actionTimer, enemyX, enemyY, + combatLevel; + public boolean applyDead, isDead, needRespawn, respawns, aggressive; + public boolean walkingHome, underAttack; + public int freezeTimer, attackTimer, killerId, killedBy, oldIndex, + underAttackBy; + public long lastDamageTaken; + public boolean randomWalk; + public boolean dirUpdateRequired; + public boolean animUpdateRequired; + public boolean hitUpdateRequired; + public boolean updateRequired; + public boolean forcedChatRequired; + public boolean faceToUpdateRequired; + public int firstAttacker; + public String forcedText; + public boolean transformUpdateRequired = false, isTransformed = false; + public int transformId; + + public Npc(int _npcId, int _npcType) { + npcId = _npcId; + npcType = _npcType; + direction = -1; + isDead = false; + applyDead = false; + actionTimer = 0; + randomWalk = true; + } + + public void requestTransform(int id) { + transformId = id; + transformUpdateRequired = true; + updateRequired = true; + } + + public boolean requestTransformTime(Player player, int itemId, int animation, final int currentId, final int newId, int transformTime, final int npcId) { + if (!player.getItemAssistant().playerHasItem(itemId)) { + player.getPacketSender().sendMessage("You need " + ItemAssistant.getItemName(itemId).toLowerCase() + " to do that."); + return false; + } + if (NpcHandler.npcs[npcId].isTransformed == true) + return false; + if (animation > 0) + player.startAnimation(animation); + NpcHandler.npcs[npcId].isTransformed = true; + requestTransform(newId); + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + + @Override + public void execute(CycleEventContainer container) { + requestTransform(currentId); + container.stop(); + } + + @Override + public void stop() { + NpcHandler.npcs[npcId].isTransformed = false; + } + }, transformTime); + return true; + } + + public void appendTransformUpdate(Stream str) { + str.writeWordBigEndianA(transformId); + } + + + public void updateNPCMovement(Stream str) { + + if (str != null) { + if (direction == -1) { + + if (updateRequired) { + + str.writeBits(1, 1); + str.writeBits(2, 0); + } else { + str.writeBits(1, 0); + } + } else { + + str.writeBits(1, 1); + str.writeBits(2, 1); + str.writeBits(3, Misc.xlateDirectionToClient[direction]); + if (updateRequired) { + str.writeBits(1, 1); + } else { + str.writeBits(1, 0); + } + } + } + } + + /** + * Text update + **/ + + public void forceChat(String text) { + forcedText = text; + forcedChatRequired = true; + updateRequired = true; + } + + + /** + * Graphics + **/ + + public int mask80var1 = 0; + public int mask80var2 = 0; + protected boolean mask80update = false; + + public void appendMask80Update(Stream str) { + str.writeWord(mask80var1); + str.writeDWord(mask80var2); + } + + public void gfx100(int gfx) { + mask80var1 = gfx; + mask80var2 = 6553600; + mask80update = true; + updateRequired = true; + } + + public void gfx0(int gfx) { + mask80var1 = gfx; + mask80var2 = 65536; + mask80update = true; + updateRequired = true; + } + + public void appendAnimUpdate(Stream str) { + str.writeWordBigEndian(animNumber); + str.writeByte(1); + } + + public int startAnimation(int anim, int npcId) { + return animNumber; + } + + /** + * + Face + **/ + + public int FocusPointX = -1, FocusPointY = -1; + public int face = 0; + + private void appendSetFocusDestination(Stream str) { + str.writeWordBigEndian(FocusPointX); + str.writeWordBigEndian(FocusPointY); + } + + public void turnNpc(int i, int j) { + FocusPointX = 2 * i + 1; + FocusPointY = 2 * j + 1; + updateRequired = true; + turnUpdateRequired = true; + } + + public int getNextWalkingDirection2() { + int dir; + dir = Misc.direction(absX, absY, absX + moveX, absY + moveY); + dir >>= 1; + absX += moveX; + absY += moveY; + return dir; + } + + public void getRandomAndHomeNPCWalking(int i) { + direction = -1; + if (NpcHandler.npcs[i].freezeTimer == 0) { + direction = getNextWalkingDirection2(); + } + } + + public void appendFaceEntity(Stream str) { + str.writeWord(face); + } + + public void facePlayer(int player) { + face = player + 32768; + dirUpdateRequired = true; + updateRequired = true; + } + + public void appendFaceToUpdate(Stream str) { + str.writeWordBigEndian(viewX); + str.writeWordBigEndian(viewY); + } + + public void appendNPCUpdateBlock(Stream str) { + if (!updateRequired) { + return; + } + int updateMask = 0; + if (animUpdateRequired) { + updateMask |= 0x10; + } + if (hitUpdateRequired2) { + updateMask |= 8; + } + if (mask80update) { + updateMask |= 0x80; + } + if (dirUpdateRequired) { + updateMask |= 0x20; + } + if (forcedChatRequired) { + updateMask |= 1; + } + if (hitUpdateRequired) { + updateMask |= 0x40; + } + if (transformUpdateRequired) { + updateMask |= 2; + } + if (turnUpdateRequired) { + updateMask |= 4; + } + + str.writeByte(updateMask); + + if (animUpdateRequired) { + appendAnimUpdate(str); + } + if (hitUpdateRequired2) { + appendHitUpdate2(str); + } + if (mask80update) { + appendMask80Update(str); + } + if (dirUpdateRequired) { + appendFaceEntity(str); + } + if (forcedChatRequired) { + str.writeString(forcedText); + } + if (hitUpdateRequired) { + appendHitUpdate(str); + } + if (transformUpdateRequired) { + appendTransformUpdate(str); + } + if (turnUpdateRequired) { + appendSetFocusDestination(str); + } + + } + + public void clearUpdateFlags() { + updateRequired = false; + forcedChatRequired = false; + hitUpdateRequired = false; + hitUpdateRequired2 = false; + animUpdateRequired = false; + dirUpdateRequired = false; + transformUpdateRequired = false; + mask80update = false; + forcedText = null; + moveX = 0; + moveY = 0; + direction = -1; + focusPointX = -1; + focusPointY = -1; + turnUpdateRequired = false; + } + + public int getNextWalkingDirection() { + int nextX = absX + moveX; + int nextY = absY + moveY; + int dir; + dir = Misc.direction(absX, absY, absX + moveX, absY + moveY); + for (Npc npc : NpcHandler.npcs) { + if (npc == null) { + continue; + } + if (npc.absX == nextX && npc.absY == nextY + && npc.heightLevel == heightLevel) { + return -1; + } + } + for (Player p : PlayerHandler.players) { + if (p == null) { + continue; + } + if (p.absX == nextX && p.absY == nextY + && p.heightLevel == heightLevel) { + return -1; + } + } + if (dir == -1) { + return -1; + } + dir >>= 1; + absX += moveX; + absY += moveY; + return dir; + } + + public void getNextNPCMovement(int i) { + direction = -1; + if (NpcHandler.npcs[i].freezeTimer == 0) { + direction = getNextWalkingDirection(); + } + } + + public void appendHitUpdate(Stream str) { + if (HP <= 0) { + isDead = true; + } + str.writeByteC(hitDiff); + if (hitDiff > 0) { + str.writeByteS(1); + } else { + str.writeByteS(0); + } + str.writeByteS(HP); + str.writeByteC(MaxHP); + } + + public int hitDiff2 = 0; + public boolean hitUpdateRequired2 = false; + + public void appendHitUpdate2(Stream str) { + if (HP <= 0) { + isDead = true; + } + str.writeByteA(hitDiff2); + if (hitDiff2 > 0) { + str.writeByteC(1); + } else { + str.writeByteC(0); + } + str.writeByteA(HP); + str.writeByte(MaxHP); + } + + public void handleHitMask(int damage) { + if (!hitUpdateRequired) { + hitUpdateRequired = true; + hitDiff = damage; + } else if (!hitUpdateRequired2) { + hitUpdateRequired2 = true; + hitDiff2 = damage; + } + updateRequired = true; + } + + public int getX() { + return absX; + } + + public int getY() { + return absY; + } + + public int getLastX() { + return lastX; + } + + public int getLastY() { + return lastY; + } + + public void setAbsX(int absX) { + Npc.lastX = this.absX; + this.absX = absX; + } + + public void setAbsY(int absY) { + Npc.lastY = this.absY; + this.absY = absY; + } + + public void deleteNPC(Npc npc) { + setAbsX(0); + setAbsY(0); + npc = null; + } + + public boolean inLesserNpc() { + return (absX >= 3108 && absX <= 3112 && absY >= 3156 && absY <= 3158 && heightLevel == 2); + } + + public boolean inMulti() { + if (absX >= 3136 + && absX <= 3327 + && absY >= 3519 + && absY <= 3607 + || absX >= 2625 + && absX <= 2685 + && absY >= 2550 + && absY <= 2620 // Pest + // Control + || absX >= 3190 && absX <= 3327 && absY >= 3648 && absY <= 3839 + || absX >= 3200 && absX <= 3390 && absY >= 3840 && absY <= 3967 + || absX >= 2992 + && absX <= 3007 + && absY >= 3912 + && absY <= 3967 + || absX >= 2946 + && absX <= 2959 + && absY >= 3816 + && absY <= 3831 + || absX >= 3008 + && absX <= 3199 + && absY >= 3856 + && absY <= 3903 + || absX >= 2667 + && absX <= 2685 + && absY >= 3712 + && absY <= 3730 // rock + // crabs + || absX >= 3008 && absX <= 3071 && absY >= 3600 && absY <= 3711 + || absX >= 3072 && absX <= 3327 && absY >= 3608 && absY <= 3647 + || absX >= 2624 && absX <= 2690 && absY >= 2550 && absY <= 2619 + || absX >= 2371 && absX <= 2422 && absY >= 5062 && absY <= 5117 + || absX >= 2896 && absX <= 2927 && absY >= 3595 && absY <= 3630 + || absX >= 2892 && absX <= 2932 && absY >= 4435 && absY <= 4464 + || absX >= 2256 && absX <= 2287 && absY >= 4680 && absY <= 4711) { + return true; + } + return false; + } + + public boolean inWild() {// beg, end, beg, end, beg, end, beg, end + if (absX > 2941 && absX < 3392 && absY > 3518 && absY < 3966 + || absX > 2941 && absX < 3392 && absY > 9918 && absY < 10366) { + return true; + } + return false; + } +} diff --git a/2006Redone Server/src/redone/game/npcs/NpcActions.java b/2006Redone Server/src/com/rebotted/game/npcs/NpcActions.java similarity index 90% rename from 2006Redone Server/src/redone/game/npcs/NpcActions.java rename to 2006Redone Server/src/com/rebotted/game/npcs/NpcActions.java index 807f96eb..261ff5bf 100644 --- a/2006Redone Server/src/redone/game/npcs/NpcActions.java +++ b/2006Redone Server/src/com/rebotted/game/npcs/NpcActions.java @@ -1,1228 +1,1213 @@ -package redone.game.npcs; - -import redone.game.content.quests.QuestAssistant; -import redone.game.content.skills.core.Fishing; -import redone.game.content.skills.crafting.Tanning; -import redone.game.content.skills.thieving.Pickpocket; -import redone.game.content.traveling.Sailing; -import redone.game.players.Client; -import redone.game.players.PlayerAssistant; -import redone.game.shops.ShopAssistant; -import redone.game.shops.Shops; -import redone.util.Misc; - -public class NpcActions { - - private final Client c; - - public NpcActions(Client Client) { - c = Client; - } - - public void firstClickNpc(int npcType) { - c.clickNpcType = 0; - c.npcClickIndex = 0; - Shops.dialogueShop(c, npcType); - if (Pickpocket.isNPC(c, npcType)) { - Pickpocket.attemptPickpocket(c, npcType); - return; - } - if (Fishing.fishingNPC(c, npcType)) { - Fishing.fishingNPC(c, 1, npcType); - } - if (c.isBotting == true) { - c.getActionSender().sendMessage("You can't click any npcs, until you confirm you are not botting."); - c.getActionSender().sendMessage("If you need to you can type ::amibotting, to see if your botting."); - return; - } - switch (npcType) { - case 209: - c.getDialogueHandler().sendDialogues(3500, 209); - break; - - case 2238: - c.getDialogueHandler().sendDialogues(3214, npcType); - break; - - case 958: - c.getDialogueHandler().sendDialogues(3208, npcType); - break; - - case 606://squire - if (c.knightS == 0) { - c.getDialogueHandler().sendDialogues(610, 606); - } else if (c.knightS == 4) { - c.getDialogueHandler().sendDialogues(654, 606); - } else if (c.knightS == 8) { - c.getDialogueHandler().sendDialogues(682, 606); - } - break; - case 647://reldo - if (c.knightS == 1) { - c.getDialogueHandler().sendDialogues(626, 647); - } - else if (c.shieldArrav == 0) { - c.getDialogueHandler().sendDialogues(690, 647); - } - else if (c.shieldArrav == 1) { - c.getDialogueHandler().sendDialogues(694, 647); - } - else if (c.shieldArrav == 2) { - c.getDialogueHandler().sendDialogues(697, 647); - } - break; - case 604://thurgo - if (c.knightS == 2) { - c.getDialogueHandler().sendDialogues(640, 604); - } else if (c.knightS == 3) { - c.getDialogueHandler().sendDialogues(648, 604); - } else if (c.knightS == 6) { - c.getDialogueHandler().sendDialogues(660, 604); - } else if (c.knightS == 7) { - c.getDialogueHandler().sendDialogues(669, 604); - } else if (c.knightS == 8) { - c.getDialogueHandler().sendDialogues(674, 604); - } - break; - - case 693: //rang guild shots - c.getDialogueHandler().sendDialogues(3201, npcType); - break; - - case 694: //rang guild store - c.getShopAssistant().openShop(111); - break; - - case 1834: - c.getDialogueHandler().sendDialogues(1378, npcType); - break; - - case 537: - case 536: - int requiredQP = Math.min(32, QuestAssistant.MAXIMUM_QUESTPOINTS); - if (c.questPoints >= requiredQP) { - c.getDialogueHandler().sendDialogues(1373, npcType); - } else { - c.getActionSender().sendMessage( - "You need " + requiredQP + " quest points to open this shop."); - } - break; - - case 547: //Baraek - if (c.shieldArrav == 3) { - c.getDialogueHandler().sendDialogues(701, npcType); - } - break; - - case 599: - c.getDialogueHandler().sendDialogues(1369, npcType); - break; - - case 644: //Straven - if (c.shieldArrav <= 4) { - c.getDialogueHandler().sendDialogues(711, npcType); - } - else if (c.shieldArrav == 5) { - c.getDialogueHandler().sendDialogues(730, npcType); - } - else if (c.shieldArrav > 5) { - c.getDialogueHandler().sendDialogues(741, npcType); - } - break; - - case 646: //Curator Haig Halen - c.getDialogueHandler().sendDialogues(745, npcType); - break; - - case 648: //King Roald - if (c.shieldArrav == 7 && c.getItemAssistant().playerHasItem(769)) - c.getDialogueHandler().sendDialogues(756, npcType); - break; - - case 663: - c.getDialogueHandler().sendDialogues(3189, npcType); - break; - - case 802: - c.getDialogueHandler().sendDialogues(1358, npcType); - break; - - case 2205: - c.getDialogueHandler().sendDialogues(1353, npcType); - break; - - case 3830: - c.getDialogueHandler().sendDialogues(1349, npcType); - break; - - case 2270: - if (c.playerLevel[c.playerThieving] > 98) { - c.getShopAssistant().openShop(118); - } else if (c.playerLevel[c.playerThieving] > 49 - && c.playerLevel[c.playerAgility] > 49) { - c.getShopAssistant().openShop(118); - } else { - c.getActionSender().sendMessage( - "You don't have the required skills to open this shop"); - } - break; - - case 1071: - c.getDialogueHandler().sendDialogues(1345, npcType); - break; - - case 666: - c.getDialogueHandler().sendDialogues(3183, npcType); - break; - - case 510: - if (c.absY > 3209 && c.absY < 3215) { - c.getDialogueHandler().sendDialogues(3173, npcType); - } else { - c.getDialogueHandler().sendDialogues(3178, npcType); - } - break; - - case 1042: - c.getDialogueHandler().sendDialogues(3167, npcType); - break; - - case 735: - c.getDialogueHandler().sendDialogues(3167, npcType); - break; - - case 36: - c.getDialogueHandler().sendDialogues(3158, npcType); - break; - - case 844: - if (c.runeMist < 4) { - c.getDialogueHandler().sendStatement( - "You need to beat rune mysteries first to do this."); - c.nextChat = 0; - return; - } - c.getDialogueHandler().sendDialogues(3144, npcType); - break; - - case 798: - c.getDialogueHandler().sendDialogues(3133, npcType); - break; - - case 736: - case 3217: - case 3218: - c.getDialogueHandler().sendDialogues(3118, npcType); - break; - - /* - * tutorial island - */ - case 945: - if (c.tutorialProgress == 0) { - c.getDialogueHandler().sendDialogues(3001, npcType); - } - if (c.tutorialProgress == 1) { - c.getDialogueHandler().sendDialogues(3008, npcType); - } - if (c.tutorialProgress == 2) { - c.getDialogueHandler().sendNpcChat1("You should move on now.", - npcType, "Runescape Guide"); - } - break; - - case 943:// survival - if (c.tutorialProgress == 2) { - c.getDialogueHandler().sendDialogues(3012, npcType); - } - if (c.tutorialProgress == 5) { - c.getDialogueHandler().sendDialogues(3017, npcType); - } - break; - - case 942: // master chef - if (c.tutorialProgress == 7) { - c.getDialogueHandler().sendDialogues(3021, npcType); - } - break; - - case 949: // quest guide - if (c.tutorialProgress == 12) { - c.getDialogueHandler().sendDialogues(3043, npcType); - } - if (c.tutorialProgress == 13) { - c.getDialogueHandler().sendDialogues(3045, npcType); - } - break; - case 948: // mining tutor - if (c.tutorialProgress == 14) { - c.getDialogueHandler().sendDialogues(3052, npcType); - } - if (c.tutorialProgress == 16) { - c.getDialogueHandler().sendDialogues(3056, npcType); - } - if (c.tutorialProgress == 20) { - c.getDialogueHandler().sendDialogues(3063, npcType); - } - break; - case 944: // Combat deud - if (c.tutorialProgress == 21) { - c.getDialogueHandler().sendDialogues(3067, npcType); - } else if (c.tutorialProgress == 23 - && !c.getItemAssistant().playerHasItem(1171) - && !c.getItemAssistant().playerHasItem(1277)) { - c.getDialogueHandler().sendDialogues(3072, npcType); - } else if (c.getItemAssistant().playerHasItem(1171) - && c.getItemAssistant().playerHasItem(1277) && c.tutorialProgress == 23) { - c.getActionSender().sendMessage( - "I already gave you a sword and shield."); - c.nextChat = 0; - c.getDialogueHandler() - .chatboxText( - c, - "In your worn inventory panel, right click on the dagger and", - "select the remove option from the drop down list. After you've", - "unequipped the dagger, wield the sword and shield. As you", - "pass the mouse over an item you will see its name.", - "Unequipping items"); - PlayerAssistant.removeHintIcon(c); - } else if (c.tutorialProgress == 25) { - c.getDialogueHandler().sendDialogues(3074, npcType); - } - break; - - case 947: // fiancial dude - if (c.tutorialProgress == 27) { - c.getDialogueHandler().sendDialogues(3079, npcType); - } - // c.getPacketDispatcher().createArrow(1, 7); - break; - - case 954: // prayer dude - if (c.tutorialProgress == 28) { - c.getDialogueHandler().sendDialogues(3089, npcType); - } - if (c.tutorialProgress == 29) { - c.getDialogueHandler().sendDialogues(3092, npcType); - } - if (c.tutorialProgress == 31) { - c.getDialogueHandler().sendDialogues(3097, npcType); - } - break; - case 946:// mage - if (c.tutorialProgress == 32) { - c.getDialogueHandler().sendDialogues(3105, npcType); - } - if (c.tutorialProgress == 33) { - c.getDialogueHandler().sendDialogues(3108, npcType); - } - if (c.tutorialProgress == 34) { - c.getDialogueHandler().sendDialogues(3110, npcType); - } - if (c.tutorialProgress == 35) { - c.getDialogueHandler().sendDialogues(3112, npcType); - } - break; - - case 922: - c.getDialogueHandler().sendDialogues(1312, npcType); - break; - - case 805: - c.getDialogueHandler().sendDialogues(1317, npcType); - break; - - case 519: - c.getDialogueHandler().sendDialogues(15, npcType); // barrows fix - // barrows - break; - - case 598: - c.getDialogueHandler().sendDialogues(1300, npcType); - break; - - case 70: - case 1596: - case 1597: - case 1598: - case 1599: - c.getDialogueHandler().sendDialogues(1228, npcType); - c.SlayerMaster = npcType; - break; - - case 1595: - c.getDialogueHandler().sendDialogues(1036, npcType); - break; - - case 170: - c.getDialogueHandler().sendDialogues(591, npcType); - break; - - case 925: - case 926: - c.getDialogueHandler().sendDialogues(1018, npcType); - break; - - case 2728: - case 2729: - c.getDialogueHandler().sendDialogues(1011, npcType); - break; - - case 376: - case 377: - case 378: - if (c.getItemAssistant().playerHasItem(995, 30)) { - c.getDialogueHandler().sendDialogues(33, npcType); - } else { - c.getDialogueHandler().sendStatement( - "You need 30 coins to travel on this ship."); - } - break; - - case 380: - if (c.getItemAssistant().playerHasItem(995, 30)) { - c.getDialogueHandler().sendDialogues(584, npcType); - } else { - c.getDialogueHandler().sendStatement( - "You need 30 coins to travel on this ship."); - } - break; - - /** - * Start of Quests - */ - - case 557: - if (c.ptjob == 0) { - c.getDialogueHandler().sendDialogues(37, npcType); - } else if (c.ptjob == 1) { - c.getDialogueHandler().sendDialogues(47, npcType); - } else if (c.ptjob == 2) { - c.getDialogueHandler().sendDialogues(1000, npcType); - } - break; - - case 375: - if (c.pirateTreasure == 0) { - c.getDialogueHandler().sendDialogues(554, npcType); - } else if (c.pirateTreasure == 1) { - c.getDialogueHandler().sendStatement( - "Talk to lucas and help him transport the bannanas."); - } else if (c.pirateTreasure == 2) { - c.getDialogueHandler().sendDialogues(569, npcType); - } else if (c.pirateTreasure == 3) { - c.getDialogueHandler().sendDialogues(580, npcType); - } else { - c.getActionSender().sendMessage( - "Arr! Thanks for me helping me."); - } - break; - - case 307: - if (c.witchspot == 0) { - c.getDialogueHandler().sendDialogues(532, npcType); - } else if (c.witchspot == 1) { - c.getDialogueHandler().sendDialogues(546, npcType); - } else if (c.witchspot == 2) { - c.getDialogueHandler().sendDialogues(548, npcType); - } else if (c.witchspot == 3) { - c.getDialogueHandler().sendNpcChat1( - "Welcome back, thank you again for helping me.", - c.talkingNpc, "Hetty"); - } - break; - - case 755:// morgan - if (c.vampSlayer == 3) { - c.getDialogueHandler().sendDialogues(531, npcType); - } else if (c.vampSlayer == 4) { - c.getDialogueHandler().sendDialogues(529, npcType); - } else if (c.vampSlayer == 0) { - c.getDialogueHandler().sendDialogues(476, npcType); - } - break; - - case 743:// ned - if (c.vampSlayer == 0) { - c.getDialogueHandler().sendDialogues(211, npcType); - } else if (c.vampSlayer == 1) { - c.getDialogueHandler().sendStatement("I should go find harlow."); - } else if (c.vampSlayer > 1) { - c.getDialogueHandler().sendDialogues(1337, npcType); - } - break; - - case 756:// harlow - if (c.vampSlayer == 1) { - c.getDialogueHandler().sendDialogues(498, npcType); - } else if (c.vampSlayer == 2) { - c.getDialogueHandler().sendDialogues(510, npcType); - } else if (c.vampSlayer == 3) { - c.getDialogueHandler().sendDialogues(531, npcType); - } else { - c.getDialogueHandler().sendStatement("I'm not on this step yet."); - } - break; - - case 456: - if (c.restGhost == 0) { - c.getDialogueHandler().sendDialogues(338, 456); - } - break; - - case 457: - if (c.restGhost == 2) { - c.getDialogueHandler().sendDialogues(371, npcType); - } - break; - - case 458: - if (c.restGhost == 1) { - c.getDialogueHandler().sendDialogues(352, npcType); - } - break; - - case 759: - if (c.getItemAssistant().playerHasItem(1927, 1) && c.gertCat == 2) { - c.getDialogueHandler().sendDialogues(319, npcType); - c.getItemAssistant().deleteItem(1927, 1); - c.getItemAssistant().addItem(1925, 1); - c.gertCat = 3; - } else if (c.getItemAssistant().playerHasItem(1552, 1) - && c.gertCat == 3) { - c.getDialogueHandler().sendDialogues(323, npcType); - c.getItemAssistant().deleteItem(1552, 1); - c.gertCat = 4; - } else if (c.gertCat == 4) { - c.getDialogueHandler().sendStatement("Hiss!"); - c.getDialogueHandler().sendDialogues(325, npcType); - c.gertCat = 5; - } else if (c.getItemAssistant().playerHasItem(1554, 1) - && c.gertCat == 6) { - c.getItemAssistant().deleteItem(1554, 1); - c.getDialogueHandler().sendDialogues(326, npcType); - c.gertCat = 6; - } else if (c.gertCat == 2) { - c.getActionSender().sendMessage("Hiss!"); - c.getDialogueHandler().sendStatement("Fluffs hisses but clearly wants something - maybe she is thirsty?"); - } - break; - - case 780: - if (c.playerLevel[10] < 4) { - c.getDialogueHandler().sendStatement( - "You don't have the requirements to do this quest."); - return; - } - if (c.gertCat == 0) { - c.getDialogueHandler().sendDialogues(269, npcType); - } else if (c.gertCat == 1) { - c.getDialogueHandler().sendDialogues(276, npcType); - } else if (c.gertCat == 6) { - c.getDialogueHandler().sendDialogues(328, npcType); - } else { - c.getDialogueHandler() - .sendStatement("She has nothing to say to you."); - } - break; - - case 783: - if (c.gertCat == 1) { - c.getDialogueHandler().sendDialogues(286, npcType); - } else if (c.gertCat == 2) { - c.getDialogueHandler().sendDialogues(314, npcType); - } - break; - - case 639: - if (c.romeojuliet == 0) { - c.getDialogueHandler().sendDialogues(389, npcType); - } else if (c.romeojuliet == 1) { - c.getDialogueHandler().sendDialogues(408, npcType); - } else if (c.romeojuliet == 3) { - c.getDialogueHandler().sendDialogues(415, npcType); - } else if (c.romeojuliet == 4) { - c.getDialogueHandler().sendDialogues(424, npcType); - } else if (c.romeojuliet == 5) { - c.getDialogueHandler().sendDialogues(431, npcType); - } else if (c.romeojuliet == 6) { - c.getDialogueHandler().sendDialogues(443, npcType); - } else if (c.romeojuliet == 8) { - c.getDialogueHandler().sendDialogues(469, npcType); - } else if (c.romeojuliet == 9) { - c.getActionSender().sendMessage("Thanks for helping me!"); - } - if (c.romeojuliet == 2 - && c.getItemAssistant().playerHasItem(755, 1)) { - c.getDialogueHandler().sendDialogues(415, npcType); - } - if (c.romeojuliet == 2 - && !c.getItemAssistant().playerHasItem(755, 1)) { - c.getDialogueHandler().sendDialogues(421, npcType); - } - break; - - case 276: - if (c.romeojuliet == 5) { - c.getDialogueHandler().sendDialogues(432, npcType); - } - if (c.romeojuliet == 6 - && c.getItemAssistant().playerHasItem(300, 1) - && c.getItemAssistant().playerHasItem(227, 1) - && c.getItemAssistant().playerHasItem(526, 1)) { - c.getDialogueHandler().sendDialogues(448, npcType); - } else { - if (c.romeojuliet == 6) { - c.getDialogueHandler().sendDialogues(439, npcType); - } - } - break; - - case 637: - if (c.romeojuliet == 0) { - c.getDialogueHandler().sendDialogues(409, npcType); - } else if (c.romeojuliet == 1) { - c.getDialogueHandler().sendDialogues(410, npcType); - } else if (c.romeojuliet == 2) { - c.getDialogueHandler().sendDialogues(414, npcType); - } else if (c.romeojuliet == 7) { - c.getDialogueHandler().sendDialogues(457, npcType); - } else if (c.romeojuliet == 8) { - c.getDialogueHandler().sendDialogues(468, npcType); - } - break; - - case 741: - c.getDialogueHandler().sendDialogues(190, npcType); - break; - - case 553: - if (c.runeMist == 2) { - c.getDialogueHandler().sendDialogues(229, npcType); - } else if (c.runeMist == 3) { - c.getDialogueHandler().sendDialogues(237, npcType); - } - break; - - case 300: - if (c.runeMist == 1) { - c.getDialogueHandler().sendDialogues(201, npcType); - } else if (c.runeMist == 2) { - c.getDialogueHandler().sendDialogues(213, npcType); - } else if (c.runeMist == 3) { - c.getDialogueHandler().sendDialogues(238, npcType); - } else if (c.runeMist > 3 || c.runeMist < 1) { - c.getActionSender().sendMessage( - "He has nothing to say to you."); - } - break; - - case 284: - if (c.playerLevel[14] < 14) { - c.getDialogueHandler().sendStatement( - "You don't have the requirements to do this quest."); - return; - } - if (c.doricQuest == 0) { - c.getDialogueHandler().sendDialogues(89, npcType); - } else if (c.doricQuest == 1) { - c.getDialogueHandler().sendDialogues(84, npcType); - } else if (c.doricQuest == 2) { - c.getDialogueHandler().sendDialogues(86, npcType); - } else if (c.doricQuest == 3) { - c.getDialogueHandler().sendDialogues(100, npcType); - } - break; - - case 706: - if (c.impsC == 0) { - c.getDialogueHandler().sendDialogues(145, npcType); - } else if (c.impsC == 1) { - c.getDialogueHandler().sendDialogues(156, npcType); - } - if (c.impsC == 1 && c.getItemAssistant().playerHasItem(1470, 1) - && c.getItemAssistant().playerHasItem(1472, 1) - && c.getItemAssistant().playerHasItem(1474, 1) - && c.getItemAssistant().playerHasItem(1476, 1)) { - c.getDialogueHandler().sendDialogues(158, npcType); - } else if (c.impsC == 1) { - c.getDialogueHandler().sendDialogues(157, npcType); - } - break; - - case 278: - if (c.cookAss == 0) { - c.getDialogueHandler().sendDialogues(50, npcType); - } else if (c.cookAss == 1) { - c.getDialogueHandler().sendDialogues(67, npcType); - } else if (c.cookAss == 2) { - c.getDialogueHandler().sendDialogues(69, npcType); - } else if (c.cookAss == 3) { - c.getDialogueHandler().sendDialogues(76, npcType); - } - break; - - case 608: - if (c.blackKnight == 0 && c.questPoints >= 12) { - c.getDialogueHandler().sendDialogues(3902, npcType); - } else if (c.blackKnight == 1) { - c.getDialogueHandler().sendDialogues(3510, npcType); - }else if (c.blackKnight == 2) { - c.getDialogueHandler().sendDialogues(3502, npcType); - }else if (c.blackKnight == 3) { - c.getActionSender().sendMessage( - "He has nothing to say to you."); - } - break; - - case 758: - if (c.sheepShear == 0) { - c.getDialogueHandler().sendDialogues(164, npcType); - } else if (c.sheepShear == 1) { - c.getDialogueHandler().sendDialogues(185, 1); - } else { - c.getActionSender().sendMessage( - "He has nothing to say to you."); - } - break; - - case 379: - if (c.bananas == 0 || c.luthas == false) { - c.getDialogueHandler().sendDialogues(8, npcType); - } else if (c.bananas > 0) { - c.getDialogueHandler().sendDialogues(4, npcType); - } else { - c.getActionSender() - .sendMessage( - "You may now talk to Luthas your bananna task has been reset."); - c.luthas = false; - c.bananas = 0; - } - break; - - /** - * End of Quests - */ - - case 2294: - c.getDialogueHandler().sendDialogues(24, npcType); - break; - - case 2296: - c.getDialogueHandler().sendDialogues(26, npcType); - break; - - case 500: - c.getDialogueHandler().sendDialogues(21, npcType); - break; - - case 659: - c.getDialogueHandler().sendDialogues(18, npcType); - break; - - case 2244: - c.getDialogueHandler().sendDialogues(14, npcType); - break; - - case 641: - c.getDialogueHandler().sendDialogues(11, npcType); - break; - - case 2458: - c.getDialogueHandler().sendDialogues(2, npcType); - break; - - case 731: - c.getDialogueHandler().sendDialogues(19, npcType); - break; - - case 732: - c.getDialogueHandler().sendDialogues(3150, npcType); - break; - - /** - * Bankers - */ - case 953: - case 166: - case 1702: - case 495: - case 496: - case 497: - case 498: - case 499: - case 567: - case 1036: - case 1360: - case 2163: - case 2164: - case 2354: - case 2355: - case 2568: - case 2569: - case 2570: - case 2271: - case 494: - case 2619: - c.getDialogueHandler().sendDialogues(1013, npcType); - break; - - case 1152: - c.getDialogueHandler().sendDialogues(16, npcType); - break; - - case 905: - c.getDialogueHandler().sendDialogues(5, npcType); - break; - - case 460: - c.getDialogueHandler().sendDialogues(3, npcType); - break; - - case 462: - c.getDialogueHandler().sendDialogues(3149, npcType); - break; - - case 658: - Sailing.startTravel(c, 2); - break; - - case 2437: - case 2438: - if (!c.getItemAssistant().playerHasItem(995, 1000)) { - c.getDialogueHandler().sendStatement("You need 1000 coins to go here!"); - c.nextChat = 0; - return; - } - if (c.absX > 2619 && c.absX < 2622 && c.absY > 3680 && c.absY < 3689 && c.getItemAssistant().playerHasItem(995, 1000)) { - //Sailing.startTravel(c, 18); - c.getPlayerAssistant().startTeleport(2551, 3759, 0, "modern"); - c.getItemAssistant().deleteItem(995, 1000); - c.getDialogueHandler().sendStatement("You arrive safely."); - c.nextChat = 0; - } else { - if (c.getItemAssistant().playerHasItem(995, 1000)) { - //Sailing.startTravel(c, 17); - c.getPlayerAssistant().startTeleport(2620, 3686, 0, "modern"); - c.getItemAssistant().deleteItem(995, 1000); - c.getDialogueHandler().sendStatement("You arrive safely."); - c.nextChat = 0; - } - } - break; - - case 381: - if (c.absY > 3230 && c.absY < 3236) { - Sailing.startTravel(c, 8); - } else { - Sailing.startTravel(c, 7); - } - break; - - case 3506: - case 3507: - case 761: - case 760: - case 762: - case 763: - case 764: - case 765: - case 766: - case 767: - case 768: - case 769: - case 770: - case 771: - case 772: - case 773: - case 3505: - c.getSummon().pickUpClean(c, c.summonId); - c.hasNpc = false; - c.summonId = 0; - break; - - case 804: - case 1041: - Tanning.sendTanningInterface(c); - break; - - case 657: - Sailing.startTravel(c, 1); - break; - - case 8689: - if (System.currentTimeMillis() - c.buryDelay > 1500) { - if (c.getItemAssistant().playerHasItem(1925, 1)) { - c.turnPlayerTo(c.objectX, c.objectY); - c.startAnimation(2292); - c.getItemAssistant().addItem(1927, 1); - c.getItemAssistant().deleteItem(1925, 1); - c.buryDelay = System.currentTimeMillis(); - } else { - c.getActionSender().sendMessage( - "You need a bucket to milk a cow!"); - } - } - break; - - case 3789: - c.getActionSender().sendMessage( - new StringBuilder().append("You currently have ") - .append(c.pcPoints).append(" pest control points.") - .toString()); - break; - - /* Shops */ - - /* - * case 588: c.getShops().openShop(2); break; case 550: - * c.getShops().openShop(3); break; case 575: c.getShops().openShop(4); - * break; case 2356: c.getShops().openShop(5); break; case 3796: - * c.getShops().openShop(6); break; case 1860: c.getShops().openShop(7); - * break; case 559: c.getShops().openShop(9); break; case 562: - * c.getShops().openShop(10); break; case 581: - * c.getShops().openShop(11); break; case 548: - * c.getShops().openShop(12); break; case 554: - * c.getShops().openShop(13); break; case 601: - * c.getShops().openShop(14); break; case 1301: - * c.getShops().openShop(15); break; case 1039: - * c.getShops().openShop(16); break; case 2353: - * c.getShops().openShop(17); break; case 3166: - * c.getShops().openShop(18); break; case 2161: - * c.getShops().openShop(19); break; case 2162: - * c.getShops().openShop(20); break; case 600: - * c.getShops().openShop(21); break; case 603: - * c.getShops().openShop(22); break; case 593: - * c.getShops().openShop(23); break; case 545: - * c.getShops().openShop(24); break; case 585: - * c.getShops().openShop(25); break; case 2305: - * c.getShops().openShop(26); break; case 2307: - * c.getShops().openShop(27); break; case 2304: - * c.getShops().openShop(28); break; case 2306: - * c.getShops().openShop(29); break; case 517: - * c.getShops().openShop(30); break; case 558: - * c.getShops().openShop(31); break; case 576: - * c.getShops().openShop(32); break; case 1369: - * c.getShops().openShop(33); break; case 1038: - * c.getShops().openShop(35); break; case 1433: - * c.getShops().openShop(36); break; case 584: - * c.getShops().openShop(37); break; case 540: - * c.getShops().openShop(38); break; case 2157: - * c.getShops().openShop(39); break; case 538: - * c.getShops().openShop(40); break; case 1303: - * c.getShops().openShop(41); break; case 578: - * c.getShops().openShop(42); break; case 587: - * c.getShops().openShop(43); break; case 1398: - * c.getShops().openShop(44); break; case 556: - * c.getShops().openShop(45); break; case 1865: - * c.getShops().openShop(46); break; case 543: - * c.getShops().openShop(47); break; case 2198: - * c.getShops().openShop(48); break; case 580: - * c.getShops().openShop(49); break; case 1862: - * c.getShops().openShop(50); break; case 583: - * c.getShops().openShop(51); break; case 553: - * c.getShops().openShop(52); break; case 461: - * c.getShops().openShop(53); break; case 903: - * c.getShops().openShop(54); break; case 1435: - * c.getShops().openShop(56); break; case 3800: - * c.getShops().openShop(57); break; case 2623: - * c.getShops().openShop(58); break; case 594: - * c.getShops().openShop(59); break; case 579: - * c.getShops().openShop(60); break; case 2160: - * c.getShops().openShop(61); break; case 2191: - * c.getShops().openShop(61); break; case 589: - * c.getShops().openShop(62); break; case 549: - * c.getShops().openShop(63); break; case 542: - * c.getShops().openShop(64); break; case 3038: - * c.getShops().openShop(65); break; case 544: - * c.getShops().openShop(66); break; case 541: - * c.getShops().openShop(67); break; case 1434: - * c.getShops().openShop(68); break; case 577: - * c.getShops().openShop(69); break; case 539: - * c.getShops().openShop(70); break; case 1980: - * c.getShops().openShop(71); break; case 546: - * c.getShops().openShop(72); break; case 382: - * c.getShops().openShop(73); break; case 3541: - * c.getShops().openShop(74); break; case 520: - * c.getShops().openShop(75); break; case 1436: - * c.getShops().openShop(76); break; case 590: - * c.getShops().openShop(77); break; case 971: - * c.getShops().openShop(78); break; case 1917: - * c.getShops().openShop(79); break; case 1040: - * c.getShops().openShop(80); break; case 563: - * c.getShops().openShop(81); break; case 522: - * c.getShops().openShop(82); break; case 524: - * c.getShops().openShop(83); break; case 526: - * c.getShops().openShop(84); break; case 2154: - * c.getShops().openShop(85); break; case 1334: - * c.getShops().openShop(86); break; case 2552: - * c.getShops().openShop(87); break; case 528: - * c.getShops().openShop(88); break; case 1254: - * c.getShops().openShop(89); break; case 2086: - * c.getShops().openShop(90); break; case 3824: - * c.getShops().openShop(91); break; case 1866: - * c.getShops().openShop(92); break; case 1699: - * c.getShops().openShop(93); break; case 1282: - * c.getShops().openShop(94); break; case 530: - * c.getShops().openShop(95); break; case 516: - * c.getShops().openShop(96); break; case 560: - * c.getShops().openShop(97); break; case 471: - * c.getShops().openShop(98); break; case 1208: - * c.getShops().openShop(99); break; case 532: - * c.getShops().openShop(100); break; case 555: - * c.getShops().openShop(101); break; case 534: - * c.getShops().openShop(102); break; case 551: - * c.getShops().openShop(104); break; case 586: - * c.getShops().openShop(105); break; case 564: - * c.getShops().openShop(106); break; case 747: - * c.getShops().openShop(107); break; case 573: - * c.getShops().openShop(108); break; case 1316: - * c.getShops().openShop(108); break; case 1787: - * c.getShops().openShop(110); break; case 694: - * c.getShops().openShop(111); break; case 1526: - * c.getShops().openShop(112); break; case 568: - * c.getShops().openShop(113); break; case 1079: - * c.getShops().openShop(114); break; - */ - - } - } - - public void secondClickNpc(int npcType) { - String type = c.playerMagicBook == 0 ? "modern" : "ancient"; - c.clickNpcType = 0; - c.rememberNpcIndex = c.npcClickIndex; - c.npcClickIndex = 0; - Shops.openShop(c, npcType); - if (Pickpocket.isNPC(c, npcType)) { - Pickpocket.attemptPickpocket(c, npcType); - return; - } - if (Fishing.fishingNPC(c, npcType)) { - Fishing.fishingNPC(c, 2, npcType); - } - if (c.isBotting == true) { - c.getActionSender().sendMessage("You can't click any npcs, until you confirm you are not botting."); - c.getActionSender().sendMessage("If you need to you can type ::amibotting, to see if your botting."); - return; - } - if (npcType >= 761 && npcType <= 773 || npcType > 3504 - && npcType < 3508 && npcType != 767) { - c.getDialogueHandler().sendDialogues(908, npcType); - } - - switch (npcType) { - - case 209: - c.getShopAssistant().openShop(144); - break; - - - case 2437: - case 2438: - if (!c.getItemAssistant().playerHasItem(995, 1000)) { - c.getDialogueHandler().sendStatement("You need 1000 coins to go here!"); - return; - } - if (c.absX > 2619 && c.absX < 2622 && c.absY > 3680 && c.absY < 3689 && c.getItemAssistant().playerHasItem(995, 1000)) { - //Sailing.startTravel(c, 18); - c.getPlayerAssistant().startTeleport(2551, 3759, 0, "modern"); - c.getItemAssistant().deleteItem(995, 1000); - c.getDialogueHandler().sendStatement("You arrive safely."); - c.nextChat = 0; - } else { - if (c.getItemAssistant().playerHasItem(995, 1000)) { - //Sailing.startTravel(c, 17); - c.getPlayerAssistant().startTeleport(2620, 3686, 0, "modern"); - c.getItemAssistant().deleteItem(995, 1000); - c.getDialogueHandler().sendStatement("You arrive safely."); - c.nextChat = 0; - } - } - break; - - case 537: - case 536: - int requiredQP = Math.min(32, QuestAssistant.MAXIMUM_QUESTPOINTS); - if (c.questPoints >= requiredQP) { - c.getShopAssistant().openShop(npcType); - } else { - c.getActionSender().sendMessage( - "You need " + requiredQP + " quest points to open this shop."); - } - break; - - case 300: - if (c.runeMist < 4) { - c.getDialogueHandler().sendStatement( - "You need to beat rune mysteries first to do this."); - c.nextChat = 0; - return; - } - c.getPlayerAssistant().startTeleport(2911, 4832, 0, type); - break; - - case 557: - c.getShopAssistant().openShop(34); - break; - - case 804: - case 1041: - Tanning.sendTanningInterface(c); - break; - - case 2270: - if (c.playerLevel[c.playerThieving] > 98) { - c.getShopAssistant().openShop(118); - } else if (c.playerLevel[c.playerThieving] > 49 - && c.playerLevel[c.playerAgility] > 49) { - c.getShopAssistant().openShop(118); - } else { - c.getActionSender().sendMessage( - "You don't have the required skills to open this shop"); - } - break; - - case 1042: - if (c.getItemAssistant().playerHasItem(995, 5)) { - c.getItemAssistant().addItem(2955, 1); - c.getItemAssistant().deleteItem(995, 5); - } else { - c.getDialogueHandler().sendNpcChat1( - "You need 5 coins to buy a moonlight mead.", - c.talkingNpc, "Roavar"); - c.nextChat = 0; - } - break; - - case 844: - case 462: - if (c.runeMist < 4) { - c.getDialogueHandler().sendStatement( - "You need to beat rune mysteries first to do this."); - c.nextChat = 0; - return; - } - c.getPlayerAssistant().startTeleport(2911, 4832, 0, type); - break; - - case 519: - c.getShopAssistant().openShop(8); - break; - - case 1595: - c.getDialogueHandler().sendDialogues(1053, npcType); - break; - - /** - * Bankers - */ - case 953: - case 166: - case 1702: - case 495: - case 496: - case 497: - case 498: - case 499: - case 567: - case 1036: - case 1360: - case 2163: - case 2164: - case 2354: - case 2355: - case 2568: - case 2569: - case 2570: - case 2271: - case 494: - case 2619: - c.getPlayerAssistant().openUpBank(); - break; - } - } - - public void thirdClickNpc(int npcType) { - c.clickNpcType = 0; - c.rememberNpcIndex = c.npcClickIndex; - c.npcClickIndex = 0; - if (Pickpocket.isNPC(c, npcType)) { - Pickpocket.attemptPickpocket(c, npcType); - return; - } - if (c.isBotting == true) { - c.getActionSender().sendMessage("You can't click any npcs, until you confirm you are not botting."); - c.getActionSender().sendMessage("If you need to you can type ::amibotting, to see if your botting."); - return; - } - if (npcType >= 761 && npcType <= 773 && npcType != 767) { - if (NpcHandler.npcs[c.rememberNpcIndex].spawnedBy == c.playerId) - c.getDialogueHandler().sendDialogues(910, npcType); - else - c.getActionSender().sendMessage("This isn't your cat."); - } - switch (npcType) { - - /** - * Banker - */ - case 3824: - c.getPlayerAssistant().openUpBank(); - break; - - case 958: - c.getShopAssistant().openShop(143); - break; - - case 1526: - c.getShopAssistant().openShop(ShopAssistant.CASTLE_SHOP); - break; - - case 70: - case 1596: - case 1597: - case 1598: - case 1599: - c.getShopAssistant().openShop(109); - break; - - case 836: - if (c.getItemAssistant().playerHasItem(995, 5)) { - c.getActionSender().sendMessage( - "You buy a shantay pass quickly."); - c.getItemAssistant().deleteItem(995, 5); - c.getItemAssistant().addItem(1854, 1); - } else { - c.getActionSender().sendMessage( - "You need 5 coins to buy a pass."); - } - break; - case 553: - if (c.runeMist < 4) { - c.getDialogueHandler().sendStatement( - "You need to beat rune mysteries first to do this."); - return; - } - String type = c.playerMagicBook == 0 ? "modern" : "ancient"; - c.getPlayerAssistant().startTeleport(2911, 4832, 0, type); - break; - - case 2258: - if (c.playerLevel[20] < 35) { - c.getActionSender().sendMessage("You need a Runecrafting level of 35 to enter the Abyss."); - return; - } - c.getPlayerAssistant().spellTeleport(3027, 4852, 0); - break; - - default: - if (c.playerRights == 3) { - Misc.println("Third Click NPC : " + npcType); - } - break; - - } - } - -} +package com.rebotted.game.npcs; + +import com.rebotted.game.content.quests.QuestAssistant; +import com.rebotted.game.content.skills.core.Fishing; +import com.rebotted.game.content.skills.crafting.Tanning; +import com.rebotted.game.content.skills.thieving.Pickpocket; +import com.rebotted.game.content.traveling.Sailing; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerAssistant; +import com.rebotted.game.shops.ShopAssistant; +import com.rebotted.game.shops.Shops; +import com.rebotted.util.Misc; + +public class NpcActions { + + private final Player c; + + public NpcActions(Player player) { + c = player; + } + + public void firstClickNpc(int npcType) { + c.clickNpcType = 0; + c.npcClickIndex = 0; + Shops.dialogueShop(c, npcType); + if (Pickpocket.isNPC(c, npcType)) { + Pickpocket.attemptPickpocket(c, npcType); + return; + } + if (Fishing.fishingNPC(c, npcType)) { + Fishing.fishingNPC(c, 1, npcType); + } + switch (npcType) { + case 209: + c.getDialogueHandler().sendDialogues(3500, 209); + break; + + case 2238: + c.getDialogueHandler().sendDialogues(3214, npcType); + break; + + case 958: + c.getDialogueHandler().sendDialogues(3208, npcType); + break; + + case 606://squire + if (c.knightS == 0) { + c.getDialogueHandler().sendDialogues(610, 606); + } else if (c.knightS == 4) { + c.getDialogueHandler().sendDialogues(654, 606); + } else if (c.knightS == 8) { + c.getDialogueHandler().sendDialogues(682, 606); + } + break; + case 647://reldo + if (c.knightS == 1) { + c.getDialogueHandler().sendDialogues(626, 647); + } + else if (c.shieldArrav == 0) { + c.getDialogueHandler().sendDialogues(690, 647); + } + else if (c.shieldArrav == 1) { + c.getDialogueHandler().sendDialogues(694, 647); + } + else if (c.shieldArrav == 2) { + c.getDialogueHandler().sendDialogues(697, 647); + } + break; + case 604://thurgo + if (c.knightS == 2) { + c.getDialogueHandler().sendDialogues(640, 604); + } else if (c.knightS == 3) { + c.getDialogueHandler().sendDialogues(648, 604); + } else if (c.knightS == 6) { + c.getDialogueHandler().sendDialogues(660, 604); + } else if (c.knightS == 7) { + c.getDialogueHandler().sendDialogues(669, 604); + } else if (c.knightS == 8) { + c.getDialogueHandler().sendDialogues(674, 604); + } + break; + + case 693: //rang guild shots + c.getDialogueHandler().sendDialogues(3201, npcType); + break; + + case 694: //rang guild store + c.getShopAssistant().openShop(111); + break; + + case 1834: + c.getDialogueHandler().sendDialogues(1378, npcType); + break; + + case 537: + case 536: + int requiredQP = Math.min(32, QuestAssistant.MAXIMUM_QUESTPOINTS); + if (c.questPoints >= requiredQP) { + c.getDialogueHandler().sendDialogues(1373, npcType); + } else { + c.getPacketSender().sendMessage( + "You need " + requiredQP + " quest points to open this shop."); + } + break; + + case 547: //Baraek + if (c.shieldArrav == 3) { + c.getDialogueHandler().sendDialogues(701, npcType); + } + break; + + case 599: + c.getDialogueHandler().sendDialogues(1369, npcType); + break; + + case 644: //Straven + if (c.shieldArrav <= 4) { + c.getDialogueHandler().sendDialogues(711, npcType); + } + else if (c.shieldArrav == 5) { + c.getDialogueHandler().sendDialogues(730, npcType); + } + else if (c.shieldArrav > 5) { + c.getDialogueHandler().sendDialogues(741, npcType); + } + break; + + case 646: //Curator Haig Halen + c.getDialogueHandler().sendDialogues(745, npcType); + break; + + case 648: //King Roald + if (c.shieldArrav == 7 && c.getItemAssistant().playerHasItem(769)) + c.getDialogueHandler().sendDialogues(756, npcType); + break; + + case 663: + c.getDialogueHandler().sendDialogues(3189, npcType); + break; + + case 802: + c.getDialogueHandler().sendDialogues(1358, npcType); + break; + + case 2205: + c.getDialogueHandler().sendDialogues(1353, npcType); + break; + + case 3830: + c.getDialogueHandler().sendDialogues(1349, npcType); + break; + + case 2270: + if (c.playerLevel[c.playerThieving] > 98) { + c.getShopAssistant().openShop(118); + } else if (c.playerLevel[c.playerThieving] > 49 + && c.playerLevel[c.playerAgility] > 49) { + c.getShopAssistant().openShop(118); + } else { + c.getPacketSender().sendMessage( + "You don't have the required skills to open this shop"); + } + break; + + case 1071: + c.getDialogueHandler().sendDialogues(1345, npcType); + break; + + case 666: + c.getDialogueHandler().sendDialogues(3183, npcType); + break; + + case 510: + if (c.absY > 3209 && c.absY < 3215) { + c.getDialogueHandler().sendDialogues(3173, npcType); + } else { + c.getDialogueHandler().sendDialogues(3178, npcType); + } + break; + + case 1042: + c.getDialogueHandler().sendDialogues(3167, npcType); + break; + + case 735: + c.getDialogueHandler().sendDialogues(3167, npcType); + break; + + case 36: + c.getDialogueHandler().sendDialogues(3158, npcType); + break; + + case 844: + if (c.runeMist < 4) { + c.getDialogueHandler().sendStatement( + "You need to beat rune mysteries first to do this."); + c.nextChat = 0; + return; + } + c.getDialogueHandler().sendDialogues(3144, npcType); + break; + + case 798: + c.getDialogueHandler().sendDialogues(3133, npcType); + break; + + case 736: + case 3217: + case 3218: + c.getDialogueHandler().sendDialogues(3118, npcType); + break; + + /* + * tutorial island + */ + case 945: + if (c.tutorialProgress == 0) { + c.getDialogueHandler().sendDialogues(3001, npcType); + } + if (c.tutorialProgress == 1) { + c.getDialogueHandler().sendDialogues(3008, npcType); + } + if (c.tutorialProgress == 2) { + c.getDialogueHandler().sendNpcChat1("You should move on now.", + npcType, "Runescape Guide"); + } + break; + + case 943:// survival + if (c.tutorialProgress == 2) { + c.getDialogueHandler().sendDialogues(3012, npcType); + } + if (c.tutorialProgress == 5) { + c.getDialogueHandler().sendDialogues(3017, npcType); + } + break; + + case 942: // master chef + if (c.tutorialProgress == 7) { + c.getDialogueHandler().sendDialogues(3021, npcType); + } + break; + + case 949: // quest guide + if (c.tutorialProgress == 12) { + c.getDialogueHandler().sendDialogues(3043, npcType); + } + if (c.tutorialProgress == 13) { + c.getDialogueHandler().sendDialogues(3045, npcType); + } + break; + case 948: // mining tutor + if (c.tutorialProgress == 14) { + c.getDialogueHandler().sendDialogues(3052, npcType); + } + if (c.tutorialProgress == 16) { + c.getDialogueHandler().sendDialogues(3056, npcType); + } + if (c.tutorialProgress == 20) { + c.getDialogueHandler().sendDialogues(3063, npcType); + } + break; + case 944: // Combat deud + if (c.tutorialProgress == 21) { + c.getDialogueHandler().sendDialogues(3067, npcType); + } else if (c.tutorialProgress == 23 + && !c.getItemAssistant().playerHasItem(1171) + && !c.getItemAssistant().playerHasItem(1277)) { + c.getDialogueHandler().sendDialogues(3072, npcType); + } else if (c.getItemAssistant().playerHasItem(1171) + && c.getItemAssistant().playerHasItem(1277) && c.tutorialProgress == 23) { + c.getPacketSender().sendMessage( + "I already gave you a sword and shield."); + c.nextChat = 0; + c.getDialogueHandler() + .chatboxText( + c, + "In your worn inventory panel, right click on the dagger and", + "select the remove option from the drop down list. After you've", + "unequipped the dagger, wield the sword and shield. As you", + "pass the mouse over an item you will see its name.", + "Unequipping items"); + PlayerAssistant.removeHintIcon(c); + } else if (c.tutorialProgress == 25) { + c.getDialogueHandler().sendDialogues(3074, npcType); + } + break; + + case 947: // fiancial dude + if (c.tutorialProgress == 27) { + c.getDialogueHandler().sendDialogues(3079, npcType); + } + // c.getPacketDispatcher().createArrow(1, 7); + break; + + case 954: // prayer dude + if (c.tutorialProgress == 28) { + c.getDialogueHandler().sendDialogues(3089, npcType); + } + if (c.tutorialProgress == 29) { + c.getDialogueHandler().sendDialogues(3092, npcType); + } + if (c.tutorialProgress == 31) { + c.getDialogueHandler().sendDialogues(3097, npcType); + } + break; + case 946:// mage + if (c.tutorialProgress == 32) { + c.getDialogueHandler().sendDialogues(3105, npcType); + } + if (c.tutorialProgress == 33) { + c.getDialogueHandler().sendDialogues(3108, npcType); + } + if (c.tutorialProgress == 34) { + c.getDialogueHandler().sendDialogues(3110, npcType); + } + if (c.tutorialProgress == 35) { + c.getDialogueHandler().sendDialogues(3112, npcType); + } + break; + + case 922: + c.getDialogueHandler().sendDialogues(1312, npcType); + break; + + case 805: + c.getDialogueHandler().sendDialogues(1317, npcType); + break; + + case 519: + c.getDialogueHandler().sendDialogues(15, npcType); // barrows fix + // barrows + break; + + case 598: + c.getDialogueHandler().sendDialogues(1300, npcType); + break; + + case 70: + case 1596: + case 1597: + case 1598: + case 1599: + c.getDialogueHandler().sendDialogues(1228, npcType); + c.SlayerMaster = npcType; + break; + + case 1595: + c.getDialogueHandler().sendDialogues(1036, npcType); + break; + + case 170: + c.getDialogueHandler().sendDialogues(591, npcType); + break; + + case 925: + case 926: + c.getDialogueHandler().sendDialogues(1018, npcType); + break; + + case 2728: + case 2729: + c.getDialogueHandler().sendDialogues(1011, npcType); + break; + + case 376: + case 377: + case 378: + if (c.getItemAssistant().playerHasItem(995, 30)) { + c.getDialogueHandler().sendDialogues(33, npcType); + } else { + c.getDialogueHandler().sendStatement( + "You need 30 coins to travel on this ship."); + } + break; + + case 380: + if (c.getItemAssistant().playerHasItem(995, 30)) { + c.getDialogueHandler().sendDialogues(584, npcType); + } else { + c.getDialogueHandler().sendStatement( + "You need 30 coins to travel on this ship."); + } + break; + + /** + * Start of Quests + */ + + case 557: + if (c.ptjob == 0) { + c.getDialogueHandler().sendDialogues(37, npcType); + } else if (c.ptjob == 1) { + c.getDialogueHandler().sendDialogues(47, npcType); + } else if (c.ptjob == 2) { + c.getDialogueHandler().sendDialogues(1000, npcType); + } + break; + + case 375: + if (c.pirateTreasure == 0) { + c.getDialogueHandler().sendDialogues(554, npcType); + } else if (c.pirateTreasure == 1) { + c.getDialogueHandler().sendStatement( + "Talk to lucas and help him transport the bannanas."); + } else if (c.pirateTreasure == 2) { + c.getDialogueHandler().sendDialogues(569, npcType); + } else if (c.pirateTreasure == 3) { + c.getDialogueHandler().sendDialogues(580, npcType); + } else { + c.getPacketSender().sendMessage( + "Arr! Thanks for me helping me."); + } + break; + + case 307: + if (c.witchspot == 0) { + c.getDialogueHandler().sendDialogues(532, npcType); + } else if (c.witchspot == 1) { + c.getDialogueHandler().sendDialogues(546, npcType); + } else if (c.witchspot == 2) { + c.getDialogueHandler().sendDialogues(548, npcType); + } else if (c.witchspot == 3) { + c.getDialogueHandler().sendNpcChat1( + "Welcome back, thank you again for helping me.", + c.talkingNpc, "Hetty"); + } + break; + + case 755:// morgan + if (c.vampSlayer == 3) { + c.getDialogueHandler().sendDialogues(531, npcType); + } else if (c.vampSlayer == 4) { + c.getDialogueHandler().sendDialogues(529, npcType); + } else if (c.vampSlayer == 0) { + c.getDialogueHandler().sendDialogues(476, npcType); + } + break; + + case 743:// ned + if (c.vampSlayer == 0) { + c.getDialogueHandler().sendDialogues(211, npcType); + } else if (c.vampSlayer == 1) { + c.getDialogueHandler().sendStatement("I should go find harlow."); + } else if (c.vampSlayer > 1) { + c.getDialogueHandler().sendDialogues(1337, npcType); + } + break; + + case 756:// harlow + if (c.vampSlayer == 1) { + c.getDialogueHandler().sendDialogues(498, npcType); + } else if (c.vampSlayer == 2) { + c.getDialogueHandler().sendDialogues(510, npcType); + } else if (c.vampSlayer == 3) { + c.getDialogueHandler().sendDialogues(531, npcType); + } else { + c.getDialogueHandler().sendStatement("I'm not on this step yet."); + } + break; + + case 456: + if (c.restGhost == 0) { + c.getDialogueHandler().sendDialogues(338, 456); + } + break; + + case 457: + if (c.restGhost == 2) { + c.getDialogueHandler().sendDialogues(371, npcType); + } + break; + + case 458: + if (c.restGhost == 1) { + c.getDialogueHandler().sendDialogues(352, npcType); + } + break; + + case 759: + if (c.getItemAssistant().playerHasItem(1927, 1) && c.gertCat == 2) { + c.getDialogueHandler().sendDialogues(319, npcType); + c.getItemAssistant().deleteItem(1927, 1); + c.getItemAssistant().addItem(1925, 1); + c.gertCat = 3; + } else if (c.getItemAssistant().playerHasItem(1552, 1) + && c.gertCat == 3) { + c.getDialogueHandler().sendDialogues(323, npcType); + c.getItemAssistant().deleteItem(1552, 1); + c.gertCat = 4; + } else if (c.gertCat == 4) { + c.getDialogueHandler().sendStatement("Hiss!"); + c.getDialogueHandler().sendDialogues(325, npcType); + c.gertCat = 5; + } else if (c.getItemAssistant().playerHasItem(1554, 1) + && c.gertCat == 6) { + c.getItemAssistant().deleteItem(1554, 1); + c.getDialogueHandler().sendDialogues(326, npcType); + c.gertCat = 6; + } else if (c.gertCat == 2) { + c.getPacketSender().sendMessage("Hiss!"); + c.getDialogueHandler().sendStatement("Fluffs hisses but clearly wants something - maybe she is thirsty?"); + } + break; + + case 780: + if (c.playerLevel[10] < 4) { + c.getDialogueHandler().sendStatement( + "You don't have the requirements to do this quest."); + return; + } + if (c.gertCat == 0) { + c.getDialogueHandler().sendDialogues(269, npcType); + } else if (c.gertCat == 1) { + c.getDialogueHandler().sendDialogues(276, npcType); + } else if (c.gertCat == 6) { + c.getDialogueHandler().sendDialogues(328, npcType); + } else { + c.getDialogueHandler() + .sendStatement("She has nothing to say to you."); + } + break; + + case 783: + if (c.gertCat == 1) { + c.getDialogueHandler().sendDialogues(286, npcType); + } else if (c.gertCat == 2) { + c.getDialogueHandler().sendDialogues(314, npcType); + } + break; + + case 639: + if (c.romeojuliet == 0) { + c.getDialogueHandler().sendDialogues(389, npcType); + } else if (c.romeojuliet == 1) { + c.getDialogueHandler().sendDialogues(408, npcType); + } else if (c.romeojuliet == 3) { + c.getDialogueHandler().sendDialogues(415, npcType); + } else if (c.romeojuliet == 4) { + c.getDialogueHandler().sendDialogues(424, npcType); + } else if (c.romeojuliet == 5) { + c.getDialogueHandler().sendDialogues(431, npcType); + } else if (c.romeojuliet == 6) { + c.getDialogueHandler().sendDialogues(443, npcType); + } else if (c.romeojuliet == 8) { + c.getDialogueHandler().sendDialogues(469, npcType); + } else if (c.romeojuliet == 9) { + c.getPacketSender().sendMessage("Thanks for helping me!"); + } + if (c.romeojuliet == 2 + && c.getItemAssistant().playerHasItem(755, 1)) { + c.getDialogueHandler().sendDialogues(415, npcType); + } + if (c.romeojuliet == 2 + && !c.getItemAssistant().playerHasItem(755, 1)) { + c.getDialogueHandler().sendDialogues(421, npcType); + } + break; + + case 276: + if (c.romeojuliet == 5) { + c.getDialogueHandler().sendDialogues(432, npcType); + } + if (c.romeojuliet == 6 + && c.getItemAssistant().playerHasItem(300, 1) + && c.getItemAssistant().playerHasItem(227, 1) + && c.getItemAssistant().playerHasItem(526, 1)) { + c.getDialogueHandler().sendDialogues(448, npcType); + } else { + if (c.romeojuliet == 6) { + c.getDialogueHandler().sendDialogues(439, npcType); + } + } + break; + + case 637: + if (c.romeojuliet == 0) { + c.getDialogueHandler().sendDialogues(409, npcType); + } else if (c.romeojuliet == 1) { + c.getDialogueHandler().sendDialogues(410, npcType); + } else if (c.romeojuliet == 2) { + c.getDialogueHandler().sendDialogues(414, npcType); + } else if (c.romeojuliet == 7) { + c.getDialogueHandler().sendDialogues(457, npcType); + } else if (c.romeojuliet == 8) { + c.getDialogueHandler().sendDialogues(468, npcType); + } + break; + + case 741: + c.getDialogueHandler().sendDialogues(190, npcType); + break; + + case 553: + if (c.runeMist == 2) { + c.getDialogueHandler().sendDialogues(229, npcType); + } else if (c.runeMist == 3) { + c.getDialogueHandler().sendDialogues(237, npcType); + } + break; + + case 300: + if (c.runeMist == 1) { + c.getDialogueHandler().sendDialogues(201, npcType); + } else if (c.runeMist == 2) { + c.getDialogueHandler().sendDialogues(213, npcType); + } else if (c.runeMist == 3) { + c.getDialogueHandler().sendDialogues(238, npcType); + } else if (c.runeMist > 3 || c.runeMist < 1) { + c.getPacketSender().sendMessage( + "He has nothing to say to you."); + } + break; + + case 284: + if (c.playerLevel[14] < 14) { + c.getDialogueHandler().sendStatement( + "You don't have the requirements to do this quest."); + return; + } + if (c.doricQuest == 0) { + c.getDialogueHandler().sendDialogues(89, npcType); + } else if (c.doricQuest == 1) { + c.getDialogueHandler().sendDialogues(84, npcType); + } else if (c.doricQuest == 2) { + c.getDialogueHandler().sendDialogues(86, npcType); + } else if (c.doricQuest == 3) { + c.getDialogueHandler().sendDialogues(100, npcType); + } + break; + + case 706: + if (c.impsC == 0) { + c.getDialogueHandler().sendDialogues(145, npcType); + } else if (c.impsC == 1) { + c.getDialogueHandler().sendDialogues(156, npcType); + } + if (c.impsC == 1 && c.getItemAssistant().playerHasItem(1470, 1) + && c.getItemAssistant().playerHasItem(1472, 1) + && c.getItemAssistant().playerHasItem(1474, 1) + && c.getItemAssistant().playerHasItem(1476, 1)) { + c.getDialogueHandler().sendDialogues(158, npcType); + } else if (c.impsC == 1) { + c.getDialogueHandler().sendDialogues(157, npcType); + } + break; + + case 278: + if (c.cookAss == 0) { + c.getDialogueHandler().sendDialogues(50, npcType); + } else if (c.cookAss == 1) { + c.getDialogueHandler().sendDialogues(67, npcType); + } else if (c.cookAss == 2) { + c.getDialogueHandler().sendDialogues(69, npcType); + } else if (c.cookAss == 3) { + c.getDialogueHandler().sendDialogues(76, npcType); + } + break; + + case 608: + if (c.blackKnight == 0 && c.questPoints >= 12) { + c.getDialogueHandler().sendDialogues(3902, npcType); + } else if (c.blackKnight == 1) { + c.getDialogueHandler().sendDialogues(3510, npcType); + }else if (c.blackKnight == 2) { + c.getDialogueHandler().sendDialogues(3502, npcType); + }else if (c.blackKnight == 3) { + c.getPacketSender().sendMessage( + "He has nothing to say to you."); + } + break; + + case 758: + if (c.sheepShear == 0) { + c.getDialogueHandler().sendDialogues(164, npcType); + } else if (c.sheepShear == 1) { + c.getDialogueHandler().sendDialogues(185, 1); + } else { + c.getPacketSender().sendMessage( + "He has nothing to say to you."); + } + break; + + case 379: + if (c.bananas == 0 || c.luthas == false) { + c.getDialogueHandler().sendDialogues(8, npcType); + } else if (c.bananas > 0) { + c.getDialogueHandler().sendDialogues(4, npcType); + } else { + c.getPacketSender() + .sendMessage( + "You may now talk to Luthas your bananna task has been reset."); + c.luthas = false; + c.bananas = 0; + } + break; + + /** + * End of Quests + */ + + case 2294: + c.getDialogueHandler().sendDialogues(24, npcType); + break; + + case 2296: + c.getDialogueHandler().sendDialogues(26, npcType); + break; + + case 500: + c.getDialogueHandler().sendDialogues(21, npcType); + break; + + case 659: + c.getDialogueHandler().sendDialogues(18, npcType); + break; + + case 2244: + c.getDialogueHandler().sendDialogues(14, npcType); + break; + + case 641: + c.getDialogueHandler().sendDialogues(11, npcType); + break; + + case 2458: + c.getDialogueHandler().sendDialogues(2, npcType); + break; + + case 731: + c.getDialogueHandler().sendDialogues(19, npcType); + break; + + case 732: + c.getDialogueHandler().sendDialogues(3150, npcType); + break; + + /** + * Bankers + */ + case 953: + case 166: + case 1702: + case 495: + case 496: + case 497: + case 498: + case 499: + case 567: + case 1036: + case 1360: + case 2163: + case 2164: + case 2354: + case 2355: + case 2568: + case 2569: + case 2570: + case 2271: + case 494: + case 2619: + c.getDialogueHandler().sendDialogues(1013, npcType); + break; + + case 1152: + c.getDialogueHandler().sendDialogues(16, npcType); + break; + + case 905: + c.getDialogueHandler().sendDialogues(5, npcType); + break; + + case 460: + c.getDialogueHandler().sendDialogues(3, npcType); + break; + + case 462: + c.getDialogueHandler().sendDialogues(3149, npcType); + break; + + case 658: + Sailing.startTravel(c, 2); + break; + + case 2437: + case 2438: + if (!c.getItemAssistant().playerHasItem(995, 1000)) { + c.getDialogueHandler().sendStatement("You need 1000 coins to go here!"); + c.nextChat = 0; + return; + } + if (c.absX > 2619 && c.absX < 2622 && c.absY > 3680 && c.absY < 3689 && c.getItemAssistant().playerHasItem(995, 1000)) { + //Sailing.startTravel(c, 18); + c.getPlayerAssistant().startTeleport(2551, 3759, 0, "modern"); + c.getItemAssistant().deleteItem(995, 1000); + c.getDialogueHandler().sendStatement("You arrive safely."); + c.nextChat = 0; + } else { + if (c.getItemAssistant().playerHasItem(995, 1000)) { + //Sailing.startTravel(c, 17); + c.getPlayerAssistant().startTeleport(2620, 3686, 0, "modern"); + c.getItemAssistant().deleteItem(995, 1000); + c.getDialogueHandler().sendStatement("You arrive safely."); + c.nextChat = 0; + } + } + break; + + case 381: + if (c.absY > 3230 && c.absY < 3236) { + Sailing.startTravel(c, 8); + } else { + Sailing.startTravel(c, 7); + } + break; + + case 3506: + case 3507: + case 761: + case 760: + case 762: + case 763: + case 764: + case 765: + case 766: + case 767: + case 768: + case 769: + case 770: + case 771: + case 772: + case 773: + case 3505: + c.getSummon().pickUpClean(c, c.summonId); + c.hasNpc = false; + c.summonId = 0; + break; + + case 804: + case 1041: + Tanning.sendTanningInterface(c); + break; + + case 657: + Sailing.startTravel(c, 1); + break; + + case 8689: + if (System.currentTimeMillis() - c.buryDelay > 1500) { + if (c.getItemAssistant().playerHasItem(1925, 1)) { + c.turnPlayerTo(c.objectX, c.objectY); + c.startAnimation(2292); + c.getItemAssistant().addItem(1927, 1); + c.getItemAssistant().deleteItem(1925, 1); + c.buryDelay = System.currentTimeMillis(); + } else { + c.getPacketSender().sendMessage( + "You need a bucket to milk a cow!"); + } + } + break; + + case 3789: + c.getPacketSender().sendMessage( + new StringBuilder().append("You currently have ") + .append(c.pcPoints).append(" pest control points.") + .toString()); + break; + + /* Shops */ + + /* + * case 588: c.getShops().openShop(2); break; case 550: + * c.getShops().openShop(3); break; case 575: c.getShops().openShop(4); + * break; case 2356: c.getShops().openShop(5); break; case 3796: + * c.getShops().openShop(6); break; case 1860: c.getShops().openShop(7); + * break; case 559: c.getShops().openShop(9); break; case 562: + * c.getShops().openShop(10); break; case 581: + * c.getShops().openShop(11); break; case 548: + * c.getShops().openShop(12); break; case 554: + * c.getShops().openShop(13); break; case 601: + * c.getShops().openShop(14); break; case 1301: + * c.getShops().openShop(15); break; case 1039: + * c.getShops().openShop(16); break; case 2353: + * c.getShops().openShop(17); break; case 3166: + * c.getShops().openShop(18); break; case 2161: + * c.getShops().openShop(19); break; case 2162: + * c.getShops().openShop(20); break; case 600: + * c.getShops().openShop(21); break; case 603: + * c.getShops().openShop(22); break; case 593: + * c.getShops().openShop(23); break; case 545: + * c.getShops().openShop(24); break; case 585: + * c.getShops().openShop(25); break; case 2305: + * c.getShops().openShop(26); break; case 2307: + * c.getShops().openShop(27); break; case 2304: + * c.getShops().openShop(28); break; case 2306: + * c.getShops().openShop(29); break; case 517: + * c.getShops().openShop(30); break; case 558: + * c.getShops().openShop(31); break; case 576: + * c.getShops().openShop(32); break; case 1369: + * c.getShops().openShop(33); break; case 1038: + * c.getShops().openShop(35); break; case 1433: + * c.getShops().openShop(36); break; case 584: + * c.getShops().openShop(37); break; case 540: + * c.getShops().openShop(38); break; case 2157: + * c.getShops().openShop(39); break; case 538: + * c.getShops().openShop(40); break; case 1303: + * c.getShops().openShop(41); break; case 578: + * c.getShops().openShop(42); break; case 587: + * c.getShops().openShop(43); break; case 1398: + * c.getShops().openShop(44); break; case 556: + * c.getShops().openShop(45); break; case 1865: + * c.getShops().openShop(46); break; case 543: + * c.getShops().openShop(47); break; case 2198: + * c.getShops().openShop(48); break; case 580: + * c.getShops().openShop(49); break; case 1862: + * c.getShops().openShop(50); break; case 583: + * c.getShops().openShop(51); break; case 553: + * c.getShops().openShop(52); break; case 461: + * c.getShops().openShop(53); break; case 903: + * c.getShops().openShop(54); break; case 1435: + * c.getShops().openShop(56); break; case 3800: + * c.getShops().openShop(57); break; case 2623: + * c.getShops().openShop(58); break; case 594: + * c.getShops().openShop(59); break; case 579: + * c.getShops().openShop(60); break; case 2160: + * c.getShops().openShop(61); break; case 2191: + * c.getShops().openShop(61); break; case 589: + * c.getShops().openShop(62); break; case 549: + * c.getShops().openShop(63); break; case 542: + * c.getShops().openShop(64); break; case 3038: + * c.getShops().openShop(65); break; case 544: + * c.getShops().openShop(66); break; case 541: + * c.getShops().openShop(67); break; case 1434: + * c.getShops().openShop(68); break; case 577: + * c.getShops().openShop(69); break; case 539: + * c.getShops().openShop(70); break; case 1980: + * c.getShops().openShop(71); break; case 546: + * c.getShops().openShop(72); break; case 382: + * c.getShops().openShop(73); break; case 3541: + * c.getShops().openShop(74); break; case 520: + * c.getShops().openShop(75); break; case 1436: + * c.getShops().openShop(76); break; case 590: + * c.getShops().openShop(77); break; case 971: + * c.getShops().openShop(78); break; case 1917: + * c.getShops().openShop(79); break; case 1040: + * c.getShops().openShop(80); break; case 563: + * c.getShops().openShop(81); break; case 522: + * c.getShops().openShop(82); break; case 524: + * c.getShops().openShop(83); break; case 526: + * c.getShops().openShop(84); break; case 2154: + * c.getShops().openShop(85); break; case 1334: + * c.getShops().openShop(86); break; case 2552: + * c.getShops().openShop(87); break; case 528: + * c.getShops().openShop(88); break; case 1254: + * c.getShops().openShop(89); break; case 2086: + * c.getShops().openShop(90); break; case 3824: + * c.getShops().openShop(91); break; case 1866: + * c.getShops().openShop(92); break; case 1699: + * c.getShops().openShop(93); break; case 1282: + * c.getShops().openShop(94); break; case 530: + * c.getShops().openShop(95); break; case 516: + * c.getShops().openShop(96); break; case 560: + * c.getShops().openShop(97); break; case 471: + * c.getShops().openShop(98); break; case 1208: + * c.getShops().openShop(99); break; case 532: + * c.getShops().openShop(100); break; case 555: + * c.getShops().openShop(101); break; case 534: + * c.getShops().openShop(102); break; case 551: + * c.getShops().openShop(104); break; case 586: + * c.getShops().openShop(105); break; case 564: + * c.getShops().openShop(106); break; case 747: + * c.getShops().openShop(107); break; case 573: + * c.getShops().openShop(108); break; case 1316: + * c.getShops().openShop(108); break; case 1787: + * c.getShops().openShop(110); break; case 694: + * c.getShops().openShop(111); break; case 1526: + * c.getShops().openShop(112); break; case 568: + * c.getShops().openShop(113); break; case 1079: + * c.getShops().openShop(114); break; + */ + + } + } + + public void secondClickNpc(int npcType) { + String type = c.playerMagicBook == 0 ? "modern" : "ancient"; + c.clickNpcType = 0; + c.rememberNpcIndex = c.npcClickIndex; + c.npcClickIndex = 0; + Shops.openShop(c, npcType); + if (Pickpocket.isNPC(c, npcType)) { + Pickpocket.attemptPickpocket(c, npcType); + return; + } + if (Fishing.fishingNPC(c, npcType)) { + Fishing.fishingNPC(c, 2, npcType); + } + if (npcType >= 761 && npcType <= 773 || npcType > 3504 + && npcType < 3508 && npcType != 767) { + c.getDialogueHandler().sendDialogues(908, npcType); + } + + switch (npcType) { + + case 209: + c.getShopAssistant().openShop(144); + break; + + + case 2437: + case 2438: + if (!c.getItemAssistant().playerHasItem(995, 1000)) { + c.getDialogueHandler().sendStatement("You need 1000 coins to go here!"); + return; + } + if (c.absX > 2619 && c.absX < 2622 && c.absY > 3680 && c.absY < 3689 && c.getItemAssistant().playerHasItem(995, 1000)) { + //Sailing.startTravel(c, 18); + c.getPlayerAssistant().startTeleport(2551, 3759, 0, "modern"); + c.getItemAssistant().deleteItem(995, 1000); + c.getDialogueHandler().sendStatement("You arrive safely."); + c.nextChat = 0; + } else { + if (c.getItemAssistant().playerHasItem(995, 1000)) { + //Sailing.startTravel(c, 17); + c.getPlayerAssistant().startTeleport(2620, 3686, 0, "modern"); + c.getItemAssistant().deleteItem(995, 1000); + c.getDialogueHandler().sendStatement("You arrive safely."); + c.nextChat = 0; + } + } + break; + + case 537: + case 536: + int requiredQP = Math.min(32, QuestAssistant.MAXIMUM_QUESTPOINTS); + if (c.questPoints >= requiredQP) { + c.getShopAssistant().openShop(npcType); + } else { + c.getPacketSender().sendMessage( + "You need " + requiredQP + " quest points to open this shop."); + } + break; + + case 300: + if (c.runeMist < 4) { + c.getDialogueHandler().sendStatement( + "You need to beat rune mysteries first to do this."); + c.nextChat = 0; + return; + } + c.getPlayerAssistant().startTeleport(2911, 4832, 0, type); + break; + + case 557: + c.getShopAssistant().openShop(34); + break; + + case 804: + case 1041: + Tanning.sendTanningInterface(c); + break; + + case 2270: + if (c.playerLevel[c.playerThieving] > 98) { + c.getShopAssistant().openShop(118); + } else if (c.playerLevel[c.playerThieving] > 49 + && c.playerLevel[c.playerAgility] > 49) { + c.getShopAssistant().openShop(118); + } else { + c.getPacketSender().sendMessage( + "You don't have the required skills to open this shop"); + } + break; + + case 1042: + if (c.getItemAssistant().playerHasItem(995, 5)) { + c.getItemAssistant().addItem(2955, 1); + c.getItemAssistant().deleteItem(995, 5); + } else { + c.getDialogueHandler().sendNpcChat1( + "You need 5 coins to buy a moonlight mead.", + c.talkingNpc, "Roavar"); + c.nextChat = 0; + } + break; + + case 844: + case 462: + if (c.runeMist < 4) { + c.getDialogueHandler().sendStatement( + "You need to beat rune mysteries first to do this."); + c.nextChat = 0; + return; + } + c.getPlayerAssistant().startTeleport(2911, 4832, 0, type); + break; + + case 519: + c.getShopAssistant().openShop(8); + break; + + case 1595: + c.getDialogueHandler().sendDialogues(1053, npcType); + break; + + /** + * Bankers + */ + case 953: + case 166: + case 1702: + case 495: + case 496: + case 497: + case 498: + case 499: + case 567: + case 1036: + case 1360: + case 2163: + case 2164: + case 2354: + case 2355: + case 2568: + case 2569: + case 2570: + case 2271: + case 494: + case 2619: + c.getPacketSender().openUpBank(); + break; + } + } + + public void thirdClickNpc(int npcType) { + c.clickNpcType = 0; + c.rememberNpcIndex = c.npcClickIndex; + c.npcClickIndex = 0; + if (Pickpocket.isNPC(c, npcType)) { + Pickpocket.attemptPickpocket(c, npcType); + return; + } + if (npcType >= 761 && npcType <= 773 && npcType != 767) { + if (NpcHandler.npcs[c.rememberNpcIndex].spawnedBy == c.playerId) + c.getDialogueHandler().sendDialogues(910, npcType); + else + c.getPacketSender().sendMessage("This isn't your cat."); + } + switch (npcType) { + + /** + * Banker + */ + case 3824: + c.getPacketSender().openUpBank(); + break; + + case 958: + c.getShopAssistant().openShop(143); + break; + + case 1526: + c.getShopAssistant().openShop(ShopAssistant.CASTLE_SHOP); + break; + + case 70: + case 1596: + case 1597: + case 1598: + case 1599: + c.getShopAssistant().openShop(109); + break; + + case 836: + if (c.getItemAssistant().playerHasItem(995, 5)) { + c.getPacketSender().sendMessage( + "You buy a shantay pass quickly."); + c.getItemAssistant().deleteItem(995, 5); + c.getItemAssistant().addItem(1854, 1); + } else { + c.getPacketSender().sendMessage( + "You need 5 coins to buy a pass."); + } + break; + case 553: + if (c.runeMist < 4) { + c.getDialogueHandler().sendStatement( + "You need to beat rune mysteries first to do this."); + return; + } + String type = c.playerMagicBook == 0 ? "modern" : "ancient"; + c.getPlayerAssistant().startTeleport(2911, 4832, 0, type); + break; + + case 2258: + if (c.playerLevel[20] < 35) { + c.getPacketSender().sendMessage("You need a Runecrafting level of 35 to enter the Abyss."); + return; + } + c.getPlayerAssistant().spellTeleport(3027, 4852, 0); + break; + + default: + if (c.playerRights == 3) { + Misc.println("Third Click NPC : " + npcType); + } + break; + + } + } + +} diff --git a/2006Redone Server/src/redone/game/npcs/NpcData.java b/2006Redone Server/src/com/rebotted/game/npcs/NpcData.java similarity index 94% rename from 2006Redone Server/src/redone/game/npcs/NpcData.java rename to 2006Redone Server/src/com/rebotted/game/npcs/NpcData.java index c1c36203..b3cf9f93 100644 --- a/2006Redone Server/src/redone/game/npcs/NpcData.java +++ b/2006Redone Server/src/com/rebotted/game/npcs/NpcData.java @@ -1,471 +1,471 @@ -package redone.game.npcs; - -import java.util.ArrayList; - -import redone.game.content.minigames.FightCaves; -import redone.game.players.PlayerHandler; -import redone.util.Misc; -import redone.world.clip.Region; - -public class NpcData { - - public static final int[] npcsOnlyMage = { 907, 908, 909, 910, 911, 912, - 913, 914 };// done - public static final int[][] transformNpc = { { 3223, 6006 }, - { 3224, 6007 }, { 3225, 6008 }, { 3226, 6009 } };// done - public static final int[] npcsCantKillYou = { 41, 951, 1017, 1401, 1402, - 1692, 2313, 2314, 2315 };// done - public static final int[] npcCantAttack = { 1532, 1533, 1534, 1535 }; - public static final int[] npcDontGiveXp = { 2459, 2460, 2461, 2462 }; - - public static boolean cantKillYou(int npcType) { - for (int n : npcsCantKillYou) { - if (n == npcType) { - return true; - } - } - return false; - } - - public static boolean onlyMage(int npcType) { - for (int element : npcsOnlyMage) { - if (npcType == element) { - return true; - } - } - return false; - } - - public static boolean cantAttack(int npcType) { - for (int n : npcCantAttack) { - if (n == npcType) { - return true; - } - } - return false; - } - - public static boolean dontGiveXp(int npcType) { - for (int n : npcDontGiveXp) { - if (n == npcType) { - return true; - } - } - return false; - } - - /* - * public static boolean isAggressive(int i) { if - * (NPCHandler.npcs[i].aggressive && !onlyMage(NPCHandler.npcs[i].npcType)) - * { return true; } if (NPCHandler.npcs[i].inWild() && - * NPCHandler.npcs[i].MaxHP > 0 && !onlyMage(NPCHandler.npcs[i].npcType)) { - * return true; } return false; } - */ - - public static int getNpcKillerId(int npcId) { - int oldDamage = 0; - int killerId = 0; - for (int p = 1; p < PlayerHandler.players.length; p++) { - if (PlayerHandler.players[p] != null) { - if (PlayerHandler.players[p].lastNpcAttacked == npcId) { - if (PlayerHandler.players[p].totalDamageDealt > oldDamage) { - oldDamage = PlayerHandler.players[p].totalDamageDealt; - killerId = p; - } - PlayerHandler.players[p].totalDamageDealt = 0; - } - } - } - return killerId; - } - - public static int getCloseRandomPlayer(int i) { - ArrayList players = new ArrayList(); - for (int j = 0; j < PlayerHandler.players.length; j++) { - if (PlayerHandler.players[j] != null) { - if (NpcHandler.goodDistance( - PlayerHandler.players[j].absX, - PlayerHandler.players[j].absY, - NpcHandler.npcs[i].absX, - NpcHandler.npcs[i].absY, - 2 + NpcHandler.distanceRequired(i) - + NpcHandler.followDistance(i)) - || FightCaves.isFightCaveNpc(i)) { - if (PlayerHandler.players[j].underAttackBy <= 0 - && PlayerHandler.players[j].underAttackBy2 <= 0 - || PlayerHandler.players[j].inMulti()) { - if (PlayerHandler.players[j].heightLevel == NpcHandler.npcs[i].heightLevel) { - players.add(j); - } - } - } - } - } - if (players.size() > 0) { - return players.get(Misc.random(players.size() - 1)); - } else { - return 0; - } - } - - public static void startAnimation(int animId, int i) { - NpcHandler.npcs[i].animNumber = animId; - NpcHandler.npcs[i].animUpdateRequired = true; - NpcHandler.npcs[i].updateRequired = true; - } - - public static void handleClipping(int i) { - Npc npc = NpcHandler.npcs[i]; - if (npc.moveX == 1 && npc.moveY == 1) { - if ((Region - .getClipping(npc.absX + 1, npc.absY + 1, npc.heightLevel) & 0x12801e0) != 0) { - npc.moveX = 0; - npc.moveY = 0; - if ((Region - .getClipping(npc.absX, npc.absY + 1, npc.heightLevel) & 0x1280120) == 0) { - npc.moveY = 1; - } else { - npc.moveX = 1; - } - } - } else if (npc.moveX == -1 && npc.moveY == -1) { - if ((Region - .getClipping(npc.absX - 1, npc.absY - 1, npc.heightLevel) & 0x128010e) != 0) { - npc.moveX = 0; - npc.moveY = 0; - if ((Region - .getClipping(npc.absX, npc.absY - 1, npc.heightLevel) & 0x1280102) == 0) { - npc.moveY = -1; - } else { - npc.moveX = -1; - } - } - } else if (npc.moveX == 1 && npc.moveY == -1) { - if ((Region - .getClipping(npc.absX + 1, npc.absY - 1, npc.heightLevel) & 0x1280183) != 0) { - npc.moveX = 0; - npc.moveY = 0; - if ((Region - .getClipping(npc.absX, npc.absY - 1, npc.heightLevel) & 0x1280102) == 0) { - npc.moveY = -1; - } else { - npc.moveX = 1; - } - } - } else if (npc.moveX == -1 && npc.moveY == 1) { - if ((Region - .getClipping(npc.absX - 1, npc.absY + 1, npc.heightLevel) & 0x128013) != 0) { - npc.moveX = 0; - npc.moveY = 0; - if ((Region - .getClipping(npc.absX, npc.absY + 1, npc.heightLevel) & 0x1280120) == 0) { - npc.moveY = 1; - } else { - npc.moveX = -1; - } - } - } // Checking Diagonal movement. - - if (npc.moveY == -1) { - if ((Region.getClipping(npc.absX, npc.absY - 1, npc.heightLevel) & 0x1280102) != 0) { - npc.moveY = 0; - } - } else if (npc.moveY == 1) { - if ((Region.getClipping(npc.absX, npc.absY + 1, npc.heightLevel) & 0x1280120) != 0) { - npc.moveY = 0; - } - } // Checking Y movement. - if (npc.moveX == 1) { - if ((Region.getClipping(npc.absX + 1, npc.absY, npc.heightLevel) & 0x1280180) != 0) { - npc.moveX = 0; - } - } else if (npc.moveX == -1) { - if ((Region.getClipping(npc.absX - 1, npc.absY, npc.heightLevel) & 0x1280108) != 0) { - npc.moveX = 0; - } - } // Checking X movement. - } - - - /** - * Attack delays - **/ - public static int getNpcDelay(int i) { - switch (NpcHandler.npcs[i].npcType) { - case 2025: - case 2028: - return 7; - - case 2745: - return 8; - - case 2558: - case 2559: - case 2560: - case 2561: - case 2550: - return 6; - // saradomin gw boss - case 2562: - return 2; - - default: - return 5; - } - } - - /** - * Hit delays - **/ - public static int getHitDelay(int i) { - switch (NpcHandler.npcs[i].npcType) { - case 2881: - case 2882: - case 3200: - case 2892: - case 2894: - return 3; - - case 2743: - case 2631: - case 2558: - case 2559: - case 2560: - return 3; - - case 2745: - if (NpcHandler.npcs[i].attackType == 1 - || NpcHandler.npcs[i].attackType == 2) { - return 5; - } else { - return 2; - } - - case 2025: - return 4; - case 2028: - return 3; - - default: - return 2; - } - } - - /** - * Npc respawn time - **/ - public static int getRespawnTime(int i) { - switch (NpcHandler.npcs[i].npcType) { - case 2881: - case 2882: - case 2883: - case 2558: - case 2559: - case 2560: - case 2561: - case 2562: - case 2563: - case 2564: - case 2550: - case 2551: - case 2552: - case 2553: - return 100; - case 3777: - case 3778: - case 3779: - case 3780: - return 500; - case 1532: - case 1534: - return -1; - default: - return 25; - } - } - - public static int distanceRequired(int i) { - int distanceNeeded = 1; - if (NpcHandler.npcs[i].attackType == 1) { - return distanceNeeded += 7; - } else if (NpcHandler.npcs[i].attackType == 2) { - return distanceNeeded += 9; - } else if (NpcHandler.npcs[i].attackType > 2) { - return distanceNeeded += 4; - } - switch (NpcHandler.npcs[i].npcType) { - case 2562: - return distanceNeeded += 1; - case 2881:// dag kings - case 2882: - case 3200:// chaos ele - return distanceNeeded += 7; - case 2552: - case 2553: - case 2556: - case 2557: - case 2558: - case 2559: - case 2560: - case 2564: - case 2565: - return distanceNeeded += 8; - // things around dags - case 2892: - case 2894: - return distanceNeeded += 9; - case 907 : // Kolodian - case 908 : - case 909 : - case 910 : - case 911 : - case 912 : // Zammy battlemage - case 913 : // Sara battlemage - case 914 : // Guthix battlemage - case 2591 : // TzHaar-Mej (Tzhaar mage guy) - case 2743 : // Ket-Zek (Tzhaar mage guy) - case 2745 : // TzTok-Jad - case 1158 : // Kalphite queen form 1 - case 1160 : // Kalphite queen form 2 - case 2025 : // Ahrim - return distanceNeeded += 9; - case 2028 : // Karil - case 2631 : // Tok-Xil (Tzhaar ranging guy) - case 1183 : // Elf ranger - return distanceNeeded += 7; - case 941 : // Green drag - case 50 : // Kbd - return distanceNeeded += 5; - } - return distanceNeeded; - } - - - public static boolean goodDistanceNpc(int i, int x2, int y2, int distance) { - for (int x = NpcHandler.npcs[i].getX(); x <= NpcHandler.npcs[i].getX() + NpcHandler.npcs[i].size; x++) { - for (int y = NpcHandler.npcs[i].getY(); y <= NpcHandler.npcs[i].getY() + NpcHandler.npcs[i].size; y++) { - if (Misc.goodDistance(x, y, x2, y2, distance)) { - return true; - } - } - } - return false; - } - - - public static boolean checkClip(Npc n) { - int x2 = 0, y2 = 0, x3 = 0, y3 = 0; - if (n.killerId > 0) { - if (PlayerHandler.players[n.killerId] == null) { - return false; - } - x2 = PlayerHandler.players[n.killerId].getX(); - y2 = PlayerHandler.players[n.killerId].getY(); - } else if (n.masterId > 0) { - if (PlayerHandler.players[n.masterId] == null) { - return false; - } - x2 = PlayerHandler.players[n.masterId].getX(); - y2 = PlayerHandler.players[n.masterId].getY(); - } else { - return false; - } - int x = n.getX(); // -1 - int y = n.getY(); // 1 - final int dis = distanceRequired(n.npcId) + n.size; - int dis2 = 0; - final boolean melee = distanceRequired(n.npcId) < 2; - if (n.size < 1 && x != x2 && y != y2) { - return false; - } - // Algorithm starts here - int w = x2 - x; - int h = y2 - y; - int dx1 = 0, dy1 = 0, dx2 = 0, dy2 = 0; - if (w < 0) { - dx1 = -1; - } else if (w > 0) { - dx1 = 1; - } - if (h < 0) { - dy1 = -1; - } else if (h > 0) { - dy1 = 1; - } - if (w < 0) { - dx2 = -1; - } else if (w > 0) { - dx2 = 1; - } - int longest = Math.abs(w); - int shortest = Math.abs(h); - if (!(longest > shortest)) { - longest = Math.abs(h); - shortest = Math.abs(w); - if (h < 0) { - dy2 = -1; - } else if (h > 0) { - dy2 = 1; - } - dx2 = 0; - } - int numerator = longest >> 1; - boolean firstCheck = false; - for (int i = 0; i <= longest; i++) { - if (dis2 > dis) { - return false; - } - dis2++; - x3 = x; - y3 = y; - numerator += shortest; - if (!(numerator < longest)) { - numerator -= longest; - x += dx1; - y += dy1; - } else { - x += dx2; - y += dy2; - } - if (!firstCheck) { - if (melee) { - if (!Region.getClipping(x, y, n.heightLevel, x - x3, y - y3)) { - return false; - } - } - if (x == x2 && y == y2) { - break; - } - firstCheck = true; - } - if (melee) { - if (!Region.getClipping(x, y, n.heightLevel, x - x3, y - y3)) { - return false; - } - } - if (x == x2 && y == y2) { - return true; - } - } - return true; - } - - public static boolean inNpc(int i, int x2, int y2) { - if (NpcHandler.npcs[i].size < 1) { - if (x2 == NpcHandler.npcs[i].getX() && y2 == NpcHandler.npcs[i].getY()) { - return true; - } - } else { - for (int x = NpcHandler.npcs[i].getX(); x <= NpcHandler.npcs[i].getX() + NpcHandler.npcs[i].size; x++) { - for (int y = NpcHandler.npcs[i].getY(); y <= NpcHandler.npcs[i].getY() + NpcHandler.npcs[i].size; y++) { - if (x2 == x && y2 == y) { - return true; - } - } - } - } - return false; - } - - -} +package com.rebotted.game.npcs; + +import java.util.ArrayList; + +import com.rebotted.game.content.minigames.FightCaves; +import com.rebotted.game.players.PlayerHandler; +import com.rebotted.util.Misc; +import com.rebotted.world.clip.Region; + +public class NpcData { + + public static final int[] npcsOnlyMage = { 907, 908, 909, 910, 911, 912, + 913, 914 };// done + public static final int[][] transformNpc = { { 3223, 6006 }, + { 3224, 6007 }, { 3225, 6008 }, { 3226, 6009 } };// done + public static final int[] npcsCantKillYou = { 41, 951, 1017, 1401, 1402, + 1692, 2313, 2314, 2315 };// done + public static final int[] npcCantAttack = { 1532, 1533, 1534, 1535 }; + public static final int[] npcDontGiveXp = { 2459, 2460, 2461, 2462 }; + + public static boolean cantKillYou(int npcType) { + for (int n : npcsCantKillYou) { + if (n == npcType) { + return true; + } + } + return false; + } + + public static boolean onlyMage(int npcType) { + for (int element : npcsOnlyMage) { + if (npcType == element) { + return true; + } + } + return false; + } + + public static boolean cantAttack(int npcType) { + for (int n : npcCantAttack) { + if (n == npcType) { + return true; + } + } + return false; + } + + public static boolean dontGiveXp(int npcType) { + for (int n : npcDontGiveXp) { + if (n == npcType) { + return true; + } + } + return false; + } + + /* + * public static boolean isAggressive(int i) { if + * (NPCHandler.npcs[i].aggressive && !onlyMage(NPCHandler.npcs[i].npcType)) + * { return true; } if (NPCHandler.npcs[i].inWild() && + * NPCHandler.npcs[i].MaxHP > 0 && !onlyMage(NPCHandler.npcs[i].npcType)) { + * return true; } return false; } + */ + + public static int getNpcKillerId(int npcId) { + int oldDamage = 0; + int killerId = 0; + for (int p = 1; p < PlayerHandler.players.length; p++) { + if (PlayerHandler.players[p] != null) { + if (PlayerHandler.players[p].lastNpcAttacked == npcId) { + if (PlayerHandler.players[p].totalDamageDealt > oldDamage) { + oldDamage = PlayerHandler.players[p].totalDamageDealt; + killerId = p; + } + PlayerHandler.players[p].totalDamageDealt = 0; + } + } + } + return killerId; + } + + public static int getCloseRandomPlayer(int i) { + ArrayList players = new ArrayList(); + for (int j = 0; j < PlayerHandler.players.length; j++) { + if (PlayerHandler.players[j] != null) { + if (NpcHandler.goodDistance( + PlayerHandler.players[j].absX, + PlayerHandler.players[j].absY, + NpcHandler.npcs[i].absX, + NpcHandler.npcs[i].absY, + 2 + NpcHandler.distanceRequired(i) + + NpcHandler.followDistance(i)) + || FightCaves.isFightCaveNpc(i)) { + if (PlayerHandler.players[j].underAttackBy <= 0 + && PlayerHandler.players[j].underAttackBy2 <= 0 + || PlayerHandler.players[j].inMulti()) { + if (PlayerHandler.players[j].heightLevel == NpcHandler.npcs[i].heightLevel) { + players.add(j); + } + } + } + } + } + if (players.size() > 0) { + return players.get(Misc.random(players.size() - 1)); + } else { + return 0; + } + } + + public static void startAnimation(int animId, int i) { + NpcHandler.npcs[i].animNumber = animId; + NpcHandler.npcs[i].animUpdateRequired = true; + NpcHandler.npcs[i].updateRequired = true; + } + + public static void handleClipping(int i) { + Npc npc = NpcHandler.npcs[i]; + if (npc.moveX == 1 && npc.moveY == 1) { + if ((Region + .getClipping(npc.absX + 1, npc.absY + 1, npc.heightLevel) & 0x12801e0) != 0) { + npc.moveX = 0; + npc.moveY = 0; + if ((Region + .getClipping(npc.absX, npc.absY + 1, npc.heightLevel) & 0x1280120) == 0) { + npc.moveY = 1; + } else { + npc.moveX = 1; + } + } + } else if (npc.moveX == -1 && npc.moveY == -1) { + if ((Region + .getClipping(npc.absX - 1, npc.absY - 1, npc.heightLevel) & 0x128010e) != 0) { + npc.moveX = 0; + npc.moveY = 0; + if ((Region + .getClipping(npc.absX, npc.absY - 1, npc.heightLevel) & 0x1280102) == 0) { + npc.moveY = -1; + } else { + npc.moveX = -1; + } + } + } else if (npc.moveX == 1 && npc.moveY == -1) { + if ((Region + .getClipping(npc.absX + 1, npc.absY - 1, npc.heightLevel) & 0x1280183) != 0) { + npc.moveX = 0; + npc.moveY = 0; + if ((Region + .getClipping(npc.absX, npc.absY - 1, npc.heightLevel) & 0x1280102) == 0) { + npc.moveY = -1; + } else { + npc.moveX = 1; + } + } + } else if (npc.moveX == -1 && npc.moveY == 1) { + if ((Region + .getClipping(npc.absX - 1, npc.absY + 1, npc.heightLevel) & 0x128013) != 0) { + npc.moveX = 0; + npc.moveY = 0; + if ((Region + .getClipping(npc.absX, npc.absY + 1, npc.heightLevel) & 0x1280120) == 0) { + npc.moveY = 1; + } else { + npc.moveX = -1; + } + } + } // Checking Diagonal movement. + + if (npc.moveY == -1) { + if ((Region.getClipping(npc.absX, npc.absY - 1, npc.heightLevel) & 0x1280102) != 0) { + npc.moveY = 0; + } + } else if (npc.moveY == 1) { + if ((Region.getClipping(npc.absX, npc.absY + 1, npc.heightLevel) & 0x1280120) != 0) { + npc.moveY = 0; + } + } // Checking Y movement. + if (npc.moveX == 1) { + if ((Region.getClipping(npc.absX + 1, npc.absY, npc.heightLevel) & 0x1280180) != 0) { + npc.moveX = 0; + } + } else if (npc.moveX == -1) { + if ((Region.getClipping(npc.absX - 1, npc.absY, npc.heightLevel) & 0x1280108) != 0) { + npc.moveX = 0; + } + } // Checking X movement. + } + + + /** + * Attack delays + **/ + public static int getNpcDelay(int i) { + switch (NpcHandler.npcs[i].npcType) { + case 2025: + case 2028: + return 7; + + case 2745: + return 8; + + case 2558: + case 2559: + case 2560: + case 2561: + case 2550: + return 6; + // saradomin gw boss + case 2562: + return 2; + + default: + return 5; + } + } + + /** + * Hit delays + **/ + public static int getHitDelay(int i) { + switch (NpcHandler.npcs[i].npcType) { + case 2881: + case 2882: + case 3200: + case 2892: + case 2894: + return 3; + + case 2743: + case 2631: + case 2558: + case 2559: + case 2560: + return 3; + + case 2745: + if (NpcHandler.npcs[i].attackType == 1 + || NpcHandler.npcs[i].attackType == 2) { + return 5; + } else { + return 2; + } + + case 2025: + return 4; + case 2028: + return 3; + + default: + return 2; + } + } + + /** + * Npc respawn time + **/ + public static int getRespawnTime(int i) { + switch (NpcHandler.npcs[i].npcType) { + case 2881: + case 2882: + case 2883: + case 2558: + case 2559: + case 2560: + case 2561: + case 2562: + case 2563: + case 2564: + case 2550: + case 2551: + case 2552: + case 2553: + return 100; + case 3777: + case 3778: + case 3779: + case 3780: + return 500; + case 1532: + case 1534: + return -1; + default: + return 25; + } + } + + public static int distanceRequired(int i) { + int distanceNeeded = 1; + if (NpcHandler.npcs[i].attackType == 1) { + return distanceNeeded += 7; + } else if (NpcHandler.npcs[i].attackType == 2) { + return distanceNeeded += 9; + } else if (NpcHandler.npcs[i].attackType > 2) { + return distanceNeeded += 4; + } + switch (NpcHandler.npcs[i].npcType) { + case 2562: + return distanceNeeded += 1; + case 2881:// dag kings + case 2882: + case 3200:// chaos ele + return distanceNeeded += 7; + case 2552: + case 2553: + case 2556: + case 2557: + case 2558: + case 2559: + case 2560: + case 2564: + case 2565: + return distanceNeeded += 8; + // things around dags + case 2892: + case 2894: + return distanceNeeded += 9; + case 907 : // Kolodian + case 908 : + case 909 : + case 910 : + case 911 : + case 912 : // Zammy battlemage + case 913 : // Sara battlemage + case 914 : // Guthix battlemage + case 2591 : // TzHaar-Mej (Tzhaar mage guy) + case 2743 : // Ket-Zek (Tzhaar mage guy) + case 2745 : // TzTok-Jad + case 1158 : // Kalphite queen form 1 + case 1160 : // Kalphite queen form 2 + case 2025 : // Ahrim + return distanceNeeded += 9; + case 2028 : // Karil + case 2631 : // Tok-Xil (Tzhaar ranging guy) + case 1183 : // Elf ranger + return distanceNeeded += 7; + case 941 : // Green drag + case 50 : // Kbd + return distanceNeeded += 5; + } + return distanceNeeded; + } + + + public static boolean goodDistanceNpc(int i, int x2, int y2, int distance) { + for (int x = NpcHandler.npcs[i].getX(); x <= NpcHandler.npcs[i].getX() + NpcHandler.npcs[i].size; x++) { + for (int y = NpcHandler.npcs[i].getY(); y <= NpcHandler.npcs[i].getY() + NpcHandler.npcs[i].size; y++) { + if (Misc.goodDistance(x, y, x2, y2, distance)) { + return true; + } + } + } + return false; + } + + + public static boolean checkClip(Npc n) { + int x2 = 0, y2 = 0, x3 = 0, y3 = 0; + if (n.killerId > 0) { + if (PlayerHandler.players[n.killerId] == null) { + return false; + } + x2 = PlayerHandler.players[n.killerId].getX(); + y2 = PlayerHandler.players[n.killerId].getY(); + } else if (n.masterId > 0) { + if (PlayerHandler.players[n.masterId] == null) { + return false; + } + x2 = PlayerHandler.players[n.masterId].getX(); + y2 = PlayerHandler.players[n.masterId].getY(); + } else { + return false; + } + int x = n.getX(); // -1 + int y = n.getY(); // 1 + final int dis = distanceRequired(n.npcId) + n.size; + int dis2 = 0; + final boolean melee = distanceRequired(n.npcId) < 2; + if (n.size < 1 && x != x2 && y != y2) { + return false; + } + // Algorithm starts here + int w = x2 - x; + int h = y2 - y; + int dx1 = 0, dy1 = 0, dx2 = 0, dy2 = 0; + if (w < 0) { + dx1 = -1; + } else if (w > 0) { + dx1 = 1; + } + if (h < 0) { + dy1 = -1; + } else if (h > 0) { + dy1 = 1; + } + if (w < 0) { + dx2 = -1; + } else if (w > 0) { + dx2 = 1; + } + int longest = Math.abs(w); + int shortest = Math.abs(h); + if (!(longest > shortest)) { + longest = Math.abs(h); + shortest = Math.abs(w); + if (h < 0) { + dy2 = -1; + } else if (h > 0) { + dy2 = 1; + } + dx2 = 0; + } + int numerator = longest >> 1; + boolean firstCheck = false; + for (int i = 0; i <= longest; i++) { + if (dis2 > dis) { + return false; + } + dis2++; + x3 = x; + y3 = y; + numerator += shortest; + if (!(numerator < longest)) { + numerator -= longest; + x += dx1; + y += dy1; + } else { + x += dx2; + y += dy2; + } + if (!firstCheck) { + if (melee) { + if (!Region.getClipping(x, y, n.heightLevel, x - x3, y - y3)) { + return false; + } + } + if (x == x2 && y == y2) { + break; + } + firstCheck = true; + } + if (melee) { + if (!Region.getClipping(x, y, n.heightLevel, x - x3, y - y3)) { + return false; + } + } + if (x == x2 && y == y2) { + return true; + } + } + return true; + } + + public static boolean inNpc(int i, int x2, int y2) { + if (NpcHandler.npcs[i].size < 1) { + if (x2 == NpcHandler.npcs[i].getX() && y2 == NpcHandler.npcs[i].getY()) { + return true; + } + } else { + for (int x = NpcHandler.npcs[i].getX(); x <= NpcHandler.npcs[i].getX() + NpcHandler.npcs[i].size; x++) { + for (int y = NpcHandler.npcs[i].getY(); y <= NpcHandler.npcs[i].getY() + NpcHandler.npcs[i].size; y++) { + if (x2 == x && y2 == y) { + return true; + } + } + } + } + return false; + } + + +} diff --git a/2006Redone Server/src/redone/game/npcs/NpcHandler.java b/2006Redone Server/src/com/rebotted/game/npcs/NpcHandler.java similarity index 86% rename from 2006Redone Server/src/redone/game/npcs/NpcHandler.java rename to 2006Redone Server/src/com/rebotted/game/npcs/NpcHandler.java index fc6e87a0..de0759e2 100644 --- a/2006Redone Server/src/redone/game/npcs/NpcHandler.java +++ b/2006Redone Server/src/com/rebotted/game/npcs/NpcHandler.java @@ -1,1417 +1,1416 @@ -package redone.game.npcs; - -import java.io.BufferedReader; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.IOException; -import redone.Constants; -import redone.Server; -import redone.game.content.combat.npcs.NpcAggressive; -import redone.game.content.combat.npcs.NpcCombat; -import redone.game.content.combat.npcs.NpcEmotes; -import redone.game.content.minigames.FightCaves; -import redone.game.content.minigames.PestControl; -import redone.game.content.music.sound.CombatSounds; -import redone.game.content.randomevents.FreakyForester; -import redone.game.content.randomevents.RandomEventHandler; -import redone.game.content.randomevents.RiverTroll; -import redone.game.npcs.drops.ItemDrop; -import redone.game.npcs.drops.NPCDrops; -import redone.game.npcs.drops.NPCDropsHandler; -import redone.game.players.Client; -import redone.game.players.Player; -import redone.game.players.PlayerHandler; -import redone.util.Misc; -import redone.world.clip.Region; - -// Facetypes: 1-Walk, 2-North, 3-South, 4-East, 5-West - -public class NpcHandler { - - public static int MAX_NPCS = 4000; - public static int maxListedNPCs = 4000; - public static Npc npcs[] = new Npc[MAX_NPCS]; - public static NpcList NpcList[] = new NpcList[maxListedNPCs]; - - public NpcHandler() { - for (int i = 0; i < MAX_NPCS; i++) { - npcs[i] = null; - } - for (int i = 0; i < maxListedNPCs; i++) { - NpcList[i] = null; - } - loadNPCList("./data/cfg/npc.cfg"); - loadAutoSpawn("./data/cfg/spawn-config.cfg"); - try { - NPCDefinition.init(); - } catch (Exception e) { - System.out.println("npc def error"); - } - } - - public static boolean isUndead(int index) { - String name = getNpcListName(npcs[index].npcType); - for(String s : Constants.UNDEAD) - if(s.equalsIgnoreCase(name)) - return true; - return false; - } - - public void spawnNpc3(Client c, int npcType, int x, int y, int heightLevel, - int WalkingType, int HP, int maxHit, int attack, int defence, - boolean attackPlayer, boolean headIcon, boolean summonFollow) { - int slot = -1; - for (int i = 1; i < MAX_NPCS; i++) { - if (npcs[i] == null) { - slot = i; - break; - } - } - if (slot == -1) { - return; - } - Npc newNPC = new Npc(slot, npcType); - newNPC.absX = x; - newNPC.absY = y; - newNPC.makeX = x; - newNPC.makeY = y; - newNPC.heightLevel = heightLevel; - newNPC.walkingType = WalkingType; - newNPC.HP = HP; - newNPC.MaxHP = HP; - newNPC.maxHit = maxHit; - newNPC.attack = attack; - newNPC.defence = defence; - newNPC.spawnedBy = c.getId(); - newNPC.facePlayer(c.playerId); - if (headIcon) { - c.getActionSender().drawHeadicon(1, slot, 0, 0); - } - if (summonFollow) { - newNPC.summoner = true; - newNPC.summonedBy = c.playerId; - c.summonId = npcType; - c.hasNpc = true; - } - if (attackPlayer) { - newNPC.underAttack = true; - if (c != null) { - newNPC.killerId = c.playerId; - } - } - npcs[slot] = newNPC; - } - - public boolean switchesAttackers(int i) { - switch (npcs[i].npcType) { - case 2551: - case 2552: - case 2553: - case 2559: - case 2560: - case 2561: - case 2563: - case 2564: - case 2565: - case 2892: - case 2894: - return true; - } - return false; - } - - public int getClosePlayer(Client c, int i) { - for (int j = 0; j < PlayerHandler.players.length; j++) { - if (PlayerHandler.players[j] != null) { - if (j == npcs[i].spawnedBy) { - return j; - } - if (goodDistance(PlayerHandler.players[j].absX, PlayerHandler.players[j].absY, npcs[i].absX, npcs[i].absY, 2 + distanceRequired(i) + followDistance(i)) || FightCaves.isFightCaveNpc(i)) { - if (PlayerHandler.players[j].underAttackBy <= 0 && PlayerHandler.players[j].underAttackBy2 <= 0 || PlayerHandler.players[j].inMulti()) { - if (PlayerHandler.players[j].heightLevel == npcs[i].heightLevel) { - return j; - } - } - } - } - } - return 0; - } - - public int npcSize(int i) { - switch (npcs[i].npcType) { - case 2883: - case 2882: - case 2881: - return 3; - } - return 0; - } - - /** - * Summon npc, barrows, etc - **/ - public static void spawnNpc(Client c, int npcType, int x, int y, - int heightLevel, int WalkingType, int HP, int maxHit, int attack, - int defence, boolean attackPlayer, boolean headIcon) { - // first, search for a free slot - int slot = -1; - for (int i = 1; i < MAX_NPCS; i++) { - if (npcs[i] == null) { - slot = i; - break; - } - } - if (slot == -1) { - // Misc.println("No Free Slot"); - return; // no free slot found - } - Npc newNPC = new Npc(slot, npcType); - newNPC.absX = x; - newNPC.absY = y; - newNPC.makeX = x; - newNPC.makeY = y; - newNPC.heightLevel = heightLevel; - newNPC.walkingType = WalkingType; - newNPC.HP = HP; - newNPC.MaxHP = HP; - newNPC.maxHit = maxHit; - newNPC.attack = attack; - newNPC.defence = defence; - newNPC.spawnedBy = c.getId(); - if (newNPC.npcType == FightCaves.TZTOK_JAD) { - c.setSpecialTarget(newNPC); - } - if (headIcon) { - c.getActionSender().drawHeadicon(1, slot, 0, 0); - } - if (attackPlayer) { - newNPC.underAttack = true; - if (c != null) { - for (int anim = 4277; anim < 4285; anim++) { - if (npcType == anim) { - newNPC.forceChat("I'M ALIVE!"); - } - } - - newNPC.killerId = c.playerId; - } - } - npcs[slot] = newNPC; - } - - public void spawnNpc2(int npcType, int x, int y, int heightLevel, int WalkingType, int HP, int maxHit, int attack, int defence) { - // first, search for a free slot - int slot = -1; - for (int i = 1; i < MAX_NPCS; i++) { - if (npcs[i] == null) { - slot = i; - break; - } - } - if (slot == -1) { - // Misc.println("No Free Slot"); - return; // no free slot found - } - Npc newNPC = new Npc(slot, npcType); - newNPC.absX = x; - newNPC.absY = y; - newNPC.makeX = x; - newNPC.makeY = y; - newNPC.heightLevel = heightLevel; - newNPC.walkingType = WalkingType; - newNPC.HP = HP; - newNPC.MaxHP = HP; - newNPC.maxHit = maxHit; - newNPC.attack = attack; - newNPC.defence = defence; - npcs[slot] = newNPC; - } - - private void killedBarrow(int i) { - Client c = (Client)PlayerHandler.players[npcs[i].killedBy]; - if(c != null) { - for(int o = 0; o < c.barrowsNpcs.length; o++){ - if(npcs[i].npcType == c.barrowsNpcs[o][0]) { - c.barrowsNpcs[o][1] = 2; // 2 for dead - c.barrowsKillCount++; - } - } - } - } - - private void killedCrypt(int i) { - Client c = (Client)PlayerHandler.players[npcs[i].killedBy]; - if(c != null) { - for(int o = 0; o < c.barrowCrypt.length; o++){ - if(npcs[i].npcType == c.barrowCrypt[o][0]) { - c.barrowsKillCount++; - c.getPlayerAssistant().sendFrame126(""+c.barrowsKillCount, 4536); - } - } - } - } - - public void newNPC(int npcType, int x, int y, int heightLevel, - int WalkingType, int HP, int maxHit, int attack, int defence) { - // first, search for a free slot - int slot = -1; - for (int i = 1; i < MAX_NPCS; i++) { - if (npcs[i] == null) { - slot = i; - break; - } - } - - if (slot == -1) { - return; // no free slot found - } - - Npc newNPC = new Npc(slot, npcType); - newNPC.absX = x; - newNPC.absY = y; - newNPC.makeX = x; - newNPC.makeY = y; - newNPC.heightLevel = heightLevel; - newNPC.walkingType = WalkingType; - newNPC.HP = HP; - newNPC.MaxHP = HP; - newNPC.maxHit = maxHit; - newNPC.attack = attack; - newNPC.defence = defence; - npcs[slot] = newNPC; - } - - public void newNPCList(int npcType, String npcName, int combat, int HP) { - // first, search for a free slot - int slot = -1; - for (int i = 0; i < maxListedNPCs; i++) { - if (NpcList[i] == null) { - slot = i; - break; - } - } - - if (slot == -1) { - return; // no free slot found - } - - NpcList newNPCList = new NpcList(npcType); - newNPCList.npcName = npcName; - newNPCList.npcCombat = combat; - newNPCList.npcHealth = HP; - NpcList[slot] = newNPCList; - } - - public String[] voidKnightTalk = { "We must not fail!", - "Take down the portals", "The Void Knights will not fall!", - "Hail the Void Knights!", "We are beating these scum!", - "Don't let these creatures leech my health!!", - "Do not let me die!!!", "Please....help me!", - "For the knights we shall prevail!" }; - - public int getKillerId(int playerId) { - int oldDamage = 0; - int killerId = 0; - for (int i = 1; i < PlayerHandler.players.length; i++) { - if (PlayerHandler.players[i] != null) { - if (PlayerHandler.players[i].killedBy == playerId) { - if (PlayerHandler.players[i] - .withinDistance(PlayerHandler.players[playerId])) { - if (PlayerHandler.players[i].totalPlayerDamageDealt > oldDamage) { - oldDamage = PlayerHandler.players[i].totalPlayerDamageDealt; - killerId = i; - } - } - PlayerHandler.players[i].totalPlayerDamageDealt = 0; - PlayerHandler.players[i].killedBy = 0; - } - } - } - return killerId; - } - - public void process() { - for (Npc i : NpcHandler.npcs) { - if (i == null) { - continue; - } - i.clearUpdateFlags(); - } - - for (int i = 0; i < MAX_NPCS; i++) { - if (npcs[i] != null) { - - Client slaveOwner = (Client) PlayerHandler.players[npcs[i].summonedBy]; - if (slaveOwner == null && npcs[i].summoner) { - npcs[i].absX = 0; - npcs[i].absY = 0; - } - if (slaveOwner != null - && slaveOwner.hasNpc - && !slaveOwner.goodDistance(npcs[i].getX(), - npcs[i].getY(), slaveOwner.absX, - slaveOwner.absY, 15) && npcs[i].summoner) { - npcs[i].absX = slaveOwner.absX; - npcs[i].absY = slaveOwner.absY - 1; - } - - if (npcs[i].actionTimer > 0) { - npcs[i].actionTimer--; - } - - if (npcs[i].freezeTimer > 0) { - npcs[i].freezeTimer--; - } - - if (npcs[i].hitDelayTimer > 0) { - npcs[i].hitDelayTimer--; - } - - if (npcs[i].hitDelayTimer == 1) { - npcs[i].hitDelayTimer = 0; - NpcCombat.registerNpcHit(i); - } - - if (npcs[i].attackTimer > 0) { - npcs[i].attackTimer--; - } - - if (npcs[i].npcType == 3782 && PestControl.gameStarted) { - if (Misc.random(10) == 4) { - npcs[i].forceChat(voidKnightTalk[Misc - .random3(voidKnightTalk.length)]); - } - } - - if (npcs[i].spawnedBy > 0) { // delete summons npc - if (PlayerHandler.players[npcs[i].spawnedBy] == null - || PlayerHandler.players[npcs[i].spawnedBy].heightLevel != npcs[i].heightLevel - || PlayerHandler.players[npcs[i].spawnedBy].respawnTimer > 0 - || !PlayerHandler.players[npcs[i].spawnedBy] - .goodDistance( - npcs[i].getX(), - npcs[i].getY(), - PlayerHandler.players[npcs[i].spawnedBy] - .getX(), - PlayerHandler.players[npcs[i].spawnedBy] - .getY(), 20)) { - - if (npcs[i].npcType == FightCaves.YT_HURKOT) { - Client c = ((Client)PlayerHandler.players[npcs[i].spawnedBy]); - int ranHeal = Misc.random(19); - if (ranHeal == 19) - FightCaves.healJad(c, i); - } - - if (PlayerHandler.players[npcs[i].spawnedBy] != null) { - for (int o = 0; o < PlayerHandler.players[npcs[i].spawnedBy].barrowsNpcs.length; o++) { - if (npcs[i].npcType == PlayerHandler.players[npcs[i].spawnedBy].barrowsNpcs[o][0]) { - if (PlayerHandler.players[npcs[i].spawnedBy].barrowsNpcs[o][1] == 1) { - PlayerHandler.players[npcs[i].spawnedBy].barrowsNpcs[o][1] = 0; - } - } - } - } - npcs[i] = null; - } - } - if (npcs[i] == null) { - continue; - } - - Client client = (Client) PlayerHandler.players[NpcData.getCloseRandomPlayer(i)]; - if (client != null) { - boolean aggressive = (NpcAggressive.isAggressive(i) || getNpcListCombat(npcs[i].npcType) * 2 > client.combatLevel && getNpcListAggressive(i)); - if (aggressive && !npcs[i].underAttack && !npcs[i].isDead && npcs[i].MaxHP > 0) { - npcs[i].killerId = NpcData.getCloseRandomPlayer(i); - } - } - - if (System.currentTimeMillis() - npcs[i].lastDamageTaken > 5000) { - npcs[i].underAttackBy = 0; - } - - if ((npcs[i].killerId > 0 || npcs[i].underAttack) - && !npcs[i].walkingHome && retaliates(npcs[i].npcType)) { - if (!npcs[i].isDead) { - int p = npcs[i].killerId; - if (PlayerHandler.players[p] != null) { - Client c = (Client) PlayerHandler.players[p]; - followPlayer(i, c.playerId); - if (npcs[i] == null) { - continue; - } - stepAway(c,i); - if (npcs[i].attackTimer == 0) { - NpcCombat.attackPlayer(c, i); - } - } else { - npcs[i].killerId = 0; - npcs[i].underAttack = false; - npcs[i].facePlayer(0); - } - } - } - - /** - * Random walking and walking home - **/ - if (npcs[i] == null) { - continue; - } - if ((!npcs[i].underAttack || npcs[i].walkingHome) - && npcs[i].randomWalk && !npcs[i].isDead) { - npcs[i].facePlayer(0); - npcs[i].killerId = 0; - if (npcs[i].spawnedBy == 0) { - if (npcs[i].absX > npcs[i].makeX - + Constants.NPC_RANDOM_WALK_DISTANCE - || npcs[i].absX < npcs[i].makeX - - Constants.NPC_RANDOM_WALK_DISTANCE - || npcs[i].absY > npcs[i].makeY - + Constants.NPC_RANDOM_WALK_DISTANCE - || npcs[i].absY < npcs[i].makeY - - Constants.NPC_RANDOM_WALK_DISTANCE) { - npcs[i].walkingHome = true; - } - } - - if (npcs[i].walkingHome && npcs[i].absX == npcs[i].makeX - && npcs[i].absY == npcs[i].makeY) { - npcs[i].walkingHome = false; - } else if (npcs[i].walkingHome) { - npcs[i].moveX = GetMove(npcs[i].absX, npcs[i].makeX); - npcs[i].moveY = GetMove(npcs[i].absY, npcs[i].makeY); - handleClipping(i); - npcs[i].getNextNPCMovement(i); - npcs[i].updateRequired = true; - } - if (npcs[i].walkingType == 1) { - if (Misc.random(3) == 1 && !npcs[i].walkingHome) { - int MoveX = 0; - int MoveY = 0; - int Rnd = Misc.random(9); - if (Rnd == 1) { - MoveX = 1; - MoveY = 1; - } else if (Rnd == 2) { - MoveX = -1; - } else if (Rnd == 3) { - MoveY = -1; - } else if (Rnd == 4) { - MoveX = 1; - } else if (Rnd == 5) { - MoveY = 1; - } else if (Rnd == 6) { - MoveX = -1; - MoveY = -1; - } else if (Rnd == 7) { - MoveX = -1; - MoveY = 1; - } else if (Rnd == 8) { - MoveX = 1; - MoveY = -1; - } - - if (MoveX == 1) { - if (npcs[i].absX + MoveX < npcs[i].makeX + 1) { - npcs[i].moveX = MoveX; - } else { - npcs[i].moveX = 0; - } - } - - if (MoveX == -1) { - if (npcs[i].absX - MoveX > npcs[i].makeX - 1) { - npcs[i].moveX = MoveX; - } else { - npcs[i].moveX = 0; - } - } - - if (MoveY == 1) { - if (npcs[i].absY + MoveY < npcs[i].makeY + 1) { - npcs[i].moveY = MoveY; - } else { - npcs[i].moveY = 0; - } - } - - if (MoveY == -1) { - if (npcs[i].absY - MoveY > npcs[i].makeY - 1) { - npcs[i].moveY = MoveY; - } else { - npcs[i].moveY = 0; - } - } - handleClipping(i); - // NpcData.handleClipping(i); - npcs[i].getNextNPCMovement(i); - npcs[i].updateRequired = true; - } - } - } - - if (npcs[i].isDead) { - if (npcs[i].actionTimer == 0 && npcs[i].applyDead == false - && npcs[i].needRespawn == false) { - npcs[i].updateRequired = true; - npcs[i].facePlayer(0); - if (npcs[i].killedBy <= 0) - npcs[i].killedBy = NpcData.getNpcKillerId(i); - npcs[i].animNumber = NpcEmotes.getDeadEmote(i); // dead - // emote - Client c = (Client) PlayerHandler.players[npcs[i].killedBy]; - if (c != null) { - if (Constants.combatSounds - && NpcHandler.npcs[i].npcType < 3177 - && NpcHandler.npcs[i].npcType > 3180) { - c.getActionSender() - .sendSound( - CombatSounds - .getNpcDeathSounds(npcs[i].npcType), - 100, 0); - } - } - npcs[i].animUpdateRequired = true; - npcs[i].freezeTimer = 0; - npcs[i].applyDead = true; - killedBarrow(i); - killedCrypt(i); - npcs[i].actionTimer = 4; // delete time - resetPlayersInCombat(i); - } else if (npcs[i].actionTimer == 0 - && npcs[i].applyDead == true - && npcs[i].needRespawn == false) { - npcs[i].needRespawn = true; - npcs[i].actionTimer = NpcData.getRespawnTime(i); // respawn - // time - dropItems(i); // npc drops items! - FightCaves.tzhaarDeathHandler(i); - if (npcs[i].npcType == 2745) { - FightCaves.handleJadDeath(i); - if (PlayerHandler.players[npcs[i].killerId] != null) { - PlayerHandler.players[npcs[i].killerId].spawnedHealers = 0; - PlayerHandler.players[npcs[i].killerId].canHealersRespawn = true; - } - } - if (npcs[i].npcType == FightCaves.YT_HURKOT) { - if (PlayerHandler.players[npcs[i].killerId] != null) { - if (PlayerHandler.players[npcs[i].killerId].spawnedHealers != 0) { - PlayerHandler.players[npcs[i].killerId].spawnedHealers -= 1; - if (PlayerHandler.players[npcs[i].killerId].spawnedHealers <= 0) { - PlayerHandler.players[npcs[i].killerId].spawnedHealers = 0; - } - } - } - } - appendSlayerExperience(i); - resetEvent(i); - Client player = (Client) PlayerHandler.players[npcs[i].killedBy]; - if (player != null) { - if (player.tutorialProgress == 24) { - handleratdeath(i); - } else if (player.tutorialProgress == 25 - && player.ratdied2 == true) { - handleratdeath2(i); - } - } - if (npcs[i].npcType > 3726 && npcs[i].npcType < 3732) { - int damage = 10 + Misc.random(10); - player.playerLevel[player.playerHitpoints] = player.getPlayerAssistant().getLevelForXP(player.playerXP[player.playerHitpoints]) - damage; - player.getPlayerAssistant().refreshSkill(player.playerHitpoints); - player.handleHitMask(damage); - } - if (npcs[i].npcType == 655) { - player.spiritTree = true; - player.getActionSender().sendMessage( - "You have defeated the tree spirit."); - } - if (npcs[i].npcType > 412 && npcs[i].npcType < 419) { - player.golemSpawned = false; - } - if (npcs[i].npcType == 757 && player.vampSlayer == 3) { - player.vampSlayer = 4; - } - if (npcs[i].npcType > 390 && npcs[i].npcType < 397) { - RiverTroll.hasRiverTroll = false; - } - if (npcs[i].npcType > 418 && npcs[i].npcType < 425) { - player.zombieSpawned = false; - } - if (npcs[i].npcType > 424 && npcs[i].npcType < 431) { - player.shadeSpawned = false; - } - if (npcs[i].npcType > 437 && npcs[i].npcType < 444) { - player.treeSpiritSpawned = false; - } - if (npcs[i].npcType > 2462 && npcs[i].npcType < 2469) { - player.chickenSpawned = false; - } - npcs[i].absX = npcs[i].makeX; - npcs[i].absY = npcs[i].makeY; - npcs[i].HP = npcs[i].MaxHP; - npcs[i].animNumber = 0x328; - npcs[i].updateRequired = true; - npcs[i].animUpdateRequired = true; - if (npcs[i].npcType >= 2440 && npcs[i].npcType <= 2446) { - Server.objectManager.removeObject(npcs[i].absX, - npcs[i].absY); - } - } else if (npcs[i].actionTimer == 0 - && npcs[i].needRespawn == true) { - if (npcs[i].spawnedBy > 0) { - npcs[i] = null; - } else { - int old1 = npcs[i].npcType; - int old2 = npcs[i].makeX; - int old3 = npcs[i].makeY; - int old4 = npcs[i].heightLevel; - int old5 = npcs[i].walkingType; - int old6 = npcs[i].MaxHP; - int old7 = npcs[i].maxHit; - int old8 = npcs[i].attack; - int old9 = npcs[i].defence; - - npcs[i] = null; - newNPC(old1, old2, old3, old4, old5, old6, old7, - old8, old9); - } - } - } - } - } - } - - private void handleratdeath(int i) { - final Client c = (Client) PlayerHandler.players[npcs[i].killedBy]; - if (c != null) { - c.getActionSender().chatbox(6180); - c.getDialogueHandler() - .chatboxText( - c, - "", - "Pass through the gate and talk to the Combat Instructor, he", - "will give you your next task.", "", - "Well done, you've made your first kill!"); - c.getActionSender().chatbox(6179); - c.getActionSender().drawHeadicon(1, 6, 0, 0); // draws - // headicon to - // combat ude - c.tutorialProgress = 25; - } - } - - private void handleratdeath2(int i) { - Client c = (Client) PlayerHandler.players[npcs[i].killedBy]; - if (c != null) { - c.getActionSender().chatbox(6180); - c.getDialogueHandler() - .chatboxText( - c, - "You have completed the tasks here. To move on, click on the", - "ladder shown. If you need to go over any of what you learnt", - "here, just talk to the Combat Instructor and he'll tell you what", - "he can.", "Moving on"); - c.getActionSender().chatbox(6179); - c.tutorialProgress = 26; - c.getActionSender().createArrow(3111, 9525, c.getH(), 2); // send - // hint - // to - // furnace - } - } - - public boolean getsPulled(Client c, int i) { - switch (npcs[i].npcType) { - case 2550: - if (npcs[i].firstAttacker > 0) { - return false; - } - break; - case 87: - if (c.isInTut() || c.tutorialProgress < 36) { - return false; - } - break; - } - return true; - } - - public static boolean multiAttacks(int i) { - switch (npcs[i].npcType) { - case 2558: - return true; - case 2562: - if (npcs[i].attackType == 2) { - return true; - } - case 2550: - if (npcs[i].attackType == 1) { - return true; - } - default: - return false; - } - - } - - private void stepAway(Client c, int i) { - int otherX = NpcHandler.npcs[i].getX(); - int otherY = NpcHandler.npcs[i].getY(); - if (otherX == c.getX() && otherY == c.getY()) { - if (Region.getClipping(c.getX() - 1, c.getY(), c.heightLevel, -1, 0)) { - npcs[i].moveX = -1; - } else if (Region.getClipping(c.getX() + 1, c.getY(), c.heightLevel, 1, 0)) { - npcs[i].moveX = 1; - } else if (Region.getClipping(c.getX(), c.getY() - 1, c.heightLevel, 0, -1)) { - npcs[i].moveY = -1; - } else if (Region.getClipping(c.getX(), c.getY() + 1, c.heightLevel, 0, 1)) { - npcs[i].moveY = 1; - } - npcs[i].getNextNPCMovement(i); - npcs[i].updateRequired = true; - } - } - - public static void handleClipping(int i) { - Npc npc = npcs[i]; - if (npc.moveX == 1 && npc.moveY == 1) { - if ((Region - .getClipping(npc.absX + 1, npc.absY + 1, npc.heightLevel) & 0x12801e0) != 0) { - npc.moveX = 0; - npc.moveY = 0; - if ((Region - .getClipping(npc.absX, npc.absY + 1, npc.heightLevel) & 0x1280120) == 0) { - npc.moveY = 1; - } else { - npc.moveX = 1; - } - } - } else if (npc.moveX == -1 && npc.moveY == -1) { - if ((Region - .getClipping(npc.absX - 1, npc.absY - 1, npc.heightLevel) & 0x128010e) != 0) { - npc.moveX = 0; - npc.moveY = 0; - if ((Region - .getClipping(npc.absX, npc.absY - 1, npc.heightLevel) & 0x1280102) == 0) { - npc.moveY = -1; - } else { - npc.moveX = -1; - } - } - } else if (npc.moveX == 1 && npc.moveY == -1) { - if ((Region - .getClipping(npc.absX + 1, npc.absY - 1, npc.heightLevel) & 0x1280183) != 0) { - npc.moveX = 0; - npc.moveY = 0; - if ((Region - .getClipping(npc.absX, npc.absY - 1, npc.heightLevel) & 0x1280102) == 0) { - npc.moveY = -1; - } else { - npc.moveX = 1; - } - } - } else if (npc.moveX == -1 && npc.moveY == 1) { - if ((Region - .getClipping(npc.absX - 1, npc.absY + 1, npc.heightLevel) & 0x128013) != 0) { - npc.moveX = 0; - npc.moveY = 0; - if ((Region - .getClipping(npc.absX, npc.absY + 1, npc.heightLevel) & 0x1280120) == 0) { - npc.moveY = 1; - } else { - npc.moveX = -1; - } - } - } // Checking Diagonal movement. - - if (npc.moveY == -1) { - if ((Region.getClipping(npc.absX, npc.absY - 1, npc.heightLevel) & 0x1280102) != 0) { - npc.moveY = 0; - } - } else if (npc.moveY == 1) { - if ((Region.getClipping(npc.absX, npc.absY + 1, npc.heightLevel) & 0x1280120) != 0) { - npc.moveY = 0; - } - } // Checking Y movement. - if (npc.moveX == 1) { - if ((Region.getClipping(npc.absX + 1, npc.absY, npc.heightLevel) & 0x1280180) != 0) { - npc.moveX = 0; - } - } else if (npc.moveX == -1) { - if ((Region.getClipping(npc.absX - 1, npc.absY, npc.heightLevel) & 0x1280108) != 0) { - npc.moveX = 0; - } - } // Checking X movement. - } - - /** - * Dropping Items! - **/ - - // [npc][0] = item dropped - // [npc][1] = amount - // [npc][2] = rarity - // [j][2] = rarity - // [j][1] = amount - // [j][0] = drop - - public void dropItems(int i) { - // TODO: add ring of wealth - int item_index = 0; - Client c = (Client) PlayerHandler.players[npcs[i].killedBy]; - if (c != null) { - // These npcs shouldn't have drops - if (npcs[i].npcType == 2627 // Tz-Kih - || npcs[i].npcType == 2630 // Tz-Kek - || npcs[i].npcType == 2631 // Tok-Xil - || npcs[i].npcType == 2638 // Neite - || npcs[i].npcType == 2641 // Dragonkin - || npcs[i].npcType == 2643 // R4ng3rNo0b889 - || npcs[i].npcType == 2645 // Love Cats - || npcs[i].npcType == 1532 // Barricade - || npcs[i].npcType == 153 // Butterfly - || PestControl.npcIsPCMonster(npcs[i].npcType) - || FightCaves.isFightCaveNpc(i)) { - // These npcs shouldn't have drops - return; - } - for (ItemDrop possible_drop : NPCDropsHandler.NPC_DROPS(getNpcListName(npcs[i].npcType).toLowerCase(), npcs[i].npcType)) { - if (Misc.random(possible_drop.getChance()) == 0) { - int amt = possible_drop.getAmount(); - Server.itemHandler.createGroundItem(c, possible_drop.getItemID(), npcs[i].absX, npcs[i].absY, amt, c.playerId); - } - } - switch (npcs[i].npcType) { - case 2459: - FreakyForester.killedPheasant(c, 0); - Server.itemHandler.createGroundItem(c, 6178, npcs[i].absX, npcs[i].absY, 1, c.playerId); - break; - case 2460: - FreakyForester.killedPheasant(c, 1); - Server.itemHandler.createGroundItem(c, 6178, npcs[i].absX, npcs[i].absY, 1, c.playerId); - break; - case 2461: - FreakyForester.killedPheasant(c, 2); - Server.itemHandler.createGroundItem(c, 6178, npcs[i].absX, npcs[i].absY, 1, c.playerId); - break; - case 2462: - FreakyForester.killedPheasant(c, 3); - Server.itemHandler.createGroundItem(c, 6178, npcs[i].absX, npcs[i].absY, 1, c.playerId); - break; - case 92: - if (c.restGhost == 3) { - Server.itemHandler.createGroundItem(c, 553, npcs[i].absX, npcs[i].absY, 1, c.playerId); - c.restGhost = 4; - } - break; - case 47: - if (c.witchspot == 1 || c.romeojuliet > 0 && c.romeojuliet < 9) { - Server.itemHandler.createGroundItem(c, 300, npcs[i].absX, npcs[i].absY, 1, c.playerId); - } - break; - case 645: - if (c.shieldArrav == 5) { - Server.itemHandler.createGroundItem(c, 761, npcs[i].absX, npcs[i].absY, 1, c.playerId); - } - break; - } - int level = getNpcListCombat(npcs[i].npcType); - // higher level monsters have a better drop rate (max of 1/128) - int chance = Math.max(128, 512 - (level * 2)); - if (Misc.random(1, chance) == 1) { - int scroll = -1; - if (level <= 1) // none - scroll = -1; - else if (level <= 24) // easy - scroll = 2677; - else if (level <= 40) // easy → medium - scroll = 2677 + Misc.random(0, 1); - else if (level <= 80) // medium - scroll = 2678; - else if (level <= 150) // medium → hard - scroll = 2678 + Misc.random(0, 1); - else if (level > 150)// hard - scroll = 2679; - if (scroll >= 0 && Constants.CLUES_ENABLED) - Server.itemHandler.createGroundItem(c, scroll, npcs[i].absX, npcs[i].absY, 1, c.playerId); - } - } - } - /** - * Slayer Experience - **/ - public void appendSlayerExperience(int i) { - Client c = (Client) PlayerHandler.players[npcs[i].killedBy]; - if (c != null) { - // if (c.getSlayer().isSlayerTask(i)) { - if (c.slayerTask == npcs[i].npcType) { - c.taskAmount--; - c.getPlayerAssistant().addSkillXP(c.getSlayer().getTaskExp(c.slayerTask), 18); - if (c.taskAmount <= 0) { - int points = c.getSlayer().getDifficulty(c.slayerTask) * 4; - c.slayerTask = -1; - c.slayerPoints += points; - c.getActionSender().sendMessage("You completed your slayer task. You obtain " + points + " slayer points. Please talk to your slayer master."); - } - } - } - } - - // } - - public void resetEvent(int i) { - Client c = (Client) PlayerHandler.players[npcs[i].killedBy]; - if (c != null) { - RandomEventHandler.addRandom(c); - } - } - - /** - * Resets players in combat - */ - - public void resetPlayersInCombat(int i) { - for (int j = 0; j < PlayerHandler.players.length; j++) { - if (PlayerHandler.players[j] != null) { - if (PlayerHandler.players[j].underAttackBy2 == i) { - PlayerHandler.players[j].underAttackBy2 = 0; - } - } - } - } - - /** - * Npc Follow Player - **/ - - public static int GetMove(int Place1, int Place2) { - if (Place1 - Place2 == 0) { - return 0; - } else if (Place1 - Place2 < 0) { - return 1; - } else if (Place1 - Place2 > 0) { - return -1; - } - return 0; - } - - public static boolean followPlayer(int i) { - if (NpcHandler.npcs[i].inLesserNpc()) { - return false; - } - switch (npcs[i].npcType) { - case 1456: - case 2892: - case 2894: - case 1532: - case 1534: - return false; - } - return true; - } - - public static void followPlayer(int i, int playerId) { - if (PlayerHandler.players[playerId] == null) { - return; - } - if (PlayerHandler.players[playerId].respawnTimer > 0) { - npcs[i].facePlayer(0); - npcs[i].randomWalk = true; - npcs[i].underAttack = false; - return; - } - - if (npcs[i].npcType == 1532 || npcs[i].npcType == 1534) { - return; - } - - if (!followPlayer(i) && npcs[i].npcType != 1532 && npcs[i].npcType != 1534) { - npcs[i].facePlayer(playerId); - return; - } - - int playerX = PlayerHandler.players[playerId].absX; - int playerY = PlayerHandler.players[playerId].absY; - npcs[i].randomWalk = false; - if (goodDistance(npcs[i].getX(), npcs[i].getY(), playerX, playerY, - distanceRequired(i))) { - return; - } - - Npc npc = npcs[i]; - int x = npc.absX; - int y = npc.absY; - Player player = PlayerHandler.players[playerId]; - if (npcs[i].spawnedBy > 0 - || x < npc.makeX + Constants.NPC_FOLLOW_DISTANCE - && x > npc.makeX - Constants.NPC_FOLLOW_DISTANCE - && y < npc.makeY + Constants.NPC_FOLLOW_DISTANCE - && y > npc.makeY - Constants.NPC_FOLLOW_DISTANCE) { - if (npc.heightLevel == player.heightLevel) { - if (player != null && npc != null) { - if (playerX > x && playerY < y) { - npc.moveX = GetMove(x,playerX);//Diagonal bottom right - } else if (playerX < x && playerY < y) { - npc.moveY = GetMove(y,playerY); //Diagonal bottom left - } else if (playerX < x && playerY > y) { - npc.moveX = GetMove(x,playerX);// Diagonal top left - } else if (playerX > x && playerY > y) { - npc.moveY = GetMove(y,playerY);// Diagonal top right - } else if (playerY < y) { - npc.moveX = GetMove(x, playerX); //Move South to player - npc.moveY = GetMove(y, playerY); - } else if (playerY > y) { - npc.moveX = GetMove(x, playerX); //Move North to player - npc.moveY = GetMove(y, playerY); - } else if (playerX < x) { - npc.moveX = GetMove(x, playerX); //Move West to player - npc.moveY = GetMove(y, playerY); - } else if (playerX > x) { - npc.moveX = GetMove(x, playerX); //Move East to player - npc.moveY = GetMove(y, playerY); - } - npc.facePlayer(playerId); - handleClipping(i); - npc.getRandomAndHomeNPCWalking(i); - npc.updateRequired = true; - } - } - } else { - npc.facePlayer(0); - npc.randomWalk = true; - npc.underAttack = false; - } - } - - /** - * Distanced required to attack - **/ - public static int distanceRequired(int i) { - switch (npcs[i].npcType) { - case 2025: - case 2028: - return 6; - case 50: - case 2562: - return 2; - case 2881:// dag kings - case 2882: - case 3200:// chaos ele - case 2743: - case 2631: - case 2745: - return 8; - case 2883:// rex - return 1; - case 2552: - case 2553: - case 2556: - case 2557: - case 2558: - case 2559: - case 2560: - case 2564: - case 2565: - return 9; - // things around dags - case 2892: - case 2894: - return 10; - default: - return 1; - } - } - - public static int followDistance(int i) { - switch (npcs[i].npcType) { - case 2550: - case 2551: - case 2562: - case 2563: - return 8; - case 2883: - return 4; - case 2881: - case 2882: - return 1; - } - return 0; - } - - public static int getProjectileSpeed(int i) { - switch (npcs[i].npcType) { - case 2881: - case 2882: - case 3200: - return 85; - - case 2745: - return 130; - - case 50: - return 90; - - case 2025: - return 85; - - case 2028: - return 80; - - default: - return 85; - } - } - - public static int offset(int i) { - switch (npcs[i].npcType) { - case 50: - case 110: - case 941: - case 1590: - case 1591: - case 1592: - case 2642: - case 55: - case 54: - case 53: - return 2; - case 2881: - case 2882: - return 1; - case 2745: - case 2743: - return 1; - } - return 0; - } - - public boolean specialCase(Client c, int i) { // responsible for npcs that - // much - if (goodDistance(npcs[i].getX(), npcs[i].getY(), c.getX(), c.getY(), 8) - && !goodDistance(npcs[i].getX(), npcs[i].getY(), c.getX(), - c.getY(), distanceRequired(i))) { - return true; - } - return false; - } - - public boolean retaliates(int npcType) { - return npcType < 3777 || npcType > 3780 - && !(npcType >= 2440 && npcType <= 2446); - } - - public static void handleSpecialEffects(Client c, int i, int damage) { - if (npcs[i].npcType == 2892 || npcs[i].npcType == 2894) { - if (damage > 0) { - if (c != null) { - if (c.playerLevel[5] > 0) { - c.playerLevel[5]--; - c.getPlayerAssistant().refreshSkill(5); - c.getPlayerAssistant().appendPoison(12); - } - } - } - } - } - public static boolean goodDistance(int objectX, int objectY, int playerX, - int playerY, int distance) { - return objectX - playerX <= distance && objectX - playerX >= -distance - && objectY - playerY <= distance - && objectY - playerY >= -distance - && !((objectX - playerX == distance && objectY - playerY == -distance) //Detect diagonal positioning - || (objectX - playerX == -distance && objectY - playerY == -distance) - || (objectX - playerX == -distance && objectY - playerY == distance) - || (objectX - playerX == distance && objectY - playerY == distance)) - ; - } - - public static int getMaxHit(int i) { - switch (npcs[i].npcType) { - case 2558: - if (npcs[i].attackType == 2) { - return 28; - } else { - return 68; - } - case 1265: - case 1267: - return 2; - case 2562: - return 31; - case 2550: - return 36; - } - return 1; - } - - public static int getNpcListCombat(int npcId) { - for (int i = 0; i < maxListedNPCs; i++) { - if (NpcList[i] != null) { - if (NpcList[i].npcId == npcId) { - return NpcList[i].npcCombat; - } - } - } - return 0; - } - - public boolean loadAutoSpawn(String FileName) { - String line = ""; - String token = ""; - String token2 = ""; - String token2_2 = ""; - String[] token3 = new String[10]; - boolean EndOfFile = false; - // int ReadMode = 0; - BufferedReader characterfile = null; - try { - characterfile = new BufferedReader(new FileReader("./" + FileName)); - } catch (FileNotFoundException fileex) { - Misc.println(FileName + ": file not found."); - return false; - } - try { - line = characterfile.readLine(); - } catch (IOException ioexception) { - Misc.println(FileName + ": error loading file."); - // return false; - } - while (EndOfFile == false && line != null) { - line = line.trim(); - int spot = line.indexOf("="); - if (spot > -1) { - token = line.substring(0, spot); - token = token.trim(); - token2 = line.substring(spot + 1); - token2 = token2.trim(); - token2_2 = token2.replaceAll("\t\t", "\t"); - token2_2 = token2_2.replaceAll("\t\t", "\t"); - token2_2 = token2_2.replaceAll("\t\t", "\t"); - token2_2 = token2_2.replaceAll("\t\t", "\t"); - token2_2 = token2_2.replaceAll("\t\t", "\t"); - token3 = token2_2.split("\t"); - if (token.equals("spawn")) { - newNPC(Integer.parseInt(token3[0]),// npc - Integer.parseInt(token3[1]),// x - Integer.parseInt(token3[2]),// y - Integer.parseInt(token3[3]),// height - Integer.parseInt(token3[4]),// walk - getNpcListHP(Integer.parseInt(token3[0])),// health - Integer.parseInt(token3[5]),// maxhit - Integer.parseInt(token3[6]),// attack - Integer.parseInt(token3[7]));// str - - } - } else { - if (line.equals("[ENDOFSPAWNLIST]")) { - try { - characterfile.close(); - } catch (IOException ioexception) { - } - //return true; - } - } - try { - line = characterfile.readLine(); - } catch (IOException ioexception1) { - EndOfFile = true; - } - } - try { - characterfile.close(); - } catch (IOException ioexception) { - } - return false; - } - - public static int getNpcListHP(int npcId) { - for (int i = 0; i < maxListedNPCs; i++) { - if (NpcList[i] != null) { - if (NpcList[i].npcId == npcId) { - return NpcList[i].npcHealth; - } - } - } - return 0; - } - - public static String getNpcListName(int npcId) { - for (int i = 0; i < maxListedNPCs; i++) { - if (NpcList[i] != null) { - if (NpcList[i].npcId == npcId) { - return NpcList[i].npcName; - } - } - } - return "nothing"; - } - - public boolean loadNPCList(String FileName) { - String line = ""; - String token = ""; - String token2 = ""; - String token2_2 = ""; - String[] token3 = new String[10]; - boolean EndOfFile = false; - BufferedReader characterfile = null; - try { - characterfile = new BufferedReader(new FileReader("./" + FileName)); - } catch (FileNotFoundException fileex) { - Misc.println(FileName + ": file not found."); - return false; - } - try { - line = characterfile.readLine(); - // characterfile.close(); - } catch (IOException ioexception) { - Misc.println(FileName + ": error loading file."); - // return false; - } - while (EndOfFile == false && line != null) { - line = line.trim(); - int spot = line.indexOf("="); - if (spot > -1) { - token = line.substring(0, spot); - token = token.trim(); - token2 = line.substring(spot + 1); - token2 = token2.trim(); - token2_2 = token2.replaceAll("\t+", "\t"); - token3 = token2_2.split("\t"); - if (token.equals("npc")) { - newNPCList(Integer.parseInt(token3[0]), token3[1], Integer.parseInt(token3[2]), Integer.parseInt(token3[3])); - } - } else { - if (line.equals("[ENDOFNPCLIST]")) { - try { - characterfile.close(); - } catch (IOException ioexception) { - } - //return true; - } - } - try { - line = characterfile.readLine(); - } catch (IOException ioexception1) { - EndOfFile = true; - } - } - try { - characterfile.close(); - } catch (IOException ioexception) { - } - return false; - } - - public static boolean checkSpawn(Client player, int i) { - return npcs[i] != null && npcs[i].spawnedBy != -1 && npcs[i].npcType == i; - } - - public boolean getNpcListAggressive(int npcId) { - return NPCDefinition.forId(npcId).isAggressive(); - } - - -} +package com.rebotted.game.npcs; + +import java.io.BufferedReader; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; + +import com.rebotted.GameConstants; +import com.rebotted.GameEngine; +import com.rebotted.game.content.combat.npcs.NpcAggressive; +import com.rebotted.game.content.combat.npcs.NpcCombat; +import com.rebotted.game.content.combat.npcs.NpcEmotes; +import com.rebotted.game.content.minigames.FightCaves; +import com.rebotted.game.content.minigames.PestControl; +import com.rebotted.game.content.music.sound.CombatSounds; +import com.rebotted.game.content.randomevents.FreakyForester; +import com.rebotted.game.content.randomevents.RandomEventHandler; +import com.rebotted.game.content.randomevents.RiverTroll; +import com.rebotted.game.npcs.drops.ItemDrop; +import com.rebotted.game.npcs.drops.NPCDropsHandler; +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerHandler; +import com.rebotted.util.Misc; +import com.rebotted.world.clip.Region; + +// Facetypes: 1-Walk, 2-North, 3-South, 4-East, 5-West + +public class NpcHandler { + + public static int MAX_NPCS = 4000; + public static int maxListedNPCs = 4000; + public static Npc npcs[] = new Npc[MAX_NPCS]; + public static NpcList NpcList[] = new NpcList[maxListedNPCs]; + + public NpcHandler() { + for (int i = 0; i < MAX_NPCS; i++) { + npcs[i] = null; + } + for (int i = 0; i < maxListedNPCs; i++) { + NpcList[i] = null; + } + loadNPCList("./data/cfg/npc.cfg"); + loadAutoSpawn("./data/cfg/spawn-config.cfg"); + try { + NPCDefinition.init(); + } catch (Exception e) { + //System.out.println("npc def error"); + } + } + + public static boolean isUndead(int index) { + String name = getNpcListName(npcs[index].npcType); + for(String s : GameConstants.UNDEAD) + if(s.equalsIgnoreCase(name)) + return true; + return false; + } + + public void spawnNpc3(Player c, int npcType, int x, int y, int heightLevel, + int WalkingType, int HP, int maxHit, int attack, int defence, + boolean attackPlayer, boolean headIcon, boolean summonFollow) { + int slot = -1; + for (int i = 1; i < MAX_NPCS; i++) { + if (npcs[i] == null) { + slot = i; + break; + } + } + if (slot == -1) { + return; + } + Npc newNPC = new Npc(slot, npcType); + newNPC.absX = x; + newNPC.absY = y; + newNPC.makeX = x; + newNPC.makeY = y; + newNPC.heightLevel = heightLevel; + newNPC.walkingType = WalkingType; + newNPC.HP = HP; + newNPC.MaxHP = HP; + newNPC.maxHit = maxHit; + newNPC.attack = attack; + newNPC.defence = defence; + newNPC.spawnedBy = c.getId(); + newNPC.facePlayer(c.playerId); + if (headIcon) { + c.getPacketSender().drawHeadicon(1, slot, 0, 0); + } + if (summonFollow) { + newNPC.summoner = true; + newNPC.summonedBy = c.playerId; + c.summonId = npcType; + c.hasNpc = true; + } + if (attackPlayer) { + newNPC.underAttack = true; + if (c != null) { + newNPC.killerId = c.playerId; + } + } + npcs[slot] = newNPC; + } + + public boolean switchesAttackers(int i) { + switch (npcs[i].npcType) { + case 2551: + case 2552: + case 2553: + case 2559: + case 2560: + case 2561: + case 2563: + case 2564: + case 2565: + case 2892: + case 2894: + return true; + } + return false; + } + + public int getClosePlayer(Player c, int i) { + for (int j = 0; j < PlayerHandler.players.length; j++) { + if (PlayerHandler.players[j] != null) { + if (j == npcs[i].spawnedBy) { + return j; + } + if (goodDistance(PlayerHandler.players[j].absX, PlayerHandler.players[j].absY, npcs[i].absX, npcs[i].absY, 2 + distanceRequired(i) + followDistance(i)) || FightCaves.isFightCaveNpc(i)) { + if (PlayerHandler.players[j].underAttackBy <= 0 && PlayerHandler.players[j].underAttackBy2 <= 0 || PlayerHandler.players[j].inMulti()) { + if (PlayerHandler.players[j].heightLevel == npcs[i].heightLevel) { + return j; + } + } + } + } + } + return 0; + } + + public int npcSize(int i) { + switch (npcs[i].npcType) { + case 2883: + case 2882: + case 2881: + return 3; + } + return 0; + } + + /** + * Summon npc, barrows, etc + **/ + public static void spawnNpc(Player client, int npcType, int x, int y, + int heightLevel, int WalkingType, int HP, int maxHit, int attack, + int defence, boolean attackPlayer, boolean headIcon) { + // first, search for a free slot + int slot = -1; + for (int i = 1; i < MAX_NPCS; i++) { + if (npcs[i] == null) { + slot = i; + break; + } + } + if (slot == -1) { + // Misc.println("No Free Slot"); + return; // no free slot found + } + Npc newNPC = new Npc(slot, npcType); + newNPC.absX = x; + newNPC.absY = y; + newNPC.makeX = x; + newNPC.makeY = y; + newNPC.heightLevel = heightLevel; + newNPC.walkingType = WalkingType; + newNPC.HP = HP; + newNPC.MaxHP = HP; + newNPC.maxHit = maxHit; + newNPC.attack = attack; + newNPC.defence = defence; + newNPC.spawnedBy = client.getId(); + if (newNPC.npcType == FightCaves.TZTOK_JAD) { + client.setSpecialTarget(newNPC); + } + if (headIcon) { + client.getPacketSender().drawHeadicon(1, slot, 0, 0); + } + if (attackPlayer) { + newNPC.underAttack = true; + if (client != null) { + for (int anim = 4277; anim < 4285; anim++) { + if (npcType == anim) { + newNPC.forceChat("I'M ALIVE!"); + } + } + + newNPC.killerId = client.playerId; + } + } + npcs[slot] = newNPC; + } + + public void spawnNpc2(int npcType, int x, int y, int heightLevel, int WalkingType, int HP, int maxHit, int attack, int defence) { + // first, search for a free slot + int slot = -1; + for (int i = 1; i < MAX_NPCS; i++) { + if (npcs[i] == null) { + slot = i; + break; + } + } + if (slot == -1) { + // Misc.println("No Free Slot"); + return; // no free slot found + } + Npc newNPC = new Npc(slot, npcType); + newNPC.absX = x; + newNPC.absY = y; + newNPC.makeX = x; + newNPC.makeY = y; + newNPC.heightLevel = heightLevel; + newNPC.walkingType = WalkingType; + newNPC.HP = HP; + newNPC.MaxHP = HP; + newNPC.maxHit = maxHit; + newNPC.attack = attack; + newNPC.defence = defence; + npcs[slot] = newNPC; + } + + private void killedBarrow(int i) { + Player c = (Client)PlayerHandler.players[npcs[i].killedBy]; + if(c != null) { + for(int o = 0; o < c.barrowsNpcs.length; o++){ + if(npcs[i].npcType == c.barrowsNpcs[o][0]) { + c.barrowsNpcs[o][1] = 2; // 2 for dead + c.barrowsKillCount++; + } + } + } + } + + private void killedCrypt(int i) { + Player c = (Client)PlayerHandler.players[npcs[i].killedBy]; + if(c != null) { + for(int o = 0; o < c.barrowCrypt.length; o++){ + if(npcs[i].npcType == c.barrowCrypt[o][0]) { + c.barrowsKillCount++; + c.getPacketSender().sendFrame126(""+c.barrowsKillCount, 4536); + } + } + } + } + + public void newNPC(int npcType, int x, int y, int heightLevel, + int WalkingType, int HP, int maxHit, int attack, int defence) { + // first, search for a free slot + int slot = -1; + for (int i = 1; i < MAX_NPCS; i++) { + if (npcs[i] == null) { + slot = i; + break; + } + } + + if (slot == -1) { + return; // no free slot found + } + + Npc newNPC = new Npc(slot, npcType); + newNPC.absX = x; + newNPC.absY = y; + newNPC.makeX = x; + newNPC.makeY = y; + newNPC.heightLevel = heightLevel; + newNPC.walkingType = WalkingType; + newNPC.HP = HP; + newNPC.MaxHP = HP; + newNPC.maxHit = maxHit; + newNPC.attack = attack; + newNPC.defence = defence; + npcs[slot] = newNPC; + } + + public void newNPCList(int npcType, String npcName, int combat, int HP) { + // first, search for a free slot + int slot = -1; + for (int i = 0; i < maxListedNPCs; i++) { + if (NpcList[i] == null) { + slot = i; + break; + } + } + + if (slot == -1) { + return; // no free slot found + } + + NpcList newNPCList = new NpcList(npcType); + newNPCList.npcName = npcName; + newNPCList.npcCombat = combat; + newNPCList.npcHealth = HP; + NpcList[slot] = newNPCList; + } + + public String[] voidKnightTalk = { "We must not fail!", + "Take down the portals", "The Void Knights will not fall!", + "Hail the Void Knights!", "We are beating these scum!", + "Don't let these creatures leech my health!!", + "Do not let me die!!!", "Please....help me!", + "For the knights we shall prevail!" }; + + public int getKillerId(int playerId) { + int oldDamage = 0; + int killerId = 0; + for (int i = 1; i < PlayerHandler.players.length; i++) { + if (PlayerHandler.players[i] != null) { + if (PlayerHandler.players[i].killedBy == playerId) { + if (PlayerHandler.players[i] + .withinDistance(PlayerHandler.players[playerId])) { + if (PlayerHandler.players[i].totalPlayerDamageDealt > oldDamage) { + oldDamage = PlayerHandler.players[i].totalPlayerDamageDealt; + killerId = i; + } + } + PlayerHandler.players[i].totalPlayerDamageDealt = 0; + PlayerHandler.players[i].killedBy = 0; + } + } + } + return killerId; + } + + public void process() { + for (Npc i : NpcHandler.npcs) { + if (i == null) { + continue; + } + i.clearUpdateFlags(); + } + + for (int i = 0; i < MAX_NPCS; i++) { + if (npcs[i] != null) { + + Client slaveOwner = (Client) PlayerHandler.players[npcs[i].summonedBy]; + if (slaveOwner == null && npcs[i].summoner) { + npcs[i].absX = 0; + npcs[i].absY = 0; + } + if (slaveOwner != null + && slaveOwner.hasNpc + && !slaveOwner.goodDistance(npcs[i].getX(), + npcs[i].getY(), slaveOwner.absX, + slaveOwner.absY, 15) && npcs[i].summoner) { + npcs[i].absX = slaveOwner.absX; + npcs[i].absY = slaveOwner.absY - 1; + } + + if (npcs[i].actionTimer > 0) { + npcs[i].actionTimer--; + } + + if (npcs[i].freezeTimer > 0) { + npcs[i].freezeTimer--; + } + + if (npcs[i].hitDelayTimer > 0) { + npcs[i].hitDelayTimer--; + } + + if (npcs[i].hitDelayTimer == 1) { + npcs[i].hitDelayTimer = 0; + NpcCombat.registerNpcHit(i); + } + + if (npcs[i].attackTimer > 0) { + npcs[i].attackTimer--; + } + + if (npcs[i].npcType == 3782 && PestControl.gameStarted) { + if (Misc.random(10) == 4) { + npcs[i].forceChat(voidKnightTalk[Misc + .random3(voidKnightTalk.length)]); + } + } + + if (npcs[i].spawnedBy > 0) { // delete summons npc + if (PlayerHandler.players[npcs[i].spawnedBy] == null + || PlayerHandler.players[npcs[i].spawnedBy].heightLevel != npcs[i].heightLevel + || PlayerHandler.players[npcs[i].spawnedBy].respawnTimer > 0 + || !PlayerHandler.players[npcs[i].spawnedBy] + .goodDistance( + npcs[i].getX(), + npcs[i].getY(), + PlayerHandler.players[npcs[i].spawnedBy] + .getX(), + PlayerHandler.players[npcs[i].spawnedBy] + .getY(), 20)) { + + if (npcs[i].npcType == FightCaves.YT_HURKOT) { + Player c = ((Client)PlayerHandler.players[npcs[i].spawnedBy]); + int ranHeal = Misc.random(19); + if (ranHeal == 19) + FightCaves.healJad(c, i); + } + + if (PlayerHandler.players[npcs[i].spawnedBy] != null) { + for (int o = 0; o < PlayerHandler.players[npcs[i].spawnedBy].barrowsNpcs.length; o++) { + if (npcs[i].npcType == PlayerHandler.players[npcs[i].spawnedBy].barrowsNpcs[o][0]) { + if (PlayerHandler.players[npcs[i].spawnedBy].barrowsNpcs[o][1] == 1) { + PlayerHandler.players[npcs[i].spawnedBy].barrowsNpcs[o][1] = 0; + } + } + } + } + npcs[i] = null; + } + } + if (npcs[i] == null) { + continue; + } + + Player client = (Client) PlayerHandler.players[NpcData.getCloseRandomPlayer(i)]; + if (client != null) { + boolean aggressive = (NpcAggressive.isAggressive(i) || getNpcListCombat(npcs[i].npcType) * 2 > client.combatLevel && getNpcListAggressive(i)); + if (aggressive && !npcs[i].underAttack && !npcs[i].isDead && npcs[i].MaxHP > 0) { + npcs[i].killerId = NpcData.getCloseRandomPlayer(i); + } + } + + if (System.currentTimeMillis() - npcs[i].lastDamageTaken > 5000) { + npcs[i].underAttackBy = 0; + } + + if ((npcs[i].killerId > 0 || npcs[i].underAttack) + && !npcs[i].walkingHome && retaliates(npcs[i].npcType)) { + if (!npcs[i].isDead) { + int p = npcs[i].killerId; + if (PlayerHandler.players[p] != null) { + Player c = (Client) PlayerHandler.players[p]; + followPlayer(i, c.playerId); + if (npcs[i] == null) { + continue; + } + stepAway(c,i); + if (npcs[i].attackTimer == 0) { + NpcCombat.attackPlayer(c, i); + } + } else { + npcs[i].killerId = 0; + npcs[i].underAttack = false; + npcs[i].facePlayer(0); + } + } + } + + /** + * Random walking and walking home + **/ + if (npcs[i] == null) { + continue; + } + if ((!npcs[i].underAttack || npcs[i].walkingHome) + && npcs[i].randomWalk && !npcs[i].isDead) { + npcs[i].facePlayer(0); + npcs[i].killerId = 0; + if (npcs[i].spawnedBy == 0) { + if (npcs[i].absX > npcs[i].makeX + + GameConstants.NPC_RANDOM_WALK_DISTANCE + || npcs[i].absX < npcs[i].makeX + - GameConstants.NPC_RANDOM_WALK_DISTANCE + || npcs[i].absY > npcs[i].makeY + + GameConstants.NPC_RANDOM_WALK_DISTANCE + || npcs[i].absY < npcs[i].makeY + - GameConstants.NPC_RANDOM_WALK_DISTANCE) { + npcs[i].walkingHome = true; + } + } + + if (npcs[i].walkingHome && npcs[i].absX == npcs[i].makeX + && npcs[i].absY == npcs[i].makeY) { + npcs[i].walkingHome = false; + } else if (npcs[i].walkingHome) { + npcs[i].moveX = GetMove(npcs[i].absX, npcs[i].makeX); + npcs[i].moveY = GetMove(npcs[i].absY, npcs[i].makeY); + handleClipping(i); + npcs[i].getNextNPCMovement(i); + npcs[i].updateRequired = true; + } + if (npcs[i].walkingType == 1) { + if (Misc.random(3) == 1 && !npcs[i].walkingHome) { + int MoveX = 0; + int MoveY = 0; + int Rnd = Misc.random(9); + if (Rnd == 1) { + MoveX = 1; + MoveY = 1; + } else if (Rnd == 2) { + MoveX = -1; + } else if (Rnd == 3) { + MoveY = -1; + } else if (Rnd == 4) { + MoveX = 1; + } else if (Rnd == 5) { + MoveY = 1; + } else if (Rnd == 6) { + MoveX = -1; + MoveY = -1; + } else if (Rnd == 7) { + MoveX = -1; + MoveY = 1; + } else if (Rnd == 8) { + MoveX = 1; + MoveY = -1; + } + + if (MoveX == 1) { + if (npcs[i].absX + MoveX < npcs[i].makeX + 1) { + npcs[i].moveX = MoveX; + } else { + npcs[i].moveX = 0; + } + } + + if (MoveX == -1) { + if (npcs[i].absX - MoveX > npcs[i].makeX - 1) { + npcs[i].moveX = MoveX; + } else { + npcs[i].moveX = 0; + } + } + + if (MoveY == 1) { + if (npcs[i].absY + MoveY < npcs[i].makeY + 1) { + npcs[i].moveY = MoveY; + } else { + npcs[i].moveY = 0; + } + } + + if (MoveY == -1) { + if (npcs[i].absY - MoveY > npcs[i].makeY - 1) { + npcs[i].moveY = MoveY; + } else { + npcs[i].moveY = 0; + } + } + handleClipping(i); + // NpcData.handleClipping(i); + npcs[i].getNextNPCMovement(i); + npcs[i].updateRequired = true; + } + } + } + + if (npcs[i].isDead) { + if (npcs[i].actionTimer == 0 && npcs[i].applyDead == false + && npcs[i].needRespawn == false) { + npcs[i].updateRequired = true; + npcs[i].facePlayer(0); + if (npcs[i].killedBy <= 0) + npcs[i].killedBy = NpcData.getNpcKillerId(i); + npcs[i].animNumber = NpcEmotes.getDeadEmote(i); // dead + // emote + Player c = (Client) PlayerHandler.players[npcs[i].killedBy]; + if (c != null) { + if (GameConstants.COMBAT_SOUNDS + && NpcHandler.npcs[i].npcType < 3177 + && NpcHandler.npcs[i].npcType > 3180) { + c.getPacketSender() + .sendSound( + CombatSounds + .getNpcDeathSounds(npcs[i].npcType), + 100, 0); + } + } + npcs[i].animUpdateRequired = true; + npcs[i].freezeTimer = 0; + npcs[i].applyDead = true; + killedBarrow(i); + killedCrypt(i); + npcs[i].actionTimer = 4; // delete time + resetPlayersInCombat(i); + } else if (npcs[i].actionTimer == 0 + && npcs[i].applyDead == true + && npcs[i].needRespawn == false) { + npcs[i].needRespawn = true; + npcs[i].actionTimer = NpcData.getRespawnTime(i); // respawn + // time + dropItems(i); // npc drops items! + FightCaves.tzhaarDeathHandler(i); + if (npcs[i].npcType == 2745) { + FightCaves.handleJadDeath(i); + if (PlayerHandler.players[npcs[i].killerId] != null) { + PlayerHandler.players[npcs[i].killerId].spawnedHealers = 0; + PlayerHandler.players[npcs[i].killerId].canHealersRespawn = true; + } + } + if (npcs[i].npcType == FightCaves.YT_HURKOT) { + if (PlayerHandler.players[npcs[i].killerId] != null) { + if (PlayerHandler.players[npcs[i].killerId].spawnedHealers != 0) { + PlayerHandler.players[npcs[i].killerId].spawnedHealers -= 1; + if (PlayerHandler.players[npcs[i].killerId].spawnedHealers <= 0) { + PlayerHandler.players[npcs[i].killerId].spawnedHealers = 0; + } + } + } + } + appendSlayerExperience(i); + resetEvent(i); + Client player = (Client) PlayerHandler.players[npcs[i].killedBy]; + if (player != null) { + if (player.tutorialProgress == 24) { + handleratdeath(i); + } else if (player.tutorialProgress == 25 + && player.ratdied2 == true) { + handleratdeath2(i); + } + } + if (npcs[i].npcType > 3726 && npcs[i].npcType < 3732) { + int damage = 10 + Misc.random(10); + player.playerLevel[player.playerHitpoints] = player.getPlayerAssistant().getLevelForXP(player.playerXP[player.playerHitpoints]) - damage; + player.getPlayerAssistant().refreshSkill(player.playerHitpoints); + player.handleHitMask(damage); + } + if (npcs[i].npcType == 655) { + player.spiritTree = true; + player.getPacketSender().sendMessage( + "You have defeated the tree spirit."); + } + if (npcs[i].npcType > 412 && npcs[i].npcType < 419) { + player.golemSpawned = false; + } + if (npcs[i].npcType == 757 && player.vampSlayer == 3) { + player.vampSlayer = 4; + } + if (npcs[i].npcType > 390 && npcs[i].npcType < 397) { + RiverTroll.hasRiverTroll = false; + } + if (npcs[i].npcType > 418 && npcs[i].npcType < 425) { + player.zombieSpawned = false; + } + if (npcs[i].npcType > 424 && npcs[i].npcType < 431) { + player.shadeSpawned = false; + } + if (npcs[i].npcType > 437 && npcs[i].npcType < 444) { + player.treeSpiritSpawned = false; + } + if (npcs[i].npcType > 2462 && npcs[i].npcType < 2469) { + player.chickenSpawned = false; + } + npcs[i].absX = npcs[i].makeX; + npcs[i].absY = npcs[i].makeY; + npcs[i].HP = npcs[i].MaxHP; + npcs[i].animNumber = 0x328; + npcs[i].updateRequired = true; + npcs[i].animUpdateRequired = true; + if (npcs[i].npcType >= 2440 && npcs[i].npcType <= 2446) { + GameEngine.objectManager.removeObject(npcs[i].absX, + npcs[i].absY); + } + } else if (npcs[i].actionTimer == 0 + && npcs[i].needRespawn == true) { + if (npcs[i].spawnedBy > 0) { + npcs[i] = null; + } else { + int old1 = npcs[i].npcType; + int old2 = npcs[i].makeX; + int old3 = npcs[i].makeY; + int old4 = npcs[i].heightLevel; + int old5 = npcs[i].walkingType; + int old6 = npcs[i].MaxHP; + int old7 = npcs[i].maxHit; + int old8 = npcs[i].attack; + int old9 = npcs[i].defence; + + npcs[i] = null; + newNPC(old1, old2, old3, old4, old5, old6, old7, + old8, old9); + } + } + } + } + } + } + + private void handleratdeath(int i) { + final Player c = (Client) PlayerHandler.players[npcs[i].killedBy]; + if (c != null) { + c.getPacketSender().chatbox(6180); + c.getDialogueHandler() + .chatboxText( + c, + "", + "Pass through the gate and talk to the Combat Instructor, he", + "will give you your next task.", "", + "Well done, you've made your first kill!"); + c.getPacketSender().chatbox(6179); + c.getPacketSender().drawHeadicon(1, 6, 0, 0); // draws + // headicon to + // combat ude + c.tutorialProgress = 25; + } + } + + private void handleratdeath2(int i) { + Player c = (Client) PlayerHandler.players[npcs[i].killedBy]; + if (c != null) { + c.getPacketSender().chatbox(6180); + c.getDialogueHandler() + .chatboxText( + c, + "You have completed the tasks here. To move on, click on the", + "ladder shown. If you need to go over any of what you learnt", + "here, just talk to the Combat Instructor and he'll tell you what", + "he can.", "Moving on"); + c.getPacketSender().chatbox(6179); + c.tutorialProgress = 26; + c.getPacketSender().createArrow(3111, 9525, c.getH(), 2); // send + // hint + // to + // furnace + } + } + + public boolean getsPulled(Player c, int i) { + switch (npcs[i].npcType) { + case 2550: + if (npcs[i].firstAttacker > 0) { + return false; + } + break; + case 87: + if (c.isInTut() || c.tutorialProgress < 36) { + return false; + } + break; + } + return true; + } + + public static boolean multiAttacks(int i) { + switch (npcs[i].npcType) { + case 2558: + return true; + case 2562: + if (npcs[i].attackType == 2) { + return true; + } + case 2550: + if (npcs[i].attackType == 1) { + return true; + } + default: + return false; + } + + } + + private void stepAway(Player c, int i) { + int otherX = NpcHandler.npcs[i].getX(); + int otherY = NpcHandler.npcs[i].getY(); + if (otherX == c.getX() && otherY == c.getY()) { + if (Region.getClipping(c.getX() - 1, c.getY(), c.heightLevel, -1, 0)) { + npcs[i].moveX = -1; + } else if (Region.getClipping(c.getX() + 1, c.getY(), c.heightLevel, 1, 0)) { + npcs[i].moveX = 1; + } else if (Region.getClipping(c.getX(), c.getY() - 1, c.heightLevel, 0, -1)) { + npcs[i].moveY = -1; + } else if (Region.getClipping(c.getX(), c.getY() + 1, c.heightLevel, 0, 1)) { + npcs[i].moveY = 1; + } + npcs[i].getNextNPCMovement(i); + npcs[i].updateRequired = true; + } + } + + public static void handleClipping(int i) { + Npc npc = npcs[i]; + if (npc.moveX == 1 && npc.moveY == 1) { + if ((Region + .getClipping(npc.absX + 1, npc.absY + 1, npc.heightLevel) & 0x12801e0) != 0) { + npc.moveX = 0; + npc.moveY = 0; + if ((Region + .getClipping(npc.absX, npc.absY + 1, npc.heightLevel) & 0x1280120) == 0) { + npc.moveY = 1; + } else { + npc.moveX = 1; + } + } + } else if (npc.moveX == -1 && npc.moveY == -1) { + if ((Region + .getClipping(npc.absX - 1, npc.absY - 1, npc.heightLevel) & 0x128010e) != 0) { + npc.moveX = 0; + npc.moveY = 0; + if ((Region + .getClipping(npc.absX, npc.absY - 1, npc.heightLevel) & 0x1280102) == 0) { + npc.moveY = -1; + } else { + npc.moveX = -1; + } + } + } else if (npc.moveX == 1 && npc.moveY == -1) { + if ((Region + .getClipping(npc.absX + 1, npc.absY - 1, npc.heightLevel) & 0x1280183) != 0) { + npc.moveX = 0; + npc.moveY = 0; + if ((Region + .getClipping(npc.absX, npc.absY - 1, npc.heightLevel) & 0x1280102) == 0) { + npc.moveY = -1; + } else { + npc.moveX = 1; + } + } + } else if (npc.moveX == -1 && npc.moveY == 1) { + if ((Region + .getClipping(npc.absX - 1, npc.absY + 1, npc.heightLevel) & 0x128013) != 0) { + npc.moveX = 0; + npc.moveY = 0; + if ((Region + .getClipping(npc.absX, npc.absY + 1, npc.heightLevel) & 0x1280120) == 0) { + npc.moveY = 1; + } else { + npc.moveX = -1; + } + } + } // Checking Diagonal movement. + + if (npc.moveY == -1) { + if ((Region.getClipping(npc.absX, npc.absY - 1, npc.heightLevel) & 0x1280102) != 0) { + npc.moveY = 0; + } + } else if (npc.moveY == 1) { + if ((Region.getClipping(npc.absX, npc.absY + 1, npc.heightLevel) & 0x1280120) != 0) { + npc.moveY = 0; + } + } // Checking Y movement. + if (npc.moveX == 1) { + if ((Region.getClipping(npc.absX + 1, npc.absY, npc.heightLevel) & 0x1280180) != 0) { + npc.moveX = 0; + } + } else if (npc.moveX == -1) { + if ((Region.getClipping(npc.absX - 1, npc.absY, npc.heightLevel) & 0x1280108) != 0) { + npc.moveX = 0; + } + } // Checking X movement. + } + + /** + * Dropping Items! + **/ + + // [npc][0] = item dropped + // [npc][1] = amount + // [npc][2] = rarity + // [j][2] = rarity + // [j][1] = amount + // [j][0] = drop + + public void dropItems(int i) { + // TODO: add ring of wealth + Player c = (Client) PlayerHandler.players[npcs[i].killedBy]; + if (c != null) { + // These npcs shouldn't have drops + if (npcs[i].npcType == 2627 // Tz-Kih + || npcs[i].npcType == 2630 // Tz-Kek + || npcs[i].npcType == 2631 // Tok-Xil + || npcs[i].npcType == 2638 // Neite + || npcs[i].npcType == 2641 // Dragonkin + || npcs[i].npcType == 2643 // R4ng3rNo0b889 + || npcs[i].npcType == 2645 // Love Cats + || npcs[i].npcType == 1532 // Barricade + || npcs[i].npcType == 153 // Butterfly + || PestControl.npcIsPCMonster(npcs[i].npcType) + || FightCaves.isFightCaveNpc(i)) { + // These npcs shouldn't have drops + return; + } + for (ItemDrop possible_drop : NPCDropsHandler.NPC_DROPS(getNpcListName(npcs[i].npcType).toLowerCase(), npcs[i].npcType)) { + if (Misc.random(possible_drop.getChance()) == 0) { + int amt = possible_drop.getAmount(); + GameEngine.itemHandler.createGroundItem(c, possible_drop.getItemID(), npcs[i].absX, npcs[i].absY, amt, c.playerId); + } + } + switch (npcs[i].npcType) { + case 2459: + FreakyForester.killedPheasant(c, 0); + GameEngine.itemHandler.createGroundItem(c, 6178, npcs[i].absX, npcs[i].absY, 1, c.playerId); + break; + case 2460: + FreakyForester.killedPheasant(c, 1); + GameEngine.itemHandler.createGroundItem(c, 6178, npcs[i].absX, npcs[i].absY, 1, c.playerId); + break; + case 2461: + FreakyForester.killedPheasant(c, 2); + GameEngine.itemHandler.createGroundItem(c, 6178, npcs[i].absX, npcs[i].absY, 1, c.playerId); + break; + case 2462: + FreakyForester.killedPheasant(c, 3); + GameEngine.itemHandler.createGroundItem(c, 6178, npcs[i].absX, npcs[i].absY, 1, c.playerId); + break; + case 92: + if (c.restGhost == 3) { + GameEngine.itemHandler.createGroundItem(c, 553, npcs[i].absX, npcs[i].absY, 1, c.playerId); + c.restGhost = 4; + } + break; + case 47: + if (c.witchspot == 1 || c.romeojuliet > 0 && c.romeojuliet < 9) { + GameEngine.itemHandler.createGroundItem(c, 300, npcs[i].absX, npcs[i].absY, 1, c.playerId); + } + break; + case 645: + if (c.shieldArrav == 5) { + GameEngine.itemHandler.createGroundItem(c, 761, npcs[i].absX, npcs[i].absY, 1, c.playerId); + } + break; + } + int level = getNpcListCombat(npcs[i].npcType); + // higher level monsters have a better drop rate (max of 1/128) + int chance = Math.max(128, 512 - (level * 2)); + if (Misc.random(1, chance) == 1) { + int scroll = -1; + if (level <= 1) // none + scroll = -1; + else if (level <= 24) // easy + scroll = 2677; + else if (level <= 40) // easy → medium + scroll = 2677 + Misc.random(0, 1); + else if (level <= 80) // medium + scroll = 2678; + else if (level <= 150) // medium → hard + scroll = 2678 + Misc.random(0, 1); + else if (level > 150)// hard + scroll = 2679; + if (scroll >= 0 && GameConstants.CLUES_ENABLED) + GameEngine.itemHandler.createGroundItem(c, scroll, npcs[i].absX, npcs[i].absY, 1, c.playerId); + } + } + } + /** + * Slayer Experience + **/ + public void appendSlayerExperience(int i) { + Player c = (Client) PlayerHandler.players[npcs[i].killedBy]; + if (c != null) { + // if (c.getSlayer().isSlayerTask(i)) { + if (c.slayerTask == npcs[i].npcType) { + c.taskAmount--; + c.getPlayerAssistant().addSkillXP(c.getSlayer().getTaskExp(c.slayerTask), 18); + if (c.taskAmount <= 0) { + int points = c.getSlayer().getDifficulty(c.slayerTask) * 4; + c.slayerTask = -1; + c.slayerPoints += points; + c.getPacketSender().sendMessage("You completed your slayer task. You obtain " + points + " slayer points. Please talk to your slayer master."); + } + } + } + } + + // } + + public void resetEvent(int i) { + Player c = (Client) PlayerHandler.players[npcs[i].killedBy]; + if (c != null) { + RandomEventHandler.addRandom(c); + } + } + + /** + * Resets players in combat + */ + + public void resetPlayersInCombat(int i) { + for (int j = 0; j < PlayerHandler.players.length; j++) { + if (PlayerHandler.players[j] != null) { + if (PlayerHandler.players[j].underAttackBy2 == i) { + PlayerHandler.players[j].underAttackBy2 = 0; + } + } + } + } + + /** + * Npc Follow Player + **/ + + public static int GetMove(int Place1, int Place2) { + if (Place1 - Place2 == 0) { + return 0; + } else if (Place1 - Place2 < 0) { + return 1; + } else if (Place1 - Place2 > 0) { + return -1; + } + return 0; + } + + public static boolean followPlayer(int i) { + if (NpcHandler.npcs[i].inLesserNpc()) { + return false; + } + switch (npcs[i].npcType) { + case 1456: + case 2892: + case 2894: + case 1532: + case 1534: + return false; + } + return true; + } + + public static void followPlayer(int i, int playerId) { + if (PlayerHandler.players[playerId] == null) { + return; + } + if (PlayerHandler.players[playerId].respawnTimer > 0) { + npcs[i].facePlayer(0); + npcs[i].randomWalk = true; + npcs[i].underAttack = false; + return; + } + + if (npcs[i].npcType == 1532 || npcs[i].npcType == 1534) { + return; + } + + if (!followPlayer(i) && npcs[i].npcType != 1532 && npcs[i].npcType != 1534) { + npcs[i].facePlayer(playerId); + return; + } + + int playerX = PlayerHandler.players[playerId].absX; + int playerY = PlayerHandler.players[playerId].absY; + npcs[i].randomWalk = false; + if (goodDistance(npcs[i].getX(), npcs[i].getY(), playerX, playerY, + distanceRequired(i))) { + return; + } + + Npc npc = npcs[i]; + int x = npc.absX; + int y = npc.absY; + Player player = PlayerHandler.players[playerId]; + if (npcs[i].spawnedBy > 0 + || x < npc.makeX + GameConstants.NPC_FOLLOW_DISTANCE + && x > npc.makeX - GameConstants.NPC_FOLLOW_DISTANCE + && y < npc.makeY + GameConstants.NPC_FOLLOW_DISTANCE + && y > npc.makeY - GameConstants.NPC_FOLLOW_DISTANCE) { + if (npc.heightLevel == player.heightLevel) { + if (player != null && npc != null) { + if (playerX > x && playerY < y) { + npc.moveX = GetMove(x,playerX);//Diagonal bottom right + } else if (playerX < x && playerY < y) { + npc.moveY = GetMove(y,playerY); //Diagonal bottom left + } else if (playerX < x && playerY > y) { + npc.moveX = GetMove(x,playerX);// Diagonal top left + } else if (playerX > x && playerY > y) { + npc.moveY = GetMove(y,playerY);// Diagonal top right + } else if (playerY < y) { + npc.moveX = GetMove(x, playerX); //Move South to player + npc.moveY = GetMove(y, playerY); + } else if (playerY > y) { + npc.moveX = GetMove(x, playerX); //Move North to player + npc.moveY = GetMove(y, playerY); + } else if (playerX < x) { + npc.moveX = GetMove(x, playerX); //Move West to player + npc.moveY = GetMove(y, playerY); + } else if (playerX > x) { + npc.moveX = GetMove(x, playerX); //Move East to player + npc.moveY = GetMove(y, playerY); + } + npc.facePlayer(playerId); + handleClipping(i); + npc.getRandomAndHomeNPCWalking(i); + npc.updateRequired = true; + } + } + } else { + npc.facePlayer(0); + npc.randomWalk = true; + npc.underAttack = false; + } + } + + /** + * Distanced required to attack + **/ + public static int distanceRequired(int i) { + switch (npcs[i].npcType) { + case 2025: + case 2028: + return 6; + case 50: + case 2562: + return 2; + case 2881:// dag kings + case 2882: + case 3200:// chaos ele + case 2743: + case 2631: + case 2745: + return 8; + case 2883:// rex + return 1; + case 2552: + case 2553: + case 2556: + case 2557: + case 2558: + case 2559: + case 2560: + case 2564: + case 2565: + return 9; + // things around dags + case 2892: + case 2894: + return 10; + default: + return 1; + } + } + + public static int followDistance(int i) { + switch (npcs[i].npcType) { + case 2550: + case 2551: + case 2562: + case 2563: + return 8; + case 2883: + return 4; + case 2881: + case 2882: + return 1; + } + return 0; + } + + public static int getProjectileSpeed(int i) { + switch (npcs[i].npcType) { + case 2881: + case 2882: + case 3200: + return 85; + + case 2745: + return 130; + + case 50: + return 90; + + case 2025: + return 85; + + case 2028: + return 80; + + default: + return 85; + } + } + + public static int offset(int i) { + switch (npcs[i].npcType) { + case 50: + case 110: + case 941: + case 1590: + case 1591: + case 1592: + case 2642: + case 55: + case 54: + case 53: + return 2; + case 2881: + case 2882: + return 1; + case 2745: + case 2743: + return 1; + } + return 0; + } + + public boolean specialCase(Player c, int i) { // responsible for npcs that + // much + if (goodDistance(npcs[i].getX(), npcs[i].getY(), c.getX(), c.getY(), 8) + && !goodDistance(npcs[i].getX(), npcs[i].getY(), c.getX(), + c.getY(), distanceRequired(i))) { + return true; + } + return false; + } + + public boolean retaliates(int npcType) { + return npcType < 3777 || npcType > 3780 + && !(npcType >= 2440 && npcType <= 2446); + } + + public static void handleSpecialEffects(Player c, int i, int damage) { + if (npcs[i].npcType == 2892 || npcs[i].npcType == 2894) { + if (damage > 0) { + if (c != null) { + if (c.playerLevel[5] > 0) { + c.playerLevel[5]--; + c.getPlayerAssistant().refreshSkill(5); + c.getPlayerAssistant().appendPoison(12); + } + } + } + } + } + public static boolean goodDistance(int objectX, int objectY, int playerX, + int playerY, int distance) { + return objectX - playerX <= distance && objectX - playerX >= -distance + && objectY - playerY <= distance + && objectY - playerY >= -distance + && !((objectX - playerX == distance && objectY - playerY == -distance) //Detect diagonal positioning + || (objectX - playerX == -distance && objectY - playerY == -distance) + || (objectX - playerX == -distance && objectY - playerY == distance) + || (objectX - playerX == distance && objectY - playerY == distance)) + ; + } + + public static int getMaxHit(int i) { + switch (npcs[i].npcType) { + case 2558: + if (npcs[i].attackType == 2) { + return 28; + } else { + return 68; + } + case 1265: + case 1267: + return 2; + case 2562: + return 31; + case 2550: + return 36; + } + return 1; + } + + public static int getNpcListCombat(int npcId) { + for (int i = 0; i < maxListedNPCs; i++) { + if (NpcList[i] != null) { + if (NpcList[i].npcId == npcId) { + return NpcList[i].npcCombat; + } + } + } + return 0; + } + + public boolean loadAutoSpawn(String FileName) { + String line = ""; + String token = ""; + String token2 = ""; + String token2_2 = ""; + String[] token3 = new String[10]; + boolean EndOfFile = false; + // int ReadMode = 0; + BufferedReader characterfile = null; + try { + characterfile = new BufferedReader(new FileReader("./" + FileName)); + } catch (FileNotFoundException fileex) { + Misc.println(FileName + ": file not found."); + return false; + } + try { + line = characterfile.readLine(); + } catch (IOException ioexception) { + Misc.println(FileName + ": error loading file."); + // return false; + } + while (EndOfFile == false && line != null) { + line = line.trim(); + int spot = line.indexOf("="); + if (spot > -1) { + token = line.substring(0, spot); + token = token.trim(); + token2 = line.substring(spot + 1); + token2 = token2.trim(); + token2_2 = token2.replaceAll("\t\t", "\t"); + token2_2 = token2_2.replaceAll("\t\t", "\t"); + token2_2 = token2_2.replaceAll("\t\t", "\t"); + token2_2 = token2_2.replaceAll("\t\t", "\t"); + token2_2 = token2_2.replaceAll("\t\t", "\t"); + token3 = token2_2.split("\t"); + if (token.equals("spawn")) { + newNPC(Integer.parseInt(token3[0]),// npc + Integer.parseInt(token3[1]),// x + Integer.parseInt(token3[2]),// y + Integer.parseInt(token3[3]),// height + Integer.parseInt(token3[4]),// walk + getNpcListHP(Integer.parseInt(token3[0])),// health + Integer.parseInt(token3[5]),// maxhit + Integer.parseInt(token3[6]),// attack + Integer.parseInt(token3[7]));// str + + } + } else { + if (line.equals("[ENDOFSPAWNLIST]")) { + try { + characterfile.close(); + } catch (IOException ioexception) { + } + //return true; + } + } + try { + line = characterfile.readLine(); + } catch (IOException ioexception1) { + EndOfFile = true; + } + } + try { + characterfile.close(); + } catch (IOException ioexception) { + } + return false; + } + + public static int getNpcListHP(int npcId) { + for (int i = 0; i < maxListedNPCs; i++) { + if (NpcList[i] != null) { + if (NpcList[i].npcId == npcId) { + return NpcList[i].npcHealth; + } + } + } + return 0; + } + + public static String getNpcListName(int npcId) { + for (int i = 0; i < maxListedNPCs; i++) { + if (NpcList[i] != null) { + if (NpcList[i].npcId == npcId) { + return NpcList[i].npcName; + } + } + } + return "nothing"; + } + + public boolean loadNPCList(String FileName) { + String line = ""; + String token = ""; + String token2 = ""; + String token2_2 = ""; + String[] token3 = new String[10]; + boolean EndOfFile = false; + BufferedReader characterfile = null; + try { + characterfile = new BufferedReader(new FileReader("./" + FileName)); + } catch (FileNotFoundException fileex) { + Misc.println(FileName + ": file not found."); + return false; + } + try { + line = characterfile.readLine(); + // characterfile.close(); + } catch (IOException ioexception) { + Misc.println(FileName + ": error loading file."); + // return false; + } + while (EndOfFile == false && line != null) { + line = line.trim(); + int spot = line.indexOf("="); + if (spot > -1) { + token = line.substring(0, spot); + token = token.trim(); + token2 = line.substring(spot + 1); + token2 = token2.trim(); + token2_2 = token2.replaceAll("\t+", "\t"); + token3 = token2_2.split("\t"); + if (token.equals("npc")) { + newNPCList(Integer.parseInt(token3[0]), token3[1], Integer.parseInt(token3[2]), Integer.parseInt(token3[3])); + } + } else { + if (line.equals("[ENDOFNPCLIST]")) { + try { + characterfile.close(); + } catch (IOException ioexception) { + } + //return true; + } + } + try { + line = characterfile.readLine(); + } catch (IOException ioexception1) { + EndOfFile = true; + } + } + try { + characterfile.close(); + } catch (IOException ioexception) { + } + return false; + } + + public static boolean checkSpawn(Client player, int i) { + return npcs[i] != null && npcs[i].spawnedBy != -1 && npcs[i].npcType == i; + } + + public boolean getNpcListAggressive(int npcId) { + return NPCDefinition.forId(npcId).isAggressive(); + } + + +} diff --git a/2006Redone Server/src/redone/game/npcs/NpcList.java b/2006Redone Server/src/com/rebotted/game/npcs/NpcList.java similarity index 81% rename from 2006Redone Server/src/redone/game/npcs/NpcList.java rename to 2006Redone Server/src/com/rebotted/game/npcs/NpcList.java index 78c48634..5548dc71 100644 --- a/2006Redone Server/src/redone/game/npcs/NpcList.java +++ b/2006Redone Server/src/com/rebotted/game/npcs/NpcList.java @@ -1,13 +1,13 @@ -package redone.game.npcs; - -public class NpcList { - - public int npcId; - public String npcName; - public int npcCombat; - public int npcHealth; - - public NpcList(int _npcId) { - npcId = _npcId; - } -} +package com.rebotted.game.npcs; + +public class NpcList { + + public int npcId; + public String npcName; + public int npcCombat; + public int npcHealth; + + public NpcList(int _npcId) { + npcId = _npcId; + } +} diff --git a/2006Redone Server/src/redone/game/npcs/NpcSize.java b/2006Redone Server/src/com/rebotted/game/npcs/NpcSize.java similarity index 97% rename from 2006Redone Server/src/redone/game/npcs/NpcSize.java rename to 2006Redone Server/src/com/rebotted/game/npcs/NpcSize.java index 40b6ca9e..6e1769cf 100644 --- a/2006Redone Server/src/redone/game/npcs/NpcSize.java +++ b/2006Redone Server/src/com/rebotted/game/npcs/NpcSize.java @@ -1,143 +1,143 @@ -package redone.game.npcs; - -/** - * NPC Sizes. - * - * @author Primadude. - */ -public class NpcSize { - - /** - * Gets the size of the specified NPC. - * - * @param npcType - * The type of the NPC. - * @return The NPC size. - */ - public static int getNPCSize(int npcType) { - int NPC_TYPE = 0; - int NPC_SIZE = 1; - for (int[] element : NPC_SIZES) { - if (npcType == element[NPC_TYPE]) { - return element[NPC_SIZE]; - } - } - return 1; - } - - /** - * NPC Sizes. {NPC TYPE, SIZE}. - */ - private static final int[][] NPC_SIZES = { { 49, 2 }, { 50, 5 }, { 51, 2 }, - { 52, 2 }, { 53, 4 }, { 54, 4 }, { 55, 4 }, { 69, 2 }, { 78, 2 }, - { 79, 2 }, { 80, 2 }, { 81, 2 }, { 82, 2 }, { 83, 3 }, { 84, 3 }, - { 85, 2 }, { 86, 2 }, { 87, 2 }, { 88, 2 }, { 89, 2 }, { 95, 2 }, - { 96, 2 }, { 97, 2 }, { 105, 2 }, { 106, 2 }, { 107, 2 }, - { 108, 2 }, { 110, 2 }, { 111, 2 }, { 112, 2 }, { 113, 2 }, - { 114, 2 }, { 115, 2 }, { 116, 2 }, { 117, 2 }, { 130, 3 }, - { 133, 2 }, { 135, 3 }, { 136, 2 }, { 137, 2 }, { 138, 2 }, - { 141, 2 }, { 142, 2 }, { 143, 2 }, { 144, 2 }, { 146, 2 }, - { 147, 2 }, { 148, 2 }, { 149, 2 }, { 150, 2 }, { 269, 2 }, - { 270, 2 }, { 271, 2 }, { 374, 2 }, { 397, 2 }, { 446, 2 }, - { 667, 3 }, { 677, 3 }, { 742, 4 }, { 752, 2 }, { 839, 2 }, - { 840, 2 }, { 852, 2 }, { 853, 2 }, { 854, 2 }, { 855, 2 }, - { 856, 2 }, { 857, 2 }, { 858, 2 }, { 859, 2 }, { 860, 2 }, - { 861, 2 }, { 862, 2 }, { 863, 2 }, { 864, 2 }, { 865, 2 }, - { 866, 2 }, { 867, 2 }, { 868, 2 }, { 869, 2 }, { 870, 2 }, - { 871, 2 }, { 873, 2 }, { 874, 2 }, { 875, 2 }, { 876, 2 }, - { 879, 2 }, { 880, 2 }, { 899, 2 }, { 909, 3 }, { 911, 3 }, - { 934, 3 }, { 939, 2 }, { 941, 4 }, { 950, 2 }, { 955, 2 }, - { 978, 2 }, { 986, 2 }, { 987, 2 }, { 991, 2 }, { 997, 3 }, - { 998, 3 }, { 999, 3 }, { 1000, 3 }, { 1003, 2 }, { 1005, 2 }, - { 1010, 2 }, { 1047, 2 }, { 1052, 2 }, { 1053, 2 }, { 1069, 2 }, - { 1095, 2 }, { 1096, 2 }, { 1097, 2 }, { 1098, 2 }, { 1099, 2 }, - { 1100, 2 }, { 1115, 2 }, { 1116, 2 }, { 1117, 2 }, { 1125, 3 }, - { 1126, 2 }, { 1127, 2 }, { 1128, 2 }, { 1129, 2 }, { 1135, 2 }, - { 1136, 2 }, { 1137, 2 }, { 1139, 2 }, { 1151, 2 }, { 1153, 2 }, - { 1154, 3 }, { 1155, 4 }, { 1156, 2 }, { 1157, 4 }, { 1158, 5 }, - { 1159, 5 }, { 1160, 5 }, { 1172, 3 }, { 1173, 3 }, { 1179, 2 }, - { 1180, 2 }, { 1181, 2 }, { 1195, 2 }, { 1196, 2 }, { 1197, 2 }, - { 1198, 2 }, { 1213, 2 }, { 1222, 2 }, { 1224, 2 }, { 1326, 2 }, - { 1328, 2 }, { 1329, 2 }, { 1330, 2 }, { 1335, 2 }, { 1341, 2 }, - { 1342, 2 }, { 1343, 2 }, { 1344, 2 }, { 1345, 2 }, { 1346, 2 }, - { 1347, 2 }, { 1348, 3 }, { 1349, 3 }, { 1350, 3 }, { 1351, 3 }, - { 1352, 3 }, { 1353, 3 }, { 1354, 3 }, { 1355, 3 }, { 1356, 3 }, - { 1373, 2 }, { 1431, 2 }, { 1432, 2 }, { 1438, 2 }, { 1459, 2 }, - { 1460, 2 }, { 1461, 2 }, { 1462, 2 }, { 1472, 3 }, { 1505, 2 }, - { 1506, 2 }, { 1507, 2 }, { 1508, 2 }, { 1509, 2 }, { 1516, 3 }, - { 1521, 2 }, { 1522, 2 }, { 1542, 3 }, { 1555, 2 }, { 1556, 2 }, - { 1558, 2 }, { 1559, 2 }, { 1575, 2 }, { 1578, 3 }, { 1580, 2 }, - { 1581, 2 }, { 1582, 2 }, { 1583, 2 }, { 1584, 2 }, { 1585, 2 }, - { 1586, 2 }, { 1587, 2 }, { 1588, 2 }, { 1589, 2 }, { 1590, 4 }, - { 1591, 4 }, { 1592, 4 }, { 1600, 2 }, { 1601, 2 }, { 1602, 2 }, - { 1603, 2 }, { 1604, 2 }, { 1605, 2 }, { 1606, 2 }, { 1607, 2 }, - { 1608, 3 }, { 1609, 3 }, { 1610, 3 }, { 1611, 3 }, { 1612, 2 }, - { 1616, 2 }, { 1617, 2 }, { 1618, 2 }, { 1619, 2 }, { 1620, 2 }, - { 1621, 3 }, { 1627, 2 }, { 1628, 2 }, { 1631, 2 }, { 1632, 2 }, - { 1653, 2 }, { 1654, 2 }, { 1655, 2 }, { 1656, 2 }, { 1657, 2 }, - { 1676, 2 }, { 1677, 2 }, { 1681, 2 }, { 1689, 3 }, { 1691, 2 }, - { 1693, 2 }, { 1719, 2 }, { 1720, 2 }, { 1721, 2 }, { 1722, 2 }, - { 1723, 2 }, { 1728, 2 }, { 1730, 2 }, { 1731, 2 }, { 1732, 2 }, - { 1733, 2 }, { 1734, 2 }, { 1735, 2 }, { 1736, 2 }, { 1737, 2 }, - { 1738, 2 }, { 1739, 3 }, { 1740, 3 }, { 1741, 2 }, { 1742, 3 }, - { 1743, 3 }, { 1744, 3 }, { 1745, 2 }, { 1746, 2 }, { 1747, 3 }, - { 1748, 3 }, { 1750, 2 }, { 1766, 2 }, { 1767, 2 }, { 1768, 2 }, - { 1778, 2 }, { 1779, 2 }, { 1780, 2 }, { 1781, 2 }, { 1782, 2 }, - { 1783, 2 }, { 1784, 2 }, { 1785, 2 }, { 1786, 2 }, { 1787, 2 }, - { 1792, 2 }, { 1802, 2 }, { 1803, 2 }, { 1804, 2 }, { 1811, 2 }, - { 1812, 2 }, { 1813, 2 }, { 1821, 2 }, { 1828, 2 }, { 1873, 2 }, - { 1943, 2 }, { 1944, 2 }, { 1945, 2 }, { 1946, 2 }, { 1951, 2 }, - { 1952, 2 }, { 1953, 2 }, { 1954, 2 }, { 1955, 2 }, { 1956, 2 }, - { 1970, 2 }, { 1971, 2 }, { 1990, 2 }, { 1993, 2 }, { 1996, 2 }, - { 1998, 2 }, { 1999, 2 }, { 2000, 2 }, { 2022, 3 }, { 2033, 2 }, - { 2038, 2 }, { 2039, 2 }, { 2040, 2 }, { 2041, 2 }, { 2042, 2 }, - { 2043, 2 }, { 2044, 2 }, { 2045, 2 }, { 2046, 2 }, { 2047, 2 }, - { 2048, 2 }, { 2049, 2 }, { 2050, 2 }, { 2051, 2 }, { 2052, 2 }, - { 2053, 2 }, { 2054, 2 }, { 2055, 2 }, { 2056, 2 }, { 2057, 2 }, - { 2060, 3 }, { 2063, 2 }, { 2064, 2 }, { 2065, 2 }, { 2240, 2 }, - { 2252, 2 }, { 2254, 2 }, { 2255, 2 }, { 2289, 2 }, { 2317, 2 }, - { 2417, 2 }, { 2418, 2 }, { 2419, 2 }, { 2434, 2 }, { 2452, 2 }, - { 2453, 2 }, { 2482, 2 }, { 2534, 3 }, { 2554, 3 }, { 2555, 3 }, - { 2556, 3 }, { 2557, 3 }, { 2558, 3 }, { 2559, 3 }, { 2560, 3 }, - { 2561, 3 }, { 2562, 3 }, { 2563, 3 }, { 2629, 2 }, { 2630, 2 }, - { 2631, 3 }, { 2632, 3 }, { 2637, 2 }, { 2640, 2 }, { 2641, 3 }, - { 2642, 5 }, { 2644, 2 }, { 2651, 2 }, { 2722, 2 }, { 2723, 2 }, - { 2736, 2 }, { 2737, 2 }, { 2739, 3 }, { 2740, 3 }, { 2741, 4 }, - { 2742, 4 }, { 2743, 5 }, { 2744, 5 }, { 2745, 5 }, { 2783, 3 }, - { 2801, 2 }, { 2803, 3 }, { 2804, 2 }, { 2805, 2 }, { 2806, 2 }, - { 2809, 2 }, { 2810, 2 }, { 2811, 2 }, { 2812, 2 }, { 2813, 2 }, - { 2814, 2 }, { 2815, 2 }, { 2849, 2 }, { 2850, 2 }, { 2880, 2 }, - { 2881, 3 }, { 2882, 3 }, { 2883, 3 }, { 2885, 2 }, { 2886, 2 }, - { 2889, 2 }, { 2890, 2 }, { 2919, 3 }, { 2920, 3 }, { 2921, 3 }, - { 3051, 2 }, { 3052, 2 }, { 3053, 2 }, { 3054, 2 }, { 3055, 2 }, - { 3056, 2 }, { 3058, 2 }, { 3063, 2 }, { 3064, 2 }, { 3066, 2 }, - { 3068, 3 }, { 3069, 3 }, { 3070, 3 }, { 3071, 3 }, { 3072, 2 }, - { 3076, 2 }, { 3077, 2 }, { 3100, 2 }, { 3101, 2 }, { 3103, 2 }, - { 3124, 2 }, { 3125, 2 }, { 3129, 2 }, { 3130, 2 }, { 3132, 2 }, - { 3133, 2 }, { 3134, 2 }, { 3135, 2 }, { 3140, 3 }, { 3154, 2 }, - { 3200, 3 }, { 3203, 3 }, { 3301, 3 }, { 3309, 2 }, { 3332, 5 }, - { 3333, 5 }, { 3334, 5 }, { 3337, 3 }, { 3338, 3 }, { 3339, 4 }, - { 3340, 3 }, { 3347, 2 }, { 3376, 2 }, { 3398, 2 }, { 3419, 2 }, - { 3420, 2 }, { 3421, 2 }, { 3423, 2 }, { 3443, 2 }, { 3444, 2 }, - { 3445, 3 }, { 3446, 2 }, { 3447, 2 }, { 3448, 3 }, { 3463, 2 }, - { 3464, 2 }, { 3466, 2 }, { 3467, 2 }, { 3468, 2 }, { 3469, 5 }, - { 3470, 5 }, { 3471, 5 }, { 3472, 5 }, { 3476, 3 }, { 3477, 3 }, - { 3484, 2 }, { 3493, 3 }, { 3494, 5 }, { 3497, 3 }, { 3498, 3 }, - { 3499, 3 }, { 3500, 3 }, { 3501, 3 }, { 3502, 3 }, { 3519, 2 }, - { 3530, 3 }, { 3556, 2 }, { 3558, 2 }, { 3585, 2 }, { 3586, 2 }, - { 3587, 2 }, { 3588, 2 }, { 3589, 3 }, { 3590, 3 }, { 3591, 3 }, - { 3592, 3 }, { 3593, 3 }, { 3594, 2 }, { 3599, 3 }, { 3600, 4 }, - { 3601, 5 }, { 3602, 3 }, { 3603, 3 }, { 3604, 4 }, { 3605, 5 }, - { 3606, 2 }, { 3607, 2 }, { 3608, 2 }, { 3609, 2 }, { 3610, 2 }, - { 3611, 2 }, { 3612, 3 }, { 3613, 3 }, { 3614, 3 }, { 3636, 2 }, - { 3637, 4 }, { 3645, 2 }, { 3646, 2 }, { 3647, 2 }, { 3649, 2 }, - { 3650, 2 }, { 3651, 2 }, { 3652, 2 }, { 3653, 2 }, { 3654, 2 }, - { 3655, 2 }, { 3656, 2 }, { 3657, 2 }, { 3658, 3 }, { 3659, 3 }, - { 3660, 3 }, { 3661, 2 }, { 3662, 2 }, { 3664, 2 }, { 3665, 2 }, - { 3666, 2 }, { 3667, 2 }, { 3668, 2 }, { 3669, 2 }, { 3670, 2 }, - { 3675, 2 }, { 3676, 2 }, { 3681, 3 }, { 3772, 2 }, { 3773, 2 }, - { 3774, 2 }, { 3775, 2 }, { 3776, 2 }, { 6142, 3 }, { 6143, 3 }, - { 6144, 3 }, { 6145, 3 }, { 3808, 3 }, { 3819, 3 }, { 3835, 5 }, - { 3836, 5 } }; - -} +package com.rebotted.game.npcs; + +/** + * NPC Sizes. + * @author Primadude. + */ + +public class NpcSize { + + /** + * Gets the size of the specified NPC. + * + * @param npcType + * The type of the NPC. + * @return The NPC size. + */ + public static int getNPCSize(int npcType) { + int NPC_TYPE = 0; + int NPC_SIZE = 1; + for (int[] element : NPC_SIZES) { + if (npcType == element[NPC_TYPE]) { + return element[NPC_SIZE]; + } + } + return 1; + } + + /** + * NPC Sizes. {NPC TYPE, SIZE}. + */ + private static final int[][] NPC_SIZES = { { 49, 2 }, { 50, 5 }, { 51, 2 }, + { 52, 2 }, { 53, 4 }, { 54, 4 }, { 55, 4 }, { 69, 2 }, { 78, 2 }, + { 79, 2 }, { 80, 2 }, { 81, 2 }, { 82, 2 }, { 83, 3 }, { 84, 3 }, + { 85, 2 }, { 86, 2 }, { 87, 2 }, { 88, 2 }, { 89, 2 }, { 95, 2 }, + { 96, 2 }, { 97, 2 }, { 105, 2 }, { 106, 2 }, { 107, 2 }, + { 108, 2 }, { 110, 2 }, { 111, 2 }, { 112, 2 }, { 113, 2 }, + { 114, 2 }, { 115, 2 }, { 116, 2 }, { 117, 2 }, { 130, 3 }, + { 133, 2 }, { 135, 3 }, { 136, 2 }, { 137, 2 }, { 138, 2 }, + { 141, 2 }, { 142, 2 }, { 143, 2 }, { 144, 2 }, { 146, 2 }, + { 147, 2 }, { 148, 2 }, { 149, 2 }, { 150, 2 }, { 269, 2 }, + { 270, 2 }, { 271, 2 }, { 374, 2 }, { 397, 2 }, { 446, 2 }, + { 667, 3 }, { 677, 3 }, { 742, 4 }, { 752, 2 }, { 839, 2 }, + { 840, 2 }, { 852, 2 }, { 853, 2 }, { 854, 2 }, { 855, 2 }, + { 856, 2 }, { 857, 2 }, { 858, 2 }, { 859, 2 }, { 860, 2 }, + { 861, 2 }, { 862, 2 }, { 863, 2 }, { 864, 2 }, { 865, 2 }, + { 866, 2 }, { 867, 2 }, { 868, 2 }, { 869, 2 }, { 870, 2 }, + { 871, 2 }, { 873, 2 }, { 874, 2 }, { 875, 2 }, { 876, 2 }, + { 879, 2 }, { 880, 2 }, { 899, 2 }, { 909, 3 }, { 911, 3 }, + { 934, 3 }, { 939, 2 }, { 941, 4 }, { 950, 2 }, { 955, 2 }, + { 978, 2 }, { 986, 2 }, { 987, 2 }, { 991, 2 }, { 997, 3 }, + { 998, 3 }, { 999, 3 }, { 1000, 3 }, { 1003, 2 }, { 1005, 2 }, + { 1010, 2 }, { 1047, 2 }, { 1052, 2 }, { 1053, 2 }, { 1069, 2 }, + { 1095, 2 }, { 1096, 2 }, { 1097, 2 }, { 1098, 2 }, { 1099, 2 }, + { 1100, 2 }, { 1115, 2 }, { 1116, 2 }, { 1117, 2 }, { 1125, 3 }, + { 1126, 2 }, { 1127, 2 }, { 1128, 2 }, { 1129, 2 }, { 1135, 2 }, + { 1136, 2 }, { 1137, 2 }, { 1139, 2 }, { 1151, 2 }, { 1153, 2 }, + { 1154, 3 }, { 1155, 4 }, { 1156, 2 }, { 1157, 4 }, { 1158, 5 }, + { 1159, 5 }, { 1160, 5 }, { 1172, 3 }, { 1173, 3 }, { 1179, 2 }, + { 1180, 2 }, { 1181, 2 }, { 1195, 2 }, { 1196, 2 }, { 1197, 2 }, + { 1198, 2 }, { 1213, 2 }, { 1222, 2 }, { 1224, 2 }, { 1326, 2 }, + { 1328, 2 }, { 1329, 2 }, { 1330, 2 }, { 1335, 2 }, { 1341, 2 }, + { 1342, 2 }, { 1343, 2 }, { 1344, 2 }, { 1345, 2 }, { 1346, 2 }, + { 1347, 2 }, { 1348, 3 }, { 1349, 3 }, { 1350, 3 }, { 1351, 3 }, + { 1352, 3 }, { 1353, 3 }, { 1354, 3 }, { 1355, 3 }, { 1356, 3 }, + { 1373, 2 }, { 1431, 2 }, { 1432, 2 }, { 1438, 2 }, { 1459, 2 }, + { 1460, 2 }, { 1461, 2 }, { 1462, 2 }, { 1472, 3 }, { 1505, 2 }, + { 1506, 2 }, { 1507, 2 }, { 1508, 2 }, { 1509, 2 }, { 1516, 3 }, + { 1521, 2 }, { 1522, 2 }, { 1542, 3 }, { 1555, 2 }, { 1556, 2 }, + { 1558, 2 }, { 1559, 2 }, { 1575, 2 }, { 1578, 3 }, { 1580, 2 }, + { 1581, 2 }, { 1582, 2 }, { 1583, 2 }, { 1584, 2 }, { 1585, 2 }, + { 1586, 2 }, { 1587, 2 }, { 1588, 2 }, { 1589, 2 }, { 1590, 4 }, + { 1591, 4 }, { 1592, 4 }, { 1600, 2 }, { 1601, 2 }, { 1602, 2 }, + { 1603, 2 }, { 1604, 2 }, { 1605, 2 }, { 1606, 2 }, { 1607, 2 }, + { 1608, 3 }, { 1609, 3 }, { 1610, 3 }, { 1611, 3 }, { 1612, 2 }, + { 1616, 2 }, { 1617, 2 }, { 1618, 2 }, { 1619, 2 }, { 1620, 2 }, + { 1621, 3 }, { 1627, 2 }, { 1628, 2 }, { 1631, 2 }, { 1632, 2 }, + { 1653, 2 }, { 1654, 2 }, { 1655, 2 }, { 1656, 2 }, { 1657, 2 }, + { 1676, 2 }, { 1677, 2 }, { 1681, 2 }, { 1689, 3 }, { 1691, 2 }, + { 1693, 2 }, { 1719, 2 }, { 1720, 2 }, { 1721, 2 }, { 1722, 2 }, + { 1723, 2 }, { 1728, 2 }, { 1730, 2 }, { 1731, 2 }, { 1732, 2 }, + { 1733, 2 }, { 1734, 2 }, { 1735, 2 }, { 1736, 2 }, { 1737, 2 }, + { 1738, 2 }, { 1739, 3 }, { 1740, 3 }, { 1741, 2 }, { 1742, 3 }, + { 1743, 3 }, { 1744, 3 }, { 1745, 2 }, { 1746, 2 }, { 1747, 3 }, + { 1748, 3 }, { 1750, 2 }, { 1766, 2 }, { 1767, 2 }, { 1768, 2 }, + { 1778, 2 }, { 1779, 2 }, { 1780, 2 }, { 1781, 2 }, { 1782, 2 }, + { 1783, 2 }, { 1784, 2 }, { 1785, 2 }, { 1786, 2 }, { 1787, 2 }, + { 1792, 2 }, { 1802, 2 }, { 1803, 2 }, { 1804, 2 }, { 1811, 2 }, + { 1812, 2 }, { 1813, 2 }, { 1821, 2 }, { 1828, 2 }, { 1873, 2 }, + { 1943, 2 }, { 1944, 2 }, { 1945, 2 }, { 1946, 2 }, { 1951, 2 }, + { 1952, 2 }, { 1953, 2 }, { 1954, 2 }, { 1955, 2 }, { 1956, 2 }, + { 1970, 2 }, { 1971, 2 }, { 1990, 2 }, { 1993, 2 }, { 1996, 2 }, + { 1998, 2 }, { 1999, 2 }, { 2000, 2 }, { 2022, 3 }, { 2033, 2 }, + { 2038, 2 }, { 2039, 2 }, { 2040, 2 }, { 2041, 2 }, { 2042, 2 }, + { 2043, 2 }, { 2044, 2 }, { 2045, 2 }, { 2046, 2 }, { 2047, 2 }, + { 2048, 2 }, { 2049, 2 }, { 2050, 2 }, { 2051, 2 }, { 2052, 2 }, + { 2053, 2 }, { 2054, 2 }, { 2055, 2 }, { 2056, 2 }, { 2057, 2 }, + { 2060, 3 }, { 2063, 2 }, { 2064, 2 }, { 2065, 2 }, { 2240, 2 }, + { 2252, 2 }, { 2254, 2 }, { 2255, 2 }, { 2289, 2 }, { 2317, 2 }, + { 2417, 2 }, { 2418, 2 }, { 2419, 2 }, { 2434, 2 }, { 2452, 2 }, + { 2453, 2 }, { 2482, 2 }, { 2534, 3 }, { 2554, 3 }, { 2555, 3 }, + { 2556, 3 }, { 2557, 3 }, { 2558, 3 }, { 2559, 3 }, { 2560, 3 }, + { 2561, 3 }, { 2562, 3 }, { 2563, 3 }, { 2629, 2 }, { 2630, 2 }, + { 2631, 3 }, { 2632, 3 }, { 2637, 2 }, { 2640, 2 }, { 2641, 3 }, + { 2642, 5 }, { 2644, 2 }, { 2651, 2 }, { 2722, 2 }, { 2723, 2 }, + { 2736, 2 }, { 2737, 2 }, { 2739, 3 }, { 2740, 3 }, { 2741, 4 }, + { 2742, 4 }, { 2743, 5 }, { 2744, 5 }, { 2745, 5 }, { 2783, 3 }, + { 2801, 2 }, { 2803, 3 }, { 2804, 2 }, { 2805, 2 }, { 2806, 2 }, + { 2809, 2 }, { 2810, 2 }, { 2811, 2 }, { 2812, 2 }, { 2813, 2 }, + { 2814, 2 }, { 2815, 2 }, { 2849, 2 }, { 2850, 2 }, { 2880, 2 }, + { 2881, 3 }, { 2882, 3 }, { 2883, 3 }, { 2885, 2 }, { 2886, 2 }, + { 2889, 2 }, { 2890, 2 }, { 2919, 3 }, { 2920, 3 }, { 2921, 3 }, + { 3051, 2 }, { 3052, 2 }, { 3053, 2 }, { 3054, 2 }, { 3055, 2 }, + { 3056, 2 }, { 3058, 2 }, { 3063, 2 }, { 3064, 2 }, { 3066, 2 }, + { 3068, 3 }, { 3069, 3 }, { 3070, 3 }, { 3071, 3 }, { 3072, 2 }, + { 3076, 2 }, { 3077, 2 }, { 3100, 2 }, { 3101, 2 }, { 3103, 2 }, + { 3124, 2 }, { 3125, 2 }, { 3129, 2 }, { 3130, 2 }, { 3132, 2 }, + { 3133, 2 }, { 3134, 2 }, { 3135, 2 }, { 3140, 3 }, { 3154, 2 }, + { 3200, 3 }, { 3203, 3 }, { 3301, 3 }, { 3309, 2 }, { 3332, 5 }, + { 3333, 5 }, { 3334, 5 }, { 3337, 3 }, { 3338, 3 }, { 3339, 4 }, + { 3340, 3 }, { 3347, 2 }, { 3376, 2 }, { 3398, 2 }, { 3419, 2 }, + { 3420, 2 }, { 3421, 2 }, { 3423, 2 }, { 3443, 2 }, { 3444, 2 }, + { 3445, 3 }, { 3446, 2 }, { 3447, 2 }, { 3448, 3 }, { 3463, 2 }, + { 3464, 2 }, { 3466, 2 }, { 3467, 2 }, { 3468, 2 }, { 3469, 5 }, + { 3470, 5 }, { 3471, 5 }, { 3472, 5 }, { 3476, 3 }, { 3477, 3 }, + { 3484, 2 }, { 3493, 3 }, { 3494, 5 }, { 3497, 3 }, { 3498, 3 }, + { 3499, 3 }, { 3500, 3 }, { 3501, 3 }, { 3502, 3 }, { 3519, 2 }, + { 3530, 3 }, { 3556, 2 }, { 3558, 2 }, { 3585, 2 }, { 3586, 2 }, + { 3587, 2 }, { 3588, 2 }, { 3589, 3 }, { 3590, 3 }, { 3591, 3 }, + { 3592, 3 }, { 3593, 3 }, { 3594, 2 }, { 3599, 3 }, { 3600, 4 }, + { 3601, 5 }, { 3602, 3 }, { 3603, 3 }, { 3604, 4 }, { 3605, 5 }, + { 3606, 2 }, { 3607, 2 }, { 3608, 2 }, { 3609, 2 }, { 3610, 2 }, + { 3611, 2 }, { 3612, 3 }, { 3613, 3 }, { 3614, 3 }, { 3636, 2 }, + { 3637, 4 }, { 3645, 2 }, { 3646, 2 }, { 3647, 2 }, { 3649, 2 }, + { 3650, 2 }, { 3651, 2 }, { 3652, 2 }, { 3653, 2 }, { 3654, 2 }, + { 3655, 2 }, { 3656, 2 }, { 3657, 2 }, { 3658, 3 }, { 3659, 3 }, + { 3660, 3 }, { 3661, 2 }, { 3662, 2 }, { 3664, 2 }, { 3665, 2 }, + { 3666, 2 }, { 3667, 2 }, { 3668, 2 }, { 3669, 2 }, { 3670, 2 }, + { 3675, 2 }, { 3676, 2 }, { 3681, 3 }, { 3772, 2 }, { 3773, 2 }, + { 3774, 2 }, { 3775, 2 }, { 3776, 2 }, { 6142, 3 }, { 6143, 3 }, + { 6144, 3 }, { 6145, 3 }, { 3808, 3 }, { 3819, 3 }, { 3835, 5 }, + { 3836, 5 } }; + +} diff --git a/2006Redone Server/src/redone/game/npcs/drops/ItemDrop.java b/2006Redone Server/src/com/rebotted/game/npcs/drops/ItemDrop.java similarity index 90% rename from 2006Redone Server/src/redone/game/npcs/drops/ItemDrop.java rename to 2006Redone Server/src/com/rebotted/game/npcs/drops/ItemDrop.java index f32f0452..d95eb9af 100644 --- a/2006Redone Server/src/redone/game/npcs/drops/ItemDrop.java +++ b/2006Redone Server/src/com/rebotted/game/npcs/drops/ItemDrop.java @@ -1,6 +1,6 @@ -package redone.game.npcs.drops; +package com.rebotted.game.npcs.drops; -import redone.util.Misc; +import com.rebotted.util.Misc; public class ItemDrop { public int item_id, chance; diff --git a/2006Redone Server/src/redone/game/npcs/drops/NPCDrops.java b/2006Redone Server/src/com/rebotted/game/npcs/drops/NPCDrops.java similarity index 97% rename from 2006Redone Server/src/redone/game/npcs/drops/NPCDrops.java rename to 2006Redone Server/src/com/rebotted/game/npcs/drops/NPCDrops.java index 81c2cc27..620eace4 100644 --- a/2006Redone Server/src/redone/game/npcs/drops/NPCDrops.java +++ b/2006Redone Server/src/com/rebotted/game/npcs/drops/NPCDrops.java @@ -1,2325 +1,2325 @@ -package redone.game.npcs.drops; - -import redone.game.npcs.drops.ItemDrop; - -/** - * Npc Drops - * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) - */ - -public class NPCDrops extends NPCDropsHandler { - - public static final ItemDrop[] DEFAULT = { - new ItemDrop( i("bones"), 1, ALWAYS ), - new ItemDrop( 995, new int[]{1, 10}, COINSRATE), - new ItemDrop( 2677, 1, VERY_RARE ), - }; - - public static final ItemDrop[] rivertroll = { - new ItemDrop( i("bones"), 1, ALWAYS ), - new ItemDrop( 405, 1, COMMON ), - new ItemDrop( i("spinach roll"), 1, COMMON ), - new ItemDrop( i("fishing bait"), new int[]{1, 50}, UNCOMMON ), - new ItemDrop( 985, 1, RARE ), - new ItemDrop( 987, 1, RARE ), - new ItemDrop( i("feather"), new int[]{2, 7}, COMMON ), - new ItemDrop( 151, 1, UNCOMMON ), - new ItemDrop( i("raw tuna"), 1, UNCOMMON ), - new ItemDrop( i("raw salmon"), 1, UNCOMMON ), - new ItemDrop( i("raw trout"), 1, UNCOMMON ), - new ItemDrop( i("raw herring"), 1, UNCOMMON ), - new ItemDrop( i("raw pike"), 1, UNCOMMON ), - new ItemDrop( i("raw sardine"), 1, UNCOMMON ), - new ItemDrop( i("raw shrimps"), 1, UNCOMMON ), - new ItemDrop( i("raw anchovies"), 1, UNCOMMON ), - new ItemDrop( i("raw swordfish"), 1, UNCOMMON ), - new ItemDrop( i("raw shark"), 1, UNCOMMON ), - }; - - public static final ItemDrop[] darkbeast = { - new ItemDrop( i("rune 2h sword"), 1, UNCOMMON ), - new ItemDrop( i("black 2h sword"), 1, COMMON ), - new ItemDrop( i("black battleaxe"), 1, COMMON ), - new ItemDrop( i("black axe"), 1, UNCOMMON ), - new ItemDrop( i("rune battleaxe"), 1, RARE ), - new ItemDrop( i("adamant sq shield"), 1, COMMON ), - new ItemDrop( i("rune chainbody"), 1, UNCOMMON ), - new ItemDrop( i("rune full helm"), 1, RARE ), - new ItemDrop( i("rune sq shield"), 1, RARE ), - new ItemDrop( i("chaos rune"), 10, COMMON ), - new ItemDrop( i("blood rune"), 7, COMMON ), - new ItemDrop( i("air rune"), 47, UNCOMMON ), - new ItemDrop( i("death rune"), new int[]{3, 8}, UNCOMMON ), - new ItemDrop( i("law rune"), 3, UNCOMMON ), - new ItemDrop( 995, new int[]{64, 3000}, COMMON ), - new ItemDrop( 121, 1, UNCOMMON ), - new ItemDrop( 385, new int[]{1, 7}, UNCOMMON ), - new ItemDrop( i("death talisman"), 1, UNCOMMON ), - new ItemDrop( i("adamant bar"), 1, UNCOMMON ), - new ItemDrop( 199, new int[]{1, 5}, COMMON ), - new ItemDrop( 201, new int[]{1, 5}, COMMON ), - new ItemDrop( 203, new int[]{1, 4}, COMMON ), - new ItemDrop( 205, new int[]{1, 3}, UNCOMMON ), - new ItemDrop( 207, new int[]{1, 3}, UNCOMMON ), - new ItemDrop( 209, new int[]{1, 3}, UNCOMMON ), - new ItemDrop( 211, new int[]{1, 3}, UNCOMMON ), - new ItemDrop( 215, new int[]{1, 3}, UNCOMMON ), - new ItemDrop( 2485, new int[]{1, 3}, UNCOMMON ), - new ItemDrop( 213, new int[]{1, 3}, UNCOMMON ), - new ItemDrop( 217, new int[]{1, 3}, UNCOMMON ), - }; - - public static final ItemDrop[] ogre = { - new ItemDrop( i("big bones"), 1, ALWAYS ), - new ItemDrop( i("strawberry seed"), 1, UNCOMMON ), - new ItemDrop( i("avantoe seed"), 1, UNCOMMON ), - new ItemDrop( i("belladonna seed"), 1, UNCOMMON ), - new ItemDrop( 5282, 1, UNCOMMON ), - new ItemDrop( i("cadantine seed"), 1, UNCOMMON ), - new ItemDrop( i("cactus seed"), 1, UNCOMMON ), - new ItemDrop( i("harralander seed"), 1, UNCOMMON ), - new ItemDrop( i("irit seed"), 1, UNCOMMON ), - new ItemDrop( i("jangerberry seed"), 1, UNCOMMON ), - new ItemDrop( i("limpwurt seed"), 1, UNCOMMON ), - new ItemDrop( i("poison ivy seed"), 1, UNCOMMON ), - new ItemDrop( i("spirit weed seed"), 1, UNCOMMON ), - new ItemDrop( i("tarromin seed"), 1, UNCOMMON ), - new ItemDrop( i("toadflax seed"), 1, UNCOMMON ), - new ItemDrop( i("wildblood seed"), 1, UNCOMMON ), - new ItemDrop( i("whiteberry seed"), 1, UNCOMMON ), - new ItemDrop( i("marentill seed"), 1, UNCOMMON ), - new ItemDrop( i("ranarr seed"), 1, RARE ), - new ItemDrop( i("dwarf weed seed"), 1, RARE ), - new ItemDrop( i("lantadyme seed"), 1, RARE ), - new ItemDrop( i("watermelon seed"), 1, RARE ), - new ItemDrop( i("kwuarm seed"), 1, RARE ), - }; - - public static final ItemDrop[] shade = { - new ItemDrop( 546, 1, COMMON ), - new ItemDrop( 548, 1, COMMON ), - }; - - public static final ItemDrop[] babybluedragon = { - new ItemDrop( i("babydragon bones"), 1, ALWAYS ), - }; - - public static final ItemDrop[] bear = { - new ItemDrop( 526, 1, ALWAYS ), - new ItemDrop( i("bear fur"), 1, ALWAYS ), - new ItemDrop( i("raw bear meat"), 1, ALWAYS ), - }; - - public static final ItemDrop[] monk = { - new ItemDrop( 526, 1, ALWAYS ), - new ItemDrop( 542, 1, RARE ), - new ItemDrop( 544, 1, RARE ), - }; - - public static final ItemDrop[] tzhaarxil = { - new ItemDrop( 6522, new int[]{9, 20}, RARE ), - new ItemDrop( 6523, 1, RARE ), - new ItemDrop( 6525, 1, RARE ), - new ItemDrop( 6524, 1, RARE ), - new ItemDrop( 6568, 1, RARE ), - new ItemDrop( 161, 1, UNCOMMON ), - new ItemDrop( 149, 1, UNCOMMON ), - new ItemDrop( 167, 1, UNCOMMON ), - new ItemDrop( i("tokkul"), new int[]{100, 1500}, COMMON ), - new ItemDrop( i("lobster"), 1, UNCOMMON ), - }; - - public static final ItemDrop[] tzhaarket = { - new ItemDrop( 6527, 1, RARE ), - new ItemDrop( i("fire battlestaff"), 1, RARE ), - new ItemDrop( 6524, 1, RARE ), - new ItemDrop( 6568, 1, RARE ), - new ItemDrop( 167, 1, UNCOMMON ), - new ItemDrop( 161, 1, UNCOMMON ), - new ItemDrop( i("tokkul"), new int[]{100, 1900}, COMMON ), - new ItemDrop( i("lobster"), 1, UNCOMMON ), - new ItemDrop( i("chilli potato"), new int[]{1, 3}, UNCOMMON ), - new ItemDrop( i("pure essence"), 5, VERY_RARE ), - }; - - public static final ItemDrop[] tzhaarhur = { - new ItemDrop( i("gold ore"), 1, COMMON ), - new ItemDrop( 443, new int[]{1, 3}, COMMON ), - new ItemDrop( 1762, 3, UNCOMMON ), - new ItemDrop( i("steel bar"), 1, UNCOMMON ), - new ItemDrop( i("tokkul"), new int[]{150, 800}, COMMON ), - new ItemDrop( i("molten glass"), 2, UNCOMMON ), - new ItemDrop( 149, 1, UNCOMMON ), - new ItemDrop( 161, 1, UNCOMMON ), - new ItemDrop( 1780, new int[]{4, 20}, UNCOMMON ), - new ItemDrop( i("battlestaff"), 1, RARE ), - new ItemDrop( 1744, 3, RARE ), - new ItemDrop( i("leather"), 3, RARE ), - new ItemDrop( 1738, new int[]{2, 10}, RARE ), - new ItemDrop( 7937, new int[]{2, 8}, RARE ), - new ItemDrop( i("lobster"), 1, RARE ), - }; - - public static final ItemDrop[] thief = { - new ItemDrop( 526, 1, ALWAYS ), - new ItemDrop( 199, 1, COMMON ), - new ItemDrop( 201, 1, COMMON ), - new ItemDrop( 203, 1, COMMON ), - new ItemDrop( 205, 1, COMMON ), - new ItemDrop( 207, 1, UNCOMMON ), - new ItemDrop( 209, 1, VERY_RARE ), - new ItemDrop( 211, 1, VERY_RARE ), - new ItemDrop( 213, 1, VERY_RARE ), - new ItemDrop( 217, 1, VERY_RARE ), - new ItemDrop( 2485, 1, VERY_RARE ), - new ItemDrop( i("bronze arrow"), new int[]{3, 8}, UNCOMMON ), - new ItemDrop( i("staff of air"), 1, UNCOMMON ), - new ItemDrop( i("iron knife"), new int[]{3, 10}, UNCOMMON ), - new ItemDrop( i("chaos rune"), new int[]{3, 8}, RARE ), - new ItemDrop( i("mind rune"), new int[]{5, 10}, VERY_RARE ), - new ItemDrop( i("earth rune"), new int[]{5, 10}, VERY_RARE ), - new ItemDrop( i("fire rune"), new int[]{5, 10}, VERY_RARE ), - new ItemDrop( 995, new int[]{3, 25}, COMMON ), - new ItemDrop( i("earth talisman"), 1, RARE ), - new ItemDrop( i("copper ore"), 1, RARE ), - }; - - public static final ItemDrop[] tzhaarmej = { - new ItemDrop( i("fire battlestaff"), 1, UNCOMMON ), - new ItemDrop( i("staff of fire"), 1, UNCOMMON ), - new ItemDrop( 6568, 1, RARE ), - new ItemDrop( 6526, 1, VERY_RARE ), - new ItemDrop( i("earth rune"), new int[]{10, 80}, COMMON ), - new ItemDrop( i("fire rune"), new int[]{10, 80}, COMMON ), - new ItemDrop( i("air rune"), new int[]{10, 80}, UNCOMMON ), - new ItemDrop( i("water rune"), new int[]{10, 80}, UNCOMMON ), - new ItemDrop( i("choas rune"), new int[]{5, 10}, UNCOMMON ), - new ItemDrop( i("nature rune"), new int[]{1, 8}, UNCOMMON ), - new ItemDrop( i("law rune"), new int[]{2, 5}, UNCOMMON ), - new ItemDrop( i("death rune"), new int[]{1, 6}, RARE ), - new ItemDrop( i("blood rune"), new int[]{1, 6}, RARE ), - new ItemDrop( i("smoke rune"), new int[]{1, 11}, RARE ), - new ItemDrop( i("lava rune"), new int[]{1, 40}, RARE ), - new ItemDrop( i("fire talisman"), 1, VERY_RARE ), - new ItemDrop( i("tokkul"), new int[]{1, 700}, COMMON ), - new ItemDrop( i("pure essence"), new int[]{4, 10}, COMMON ), - }; - - public static final ItemDrop[] watchman = { - new ItemDrop( i("bones"), 1, ALWAYS ), - new ItemDrop( i("bread"), 1, COMMON ), - }; - - public static final ItemDrop[] treespirit = { - new ItemDrop( i("knife"), 1, ALWAYS ), - new ItemDrop( i("bronze axe"), 1, COMMON ), - new ItemDrop( i("iron axe"), 1, COMMON ), - new ItemDrop( i("steel axe"), 1, COMMON ), - new ItemDrop( i("black axe"), 1, UNCOMMON ), - new ItemDrop( i("mithril axe"), 1, UNCOMMON ), - new ItemDrop( i("adamant axe"), 1, UNCOMMON + r(50) ), - new ItemDrop( i("rune axe"), 1, RARE ), - new ItemDrop( i("nature rune"), new int[]{5, 28}, COMMON ), - new ItemDrop( i("banana"), 1, COMMON ), - new ItemDrop( i("uncut ruby"), 1, UNCOMMON ), - new ItemDrop( i("uncut emerald"), 1, UNCOMMON ), - new ItemDrop( i("uncut diamond"), 1, RARE ), - new ItemDrop( i("uncut sapphire"), 1, UNCOMMON ), - new ItemDrop( i("rune javelin"), 5, UNCOMMON ), - new ItemDrop( i("rune spear"), 1, RARE ), - new ItemDrop( i("dragon spear"), 1, VERY_RARE ), - new ItemDrop( i("cactus seed"), 1, COMMON ), - new ItemDrop( i("poison ivy seed"), 1, COMMON ), - new ItemDrop( i("belladonna seed"), 1, COMMON ), - new ItemDrop( i("kwuarm seed"), 1, COMMON ), - new ItemDrop( i("half of a key"), 1, RARE ), - new ItemDrop( i("nature talisman"), 1, UNCOMMON ), - new ItemDrop( i("shield left half"), 1, VERY_RARE ), - new ItemDrop( 199, 1, COMMON ), - new ItemDrop( 3049, 1, UNCOMMON ), - new ItemDrop( 3051, 1, RARE ), - new ItemDrop( 211, 1, UNCOMMON ), - }; - - public static final ItemDrop[] cockatrice = { - new ItemDrop( 526, 1, ALWAYS ), - new ItemDrop( i("iron sword"), 1, COMMON ), - new ItemDrop( i("steel dagger"), 1, COMMON ), - new ItemDrop( i("steel longsword"), 1, COMMON ), - new ItemDrop( i("iron javelin"), 5, UNCOMMON ), - new ItemDrop( i("steel platelegs"), 1, UNCOMMON ), - new ItemDrop( 4097, 1, RARE ), - new ItemDrop( i("iron boots"), 1, RARE ), - new ItemDrop( i("rune med helm"), 1, VERY_RARE ), - new ItemDrop( i("rune chainbody"), 1, VERY_RARE ), - new ItemDrop( i("water rune"), new int[]{1, 3}, COMMON ), - new ItemDrop( i("fire rune"), 7, COMMON ), - new ItemDrop( i("nature rune"), new int[]{2, 6}, COMMON ), - new ItemDrop( i("law rune"), new int[]{2, 5}, COMMON ), - new ItemDrop( i("death rune"), 50, UNCOMMON ), - new ItemDrop( 199, 1, COMMON ), - new ItemDrop( 201, 1, COMMON ), - new ItemDrop( 203, 1, COMMON ), - new ItemDrop( 205, 1, COMMON ), - new ItemDrop( 209, 1, COMMON ), - new ItemDrop( 211, 1, COMMON ), - new ItemDrop( 207, 1, RARE ), - new ItemDrop( 213, 1, RARE ), - new ItemDrop( 215, 1, RARE ), - new ItemDrop( 2485, 1, RARE ), - new ItemDrop( 217, 1, VERY_RARE ), - new ItemDrop( i("potato seed"), 4, COMMON ), - new ItemDrop( i("onion seed"), 4, COMMON ), - new ItemDrop( i("cabbage seed"), 4, COMMON ), - new ItemDrop( i("tomato seed"), 3, COMMON ), - new ItemDrop( i("asgarnian seed"), 2, COMMON ), - new ItemDrop( i("yanillian seed"), 2, COMMON ), - new ItemDrop( i("sweetcorn seed"), 3, COMMON ), - new ItemDrop( i("strawberry seed"), 2, COMMON ), - new ItemDrop( i("watermelon seed"), 2, RARE ), - new ItemDrop( i("ranarr seed"), 1, RARE ), - new ItemDrop( i("marigold seed"), 1, RARE ), - new ItemDrop( 995, new int[]{1, 309}, COMMON ), - new ItemDrop( i("limpwurt root"), 1, COMMON ), - new ItemDrop( i("mithril ore"), 1, RARE ), - }; - - public static final ItemDrop[] unicorn = { - new ItemDrop( i("bones"), 1, ALWAYS ), - new ItemDrop( i("unicorn horn"), 1, ALWAYS ), - }; - - public static final ItemDrop[] giantrat = { - new ItemDrop( i("bones"), 1, ALWAYS ), - new ItemDrop( 2134, 1, ALWAYS ), - }; - - public static final ItemDrop[] jogre = { - new ItemDrop( i("jogre bones"), 1, ALWAYS ), - new ItemDrop( i("bronze spear"), 1, COMMON ), - new ItemDrop( i("iron spear"), 1, COMMON ), - new ItemDrop( i("steel javelin"), new int[]{3, 5}, UNCOMMON ), - new ItemDrop( i("nature rune"), new int[]{2, 8}, COMMON ), - new ItemDrop( i("knife"), 1, COMMON ), - new ItemDrop( i("pineapple"), 2, COMMON ), - new ItemDrop( 6306, 22, COMMON ), - new ItemDrop( 995, 22, COMMON ), - new ItemDrop( 3125, 1, COMMON ), - new ItemDrop( i("big bones"), new int[]{1, 6}, COMMON ), - new ItemDrop( 526, new int[]{1, 3}, COMMON ), - new ItemDrop( i("banana"), 1, UNCOMMON ), - new ItemDrop( i("limpwurt seed"), 1, COMMON ), - new ItemDrop( i("marentill seed"), 1, COMMON ), - new ItemDrop( i("tarromin seed"), 1, COMMON ), - new ItemDrop( i("harralander seed"), 1, UNCOMMON ), - new ItemDrop( i("strawberry sed"), 1, UNCOMMON ), - new ItemDrop( i("watermelon seeed"), 1, UNCOMMON ), - new ItemDrop( i("wildblood seed"), 1, UNCOMMON ), - new ItemDrop( i("toadflax seed"), 1, UNCOMMON ), - new ItemDrop( i("avantoe seed"), 1, UNCOMMON ), - new ItemDrop( i("cactus seed"), 1, UNCOMMON ), - new ItemDrop( i("jangerberry seed"), 1, UNCOMMON ), - new ItemDrop( i("whiteberry seed"), 1, UNCOMMON ), - new ItemDrop( i("belladonna seed"), 1, UNCOMMON ), - new ItemDrop( 5282, 1, UNCOMMON ), - new ItemDrop( i("poison ivy seed"), 1, UNCOMMON ), - new ItemDrop( i("kwuarm seed"), 1, UNCOMMON ), - new ItemDrop( i("cadantine seed"), 1, UNCOMMON ), - new ItemDrop( i("ranarr seed"), 1, RARE ), - new ItemDrop( i("lantadyme seed"), 1, RARE ), - new ItemDrop( i("dwarf weed seed"), 1, RARE ), - new ItemDrop( 1533, 1, COMMON ), - new ItemDrop( 1525, 1, COMMON ), - new ItemDrop( 203, 1, COMMON ), - new ItemDrop( 201, 1, COMMON ), - new ItemDrop( 205, 1, UNCOMMON ), - new ItemDrop( 207, 1, UNCOMMON ), - new ItemDrop( 209, 1, UNCOMMON ), - new ItemDrop( 217, 1, RARE ), - new ItemDrop( 2485, 1, RARE ), - }; - - public static final ItemDrop[] blackdemon = { - new ItemDrop(i("steel battleaxe"), 1, COMMON), - new ItemDrop(i("black axe"), 1, COMMON), - new ItemDrop(i("black sword"), 1, COMMON), - new ItemDrop(i("black 2h sword"), 1, COMMON), - new ItemDrop(i("rune battleaxe"), 1, RARE), - new ItemDrop(i("rune 2h sword"), 1, VERY_RARE), - new ItemDrop(i("black full helm"), 1, COMMON), - new ItemDrop(i("mithril kiteshield"), 1, COMMON), - new ItemDrop(i("rune med helm"), 1, RARE), - new ItemDrop(i("rune full helm"), 1, RARE), - new ItemDrop(i("rune chainbody"), 1, RARE), - new ItemDrop(i("rune sq shield"), 1, RARE), - new ItemDrop(i("air rune"), new int[]{50, 75}, COMMON), - new ItemDrop(i("blood rune"), 7, UNCOMMON), - new ItemDrop(i("fire rune"), new int[]{37, 40}, COMMON), - new ItemDrop(i("chaos rune"), 10, COMMON), - new ItemDrop(i("law rune"), new int[]{3, 45}, COMMON), - new ItemDrop(i("adamant bar"), 1, COMMON), - new ItemDrop(454, 20, RARE), - new ItemDrop(995, new int[]{132, 1100}, COMMON), - new ItemDrop(i("lobster"), 1, UNCOMMON), - new ItemDrop(133, 1, UNCOMMON), - new ItemDrop(199, 1, COMMON), - new ItemDrop(201, 1, COMMON), - new ItemDrop(203, 1, COMMON), - new ItemDrop(205, 1, COMMON), - new ItemDrop(207, 1, UNCOMMON), - new ItemDrop(209, 1, UNCOMMON), - new ItemDrop(211, 1, UNCOMMON), - new ItemDrop(213, 1, UNCOMMON), - new ItemDrop(215, 1, UNCOMMON), - new ItemDrop(2485, 1, RARE), - new ItemDrop(217, 1, RARE), - new ItemDrop(i("ashes"), 1, ALWAYS) - }; - - public static final ItemDrop[] firegiant = { - new ItemDrop( i("big bones"), 1, ALWAYS ), - new ItemDrop( i("steel axe"), 1, COMMON ), - new ItemDrop( i("fire battlestaff"), 1, UNCOMMON ), - new ItemDrop( i("rune scimitar"), 1, RARE ), - new ItemDrop( i("mithril sq shield"), 1, COMMON ), - new ItemDrop( i("rune arrow"), 12, UNCOMMON ), - new ItemDrop( i("fire rune"), new int[]{37, 204}, COMMON ), - new ItemDrop( i("chaos rune"), 5, UNCOMMON ), - new ItemDrop( i("blood rune"), 5, UNCOMMON ), - new ItemDrop( i("law rune"), new int[]{2, 6}, UNCOMMON ), - new ItemDrop( 199, 1, COMMON ), - new ItemDrop( 201, 1, COMMON ), - new ItemDrop( 203, 1, COMMON ), - new ItemDrop( 211, 1, COMMON ), - new ItemDrop( 205, 1, UNCOMMON ), - new ItemDrop( 207, 1, UNCOMMON ), - new ItemDrop( 209, 1, UNCOMMON ), - new ItemDrop( 215, 1, UNCOMMON ), - new ItemDrop( 217, 1, UNCOMMON ), - new ItemDrop( 995, new int[]{15, 360}, COMMON ), - new ItemDrop( i("lobster"), 1, UNCOMMON ), - new ItemDrop( i("steel bar"), 1, UNCOMMON ), - new ItemDrop( 117, 1, UNCOMMON ), - }; - - public static final ItemDrop[] evilchicken = { - new ItemDrop( i("raw chicken"), 1, ALWAYS ), - new ItemDrop( 526, 1, ALWAYS ), - new ItemDrop( i("feather"), new int[]{32, 750}, ALWAYS ), - }; - - public static final ItemDrop[] pyrefiend = { - new ItemDrop( i("fire rune"), new int[]{30, 90}, COMMON ), - new ItemDrop( i("chaos rune"), 12, COMMON ), - new ItemDrop( i("law rune"), 1, UNCOMMON ), - new ItemDrop( i("death rune"), 3, UNCOMMON ), - new ItemDrop( i("steel full helm"), 1, COMMON ), - new ItemDrop( i("staff of fire"), 1, COMMON ), - new ItemDrop( i("steel axe"), 1, COMMON ), - new ItemDrop( i("steel battleaxe"), 1, UNCOMMON ), - new ItemDrop( i("steel arrow"), 1, UNCOMMON ), - new ItemDrop( i("mithril chainbody"), 1, UNCOMMON ), - new ItemDrop( i("steel boots"), 1, RARE ), - new ItemDrop( i("adamant med helm"), 1, RARE ), - new ItemDrop( 995, new int[]{10, 474}, COMMON ), - new ItemDrop( i("gold ore"), 1, COMMON ), - new ItemDrop( i("jug of wine"), 1, UNCOMMON ), - }; - - public static final ItemDrop[] jelly = { - new ItemDrop( i("choas rune"), 15, UNCOMMON ), - new ItemDrop( i("death rune"), 5, UNCOMMON ), - new ItemDrop( i("water rune"), new int[]{5, 21}, RARE ), - new ItemDrop( i("blood rune"), 7, RARE ), - new ItemDrop( i("steel battleaxe"), 1, COMMON ), - new ItemDrop( i("steel 2h sword"), 1, COMMON ), - new ItemDrop( i("mithril kiteshield"), 1, UNCOMMON ), - new ItemDrop( i("mithril boots"), 1, UNCOMMON ), - new ItemDrop( i("rune full helm"), 1, RARE ), - new ItemDrop( i("steel platebody"), 1, RARE ), - new ItemDrop( i("rune battleaxe"), 1, VERY_RARE ), - new ItemDrop( 995, new int[]{11, 497}, COMMON ), - new ItemDrop( i("gold bar"), 1, UNCOMMON ), - new ItemDrop( i("thread"), 10, RARE ), - }; - - public static final ItemDrop[] rockslug = { - new ItemDrop( i("earth rune"), new int[]{5, 42}, COMMON ), - new ItemDrop( i("pure essence"), 1, COMMON ), - new ItemDrop( i("chaos rune"), new int[]{2, 5}, UNCOMMON ), - new ItemDrop( i("tin ore"), 1, COMMON ), - new ItemDrop( i("copper ore"), 1, COMMON ), - new ItemDrop( i("bronze bar"), 1, COMMON ), - new ItemDrop( i("iron ore"), 1, COMMON ), - new ItemDrop( i("iron bar"), 1, COMMON ), - new ItemDrop( i("coal"), 1, COMMON ), - new ItemDrop( i("mithril ore"), 1, UNCOMMON ), - new ItemDrop( i("potato seed"), 4, COMMON ), - new ItemDrop( i("onion seed"), 4, COMMON ), - new ItemDrop( i("cabbage seed"), 4, COMMON ), - new ItemDrop( i("tomato seed"), 3, UNCOMMON ), - new ItemDrop( i("sweetcorn seed"), 3, UNCOMMON ), - new ItemDrop( 5308, 3, UNCOMMON ), - new ItemDrop( i("strawberry seed"), 2, RARE ), - new ItemDrop( i("watermelon seed"), 2, RARE ), - new ItemDrop( i("hammer"), 1, COMMON ), - new ItemDrop( i("dwarven stout"), 1, COMMON ), - new ItemDrop( 995, 23, UNCOMMON ), - new ItemDrop( 4115, 1, RARE ), - }; - - public static final ItemDrop[] kurask = { - new ItemDrop( i("bones"), 1, ALWAYS ), - new ItemDrop( i("nature rune"), new int[]{5, 30}, UNCOMMON ), - new ItemDrop( i("death rune"), new int[]{1, 6}, UNCOMMON ), - new ItemDrop( i("mind rune"), new int[]{4, 12}, UNCOMMON ), - new ItemDrop( i("mithril axe"), 1, UNCOMMON ), - new ItemDrop( i("broad arrow"), new int[]{1, 11}, UNCOMMON ), - new ItemDrop( i("rune longsword"), 1, RARE ), - new ItemDrop( i("adamant platebody"), 1, UNCOMMON ), - new ItemDrop( i("mithril kiteshield"), 1, UNCOMMON ), - new ItemDrop( 4111, 1, VERY_RARE ), - new ItemDrop( i("white berries"), 1, COMMON ), - new ItemDrop( i("limpwurt root"), 2, COMMON ), - new ItemDrop( 199, 1, COMMON ), - new ItemDrop( 201, 1, COMMON ), - new ItemDrop( 203, 1, COMMON ), - new ItemDrop( 205, 1, COMMON ), - new ItemDrop( 209, 1, UNCOMMON ), - new ItemDrop( 211, 1, UNCOMMON ), - new ItemDrop( 213, 1, UNCOMMON ), - new ItemDrop( 215, 1, UNCOMMON ), - new ItemDrop( 217, 1, UNCOMMON ), - new ItemDrop( 207, 1, RARE ), - new ItemDrop( 2485, 1, RARE ), - new ItemDrop( i("irit seed"), 1, UNCOMMON ), - new ItemDrop( i("cactus seed"), 1, UNCOMMON ), - new ItemDrop( i("toadflax seed"), 1, UNCOMMON ), - new ItemDrop( i("poison ivy seed"), 1, UNCOMMON ), - new ItemDrop( i("avantoe seed"), 1, UNCOMMON ), - new ItemDrop( i("kwuarm seed"), 1, UNCOMMON ), - new ItemDrop( i("cadantine seed"), 1, UNCOMMON ), - new ItemDrop( i("belladonna seed"), 1, UNCOMMON ), - new ItemDrop( i("lantadyme seed"), 1, UNCOMMON ), - new ItemDrop( i("snapdragon seed"), 1, RARE ), - new ItemDrop( i("dwarf weed seed"), 1, RARE ), - new ItemDrop( i("torstol seed"), 1, VERY_RARE ), - new ItemDrop( i("plain pizza"), 1, UNCOMMON ), - new ItemDrop( i("banana"), new int[]{1, 3}, COMMON ), - new ItemDrop( 2115, new int[]{2, 6}, COMMON ), - new ItemDrop( 995, new int[]{22, 748}, COMMON ), - new ItemDrop( 1780, new int[]{20, 30}, COMMON ), - new ItemDrop( 161, 1, COMMON ), - new ItemDrop( 173, 1, UNCOMMON ), - new ItemDrop( i("bones"), new int[]{1, 3}, UNCOMMON ), - new ItemDrop( i("big bones"), new int[]{1, 3}, UNCOMMON ), - }; - - public static final ItemDrop[] earthwarrior = { - new ItemDrop( 199, 1, COMMON ), - new ItemDrop( 201, 1, COMMON ), - new ItemDrop( 203, 1, COMMON ), - new ItemDrop( 205, 1, COMMON ), - new ItemDrop( 207, 1, UNCOMMON ), - new ItemDrop( 209, 1, UNCOMMON ), - new ItemDrop( 211, 1, UNCOMMON ), - new ItemDrop( 213, 1, UNCOMMON ), - new ItemDrop( 215, 1, RARE ), - new ItemDrop( 2485, 1, RARE ), - new ItemDrop( 217, 1, RARE ), - new ItemDrop( i("earth rune"), new int[]{12, 60}, COMMON ), - new ItemDrop( i("law rune"), 2, COMMON ), - new ItemDrop( i("nature rune"), new int[]{3, 6}, COMMON ), - new ItemDrop( i("chaos rune"), 3, UNCOMMON ), - new ItemDrop( i("death rune"), 2, UNCOMMON ), - new ItemDrop( i("blood rune"), 2, RARE ), - new ItemDrop( i("air rune"), 45, VERY_RARE ), - new ItemDrop( i("fire rune"), 6, VERY_RARE ), - new ItemDrop( i("limpwurt seed"), 1, COMMON ), - new ItemDrop( i("jangerberry seed"), 1, COMMON ), - new ItemDrop( i("marrentill seed"), 1, COMMON ), - new ItemDrop( 5282, 1, COMMON ), - new ItemDrop( i("strawberry seed"), 1, COMMON ), - new ItemDrop( i("tarromin seed"), 1, COMMON ), - new ItemDrop( i("toadflax seed"), 1, COMMON ), - new ItemDrop( i("wildblood seed"), 1, COMMON ), - new ItemDrop( i("belladonna seed"), 1, UNCOMMON ), - new ItemDrop( i("harralander seed"), 1, UNCOMMON ), - new ItemDrop( i("irit seed"), 1, UNCOMMON ), - new ItemDrop( i("avantoe seed"), 1, RARE ), - new ItemDrop( i("cactus seed"), 1, RARE ), - new ItemDrop( i("dwarf weed seed"), 1, RARE ), - new ItemDrop( i("kwuarm seed"), 1, RARE ), - new ItemDrop( i("lantadyme seed"), 1, RARE ), - new ItemDrop( i("poison ivy seed"), 1, RARE ), - new ItemDrop( i("ranarr seed"), 1, RARE ), - new ItemDrop( i("cadantine seed"), 1, VERY_RARE ), - new ItemDrop( i("snapdragon seed"), 1, VERY_RARE ), - new ItemDrop( 995, new int[]{1, 479}, COMMON ), - new ItemDrop( i("steel spear"), 1, COMMON ), - new ItemDrop( i("staff of earth"), 1, UNCOMMON ), - }; - - public static final ItemDrop[] basilisk = { - new ItemDrop( i("bones"), 1, ALWAYS ), - new ItemDrop( i("water rune"), new int[]{75, 175}, COMMON ), - new ItemDrop( i("nature rune"), new int[]{15, 45}, UNCOMMON ), - new ItemDrop( i("chaos rune"), 12, UNCOMMON ), - new ItemDrop( i("law rune"), 3, UNCOMMON ), - new ItemDrop( i("steel battleaxe"), 1, COMMON ), - new ItemDrop( i("mithril spear"), 1, UNCOMMON ), - new ItemDrop( i("mithril axe"), 1, UNCOMMON ), - new ItemDrop( i("mithril kiteshield"), 1, UNCOMMON ), - new ItemDrop( i("rune dagger"), 1, UNCOMMON ), - new ItemDrop( i("adamant full helm"), 1, UNCOMMON ), - new ItemDrop( 4109, 1, RARE ), - new ItemDrop( 4117, 1, VERY_RARE ), - new ItemDrop( 199, 1, COMMON ), - new ItemDrop( 201, 1, COMMON ), - new ItemDrop( 203, 1, COMMON ), - new ItemDrop( 205, 1, COMMON ), - new ItemDrop( 207, new int[]{1, 3}, COMMON ), - new ItemDrop( 209, 1, RARE ), - new ItemDrop( 2485, 1, RARE ), - new ItemDrop( 211, 1, RARE ), - new ItemDrop( 215, 1, RARE ), - new ItemDrop( 213, 1, RARE ), - new ItemDrop( 217, 1, RARE ), - }; - - public static final ItemDrop[] abberantspectre = { - new ItemDrop( i("belladonna seed"), 1, COMMON ), - new ItemDrop( i("cactus seed"), 1, COMMON ), - new ItemDrop( i("irit seed"), 1, COMMON ), - new ItemDrop( i("toadflax seed"), 1, COMMON ), - new ItemDrop( i("avantoe seed"), 1, COMMON ), - new ItemDrop( i("cadantine seed"), 1, UNCOMMON ), - new ItemDrop( i("kwuarm seed"), 1, UNCOMMON ), - new ItemDrop( i("poison ivy seed"), 1, UNCOMMON ), - new ItemDrop( i("lantadyme seed"), 1, UNCOMMON ), - new ItemDrop( i("dwarf weed seed"), 1, RARE ), - new ItemDrop( i("snapdragon seed"), 1, RARE ), - new ItemDrop( i("torstol seed"), 1, VERY_RARE ), - new ItemDrop( 199, new int[]{1, 3}, COMMON ), - new ItemDrop( 201, new int[]{1, 3}, COMMON ), - new ItemDrop( 203, new int[]{1, 3}, COMMON ), - new ItemDrop( 205, new int[]{1, 3}, COMMON ), - new ItemDrop( 207, new int[]{1, 3}, COMMON ), - new ItemDrop( 209, new int[]{1, 3}, COMMON ), - new ItemDrop( 211, new int[]{1, 3}, COMMON ), - new ItemDrop( 213, new int[]{1, 3}, COMMON ), - new ItemDrop( 5302, new int[]{1, 3}, UNCOMMON ), - new ItemDrop( 215, new int[]{1, 3}, UNCOMMON ), - new ItemDrop( 217, new int[]{1, 3}, UNCOMMON ), - new ItemDrop( 3051, new int[]{1, 3}, VERY_RARE ), - new ItemDrop( i("steel axe"), 1, UNCOMMON ), - new ItemDrop( i("mithril kiteshield"), 1, UNCOMMON ), - new ItemDrop( i("lava battlestaff"), 1, UNCOMMON ), - new ItemDrop( i("adamant platelegs"), 1, UNCOMMON ), - new ItemDrop( i("rune full helm"), 1, RARE ), - new ItemDrop( 4103, 1, RARE ), - new ItemDrop( 995, new int[]{278, 487}, UNCOMMON ), - }; - - public static final ItemDrop[] turoth = { - new ItemDrop( i("bones"), 1, ALWAYS ), - new ItemDrop( i("mithril axe"), 1, COMMON ), - new ItemDrop( i("steel platelegs"), 1, COMMON ), - new ItemDrop( i("mithril kiteshield"), 1, COMMON ), - new ItemDrop( i("adamant full helm"), 1, UNCOMMON ), - new ItemDrop( i("rune dagger"), 1, UNCOMMON ), - new ItemDrop( 4113, 1, RARE ), - new ItemDrop( i("law rune"), 3, COMMON ), - new ItemDrop( i("nature rune"), new int[]{15, 45}, UNCOMMON ), - new ItemDrop( i("poision ivy seed"), 1, COMMON ), - new ItemDrop( i("cactus seed"), 1, COMMON ), - new ItemDrop( i("belladonna seed"), 1, COMMON ), - new ItemDrop( i("toadflax seed"), 1, COMMON ), - new ItemDrop( i("irit seed"), 1, COMMON ), - new ItemDrop( i("snapdragon seed"), 1, UNCOMMON ), - new ItemDrop( i("cadantine seed"), 1, UNCOMMON ), - new ItemDrop( i("avantoe seed"), 1, UNCOMMON ), - new ItemDrop( i("kwuarm seed"), 1, UNCOMMON ), - new ItemDrop( i("lantadyme seed"), 1, RARE ), - new ItemDrop( i("dwarf weed seed"), 1, RARE ), - new ItemDrop( i("ranarr seed"), 1, RARE ), - new ItemDrop( i("torstol seed"), 1, VERY_RARE ), - new ItemDrop( 199, new int[]{1, 3}, COMMON ), - new ItemDrop( 201, new int[]{1, 3}, COMMON ), - new ItemDrop( 203, new int[]{1, 3}, COMMON ), - new ItemDrop( 205, new int[]{1, 3}, COMMON ), - new ItemDrop( 207, new int[]{1, 3}, UNCOMMON ), - new ItemDrop( 209, new int[]{1, 3}, UNCOMMON ), - new ItemDrop( 211, new int[]{1, 3}, UNCOMMON ), - new ItemDrop( 213, new int[]{1, 3}, UNCOMMON ), - new ItemDrop( 5302, new int[]{1, 3}, RARE ), - new ItemDrop( 217, new int[]{1, 3}, RARE ), - new ItemDrop( 215, new int[]{1, 3}, RARE ), - new ItemDrop( 995, new int[]{44, 440}, COMMON ), - new ItemDrop( i("limpwurt root"), 1, COMMON ), - }; - - public static final ItemDrop[] elfwarrior = { - new ItemDrop( i("bones"), 1, ALWAYS ), - new ItemDrop( i("water rune"), 70, COMMON ), - new ItemDrop( i("fire rune"), 37, UNCOMMON ), - new ItemDrop( i("law rune"), new int[]{1, 3}, UNCOMMON ), - new ItemDrop( i("nature rune"), 12, UNCOMMON ), - new ItemDrop( i("mithril spear"), 1, COMMON ), - new ItemDrop( i("rune dagger"), 1, UNCOMMON ), - new ItemDrop( i("mithril kiteshield"), 1, COMMON ), - new ItemDrop( 1099, 1, COMMON ), - new ItemDrop( 1135, 1, COMMON ), - new ItemDrop( 1065, 1, COMMON ), - new ItemDrop( i("adamant med helm"), 1, UNCOMMON ), - new ItemDrop( i("rune med helm"), 1, RARE ), - new ItemDrop( i("bass"), 1, UNCOMMON ), - new ItemDrop( i("shark"), 1, UNCOMMON ), - new ItemDrop( i("lobster"), 1, UNCOMMON ), - new ItemDrop( i("sea turtle"), 1, RARE ), - new ItemDrop( i("manta ray"), 1, VERY_RARE ), - new ItemDrop( i("kwuarm seed"), 1, UNCOMMON ), - new ItemDrop( i("irit seed"), 1, UNCOMMON ), - new ItemDrop( i("avantoe seed"), 1, UNCOMMON ), - new ItemDrop( i("toadflax seed"), 1, UNCOMMON ), - new ItemDrop( i("poison ivy seed"), 1, UNCOMMON ), - new ItemDrop( i("belladonna seed"), 1, UNCOMMON ), - new ItemDrop( i("cadantine seed"), 1, UNCOMMON ), - new ItemDrop( i("dwarf weed seed"), 1, UNCOMMON ), - new ItemDrop( i("cactus seed"), 1, UNCOMMON ), - new ItemDrop( i("lantadyme seed"), 1, RARE ), - new ItemDrop( i("snapdragon seed"), 1, RARE ), - new ItemDrop( 199, 1, COMMON ), - new ItemDrop( 201, 1, COMMON ), - new ItemDrop( 203, 1, COMMON ), - new ItemDrop( 205, 1, COMMON ), - new ItemDrop( 209, 1, COMMON ), - new ItemDrop( 211, 1, COMMON ), - new ItemDrop( 213, 1, COMMON ), - new ItemDrop( 215, 1, RARE ), - new ItemDrop( 2485, 1, RARE ), - new ItemDrop( 207, 1, RARE ), - new ItemDrop( 217, 1, RARE ), - new ItemDrop( 995, new int[]{20, 427}, COMMON ), - new ItemDrop( i("adamantite ore"), 1, UNCOMMON ), - }; - - public static final ItemDrop[] man = { - new ItemDrop( 526, 1, ALWAYS ), - new ItemDrop( 995, new int[]{1, 40}, COMMON ), - new ItemDrop( i("water rune"), 7, UNCOMMON ), - new ItemDrop( i("earth rune"), 4, UNCOMMON ), - new ItemDrop( i("fire rune"), 6, UNCOMMON ), - new ItemDrop( i("mind rune"), 9, UNCOMMON ), - new ItemDrop( i("bronze arrow"), 7, UNCOMMON ), - new ItemDrop( i("iron dagger"), 1, UNCOMMON ), - new ItemDrop( i("bronze full helm"), 1, UNCOMMON ), - new ItemDrop( i("air talisman"), 1, UNCOMMON ), - new ItemDrop( i("earth talisman"), 1, UNCOMMON ), - new ItemDrop( i("fishing bait"), 1, UNCOMMON ), - new ItemDrop( i("copper ore"), 1, UNCOMMON ), - new ItemDrop( i("tin ore"), 1, UNCOMMON ), - new ItemDrop( i("chaos rune"), 2, RARE ), - new ItemDrop( i("body rune"), 7, RARE ), - new ItemDrop( i("staff of air"), 1, RARE + r(5) ), - new ItemDrop( 199, 1, COMMON ), - new ItemDrop( 201, 1, UNCOMMON ), - new ItemDrop( 203, 1, UNCOMMON ), - new ItemDrop( 205, 1, UNCOMMON ), - new ItemDrop( 207, 1, UNCOMMON ), - new ItemDrop( 213, 1, UNCOMMON ), - new ItemDrop( 209, 1, UNCOMMON ), - new ItemDrop( 211, 1, RARE ), - new ItemDrop( 215, 1, RARE ), - new ItemDrop( 217, 1, RARE ), - new ItemDrop( 2485, 1, RARE ), - }; - - public static final ItemDrop[] dagannoth = { - new ItemDrop( 526, 1, ALWAYS ), - new ItemDrop( i("bronze spear"), 1, COMMON ), - new ItemDrop( i("bronze axe"), 1, COMMON ), - new ItemDrop( i("iron spear"), 1, COMMON ), - new ItemDrop( i("mithril spear"), 1, UNCOMMON ), - new ItemDrop( i("cactus seed"), 1, COMMON ), - new ItemDrop( i("poison ivy seed"), 1, COMMON ), - new ItemDrop( i("belladonna seed"), 1, COMMON ), - new ItemDrop( i("irit seed"), 1, COMMON ), - new ItemDrop( i("avantoe seed"), 1, COMMON ), - new ItemDrop( i("toadflax seed"), 1, COMMON ), - new ItemDrop( i("ranarr seed"), 1, UNCOMMON ), - new ItemDrop( i("cadantine seed"), 1, UNCOMMON ), - new ItemDrop( i("kwuarm seed"), 1, UNCOMMON ), - new ItemDrop( i("lantadyme seed"), 1, UNCOMMON ), - new ItemDrop( i("dwarf weed seed"), 1, UNCOMMON ), - new ItemDrop( i("snapdragon seed"), 1, UNCOMMON ), - new ItemDrop( i("torstol seed"), 1, UNCOMMON ), - new ItemDrop( i("steel arrow"), 15, COMMON ), - new ItemDrop( i("mithril javelin"), new int[]{2, 6}, UNCOMMON ), - new ItemDrop( i("harpoon"), 1, COMMON ), - new ItemDrop( i("lobster pot"), 1, COMMON ), - new ItemDrop( i("fishing bait"), 50, COMMON ), - new ItemDrop( i("feather"), 15, COMMON ), - new ItemDrop( i("raw sardine"), 5, COMMON ), - new ItemDrop( i("raw herring"), 4, COMMON ), - new ItemDrop( 402, 10, COMMON ), - new ItemDrop( 411, new int[]{1, 3}, COMMON ), - new ItemDrop( i("raw lobster"), 1, COMMON ), - new ItemDrop( i("raw tuna"), 1, UNCOMMON ), - new ItemDrop( 995, new int[]{1, 85}, COMMON ), - new ItemDrop( i("water rune"), new int[]{15, 45}, COMMON ), - new ItemDrop( 46, 12, COMMON ), - new ItemDrop( 405, 1, UNCOMMON ), - new ItemDrop( 45, 12, UNCOMMON ), - }; - - public static final ItemDrop[] chaoselemental = { - new ItemDrop( i("rune sword"), 1, UNCOMMON ), - new ItemDrop( i("dragon 2h sword"), 1, RARE ), - new ItemDrop( i("iron arrow"), new int[]{500, 1000}, COMMON ), - new ItemDrop( i("mithril dart"), 400, COMMON ), - new ItemDrop( i("rune arrow"), 200, COMMON ), - new ItemDrop( i("air rune"), 500, UNCOMMON ), - new ItemDrop( i("chaos rune"), new int[]{250, 2500}, COMMON ), - new ItemDrop( i("death rune"), 500, RARE ), - new ItemDrop( i("blood rune"), 500, RARE ), - new ItemDrop( 119, 1, COMMON ), - new ItemDrop( 2446, 1, COMMON ), - new ItemDrop( 125, 1, COMMON ), - new ItemDrop( 137, 1, COMMON ), - new ItemDrop( 2289, 3, COMMON ), - new ItemDrop( 361, 5, COMMON ), - new ItemDrop( 464, new int[]{1, 6}, COMMON ), - new ItemDrop( i("shark"), 10, COMMON ), - new ItemDrop( 187, 1, UNCOMMON ), - new ItemDrop( 2003, 10, UNCOMMON ), - new ItemDrop( 6689, new int[]{4, 6}, UNCOMMON ), - new ItemDrop( 995, new int[]{3000, 12000}, UNCOMMON ), - new ItemDrop( i("bones"), 4, COMMON ), - new ItemDrop( i("bat bones"), 5, COMMON ), - new ItemDrop( i("big bones"), 3, COMMON ), - new ItemDrop( i("dragon bones"), 1, UNCOMMON ), - new ItemDrop( i("babydragon bones"), new int[]{1, 3}, UNCOMMON ), - new ItemDrop( i("wildblood seed"), new int[]{1, 3}, COMMON ), - new ItemDrop( i("avantoe seed"), new int[]{1, 3}, UNCOMMON ), - new ItemDrop( i("limpwurt seed"), new int[]{1, 2}, UNCOMMON ), - new ItemDrop( i("strawberry seed"), new int[]{1, 2}, UNCOMMON ), - new ItemDrop( i("tarromin seed"), new int[]{1, 2}, UNCOMMON ), - new ItemDrop( i("ranarr seed"), new int[]{1, 2}, UNCOMMON ), - new ItemDrop( i("toadflax seed"), new int[]{1, 2}, UNCOMMON ), - new ItemDrop( i("jangerberry seed"), new int[]{1, 2}, UNCOMMON ), - new ItemDrop( i("irit seed"), new int[]{1, 2}, UNCOMMON ), - new ItemDrop( i("poison ivy seed"), new int[]{1, 2}, UNCOMMON ), - new ItemDrop( i("marrentill seed"), new int[]{1, 2}, UNCOMMON ), - new ItemDrop( i("cactus seed"), new int[]{1, 2}, UNCOMMON ), - new ItemDrop( i("kwuarm seed"), new int[]{1, 2}, UNCOMMON ), - new ItemDrop( i("harralander seed"), new int[]{1, 2}, UNCOMMON ), - new ItemDrop( i("belladonna seed"), new int[]{1, 2}, UNCOMMON ), - new ItemDrop( i("cadantine seed"), new int[]{1, 2}, UNCOMMON ), - new ItemDrop( i("whiteberry seed"), new int[]{1, 2}, COMMON ), - new ItemDrop( i("lantadyme seed"), 1, RARE ), - }; - - public static final ItemDrop[] dagannothsupereme = { - new ItemDrop( i("dragon bones"), 1, ALWAYS ), - new ItemDrop( i("steel bar"), 5, ALWAYS ), - new ItemDrop( i("adamant axe"), 1, UNCOMMON ), - new ItemDrop( i("rune longsword"), 1, RARE ), - new ItemDrop( i("fremennik blade"), 1, RARE ), - new ItemDrop( i("rune battleaxe"), 1, RARE ),// fremennik - // blade - // not - // tradeable - new ItemDrop( i("rune 2h sword"), 1, RARE ), - new ItemDrop( i("seercull"), 1, RARE ), - new ItemDrop( i("dragon axe"), 1, RARE ), - new ItemDrop( i("iron arrow"), new int[]{218, 590}, COMMON ), - new ItemDrop( i("steel arrow"), new int[]{54, 98}, COMMON ), - new ItemDrop( i("iron knife"), new int[]{214, 500}, UNCOMMON ), - new ItemDrop( i("steel knife"), new int[]{54, 90}, UNCOMMON ), - new ItemDrop( i("mithril knife"), new int[]{31, 69}, UNCOMMON ), - new ItemDrop( i("rune throwing axe"), 7, UNCOMMON ), - new ItemDrop( i("rune javelin"), new int[]{1, 10}, UNCOMMON ), - new ItemDrop( 2489, 1, UNCOMMON ), - new ItemDrop( i("spined body"), 1, UNCOMMON ), - new ItemDrop( i("spined chaps"), 1, UNCOMMON ), - new ItemDrop( i("fremennik shield"), 1, UNCOMMON ), - new ItemDrop( i("fremennik helm"), 1, UNCOMMON ), // fremennik shield + helm not - // tradeable - new ItemDrop( i("archer helm"), 1, RARE ), - new ItemDrop( i("archers' ring"), 1, RARE ), - new ItemDrop( i("shark"), 5, UNCOMMON ), - new ItemDrop( i("belladonna seed"), 1, UNCOMMON ), - new ItemDrop( i("cactus seed"), 1, UNCOMMON ), - new ItemDrop( i("poison ivy seed"), 1, UNCOMMON ), - new ItemDrop( i("irit seed"), 1, UNCOMMON ), - new ItemDrop( i("toadflax seed"), 1, UNCOMMON ), - new ItemDrop( i("avantoe seed"), 1, UNCOMMON ), - new ItemDrop( i("kwuarm seed"), 1, RARE ), - new ItemDrop( i("cadantine seed"), 1, RARE ), - new ItemDrop( i("lantadyme seed"), 1, RARE ), - new ItemDrop( i("dwarf weed seed"), 1, RARE ), - new ItemDrop( i("air talisman"), 1, RARE ), - new ItemDrop( i("mind talisman"), 1, RARE ), - new ItemDrop( i("earth talisman"), 1, RARE ), - new ItemDrop( i("fire talisman"), 1, RARE ), - new ItemDrop( i("body talisman"), 1, RARE ), - new ItemDrop( i("cosmic talisman"), 1, RARE ), - new ItemDrop( 995, new int[]{900, 3000}, COMMON ), - new ItemDrop( i("opal bolt tips"), new int[]{1, 2}, COMMON ), - new ItemDrop( 1516, 94, UNCOMMON ), - new ItemDrop( 1518, new int[]{91, 122}, UNCOMMON ), - new ItemDrop( i("oyster pearls"), 1, COMMON ), - new ItemDrop( 207, 1, UNCOMMON ), - new ItemDrop( i("feather"), new int[]{1, 200}, RARE ), - new ItemDrop( i("runite limbs"), 1, RARE ), - }; - - public static final ItemDrop[] giantmole = { - new ItemDrop( i("big bones"), 1, ALWAYS ), - new ItemDrop( i("mole claw"), 1, ALWAYS ), - new ItemDrop( i("mole skin"), new int[]{1, 6}, ALWAYS ), - new ItemDrop( i("air rune"), 105, COMMON ), - new ItemDrop( i("fire rune"), 105, COMMON ), - new ItemDrop( i("blood rune"), 15, COMMON ), - new ItemDrop( i("death rune"), 7, COMMON ), - new ItemDrop( i("law rune"), 15, UNCOMMON ), - new ItemDrop( i("iron arrow"), new int[]{690, 1380}, UNCOMMON ), - new ItemDrop( i("adamant longsword"), 1, COMMON ), - new ItemDrop( i("mithril axe"), 1, COMMON ), - new ItemDrop( i("mithril battleaxe"), 1, COMMON ), - new ItemDrop( i("mithril 2h sword"), 1, COMMON ), - new ItemDrop( i("rune battleaxe"), 1, UNCOMMON ), - new ItemDrop( i("rune 2h sword"), 1, RARE ), - new ItemDrop( i("mithril platebody"), 1, COMMON ), - new ItemDrop( i("rune med helm"), 1, COMMON ), - new ItemDrop( i("amulet of strength"), 1, COMMON ), - new ItemDrop( i("rune sq shield"), 1, UNCOMMON ), - new ItemDrop( 441, 100, UNCOMMON ), - new ItemDrop( i("mithril bar"), 1, RARE ), - new ItemDrop( 995, new int[]{360, 11000}, UNCOMMON ), - new ItemDrop( i("shark"), new int[]{1, 5}, UNCOMMON ), - new ItemDrop( i("oyster pearls"), 1, RARE ), - new ItemDrop( 1516, new int[]{50, 150}, UNCOMMON ), - }; - - public static final ItemDrop[] dagannothprime = { - new ItemDrop( i("dagganoth bones"), 1, ALWAYS ), - new ItemDrop( i("dagganoth hide"), 1, ALWAYS ), - new ItemDrop( i("air battlestaff"), 1, COMMON ), - new ItemDrop( i("earth battlestaff"), 1, COMMON ), - new ItemDrop( i("water battlestaff"), 1, COMMON ), - new ItemDrop( i("mud battlestaff"), 1, RARE ), - new ItemDrop( 1392, new int[]{1, 10}, RARE ), - new ItemDrop( i("dragon axe"), 1, RARE ), - new ItemDrop( i("air talisman"), new int[]{1, 80}, UNCOMMON ), - new ItemDrop( i("earth talisman"), new int[]{1, 80}, UNCOMMON ), - new ItemDrop( i("water talisman"), new int[]{1, 80}, UNCOMMON ), - new ItemDrop( i("air rune"), 155, UNCOMMON ), - new ItemDrop( i("mud rune"), 32, UNCOMMON ), - new ItemDrop( i("death rune"), 63, UNCOMMON ), - new ItemDrop( i("fremennik shield"), 1, UNCOMMON ), - new ItemDrop( i("fremennik helm"), 1, UNCOMMON ), // shield - // + - // helm - // not - // tradeable - new ItemDrop( i("seers' ring"), 1, RARE ), - new ItemDrop( i("skeletal top"), 1, RARE ), - new ItemDrop( i("skeletal bottoms"), 1, RARE ), - new ItemDrop( i("farseer helm"), 1, RARE ), - new ItemDrop( 995, new int[]{972, 2994}, COMMON ), - new ItemDrop( 7937, 150, UNCOMMON ), - new ItemDrop( 207, 1, UNCOMMON ), - new ItemDrop( i("belladonna seed"), 1, UNCOMMON ), - new ItemDrop( i("cactus seed"), 1, UNCOMMON ), - new ItemDrop( i("poison ivy seed"), 1, UNCOMMON ), - new ItemDrop( i("irit seed"), 1, UNCOMMON ), - new ItemDrop( i("toadflax seed"), 1, UNCOMMON ), - new ItemDrop( i("avantoe seed"), 1, UNCOMMON ), - new ItemDrop( i("kwuarm seed"), 1, RARE ), - new ItemDrop( i("cadantine seed"), 1, RARE ), - new ItemDrop( i("lantadyme seed"), 1, RARE ), - new ItemDrop( i("dwarf weed seed"), 1, RARE ), - }; - - public static final ItemDrop[] daggannothrex = { - new ItemDrop( i("dagganoth bones"), 1, ALWAYS ), - new ItemDrop( i("dagganoth hide"), 1, ALWAYS ), - new ItemDrop( i("fremennik blade"), 1, COMMON ), - new ItemDrop( i("mithril warhammer"), 1, COMMON ), // fremy - // blade - // not - // tradeable - new ItemDrop( i("adamant axe"), 1, COMMON ), - new ItemDrop( i("mithril 2h sword"), 1, UNCOMMON ), - new ItemDrop( i("rune axe"), 1, UNCOMMON ), - new ItemDrop( i("dragon axe"), 1, RARE ), - new ItemDrop( i("steel kiteshield"), 1, COMMON ), - new ItemDrop( i("steel platebody"), 1, COMMON ), - new ItemDrop( i("adamant platebody"), 1, UNCOMMON ), - new ItemDrop( i("fremennik shield"), 1, UNCOMMON ),// fremmy helm + shield not - // tradeable - new ItemDrop( i("fremennik helm"), 1, UNCOMMON ), - new ItemDrop( i("berserker ring"), 1, RARE ), - new ItemDrop( i("warrior ring"), 1, RARE ), - new ItemDrop( i("ring of life"), 1, RARE ), - new ItemDrop( i("rock-shell plate"), 1, RARE ), - new ItemDrop( i("rock-shell legs"), 1, RARE ), - new ItemDrop( 147, 1, UNCOMMON ), - new ItemDrop( 159, 1, UNCOMMON ), - new ItemDrop( 165, 1, UNCOMMON ), - new ItemDrop( 141, 1, UNCOMMON ), - new ItemDrop( 2456, 1, UNCOMMON ), - new ItemDrop( 191, 1, UNCOMMON ), - new ItemDrop( 129, 1, UNCOMMON ), - new ItemDrop( i("adamant bar"), 1, UNCOMMON ), - new ItemDrop( 4448, 25, UNCOMMON ), - new ItemDrop( 454, 100, UNCOMMON ), - new ItemDrop( 441, 150, UNCOMMON ), - new ItemDrop( 2354, new int[]{17, 38}, UNCOMMON ), - new ItemDrop( 365, 5, UNCOMMON ), - new ItemDrop( 373, 5, UNCOMMON ), - new ItemDrop( 385, 5, UNCOMMON ), - new ItemDrop( 207, 1, UNCOMMON ), - new ItemDrop( i("body talisman"), 1, COMMON ), - new ItemDrop( i("earth talisman"), 1, COMMON ), - new ItemDrop( 995, new int[]{995, 3839}, UNCOMMON ), - }; - - public static final ItemDrop[] monkeyguard = { - new ItemDrop( 3182, 1, ALWAYS ), - }; - - public static final ItemDrop[] bandit = { - new ItemDrop( 526, 1, ALWAYS ), - new ItemDrop( i("chaos rune"), 2, COMMON ), - new ItemDrop( i("death rune"), 2, UNCOMMON ), - new ItemDrop( i("nature rune"), 2, UNCOMMON ), - new ItemDrop( i("law rune"), 2, UNCOMMON ), - new ItemDrop( i("cosmic rune"), 2, UNCOMMON ), - new ItemDrop( 205, 1, UNCOMMON ), - new ItemDrop( 203, 1, UNCOMMON ), - new ItemDrop( 201, 1, UNCOMMON ), - new ItemDrop( 199, 1, UNCOMMON ), - new ItemDrop( 217, 1, RARE ), - new ItemDrop( 2485, 1, RARE ), - new ItemDrop( 215, 1, RARE ), - new ItemDrop( 213, 1, RARE ), - new ItemDrop( 211, 1, RARE ), - new ItemDrop( 209, 1, RARE ), - new ItemDrop( 207, 1, UNCOMMON + r(200) ), - new ItemDrop( i("steel axe"), 1, COMMON ), - new ItemDrop( i("iron battleaxe"), 1, UNCOMMON ), - new ItemDrop( i("iron scimitar"), 1, UNCOMMON ), - new ItemDrop( i("steel sq shield"), 1, UNCOMMON ), - new ItemDrop( 995, new int[]{12, 49}, COMMON ), - new ItemDrop( i("coal"), 1, COMMON ), - new ItemDrop( i("steel bar"), 1, UNCOMMON ), - }; - - public static final ItemDrop[] abyssaldemon = { - new ItemDrop( i("black sword"), 1, COMMON ), - new ItemDrop( i("black axe"), 1, COMMON ), - new ItemDrop( i("steel battleaxe"), 1, COMMON ), - new ItemDrop( i("abyssal whip"), 1, VERY_RARE ), - new ItemDrop( i("mithril kiteshield"), 1, UNCOMMON ), - new ItemDrop( i("rune chainbody"), 1, UNCOMMON ), - new ItemDrop( i("rune med helm"), 1, UNCOMMON ), - new ItemDrop( 199, 1, COMMON ), - new ItemDrop( 201, 1, COMMON ), - new ItemDrop( 203, 1, COMMON ), - new ItemDrop( 205, 1, UNCOMMON ), - new ItemDrop( 207, 1, UNCOMMON ), - new ItemDrop( 209, 1, UNCOMMON ), - new ItemDrop( 211, 1, UNCOMMON ), - new ItemDrop( 215, 1, UNCOMMON ), - new ItemDrop( 2485, 1, UNCOMMON ), - new ItemDrop( 213, 1, UNCOMMON ), - new ItemDrop( 217, 1, UNCOMMON ), - new ItemDrop( i("air rune"), 50, COMMON ), - new ItemDrop( i("blood rune"), 7, COMMON ), - new ItemDrop( i("chaos rune"), 10, COMMON ), - new ItemDrop( i("law rune"), 3, UNCOMMON ), - new ItemDrop( 995, new int[]{9, 3000}, COMMON ), - new ItemDrop( i("lobster"), 1, COMMON ), - new ItemDrop( i("cosmic talisman"), 1, COMMON ), - new ItemDrop( 7937, 60, UNCOMMON ), - new ItemDrop( i("earth talisman"), 1, UNCOMMON ), - new ItemDrop( i("adamant bar"), 1, UNCOMMON ), - new ItemDrop( 133, 1, UNCOMMON ), - }; - - public static final ItemDrop[] nechryael = { - new ItemDrop( i("rune full helm"), 1, UNCOMMON ), - new ItemDrop( i("adamant platelegs"), 1, UNCOMMON ), - new ItemDrop( i("mithril kiteshield"), 1, UNCOMMON ), - new ItemDrop( i("rune boots"), 1, UNCOMMON ), - new ItemDrop( i("rune sq shield"), 1, VERY_RARE ), - new ItemDrop( i("steel 2h sword"), 1, COMMON ), - new ItemDrop( i("steel battleaxe"), 1, COMMON ), - new ItemDrop( i("steel axe"), 1, COMMON ), - new ItemDrop( i("rune longsword"), 1, VERY_RARE ), - new ItemDrop( i("rune battleaxe"), 1, VERY_RARE ), - new ItemDrop( i("rune 2h sword"), 1, VERY_RARE ), - new ItemDrop( i("death rune"), new int[]{5, 10}, COMMON ), - new ItemDrop( i("chaos rune"), new int[]{3, 37}, UNCOMMON ), - new ItemDrop( i("belladonna seed"), 1, COMMON ), - new ItemDrop( i("irit seed"), 1, COMMON ), - new ItemDrop( i("cactus seed"), 1, COMMON ), - new ItemDrop( i("avantoe seed"), 1, UNCOMMON ), - new ItemDrop( i("kwuarm seed"), 1, UNCOMMON ), - new ItemDrop( i("poison ivy seed"), 1, UNCOMMON ), - new ItemDrop( i("toadflax seed"), 1, UNCOMMON ), - new ItemDrop( i("cadantine seed"), 1, UNCOMMON ), - new ItemDrop( i("dwarf weed seed"), 1, RARE ), - new ItemDrop( i("lantadyme seed"), 1, RARE ), - new ItemDrop( 995, new int[]{11, 8992}, COMMON ), - new ItemDrop( i("tuna"), 1, COMMON ), - new ItemDrop( i("thread"), 10, UNCOMMON ), - new ItemDrop( i("gold bar"), 1, UNCOMMON ), - new ItemDrop( i("rune bar"), 1, RARE ), - }; - - public static final ItemDrop[] gargoyle = { - new ItemDrop( i("steel 2h sword"), 1, COMMON ), - new ItemDrop( i("steel battleaxe"), 1, COMMON ), - new ItemDrop( i("steel axe"), 1, COMMON ), - new ItemDrop( i("granite maul"), 1, VERY_RARE + r(50) ), - new ItemDrop( i("rune full helm"), 1, UNCOMMON ), - new ItemDrop( i("adamant boots"), 1, UNCOMMON ), - new ItemDrop( i("steel full helm"), 1, RARE ), - new ItemDrop( 4101, 1, RARE ), - new ItemDrop( i("fire rune"), new int[]{37, 75}, COMMON ), - new ItemDrop( i("chaos rune"), 15, COMMON ), - new ItemDrop( i("death rune"), 5, UNCOMMON ), - new ItemDrop( 995, new int[]{11, 498}, COMMON ), - new ItemDrop( 7937, 35, UNCOMMON ), - new ItemDrop( i("mithril bar"), 3, UNCOMMON ), - new ItemDrop( i("steel bar"), 3, UNCOMMON ), - new ItemDrop( i("gold bar"), 1, UNCOMMON ), - new ItemDrop( i("thread"), 10, UNCOMMON ), - }; - - public static final ItemDrop[] dustdevil = { - new ItemDrop(526, 1, ALWAYS), - new ItemDrop(i("steel axe"), 1, COMMON), - new ItemDrop(i("rune arrow"), 12, COMMON), - new ItemDrop(2489, 1, COMMON), - new ItemDrop(i("earth battlestaff"), 1, RARE), - new ItemDrop(i("rune dagger"), 1, RARE), - new ItemDrop(i("rune javelin"), 5, RARE), - new ItemDrop(i("dragon chainbody"), 1, VERY_RARE + r(30000)), - new ItemDrop(i("fire rune"), new int[]{3, 266}, COMMON), - new ItemDrop(i("chaos rune"), 5, UNCOMMON), - new ItemDrop(i("soul rune"), new int[]{1, 5}, UNCOMMON), - new ItemDrop(i("law rune"), 1, VERY_RARE), - new ItemDrop(995, new int[]{15, 396}, COMMON), - new ItemDrop(i("mithril bar"), 1, COMMON), - new ItemDrop(1883, new int[]{1, 2}, UNCOMMON), - new ItemDrop(199, 1, COMMON), - new ItemDrop(201, 1, COMMON), - new ItemDrop(203, 1, COMMON), - new ItemDrop(205, 1, UNCOMMON), - new ItemDrop(207, 1, UNCOMMON), - new ItemDrop(209, 1, UNCOMMON), - new ItemDrop(211, 1, UNCOMMON), - new ItemDrop(215, 1, UNCOMMON), - new ItemDrop(2485, 1, RARE), - new ItemDrop(213, 1, RARE), - new ItemDrop(217, 1, RARE) - }; - - public static final ItemDrop[] banshee = { - new ItemDrop( i("iron mace"), 1, UNCOMMON ), - new ItemDrop( i("iron dagger"), 1, RARE ), - new ItemDrop( i("iron kiteshield"), 1, RARE ), - new ItemDrop( i("adamant kiteshield"), 1, VERY_RARE ), - new ItemDrop( 4105, 1, VERY_RARE ), - new ItemDrop( 556, 3, COMMON ), - new ItemDrop( i("chaos rune"), new int[]{3, 17}, COMMON ), - new ItemDrop( i("cosmic rune"), 2, UNCOMMON ), - new ItemDrop( i("fire rune"), new int[]{5, 12}, UNCOMMON ), - new ItemDrop( 995, new int[]{13, 35}, COMMON ), - new ItemDrop( 7937, 23, COMMON ), - new ItemDrop( 313, new int[]{7, 15}, COMMON ), - new ItemDrop( i("iron ore"), 1, UNCOMMON ), - new ItemDrop( i("eye of newt"), 1, UNCOMMON ), - new ItemDrop( 199, 1, COMMON ), - new ItemDrop( 203, 1, COMMON ), - new ItemDrop( 201, 1, COMMON ), - new ItemDrop( 205, 1, COMMON ), - new ItemDrop( 213, 1, COMMON ), - new ItemDrop( 207, 1, UNCOMMON ), - new ItemDrop( 209, 1, UNCOMMON ), - new ItemDrop( 211, 1, UNCOMMON ), - new ItemDrop( 2485, 1, UNCOMMON ), - new ItemDrop( 217, 1, UNCOMMON ), - new ItemDrop( 215, 1, UNCOMMON ), - }; - - public static final ItemDrop[] infernalmage = { - new ItemDrop( 526, 1, ALWAYS ), - new ItemDrop( i("staff"), 1, COMMON ), - new ItemDrop( i("staff of fire"), 1, UNCOMMON ), - new ItemDrop( i("lava battlestaff"), 1, RARE ), - new ItemDrop( i("mystic fire staff"), 1, RARE ), - new ItemDrop( 4099, 1, RARE ), - new ItemDrop( 4107, 1, RARE ), - new ItemDrop( i("earth rune"), new int[]{5, 36}, COMMON ), - new ItemDrop( i("fire rune"), new int[]{10, 18}, COMMON ), - new ItemDrop( i("death rune"), 7, COMMON ), - new ItemDrop( i("blood rune"), new int[]{4, 7}, UNCOMMON ), - new ItemDrop( i("air rune"), new int[]{10, 18}, UNCOMMON ), - new ItemDrop( i("mind rune"), 18, UNCOMMON ), - new ItemDrop( i("water rune"), new int[]{10, 18}, UNCOMMON ), - new ItemDrop( i("body rune"), 18, UNCOMMON ), - new ItemDrop( 995, new int[]{1, 30}, COMMON ), - }; - - public static final ItemDrop[] bloodveld = { - new ItemDrop( 526, 1, ALWAYS ), - new ItemDrop( i("steel axe"), 1, COMMON ), - new ItemDrop( i("steel scimitar"), 1, UNCOMMON ), - new ItemDrop( i("steel full helm"), 1, COMMON ), - new ItemDrop( i("mithril sq shield"), 1, UNCOMMON ), - new ItemDrop( i("mithril chainbody"), 1, UNCOMMON ), - new ItemDrop( i("black boots"), 1, RARE ), - new ItemDrop( i("rune med helm"), 1, RARE ), - new ItemDrop( i("rune full helm"), 1, RARE ), - new ItemDrop( i("fire rune"), 60, COMMON ), - new ItemDrop( i("blood rune"), new int[]{3, 30}, UNCOMMON ), - new ItemDrop( 995, new int[]{10, 460}, COMMON ), - new ItemDrop( i("gold ore"), 1, UNCOMMON ), - new ItemDrop( 526, new int[]{1, 2}, UNCOMMON ), - new ItemDrop( i("big bones"), new int[]{1, 5}, UNCOMMON ), - new ItemDrop( i("meat pizza"), 1, UNCOMMON ), - new ItemDrop( i("gold ring"), 1, RARE ), - new ItemDrop( 199, 1, UNCOMMON ), - new ItemDrop( 201, 1, UNCOMMON ), - new ItemDrop( 203, 1, UNCOMMON ), - new ItemDrop( 205, 1, UNCOMMON ), - new ItemDrop( 207, 1, UNCOMMON ), - new ItemDrop( 209, 1, UNCOMMON ), - new ItemDrop( 211, 1, UNCOMMON ), - new ItemDrop( 213, 1, UNCOMMON ), - new ItemDrop( 215, 1, UNCOMMON ), - new ItemDrop( 2485, 1, UNCOMMON ), - new ItemDrop( 217, 1, UNCOMMON ), - }; - - public static final ItemDrop[] dwarf = { - new ItemDrop( 526, 1, ALWAYS ), - new ItemDrop( i("bronze pickaxe"), 1, COMMON ), - new ItemDrop( i("tin ore"), 1, COMMON ), - new ItemDrop( i("bronze bar"), 1, COMMON ), - new ItemDrop( i("copper ore"), 1, COMMON ), - new ItemDrop( i("iron ore"), 1, COMMON ), - new ItemDrop( i("iron pickaxe"), 1, UNCOMMON ), - new ItemDrop( i("coal"), 1, UNCOMMON ), - new ItemDrop( i("iron bar"), 1, UNCOMMON ), - new ItemDrop( i("nature rune"), 2, RARE ), - new ItemDrop( i("chaos rune"), 2, RARE ), - new ItemDrop( i("bronze med helm"), 1, COMMON ), - new ItemDrop( i("bronze battleaxe"), 1, UNCOMMON ), - new ItemDrop( i("iron battleaxe"), 1, UNCOMMON ), - new ItemDrop( 995, new int[]{3, 30}, COMMON ), - new ItemDrop( i("hammer"), 1, UNCOMMON ), - new ItemDrop( i("dwarven stout"), 1, UNCOMMON ), - }; - - public static final ItemDrop[] mossgiant = { - new ItemDrop( i("big bones"), 1, ALWAYS ), - new ItemDrop( i("magic staff"), 1, COMMON ), - new ItemDrop( i("mithril spear"), 1, COMMON ), - new ItemDrop( i("mithril sword"), 1, COMMON ), - new ItemDrop( i("steel arrow"), 30, COMMON ), - new ItemDrop( i("iron arrow"), 15, COMMON ), - new ItemDrop( i("adamant sword"), 1, RARE ), - new ItemDrop( i("black full helm"), 1, COMMON ), - new ItemDrop( i("black sq shield"), 1, COMMON ), - new ItemDrop( i("steel med helm"), 1, COMMON ), - new ItemDrop( i("steel kiteshield"), 1, UNCOMMON ), - new ItemDrop( i("air rune"), 18, COMMON ), - new ItemDrop( i("cosmic rune"), 3, COMMON ), - new ItemDrop( i("earth rune"), 27, COMMON ), - new ItemDrop( i("nature rune"), 6, COMMON ), - new ItemDrop( i("law rune"), new int[]{2, 4}, UNCOMMON ), - new ItemDrop( i("blood rune"), 1, UNCOMMON ), - new ItemDrop( i("chaos rune"), 7, UNCOMMON ), - new ItemDrop( i("death rune"), new int[]{1, 2}, RARE ), - new ItemDrop( i("strawberry seed"), 1, COMMON ), - new ItemDrop( i("wildblood seed"), 1, COMMON ), - new ItemDrop( i("tarromin seed"), 1, COMMON ), - new ItemDrop( i("harralander seed"), 1, COMMON ), - new ItemDrop( i("jangerberry seed"), 1, COMMON ), - new ItemDrop( i("marentill seed"), 1, COMMON ), - new ItemDrop( i("belladonna seed"), 1, UNCOMMON ), - new ItemDrop( i("limpwurt seed"), 1, UNCOMMON ), - new ItemDrop( i("toadflax seed"), 1, UNCOMMON ), - new ItemDrop( i("whiteberry seed"), 1, UNCOMMON ), - new ItemDrop( 5282, 1, UNCOMMON ), - new ItemDrop( i("avantoe seed"), 1, RARE ), - new ItemDrop( i("cactus seed"), 1, RARE ), - new ItemDrop( i("irit seed"), 1, RARE ), - new ItemDrop( i("kwuarm seed"), 1, RARE ), - new ItemDrop( i("poison ivy seed"), 1, RARE ), - new ItemDrop( i("ranarr seed"), 1, RARE ), - new ItemDrop( i("cadantine seed"), 1, RARE ), - new ItemDrop( i("lantadyme seed"), 1, RARE ), - new ItemDrop( i("watermelon seed"), 1, RARE ), - new ItemDrop( i("dwarf weed seed"), 1, VERY_RARE ), - new ItemDrop( 205, 1, COMMON ), - new ItemDrop( 201, 1, COMMON ), - new ItemDrop( 203, 1, COMMON ), - new ItemDrop( 199, 1, COMMON ), - new ItemDrop( 211, 1, RARE ), - new ItemDrop( 215, 1, RARE ), - new ItemDrop( 217, 1, RARE ), - new ItemDrop( 209, 1, RARE ), - new ItemDrop( 2485, 1, RARE ), - new ItemDrop( 207, 1, RARE ), - new ItemDrop( 995, new int[]{2, 500}, COMMON ), - new ItemDrop( i("steel bar"), 1, COMMON ), - new ItemDrop( i("coal"), 1, UNCOMMON ), - new ItemDrop( i("spinach roll"), 1, UNCOMMON ), - new ItemDrop( i("fire talisman"), 1, RARE ), - }; - - public static final ItemDrop[] goblin = { - new ItemDrop( 526, 1, ALWAYS ), - new ItemDrop( 995, new int[]{1, 26}, COMMON ), - new ItemDrop( i("iron dagger"), 1, COMMON ), - new ItemDrop( i("bronze arrow"), new int[]{4, 16}, COMMON ), - new ItemDrop( i("bronze med helm"), 1, COMMON ), - new ItemDrop( i("bronze sq shield"), 1, COMMON ), - new ItemDrop( i("air rune"), new int[]{2, 4}, COMMON ), - new ItemDrop( i("body rune"), new int[]{2, 11}, COMMON ), - new ItemDrop( i("earth rune"), 4, COMMON ), - new ItemDrop( i("water rune"), 6, COMMON ), - new ItemDrop( i("air talisman"), 1, COMMON ), - new ItemDrop( i("chef's hat"), 1, COMMON ), - new ItemDrop( i("goblin mail"), 1, COMMON ), - new ItemDrop( i("bronze full helm"), 1, UNCOMMON ), - new ItemDrop( i("bronze sword"), 1, UNCOMMON ), - new ItemDrop( i("bronze longsword"), 1, UNCOMMON ), - new ItemDrop( i("iron arrow"), new int[]{3, 6}, UNCOMMON ), - new ItemDrop( i("bronze chainbody"), 1, UNCOMMON ), - new ItemDrop( i("staff of air"), 1, RARE ), - new ItemDrop( i("bronze kiteshield"), 1, UNCOMMON ), - new ItemDrop( i("raw chicken"), 1, UNCOMMON ), - new ItemDrop( i("fire talisman"), 1, UNCOMMON ), - new ItemDrop( i("mind rune"), new int[]{2, 19}, UNCOMMON ), - new ItemDrop( i("earth talisman"), 1, UNCOMMON ), - new ItemDrop( i("bronze axe"), 1, RARE ), - new ItemDrop( i("bronze scimitar"), 1, RARE ), - new ItemDrop( i("iron full helm"), 1, RARE ), - new ItemDrop( i("leather body"), 1, RARE ), - new ItemDrop( i("cape"), 1, RARE ), - new ItemDrop( i("chaos rune"), 1, RARE ), - new ItemDrop( i("nature rune"), 1, RARE ), - new ItemDrop( i("mind talisman"), 1, RARE ), - new ItemDrop( 946, 1, RARE ), - new ItemDrop( i("tin ore"), 1, RARE ), - }; - - public static final ItemDrop[] lesserdemon = { - new ItemDrop( i("ashes"), 1, ALWAYS ), - new ItemDrop( 995, new int[]{10, 650}, COMMON ), - new ItemDrop( i("steel axe"), 1, COMMON ), - new ItemDrop( i("steel scimitar"), 1, COMMON ), - new ItemDrop( i("steel full helm"), 1, COMMON ), - new ItemDrop( i("black 2h sword"), 1, COMMON ), - new ItemDrop( i("mithril sq shield"), 1, UNCOMMON ), - new ItemDrop( i("mithril chainbody"), 1, UNCOMMON ), - new ItemDrop( i("fire rune"), new int[]{6, 120}, UNCOMMON ), - new ItemDrop( i("chaos rune"), new int[]{7, 24}, UNCOMMON ), - new ItemDrop( 445, new int[]{2, 4}, UNCOMMON ), - new ItemDrop( i("jug of wine"), 1, UNCOMMON ), - new ItemDrop( i("death rune"), new int[]{3, 6}, RARE ), - new ItemDrop( i("black kiteshield"), 1, RARE ), - new ItemDrop( i("rune med helm"), 1, VERY_RARE ), - }; - - public static final ItemDrop[] greaterdemon = { - new ItemDrop( i("steel axe"), 1, COMMON ), - new ItemDrop( i("steel battleaxe"), 1, COMMON ), - new ItemDrop( i("steel 2h sword"), 1, COMMON ), - new ItemDrop( i("mithril kitesiheld"), 1, UNCOMMON ), - new ItemDrop( i("black 2h sword"), 1, UNCOMMON ), - new ItemDrop( i("rune full helm"), 1, RARE ), - new ItemDrop( i("adamant platelegs"), 1, RARE ), - new ItemDrop( i("adamant 2h sword"), 1, VERY_RARE ), - new ItemDrop( 995, new int[]{9, 630}, COMMON ), - new ItemDrop( i("fire rune"), 75, COMMON ), - new ItemDrop( i("chaos rune"), 15, COMMON ), - new ItemDrop( i("death rune"), 5, COMMON ), - new ItemDrop( i("thread"), 10, UNCOMMON ), - new ItemDrop( i("tuna"), 1, UNCOMMON ), - new ItemDrop( i("gold bar"), 1, UNCOMMON ), - new ItemDrop( i("ashes"), 1, ALWAYS ), - }; - - public static final ItemDrop[] guard = { - new ItemDrop( i("bones"), 1, ALWAYS ), - new ItemDrop( 995, new int[]{1, 25}, COMMON ), - new ItemDrop( i("grapes"), 1, COMMON ), - new ItemDrop( i("air rune"), 6, COMMON ), - new ItemDrop( i("earth rune"), new int[]{3, 6}, COMMON ), - new ItemDrop( i("fire rune"), 2, COMMON ), - new ItemDrop( i("body talisman"), 1, COMMON ), - new ItemDrop( i("iron dagger"), 1, COMMON ), - new ItemDrop( i("law talisman"), 1, RARE ), - new ItemDrop( i("iron arrow"), new int[]{1, 2}, COMMON ), - new ItemDrop( i("bronze arrow"), new int[]{1, 5}, UNCOMMON ), - new ItemDrop( i("steel arrow"), new int[]{1, 10}, UNCOMMON ), - new ItemDrop( i("law rune"), 2, RARE ), - new ItemDrop( i("nature rune"), 1, RARE ), - new ItemDrop( i("chaos rune"), new int[]{1, 2}, RARE ), - new ItemDrop( i("steel warhammer"), 1, RARE ), - new ItemDrop( 1947, new int[]{1, 3}, RARE ), - new ItemDrop( i("iron ore"), 1, RARE ), - new ItemDrop( i("iron platebody"), 1, RARE ), - new ItemDrop( i("steel bar"), 1, RARE ), - new ItemDrop( i("potato seed"), new int[]{4, 6}, COMMON ), - new ItemDrop( i("onion seed"), 4, COMMON ), - new ItemDrop( i("cabbage seed"), 4, UNCOMMON ), - new ItemDrop( i("tomato seed"), new int[]{3, 4}, UNCOMMON ), - new ItemDrop( i("strawberry seed"), new int[]{1, 3}, RARE ), - new ItemDrop( i("watermelon seed"), new int[]{2, 4}, RARE ), - new ItemDrop( 199, 1, RARE ), - }; - - public static final ItemDrop[] alkharidwarrior = { - new ItemDrop( i("bones"), 1, ALWAYS ), - new ItemDrop( i("air rune"), 5, UNCOMMON ), - new ItemDrop( i("mind rune"), 9, COMMON ), - new ItemDrop( i("fire rune"), 6, COMMON ), - new ItemDrop( i("earth rune"), 4, COMMON ), - new ItemDrop( i("chaos rune"), 2, RARE ), - new ItemDrop( i("law rune"), 1, VERY_RARE ), - new ItemDrop( i("bronze med helm"), 1, COMMON ), - new ItemDrop( i("bronze arrow"), 7, COMMON ), - new ItemDrop( i("iron dagger"), 1, UNCOMMON ), - new ItemDrop( i("iron med helm"), 1, UNCOMMON ), - new ItemDrop( i("staff of air"), 1, UNCOMMON ), - new ItemDrop( 199, 1, COMMON ), - new ItemDrop( 201, 1, COMMON ), - new ItemDrop( 203, 1, UNCOMMON ), - new ItemDrop( 205, 1, UNCOMMON ), - new ItemDrop( 207, 1, UNCOMMON ), - new ItemDrop( 209, 1, UNCOMMON ), - new ItemDrop( 211, 1, UNCOMMON ), - new ItemDrop( 213, 1, UNCOMMON ), - new ItemDrop( 215, 1, UNCOMMON ), - new ItemDrop( 2485, 1, UNCOMMON ), - new ItemDrop( 217, 1, UNCOMMON ), - }; - - public static final ItemDrop[] icewarrior = { - new ItemDrop( i("bones"), 1, ALWAYS ), - new ItemDrop( 995, new int[]{1, 15}, COMMON ), - new ItemDrop( i("iron battleaxe"), 1, COMMON ), - new ItemDrop( i("mithril arrow"), 3, COMMON ), - new ItemDrop( i("cosmic rune"), 2, COMMON ), - new ItemDrop( i("chaos rune"), 3, COMMON ), - new ItemDrop( i("nature rune"), 4, COMMON ), - new ItemDrop( i("law rune"), 2, COMMON ), - new ItemDrop( i("mithril mace"), 1, UNCOMMON ), - new ItemDrop( i("adamant arrow"), 2, UNCOMMON ), - new ItemDrop( i("tarromin seed"), 1, COMMON ), - new ItemDrop( i("death rune"), 2, UNCOMMON ), - new ItemDrop( i("mind rune"), 24, RARE ), - new ItemDrop( i("mithril ore"), 1, RARE ), - new ItemDrop( i("guam seed"), 1, COMMON ), - new ItemDrop( i("iron 2h sword"), 1, UNCOMMON ), - new ItemDrop( i("harralander seed"), 1, COMMON ), - new ItemDrop( i("steel sword"), 1, VERY_RARE ), - new ItemDrop( i("limpwurt seed"), 1, COMMON ), - new ItemDrop( i("black kiteshield"), 1, VERY_RARE ), - new ItemDrop( i("wildblood seed"), 1, COMMON ), - new ItemDrop( i("mithril sq shield"), 1, VERY_RARE ), - new ItemDrop( i("strawberry seed"), 1, COMMON ), - new ItemDrop( i("rune longsword"), 1, VERY_RARE ), - new ItemDrop( i("jangerberry seed"), 1, COMMON ), - new ItemDrop( i("marentill seed"), 1, UNCOMMON ), - new ItemDrop( i("cadantine seed"), 1, UNCOMMON ), - new ItemDrop( i("bittecape mushroom spore"), 1, UNCOMMON ), - new ItemDrop( i("irit seed"), 1, UNCOMMON ), - new ItemDrop( i("avantoe seed"), 1, UNCOMMON ), - new ItemDrop( i("dwarf weed seed"), 1, RARE ), - new ItemDrop( i("toadflax seed"), 1, RARE ), - new ItemDrop( i("ranarr seed"), 1, RARE ), - new ItemDrop( i("whiteberry seed"), 1, RARE ), - new ItemDrop( i("poison ivy seed"), 1, RARE ), - new ItemDrop( i("kwuarm seed"), 1, RARE ), - new ItemDrop( i("cactus seed"), 1, RARE ), - new ItemDrop( i("watermelon seed"), 1, RARE ), - new ItemDrop( i("belladonna seed"), 1, VERY_RARE ), - new ItemDrop( i("lantadyme seed"), 1, VERY_RARE ), - new ItemDrop( 199, 1, COMMON ), - new ItemDrop( 201, 1, COMMON ), - new ItemDrop( 203, 1, COMMON ), - new ItemDrop( 205, 1, COMMON ), - new ItemDrop( 207, 1, UNCOMMON ), - new ItemDrop( 209, 1, UNCOMMON ), - new ItemDrop( 211, 1, UNCOMMON ), - new ItemDrop( 213, 1, RARE ), - new ItemDrop( 215, 1, RARE ), - new ItemDrop( 217, 1, RARE ), - new ItemDrop( 2485, 1, RARE ), - }; - - public static final ItemDrop[] blackknight = { - new ItemDrop( 526, 1, ALWAYS ), - new ItemDrop( 291, 1, ALWAYS ), - new ItemDrop( i("iron sword"), 1, COMMON ), - new ItemDrop( i("iron full helm"), 1, COMMON ), - new ItemDrop( i("steel mace"), 1, COMMON ), - new ItemDrop( i("black full helm"), 1, RARE ), - new ItemDrop( i("mithril arrow"), 3, UNCOMMON ), - new ItemDrop( i("black 2h sword"), 1, RARE ), - new ItemDrop( i("black sword"), 1, RARE ), - new ItemDrop( i("mind rune"), new int[]{2, 9}, UNCOMMON ), - new ItemDrop( i("earth rune"), 10, UNCOMMON ), - new ItemDrop( i("body rune"), 9, UNCOMMON ), - new ItemDrop( i("cosmic rune"), 7, UNCOMMON ), - new ItemDrop( i("chaos rune"), new int[]{4, 6}, UNCOMMON ), - new ItemDrop( i("death rune"), 2, UNCOMMON ), - new ItemDrop( i("law rune"), new int[]{2, 4}, UNCOMMON ), - new ItemDrop( i("nature rune"), 6, RARE ), - new ItemDrop( 199, 1, COMMON ), - new ItemDrop( 201, 1, COMMON ), - new ItemDrop( 203, 1, COMMON ), - new ItemDrop( 205, 1, COMMON ), - new ItemDrop( 207, 1, UNCOMMON ), - new ItemDrop( 209, 1, UNCOMMON ), - new ItemDrop( 211, 1, UNCOMMON ), - new ItemDrop( 213, 1, UNCOMMON ), - new ItemDrop( 215, 1, UNCOMMON ), - new ItemDrop( 2485, 1, UNCOMMON ), - new ItemDrop( 217, 1, UNCOMMON ), - }; - - public static final ItemDrop[] whiteknight = { - new ItemDrop( 526, 1, ALWAYS ), - new ItemDrop( i("water rune"), new int[]{20, 47}, COMMON ), - new ItemDrop( i("body rune"), new int[]{9, 24}, COMMON ), - new ItemDrop( i("mind rune"), new int[]{5, 7}, COMMON ), - new ItemDrop( i("choas rune"), new int[]{2, 5}, UNCOMMON ), - new ItemDrop( i("nature rune"), new int[]{4, 7}, UNCOMMON ), - new ItemDrop( i("law rune"), new int[]{2, 5}, RARE ), - new ItemDrop( i("blood rune"), new int[]{2, 5}, RARE ), // members - new ItemDrop( i("iron longsword"), 1, COMMON ), - new ItemDrop( i("steel sword"), 1, COMMON ), - new ItemDrop( i("mithril arrow"), new int[]{5, 14}, COMMON ), - new ItemDrop( i("adamant arrow"), new int[]{2, 5}, UNCOMMON ), - new ItemDrop( i("steel med helm"), 1, COMMON ), - new ItemDrop( i("potato seed"), 4, COMMON ), - new ItemDrop( i("tomato seed"), 3, COMMON ), - new ItemDrop( i("cabbage seed"), 4, COMMON ), - new ItemDrop( i("onion seed"), 4, COMMON ), - new ItemDrop( i("sweetcorn seed"), 3, UNCOMMON ), - new ItemDrop( i("watermelon seed"), 2, UNCOMMON ), - new ItemDrop( i("strawberry seed"), 2, RARE ), - new ItemDrop( 995, new int[]{1, 200}, COMMON ), - new ItemDrop( i("pot of flour"), 1, RARE ), - new ItemDrop( 2335, 1, UNCOMMON ), - new ItemDrop( i("iron ore"), 1, UNCOMMON ), - new ItemDrop( i("iron bar"), new int[]{1, 2}, COMMON ), - new ItemDrop( 199, 1, UNCOMMON ), - new ItemDrop( 201, 1, UNCOMMON ), - new ItemDrop( 203, 1, UNCOMMON ), - new ItemDrop( 205, 1, UNCOMMON ), - new ItemDrop( 207, 1, UNCOMMON ), - new ItemDrop( 209, 1, RARE ), - new ItemDrop( 211, 1, RARE ), - new ItemDrop( 213, 1, RARE ), - new ItemDrop( 215, 1, RARE ), - new ItemDrop( 2485, 1, RARE ), - new ItemDrop( 217, 1, RARE ), - }; - - public static final ItemDrop[] icegiant = { - new ItemDrop( i("big bones"), 1, ALWAYS ), - new ItemDrop( i("iron battleaxe"), 1, COMMON ), - new ItemDrop( i("iron platelegs"), 1, COMMON ), - new ItemDrop( i("iron 2h sword"), 1, COMMON ), - new ItemDrop( i("steel axe"), 1, COMMON ), - new ItemDrop( i("steel sword"), 1, COMMON ), - new ItemDrop( i("black kiteshield"), 1, COMMON ), - new ItemDrop( i("water rune"), 12, COMMON ), - new ItemDrop( i("mind rune"), 24, COMMON ), - new ItemDrop( i("body rune"), 37, COMMON ), - new ItemDrop( i("cosmic rune"), new int[]{2, 4}, COMMON ), - new ItemDrop( 995, new int[]{8, 454}, COMMON ), - new ItemDrop( i("adamant arrow"), 5, UNCOMMON ), - new ItemDrop( i("law rune"), 3, UNCOMMON ), - new ItemDrop( i("nature rune"), 6, UNCOMMON ), - new ItemDrop( i("banana"), 1, UNCOMMON ), - new ItemDrop( i("jug of wine"), 1, UNCOMMON ), - new ItemDrop( i("mithril ore"), 1, UNCOMMON ), - new ItemDrop( i("mithril sq shield"), 1, RARE ), - new ItemDrop( i("mithril mace"), 1, RARE ), - new ItemDrop( i("death rune"), new int[]{2, 4}, RARE ), - }; - - public static final ItemDrop[] hobgoblin = { - new ItemDrop( i("bones"), 1, ALWAYS ), - new ItemDrop( 995, new int[]{1, 71}, COMMON ), - new ItemDrop( i("iron sword"), 1, COMMON ), - new ItemDrop( i("iron longsword"), 1, UNCOMMON ), - new ItemDrop( i("steel longsword"), 1, UNCOMMON ), - new ItemDrop( i("steel dagger"), 1, UNCOMMON ), - new ItemDrop( i("limpwurt root"), 1, UNCOMMON ), - new ItemDrop( i("water rune"), 2, UNCOMMON ), - new ItemDrop( i("body rune"), 6, UNCOMMON ), - new ItemDrop( i("fire rune"), 7, UNCOMMON ), - new ItemDrop( i("cosmic rune"), 2, UNCOMMON ), - new ItemDrop( i("chaos rune"), 3, UNCOMMON ), - new ItemDrop( i("nature rune"), 4, UNCOMMON ), - new ItemDrop( i("law rune"), 2, UNCOMMON ), - }; - - public static final ItemDrop[] pirate = { - new ItemDrop( i("bones"), 1, ALWAYS ), - new ItemDrop( i("air rune"), 10, COMMON ), - new ItemDrop( i("earth rune"), 9, COMMON ), - new ItemDrop( i("fire rune"), 5, COMMON ), - new ItemDrop( i("chaos rune"), 2, COMMON ), - new ItemDrop( i("nature rune"), 2, COMMON ), - new ItemDrop( i("law rune"), 2, RARE ), - new ItemDrop( i("bronze scimitar"), 1, COMMON ), - new ItemDrop( i("bronze arrow"), new int[]{9, 12}, COMMON ), - new ItemDrop( i("iron dagger"), 1, COMMON ), - new ItemDrop( i("staff of air"), 1, UNCOMMON ), - new ItemDrop( 995, new int[]{4, 55}, COMMON ), - new ItemDrop( i("iron bar"), 1, RARE ), - new ItemDrop( i("chef's hat"), 1, RARE ), - new ItemDrop( i("limpwurt root"), 1, RARE ), - new ItemDrop( i("tinderbox"), 1, RARE ), - new ItemDrop( i("iron platebody"), 1, VERY_RARE ), - new ItemDrop( i("eye patch"), 1, COMMON ), - new ItemDrop( i("knife"), 1, RARE ), - }; - - public static final ItemDrop[] zombie = { - new ItemDrop( i("bones"), 1, ALWAYS ), - new ItemDrop( 995, new int[]{1, 25}, COMMON ), - new ItemDrop( i("fishing bait"), 7, COMMON ), - new ItemDrop( i("bronze axe"), 1, UNCOMMON ), - new ItemDrop( i("iron axe"), 1, UNCOMMON ), - new ItemDrop( i("bronze med helm"), 1, UNCOMMON ), - new ItemDrop( i("iron mace"), 1, UNCOMMON ), - new ItemDrop( i("bronze kiteshield"), 1, UNCOMMON ), - new ItemDrop( i("iron arrow"), 5, UNCOMMON ), - new ItemDrop( i("iron dagger"), 1, UNCOMMON ), - new ItemDrop( i("steel arrow"), new int[]{5, 32}, UNCOMMON ), - new ItemDrop( i("mithril arrow"), 2, UNCOMMON ), - new ItemDrop( i("chaos rune"), 4, UNCOMMON ), - new ItemDrop( i("air rune"), 3, UNCOMMON ), - new ItemDrop( i("fire rune"), 7, UNCOMMON ), - new ItemDrop( i("mind rune"), 5, UNCOMMON ), - new ItemDrop( i("body rune"), new int[]{3, 5}, UNCOMMON ), - new ItemDrop( i("nature rune"), 5, UNCOMMON ), - new ItemDrop( i("law rune"), 3, UNCOMMON ), - new ItemDrop( i("cosmic rune"), 2, UNCOMMON ), - new ItemDrop( i("tinderbox"), 1, UNCOMMON ), - new ItemDrop( i("copper ore"), 1, UNCOMMON ), - new ItemDrop( i("iron ore"), 1, UNCOMMON ), - new ItemDrop( i("tin ore"), 1, UNCOMMON ), - new ItemDrop( i("eye of newt"), 1, UNCOMMON ), - new ItemDrop( i("ashes"), 1, UNCOMMON ), - new ItemDrop( i("half a meat pie"), 1, VERY_RARE ), - }; - - public static final ItemDrop[] skeleton = { - new ItemDrop(i("bones"), 1, ALWAYS), - new ItemDrop(i("iron dagger"), 1, COMMON), - new ItemDrop(i("iron med helm"), 1, COMMON), - new ItemDrop(i("air rune"), 12, COMMON), - new ItemDrop(i("water rune"), 5, COMMON), - new ItemDrop(i("earth rune"), 3, COMMON), - new ItemDrop(i("fire rune"), 2, COMMON), - new ItemDrop(i("mind rune"), new int[]{1, 24}, COMMON), - new ItemDrop(995, 10, COMMON), - new ItemDrop(i("bronze arrow"), new int[]{1, 10}, COMMON), - new ItemDrop(i("iron mace"), 1, COMMON), - new ItemDrop(i("iron axe"), 1, UNCOMMON), - new ItemDrop(i("cosmic rune"), 2, UNCOMMON), - new ItemDrop(i("iron arrow"), 5, UNCOMMON), - new ItemDrop(i("iron sword"), 1, UNCOMMON), - new ItemDrop(i("chaos rune"), 4, UNCOMMON), - new ItemDrop(i("nature rune"), new int[]{1, 2}, UNCOMMON), - new ItemDrop(i("iron sword"), 1, UNCOMMON), - new ItemDrop(i("law rune"), 2, UNCOMMON), - new ItemDrop(i("bucket"), 1, UNCOMMON), - new ItemDrop(1947, 1, UNCOMMON), - new ItemDrop(i("iron ore"), 1, UNCOMMON), - new ItemDrop(i("bronze bar"), 1, UNCOMMON), - new ItemDrop(i("iron scimitar"), 1, RARE), - new ItemDrop(i("steel arrow"), 1, RARE), - new ItemDrop(i("fire talisman"), 1, RARE), - new ItemDrop(i("adamant kiteshield"), 1, VERY_RARE), - }; - - public static final ItemDrop[] hillgiant = { - new ItemDrop(i("big bones"), 1, ALWAYS), - new ItemDrop(i("limpwurt root"), 1, UNCOMMON), - new ItemDrop(i("beer"), 1, COMMON), - new ItemDrop(i("iron arrow"), 3, COMMON), - new ItemDrop(i("iron full helm"), 1, COMMON), - new ItemDrop(i("water rune"), 7, COMMON), - new ItemDrop(995, new int[]{8, 23}, COMMON), - new ItemDrop(i("body talisman"), 1, UNCOMMON), - new ItemDrop(i("fire rune"), 15, UNCOMMON), - new ItemDrop(i("law rune"), new int[]{1, 2}, UNCOMMON), - new ItemDrop(i("nature rune"), 6, UNCOMMON), - new ItemDrop(i("mind rune"), 3, UNCOMMON), - new ItemDrop(i("steel longsword"), 1, UNCOMMON), - new ItemDrop(i("steel arrow"), new int[]{10, 15}, UNCOMMON), - new ItemDrop(i("iron kiteshield"), 1, UNCOMMON), - new ItemDrop(i("iron 2h sword"), 1, RARE), - new ItemDrop(i("mithril arrow"), 1, RARE), - new ItemDrop(i("steel dagger"), 1, RARE), - new ItemDrop(i("death rune"), 2, RARE), - new ItemDrop(i("chaos rune"), 2, RARE), - new ItemDrop(i("steel platebody"), 1, VERY_RARE), - new ItemDrop(i("adamant arrow"), new int[]{1, 5}, VERY_RARE) - }; - - public static final ItemDrop[] deadlyredspider = { - new ItemDrop( i("red spiders' eggs"), 1, UNCOMMON ), - }; - - public static final ItemDrop[] reddragon = { - new ItemDrop( i("dragon bones"), 1, ALWAYS ), - new ItemDrop( i("red dragonhide"), 1, ALWAYS ), - new ItemDrop( i("mithril 2h sword"), 1, COMMON ), - new ItemDrop( i("mithril javelin"), 1, COMMON ), - new ItemDrop( i("mithril axe"), 1, COMMON ), - new ItemDrop( i("mithril kiteshield"), 1, UNCOMMON ), - new ItemDrop( i("adamant platebody"), 1, UNCOMMON ), - new ItemDrop( i("mithril battleaxe"), 1, UNCOMMON ), - new ItemDrop( i("rune arrow"), 4, UNCOMMON ), - new ItemDrop( i("rune dart"), 8, UNCOMMON ), - new ItemDrop( i("rune longsword"), 1, UNCOMMON ), - new ItemDrop( i("law rune"), 4, UNCOMMON ), - new ItemDrop( i("death rune"), 5, UNCOMMON ), - new ItemDrop( i("blood rune"), 2, UNCOMMON ), - new ItemDrop( 199, 1, COMMON ), - new ItemDrop( 201, 1, COMMON ), - new ItemDrop( 203, 1, COMMON ), - new ItemDrop( 205, 1, COMMON ), - new ItemDrop( 207, 1, UNCOMMON ), - new ItemDrop( 209, 1, UNCOMMON ), - new ItemDrop( 211, 1, UNCOMMON ), - new ItemDrop( 213, 1, UNCOMMON ), - new ItemDrop( 215, 1, UNCOMMON ), - new ItemDrop( 2485, 1, UNCOMMON ), - new ItemDrop( 217, 1, UNCOMMON ), - new ItemDrop( 995, new int[]{30, 660}, COMMON ), - new ItemDrop( i("chocolate cake"), 3, UNCOMMON ), - new ItemDrop( i("adamant bar"), 1, UNCOMMON ), - }; - - public static final ItemDrop[] rat = { - new ItemDrop(i("bones"), 1, ALWAYS), - }; - - public static final ItemDrop[] cow = { - new ItemDrop(i("bones"), 1, ALWAYS), - new ItemDrop(i("cowhide"), 1, ALWAYS), - new ItemDrop(i("raw beef"), 1, ALWAYS), - }; - - public static final ItemDrop[] chicken = { - new ItemDrop(i("bones"), 1, ALWAYS), - new ItemDrop(i("feather"), new int[]{5, 15}, ALWAYS), - new ItemDrop(i("raw chicken"), 1, ALWAYS), - new ItemDrop(i("egg"), 1, UNCOMMON), - }; - - public static final ItemDrop[] rockcrab = { - new ItemDrop( 207, 1, RARE ), - new ItemDrop( 211, 1, RARE ), - new ItemDrop( i("tarromin seed"), 1, RARE ), - new ItemDrop( i("ranarr seed"), 1, RARE ), - new ItemDrop( i("irit seed"), 1, VERY_RARE ), - new ItemDrop( i("bronze pickaxe"), 1, COMMON ), - new ItemDrop( i("iron pickaxe"), 1, COMMON ), - new ItemDrop( i("bronze axe"), 1, UNCOMMON ), - new ItemDrop( i("fire rune"), 7, COMMON ), - new ItemDrop( i("nature rune"), 4, UNCOMMON ), - new ItemDrop( i("chaos rune"), 1, RARE ), - new ItemDrop( i("cosmic talisman"), 1, RARE ), - new ItemDrop( 995, new int[]{3, 498}, COMMON ), - new ItemDrop( i("oyster"), new int[]{1, 2}, COMMON ), - new ItemDrop( 402, new int[]{1, 4}, COMMON ), - new ItemDrop( i("edible seaweed"), 2, RARE ), - new ItemDrop( i("oyster pearl"), 1, COMMON ), - new ItemDrop( i("empty oyster"), 1, COMMON ), - new ItemDrop( i("spinach roll"), 1, UNCOMMON ), - new ItemDrop( i("knife"), 1, UNCOMMON ), - new ItemDrop( i("iron ore"), 1, UNCOMMON ), - new ItemDrop( i("coal"), 2, UNCOMMON ), - new ItemDrop( i("copper ore"), 3, UNCOMMON ), - new ItemDrop( i("tin ore"), 3, UNCOMMON ), - new ItemDrop( i("fishing bait"), new int[]{1, 10}, UNCOMMON ), - new ItemDrop( 45, 5, UNCOMMON ), - new ItemDrop( i("limpwurt root"), 1, RARE ), - }; - - public static final ItemDrop[] kingblackdragon = { - new ItemDrop( i("dragon bones"), 1, ALWAYS ), - new ItemDrop( i("black dragonhide"), 1, ALWAYS ), - new ItemDrop( i("rune longsword"), 1, UNCOMMON ), - new ItemDrop( i("rune battleaxe"), 1, UNCOMMON ), - new ItemDrop( i("blood rune"), 50, COMMON ), - new ItemDrop( i("death rune"), 50, COMMON ), - new ItemDrop( i("law rune"), 50, UNCOMMON ), - new ItemDrop( i("mithril arrow"), 250, UNCOMMON ), - new ItemDrop( i("rune arrow"), 50, UNCOMMON ), - new ItemDrop( i("rune sq shield"), 1, UNCOMMON ), - new ItemDrop( i("rune platebody"), 1, UNCOMMON ), - new ItemDrop( i("dragon med helm"), 1, RARE ), - new ItemDrop( 2361, new int[]{1, 4}, UNCOMMON ), - new ItemDrop( 2363, new int[]{1, 2}, UNCOMMON ), - new ItemDrop( 443, 100, UNCOMMON ), - new ItemDrop( 445, 50, UNCOMMON ), - new ItemDrop( 453, 3, UNCOMMON ), - new ItemDrop( 995, new int[]{1000, 3000}, COMMON ), - new ItemDrop( 1516, 50, COMMON ), - new ItemDrop( 1514, 10, COMMON ), - }; - - public static final ItemDrop[] greendragon = { - new ItemDrop( i("dragon bones"), 1, ALWAYS ), - new ItemDrop( i("green dragonhide"), 1, ALWAYS ), - new ItemDrop( i("steel platelegs"), 1, COMMON ), - new ItemDrop( i("mithril kiteshield"), 1, UNCOMMON ), - new ItemDrop( i("adamant full helm"), 1, RARE ), - new ItemDrop( i("steel battleaxe"), 1, COMMON ), - new ItemDrop( i("mithril axe"), 1, COMMON ), - new ItemDrop( i("mithril spear"), 1, UNCOMMON ), - new ItemDrop( i("rune dagger"), 1, UNCOMMON ), - new ItemDrop( i("water rune"), new int[]{75, 150}, COMMON ), - new ItemDrop( i("fire rune"), 37, COMMON ), - new ItemDrop( i("nature rune"), new int[]{15, 75}, COMMON ), - new ItemDrop( i("law rune"), 3, COMMON ), - new ItemDrop( 995, new int[]{11, 440}, COMMON ), - new ItemDrop( i("bass"), 1, COMMON ), - new ItemDrop( i("adamantite ore"), 1, UNCOMMON ), - new ItemDrop( 209, 1, COMMON ), - new ItemDrop( 205, 1, COMMON ), - new ItemDrop( 199, 1, UNCOMMON ), - new ItemDrop( 211, 1, UNCOMMON ), - new ItemDrop( 215, 1, UNCOMMON ), - new ItemDrop( 201, 1, UNCOMMON ), - new ItemDrop( 203, 1, UNCOMMON ), - new ItemDrop( 207, 1, UNCOMMON ), - new ItemDrop( 213, 1, UNCOMMON ), - new ItemDrop( 2485, 1, UNCOMMON ), - new ItemDrop( 217, 1, UNCOMMON ), - new ItemDrop( i("nature talisman"), 1, RARE ), - }; - - public static final ItemDrop[] bluedragon = { - new ItemDrop( i("dragon bones"), 1, ALWAYS ), - new ItemDrop( i("blue dragonhide"), 1, ALWAYS ), - new ItemDrop( i("steel platelegs"), 1, COMMON ), - new ItemDrop( i("mithril kiteshield"), 1, UNCOMMON ), - new ItemDrop( i("adamant full helm"), 1, UNCOMMON ), - new ItemDrop( i("steel battleaxe"), 1, COMMON ), - new ItemDrop( i("mithril axe"), 1, COMMON ), - new ItemDrop( i("mithril spear"), 1, UNCOMMON ), - new ItemDrop( i("adamant dagger"), 1, UNCOMMON ), - new ItemDrop( i("rune dagger"), 1, RARE ), - new ItemDrop( i("water rune"), 75, COMMON ), - new ItemDrop( i("fire rune"), 37, UNCOMMON ), - new ItemDrop( i("nature rune"), 15, UNCOMMON ), - new ItemDrop( i("law rune"), 3, UNCOMMON ), - new ItemDrop( i("death rune"), 5, VERY_RARE ), - new ItemDrop( 995, new int[]{11, 454}, COMMON ), - new ItemDrop( i("bass"), 1, COMMON ), - new ItemDrop( i("adamantite ore"), 1, UNCOMMON ), - new ItemDrop( 199, 1, COMMON ), - new ItemDrop( 201, 1, COMMON ), - new ItemDrop( 203, 1, COMMON ), - new ItemDrop( 205, 1, COMMON ), - new ItemDrop( 207, 1, UNCOMMON ), - new ItemDrop( 211, 1, UNCOMMON ), - new ItemDrop( 213, 1, UNCOMMON ), - new ItemDrop( 215, 1, UNCOMMON ), - new ItemDrop( 2485, 1, UNCOMMON ), - new ItemDrop( 217, 1, RARE ), - }; - - public static final ItemDrop[] kalphiteworker = { - new ItemDrop( i("water rune"), 2, UNCOMMON ), - new ItemDrop( i("fire rune"), 7, UNCOMMON ), - new ItemDrop( i("body rune"), 6, UNCOMMON ), - new ItemDrop( i("cosmic rune"), 2, UNCOMMON ), - new ItemDrop( i("chaos rune"), 3, UNCOMMON ), - new ItemDrop( i("nature rune"), 4, UNCOMMON ), - new ItemDrop( i("law rune"), 2, UNCOMMON ), - new ItemDrop( i("blood rune"), 1, VERY_RARE ), - new ItemDrop( i("hard leather body"), 1, UNCOMMON ), - new ItemDrop( i("iron sword"), 1, UNCOMMON ), - new ItemDrop( i("iron dagger"), 1, UNCOMMON ), - new ItemDrop( i("steel dagger"), 1, UNCOMMON ), - new ItemDrop( i("mithril sq shield"), 1, UNCOMMON ), - new ItemDrop( i("steel sword"), 1, RARE ), - new ItemDrop( i("steel longsword"), 1, RARE ), - new ItemDrop( i("rune dagger"), 1, RARE ), - new ItemDrop( 995, new int[]{1, 1000}, COMMON ), - new ItemDrop( 1823, 1, COMMON ), - new ItemDrop( i("bucket of sand"), 1, UNCOMMON ), - new ItemDrop( 199, 1, COMMON ), - new ItemDrop( 201, 1, COMMON ), - new ItemDrop( 203, 1, COMMON ), - new ItemDrop( 205, 1, UNCOMMON ), - new ItemDrop( 207, 1, UNCOMMON ), - new ItemDrop( 209, 1, UNCOMMON ), - new ItemDrop( 211, 1, RARE ), - new ItemDrop( 213, 1, RARE ), - new ItemDrop( 215, 1, RARE ), - new ItemDrop( 2485, 1, RARE ), - new ItemDrop( 217, 1, RARE ), - }; - - public static final ItemDrop[] kalphitesoldier = { - new ItemDrop( i("steel full helm"), 1, COMMON ), - new ItemDrop( i("steel scimitar"), 1, COMMON ), - new ItemDrop( i("steel axe"), 1, COMMON ), - new ItemDrop( i("steel sword"), 1, UNCOMMON ), - new ItemDrop( i("steel dagger"), 1, UNCOMMON ), - new ItemDrop( i("hard leather body"), 1, UNCOMMON ), - new ItemDrop( i("adamant chain body"), 1, UNCOMMON ), - new ItemDrop( i("adamant sq shield"), 1, UNCOMMON ), - new ItemDrop( i("rune dagger"), 1, RARE ), - new ItemDrop( i("adamant scimitar"), 1, RARE ), - new ItemDrop( i("adamant axe"), 1, RARE ), - new ItemDrop( i("adamant med helm"), 1, RARE ), - new ItemDrop( i("adamant full helm"), 1, RARE ), - new ItemDrop( i("adamant dagger"), 1, RARE ), - new ItemDrop( i("rune chainbody"), 1, RARE ), - new ItemDrop( i("air rune"), new int[]{15, 27}, COMMON ), - new ItemDrop( i("fire rune"), new int[]{6, 60}, COMMON ), - new ItemDrop( i("water rune"), 2, UNCOMMON ), - new ItemDrop( i("body rune"), 2, UNCOMMON ), - new ItemDrop( i("chaos rune"), 12, UNCOMMON ), - new ItemDrop( i("cosmic rune"), 2, UNCOMMON ), - new ItemDrop( i("death rune"), new int[]{3, 12}, UNCOMMON ), - new ItemDrop( i("law rune"), new int[]{1, 2}, UNCOMMON ), - new ItemDrop( i("nature rune"), new int[]{1, 5}, RARE ), - new ItemDrop( 995, new int[]{10, 450}, COMMON ), - new ItemDrop( 3139, new int[]{1, 2}, UNCOMMON ), - new ItemDrop( i("lobster"), 1, UNCOMMON ), - new ItemDrop( 1823, 1, UNCOMMON ), - new ItemDrop( i("uncut diamond"), 1, RARE ), - new ItemDrop( i("uncut dragonstone"), 1, RARE ), - new ItemDrop( 205, 1, COMMON ), - new ItemDrop( 203, 1, RARE ), - new ItemDrop( 201, 1, RARE ), - new ItemDrop( 199, 1, RARE ), - new ItemDrop( 207, 1, RARE ), - new ItemDrop( 213, 1, RARE ), - new ItemDrop( 211, 1, RARE ), - new ItemDrop( 2485, 1, RARE ), - new ItemDrop( 209, 1, RARE ), - }; - - public static final ItemDrop[] kalphiteguardian = { - new ItemDrop( i("mithril kiteshield"), 1, UNCOMMON ), - new ItemDrop( i("adamant sq shield"), 1, UNCOMMON ), - new ItemDrop( i("rune med helm"), 1, UNCOMMON ), - new ItemDrop( i("rune chainbody"), 1, RARE ), - new ItemDrop( i("rune platebody"), 1, VERY_RARE ), - new ItemDrop( i("rune sq shield"), 1, VERY_RARE ), - new ItemDrop( i("steel axe"), 1, COMMON ), - new ItemDrop( i("steel battleaxe"), 1, COMMON ), - new ItemDrop( i("mithril longsword"), 1, COMMON ), - new ItemDrop( i("mithril sword"), 1, COMMON ), - new ItemDrop( i("adamant dagger"), 1, UNCOMMON ), - new ItemDrop( i("rune 2h sword"), 1, UNCOMMON ), - new ItemDrop( i("rune battleaxe"), 1, UNCOMMON ), - new ItemDrop( i("rune dagger"), 1, UNCOMMON ), - new ItemDrop( i("rune sword"), 1, RARE ), - new ItemDrop( i("air rune"), 50, UNCOMMON ), - new ItemDrop( i("blood rune"), 7, UNCOMMON ), - new ItemDrop( i("fire rune"), 37, UNCOMMON ), - new ItemDrop( i("law rune"), new int[]{3, 46}, UNCOMMON ), - new ItemDrop( i("death rune"), new int[]{18, 45}, UNCOMMON ), - new ItemDrop( i("chaos rune"), 10, UNCOMMON ), - new ItemDrop( i("adamant javelin"), 1, UNCOMMON ), - new ItemDrop( i("cosmic rune"), 2, UNCOMMON ), - new ItemDrop( i("rune arrow"), new int[]{42, 150}, UNCOMMON ), - new ItemDrop( 995, new int[]{28, 3000}, COMMON ), - new ItemDrop( i("lobster"), new int[]{1, 2}, UNCOMMON ), - new ItemDrop( 163, 1, UNCOMMON ), - new ItemDrop( 145, 1, UNCOMMON ), - new ItemDrop( 157, 1, UNCOMMON ), - new ItemDrop( 3138, new int[]{2, 4}, UNCOMMON ), - new ItemDrop( 199, 1, COMMON ), - new ItemDrop( 215, 1, COMMON ), - new ItemDrop( 203, 1, COMMON ), - new ItemDrop( 201, 1, COMMON ), - new ItemDrop( 205, 1, COMMON ), - new ItemDrop( 211, 1, UNCOMMON ), - new ItemDrop( 207, 1, UNCOMMON ), - new ItemDrop( 209, 1, UNCOMMON ), - new ItemDrop( 213, 1, UNCOMMON ), - new ItemDrop( 2485, 1, RARE ), - new ItemDrop( 217, 1, RARE ), - }; - - public static final ItemDrop[] kalphitequeen = { - new ItemDrop( i("rune spear"), 2, COMMON ), - new ItemDrop( i("rune axe"), 1, COMMON ), - new ItemDrop( i("rune battleaxe"), 1, UNCOMMON ), - new ItemDrop( i("rune 2h sword"), 1, UNCOMMON ), - new ItemDrop( i("rune warhammer"), new int[]{1, 2}, UNCOMMON ), - new ItemDrop( i("adamant longsword"), 1, UNCOMMON ), - new ItemDrop( i("lava battlestaff"), 2, UNCOMMON ), - new ItemDrop( i("dragon 2h sword"), 1, VERY_RARE + r(20) ), - new ItemDrop( i("rune chainbody"), new int[]{1, 3}, COMMON ), - new ItemDrop( i("dragon chainbody"), 1, VERY_RARE + r(30000) ), - new ItemDrop( i("mithril arrow"), 500, COMMON ), - new ItemDrop( i("iron arrow"), new int[]{1, 355}, UNCOMMON ), - new ItemDrop( i("steel arrow"), new int[]{1, 150}, UNCOMMON ), - new ItemDrop( i("rune arrow"), 100, UNCOMMON ), - new ItemDrop( i("blood rune"), new int[]{250, 300}, UNCOMMON ), - new ItemDrop( i("nature rune"), new int[]{200, 250}, COMMON ), - new ItemDrop( i("fire rune"), 600, COMMON ), - new ItemDrop( i("law rune"), new int[]{20, 250}, UNCOMMON ), - new ItemDrop( i("death rune"), new int[]{200, 300}, UNCOMMON ), - new ItemDrop( i("cosmic rune"), new int[]{200, 300}, UNCOMMON ), - new ItemDrop( i("sapphire"), 1, UNCOMMON ), - new ItemDrop( i("emerald"), 1, UNCOMMON ), - new ItemDrop( i("ruby"), 1, UNCOMMON ), - new ItemDrop( 414, 40, UNCOMMON ), - new ItemDrop( 246, new int[]{20, 40}, COMMON ), - new ItemDrop( i("amulet of power"), 1, COMMON ), - new ItemDrop( 995, new int[]{3000, 75000}, UNCOMMON ), - new ItemDrop( i("lobster"), 7, UNCOMMON ), - new ItemDrop( i("shark"), 7, UNCOMMON ), - }; - - public static final ItemDrop[] imp = { - new ItemDrop(i("ashes"), 1, ALWAYS), - new ItemDrop(i("red bead"), 1, UNCOMMON), - new ItemDrop(i("yellow bead"), 1, UNCOMMON), - new ItemDrop(i("black bead"), 1, UNCOMMON), - new ItemDrop(i("white bead"), 1, UNCOMMON), - new ItemDrop(i("tinderbox"), 1, UNCOMMON), - new ItemDrop(i("ball of wool"), 1, COMMON), - new ItemDrop(i("hammer"), 1, COMMON), - new ItemDrop(i("mind talisman"), 1, UNCOMMON), - new ItemDrop(i("burnt meat"), 1, UNCOMMON), - new ItemDrop(1947, 1, UNCOMMON), - new ItemDrop(753, 1, UNCOMMON), - new ItemDrop(i("tinder"), 1, UNCOMMON), - new ItemDrop(i("shears"), 1, UNCOMMON), - new ItemDrop(i("bucket"), 1, UNCOMMON), - new ItemDrop(i("bucket of water"), 1, RARE), - new ItemDrop(i("jug"), 1, RARE), - new ItemDrop(i("jug of water"), 1, RARE), - new ItemDrop(i("jug of wine"), 1, RARE), - new ItemDrop(1931, 1, RARE), - new ItemDrop(2311, 1, RARE), - new ItemDrop(i("flier"), 1, RARE), - }; - - public static final ItemDrop[] cavecrawler = { - new ItemDrop(i("potato seed"), new int[]{1, 3}, COMMON), - new ItemDrop(i("watermelon seed"), 1, UNCOMMON), - new ItemDrop(i("tomato seed"), new int[]{1, 2}, COMMON), - new ItemDrop(i("onion seed"), new int[]{1, 2}, COMMON), - new ItemDrop(i("sweetcorn seed"), new int[]{1, 2}, COMMON), - new ItemDrop(i("cabbage seed"), new int[]{1, 2}, COMMON), - new ItemDrop(i("strawberry seed"), 1, COMMON), - new ItemDrop(239, 1, COMMON), - new ItemDrop(i("snape grass"), 1, RARE), - new ItemDrop(235, 1, UNCOMMON), - new ItemDrop(223, 1, UNCOMMON), - new ItemDrop(i("eye of newt"), 1, COMMON), - new ItemDrop(i("limpwurt root"), 1, COMMON), - new ItemDrop(i("vial of water"), 1, COMMON), - new ItemDrop(i("earth rune"), new int[]{9, 10}, COMMON), - new ItemDrop(i("nature rune"), 3, COMMON), - new ItemDrop(i("fire rune"), 12, COMMON), - new ItemDrop(995, new int[]{3, 29}, COMMON), - new ItemDrop(i("bronze boots"), 1, UNCOMMON), - new ItemDrop(187, 1, UNCOMMON), - new ItemDrop(199, new int[]{1, 2}, COMMON), - new ItemDrop(201, new int[]{1, 2}, COMMON), - new ItemDrop(203, new int[]{1, 2}, COMMON), - new ItemDrop(205, new int[]{1, 2}, COMMON), - new ItemDrop(207, new int[]{1, 2}, UNCOMMON), - new ItemDrop(209, new int[]{1, 2}, UNCOMMON), - new ItemDrop(211, new int[]{1, 2}, UNCOMMON), - new ItemDrop(213, new int[]{1, 2}, UNCOMMON), - new ItemDrop(215, new int[]{1, 2}, RARE), - new ItemDrop(217, new int[]{1, 2}, RARE), - new ItemDrop(2485, new int[]{1, 2}, RARE), - }; - - public static final ItemDrop[] crawlinghand = { - new ItemDrop( 526, 1, ALWAYS ), - new ItemDrop( i("leather gloves"), 1, COMMON ), - new ItemDrop( i("gold ring"), 1, UNCOMMON ), - new ItemDrop( i("sapphire ring"), 1, UNCOMMON ), - new ItemDrop( i("emerald ring"), 1, UNCOMMON ), - new ItemDrop( i("ruby ring"), 1, UNCOMMON ), - new ItemDrop( 995, new int[]{5, 442}, COMMON ), - new ItemDrop( i("ashes"), 1, UNCOMMON ), - new ItemDrop( 2902, 1, COMMON ), - new ItemDrop( 2912, 1, UNCOMMON ), - new ItemDrop( 2922, 1, UNCOMMON ), - new ItemDrop( 2932, 1, UNCOMMON ), - new ItemDrop( 2942, 1, UNCOMMON ), - new ItemDrop( 4115, 1, VERY_RARE ), - }; - - public static final ItemDrop[] bronzedragon = { - new ItemDrop( i("dragon bones"), 1, ALWAYS ), - new ItemDrop( i("bronze bar"), 5, ALWAYS ), - new ItemDrop( i("adamant javelin"), new int[]{30, 60}, COMMON ), - new ItemDrop( i("adamant dart"), 16, UNCOMMON ), - new ItemDrop( i("mithril axe"), 1, UNCOMMON ), - new ItemDrop( i("mithril 2h sword"), 1, UNCOMMON ), - new ItemDrop( i("mithril battleaxe"), 1, UNCOMMON ), - new ItemDrop( i("rune knife"), new int[]{2, 3}, UNCOMMON ), - new ItemDrop( i("rune javelin"), 1, RARE ), - new ItemDrop( i("rune longsword"), 1, RARE ), - new ItemDrop( i("rune battleaxe"), 1, RARE ), - new ItemDrop( i("dragon dagger"), 1, VERY_RARE ), - new ItemDrop( i("mithril kiteshield"), 1, UNCOMMON ), - new ItemDrop( i("adamant platebody"), 1, RARE ), - new ItemDrop( i("rune sq shield"), 1, RARE ), - new ItemDrop( i("dragon plateskirt"), 1, VERY_RARE + 1498 ), - new ItemDrop( i("dragon platelegs"), 1, VERY_RARE + 1599 ), - new ItemDrop( i("law rune"), new int[]{10, 45}, COMMON ), - new ItemDrop( i("fire rune"), new int[]{50, 100}, UNCOMMON ), - new ItemDrop( i("blood rune"), new int[]{15, 30}, UNCOMMON ), - new ItemDrop( i("nature rune"), 67, UNCOMMON ), - new ItemDrop( i("death rune"), new int[]{25, 45}, UNCOMMON ), - new ItemDrop( i("adamant bar"), 1, RARE ), - new ItemDrop( i("runite bar"), 1, RARE ), - }; - - public static final ItemDrop[] blackdragon = { - new ItemDrop( i("dragon bones"), 1, ALWAYS ), - new ItemDrop( i("black dragonhide"), 1, ALWAYS ), - new ItemDrop( i("mithril axe"), 1, UNCOMMON ), - new ItemDrop( i("black axe"), 1, UNCOMMON ), - new ItemDrop( i("mithril battleaxe"), 1, UNCOMMON ), - new ItemDrop( i("mithril 2h sword"), 1, UNCOMMON ), - new ItemDrop( i("adamant platebody"), 1, UNCOMMON ), - new ItemDrop( i("rune longsword"), 1, RARE ), - new ItemDrop( i("rune sq shield"), 1, RARE ), - new ItemDrop( i("rune battleaxe"), 1, VERY_RARE ), - new ItemDrop( i("rune 2h sword"), 1, VERY_RARE ), - new ItemDrop( i("adamant dart"), 16, COMMON ), - new ItemDrop( i("rune knife"), 2, UNCOMMON ), - new ItemDrop( i("rune dart"), 10, UNCOMMON ), - new ItemDrop( i("air rune"), 75, UNCOMMON ), - new ItemDrop( i("blood rune"), 15, UNCOMMON ), - new ItemDrop( i("death rune"), new int[]{5, 50}, UNCOMMON ), - new ItemDrop( i("fire rune"), 50, UNCOMMON ), - new ItemDrop( i("law rune"), new int[]{10, 45}, UNCOMMON ), - new ItemDrop( i("nature rune"), new int[]{67, 79}, UNCOMMON ), - new ItemDrop( i("chaos rune"), 90, UNCOMMON ), - new ItemDrop( i("adamant bar"), new int[]{1, 2}, UNCOMMON ), - new ItemDrop( i("steel bar"), 1, VERY_RARE ), - new ItemDrop( 995, new int[]{129, 2900}, COMMON ), - new ItemDrop( i("chocolate cake"), 1, UNCOMMON ), - }; - - public static final ItemDrop[] irondragon = { - new ItemDrop( i("dragon bones"), 1, ALWAYS ), - new ItemDrop( i("iron bar"), 5, ALWAYS ), - new ItemDrop( i("adamant 2h sword"), 1, UNCOMMON ), - new ItemDrop( i("adamant battleaxe"), 1, UNCOMMON ), - new ItemDrop( i("adamant axe"), 1, UNCOMMON ), - new ItemDrop( i("rune axe"), 1, RARE ), - new ItemDrop( i("rune mace"), 1, RARE ), - new ItemDrop( i("rune longsword"), 1, RARE ), - new ItemDrop( i("rune battleaxe"), 1, UNCOMMON ), - new ItemDrop( i("rune 2h sword"), 1, VERY_RARE ), - new ItemDrop( i("adamant sq shield"), 1, UNCOMMON ), - new ItemDrop( i("rune med helm"), 1, RARE ), - new ItemDrop( i("rune full helm"), 1, RARE ), - new ItemDrop( i("rune sq shield"), 1, RARE ), - new ItemDrop( i("rune kiteshield"), 1, RARE ), - new ItemDrop( i("dragon plateskirt"), 1, VERY_RARE + 592 ), - new ItemDrop( i("dragon platelegs"), 1, VERY_RARE + 541 ), - new ItemDrop( i("rune javelin"), new int[]{4, 8}, COMMON ), - new ItemDrop( i("rune dart"), 9, UNCOMMON ), - new ItemDrop( i("rune knife"), new int[]{1, 6}, UNCOMMON ), - new ItemDrop( i("steel arrow"), 150, RARE ), - new ItemDrop( i("blood rune"), 15, COMMON ), - new ItemDrop( i("soul rune"), new int[]{3, 5}, UNCOMMON ), - new ItemDrop( i("death rune"), new int[]{15, 30}, RARE ), - new ItemDrop( i("chaos rune"), new int[]{25, 50}, RARE ), - new ItemDrop( i("nature rune"), new int[]{60, 79}, RARE ), - new ItemDrop( i("law rune"), new int[]{45, 90}, RARE ), - new ItemDrop( i("adamant bar"), 2, UNCOMMON ), - new ItemDrop( i("runite bar"), 1, RARE ), - new ItemDrop( 161, 1, COMMON ), - new ItemDrop( 145, 1, RARE ), - new ItemDrop( 2442, 1, RARE ), - new ItemDrop( 995, new int[]{270, 3000}, COMMON ), - new ItemDrop( i("curry"), new int[]{1, 2}, UNCOMMON ), - }; - - public static final ItemDrop[] steeldragon = { - new ItemDrop( i("dragon bones"), 1, ALWAYS ), - new ItemDrop( i("steel bar"), 5, ALWAYS ), - new ItemDrop( i("rune axe"), 1, UNCOMMON ), - new ItemDrop( i("rune mace"), 1, COMMON ), - new ItemDrop( i("rune battleaxe"), 1, RARE ), - new ItemDrop( i("rune 2h sword"), 1, RARE ), - new ItemDrop( i("adamant kiteshield"), 1, UNCOMMON ), - new ItemDrop( i("rune full helm"), 1, UNCOMMON ), - new ItemDrop( i("rune sq shield"), 1, VERY_RARE ), - new ItemDrop( i("dragon plateskirt"), 1, VERY_RARE ), - new ItemDrop( i("dragon platelegs"), 1, VERY_RARE ), - new ItemDrop( i("blood rune"), 20, COMMON ), - new ItemDrop( i("rune javelin"), 7, COMMON ), - new ItemDrop( i("soul rune"), 5, UNCOMMON ), - new ItemDrop( i("rune dart"), new int[]{9, 12}, UNCOMMON ), - new ItemDrop( i("rune knife"), 7, UNCOMMON ), - new ItemDrop( 995, new int[]{470, 12650}, COMMON ), - new ItemDrop( 145, 3, COMMON ), - new ItemDrop( 165, 2, UNCOMMON ), - new ItemDrop( 161, 1, UNCOMMON ), - new ItemDrop( i("runite bar"), 1, UNCOMMON ), - new ItemDrop( 2011, new int[]{1, 2}, UNCOMMON ), - }; - - public static final ItemDrop[] darkwizard = { - new ItemDrop( i("bones"), 1, ALWAYS ), - new ItemDrop( i("earth rune"), new int[]{10, 36}, COMMON ), - new ItemDrop( i("air rune"), new int[]{10, 18}, COMMON ), - new ItemDrop( i("water rune"), new int[]{10, 18}, COMMON ), - new ItemDrop( i("fire rune"), new int[]{10, 18}, COMMON ), - new ItemDrop( i("mind rune"), new int[]{10, 18}, COMMON ), - new ItemDrop( i("body rune"), new int[]{10, 18}, COMMON ), - new ItemDrop( i("chaos rune"), new int[]{3, 5}, COMMON ), - new ItemDrop( i("nature rune"), new int[]{2, 3}, UNCOMMON ), - new ItemDrop( i("law rune"), 3, COMMON ), - new ItemDrop( i("cosmic rune"), new int[]{2, 4}, UNCOMMON ), - new ItemDrop( i("blood rune"), new int[]{2, 4}, COMMON ), - new ItemDrop( 995, new int[]{1, 29}, COMMON ), - new ItemDrop( i("staff"), 1, COMMON ), - new ItemDrop( i("staff of air"), 1, COMMON ), - new ItemDrop( 1017, 1, COMMON ), - new ItemDrop( 581, 1, COMMON ), - new ItemDrop( i("fire talisman"), 1, COMMON ), - new ItemDrop( i("earth talisman"), 1, VERY_RARE ), - new ItemDrop( i("mind talisman"), 1, RARE ), - new ItemDrop( i("staff of water"), 1, VERY_RARE ), - }; - - public static final ItemDrop[] highwayman = { - new ItemDrop( i("bones"), 1, ALWAYS ), - new ItemDrop( 1019, 1, ALWAYS ), - }; - - public static final ItemDrop[] chaosdruid = { - new ItemDrop( 526, 1, ALWAYS ), - new ItemDrop( 199, new int[]{1, 2}, COMMON ), - new ItemDrop( 201, new int[]{1, 2}, COMMON ), - new ItemDrop( 203, new int[]{1, 2}, COMMON ), - new ItemDrop( 205, new int[]{1, 2}, COMMON ), - new ItemDrop( 211, new int[]{1, 2}, UNCOMMON ), - new ItemDrop( 209, new int[]{1, 2}, UNCOMMON ), - new ItemDrop( 213, new int[]{1, 2}, UNCOMMON ), - new ItemDrop( 207, new int[]{1, 2}, UNCOMMON ), - new ItemDrop( 2485, new int[]{1, 2}, UNCOMMON ), - new ItemDrop( 217, new int[]{1, 2}, UNCOMMON ), - new ItemDrop( 215, new int[]{1, 2}, UNCOMMON ), - new ItemDrop( 219, new int[]{1, 2}, VERY_RARE ), - new ItemDrop( i("law rune"), 2, COMMON ), - new ItemDrop( i("body rune"), 9, COMMON ), - new ItemDrop( i("air rune"), new int[]{9, 36}, COMMON ), - new ItemDrop( i("earth rune"), 9, COMMON ), - new ItemDrop( i("mind rune"), 12, COMMON ), - new ItemDrop( i("nature rune"), 3, UNCOMMON ), - new ItemDrop( 995, new int[]{2, 485}, COMMON ), - new ItemDrop( i("vial of water"), 1, COMMON ), - new ItemDrop( 540, 1, COMMON ), - new ItemDrop( 538, 1, COMMON ), - new ItemDrop( i("bronze longsword"), 1, UNCOMMON ), - new ItemDrop( i("snape grass"), 1, RARE ), - new ItemDrop( i("unholy mould"), 1, RARE ), - new ItemDrop( i("cosmic talisman"), 1, VERY_RARE ), - new ItemDrop( i("iron med helm"), 1, VERY_RARE ), - new ItemDrop( i("uncut jade"), 1, VERY_RARE ), - }; - - public static final ItemDrop[] jailer = { - new ItemDrop( 526, 1, ALWAYS ), - new ItemDrop( i("jail key"), 1, ALWAYS ), - }; - - public static final ItemDrop[] wyvern = { - new ItemDrop( 6812, 1, ALWAYS ), - new ItemDrop( i("mithril sword"), 1, COMMON ), - new ItemDrop( i("black axe"), 1, UNCOMMON ), - new ItemDrop( i("adamant axe"), 1, UNCOMMON ), - new ItemDrop( i("snakeskin chaps"), 1, UNCOMMON ), - new ItemDrop( i("earth battlesatff"), 1, RARE ), - new ItemDrop( i("granite legs"), 1, RARE ), - new ItemDrop( 7937, 60, RARE ), - new ItemDrop( i("air rune"), new int[]{10, 64}, UNCOMMON ), - new ItemDrop( i("water rune"), new int[]{11, 33}, UNCOMMON ), - new ItemDrop( i("chaos rune"), 10, UNCOMMON ), - new ItemDrop( i("law rune"), new int[]{2, 3}, UNCOMMON ), - new ItemDrop( i("blood rune"), new int[]{2, 9}, UNCOMMON ), - new ItemDrop( i("soul rune"), new int[]{5, 9}, UNCOMMON ), - new ItemDrop( i("death rune"), new int[]{1, 4}, UNCOMMON ), - new ItemDrop( i("belladonna seed"), 1, UNCOMMON ), - new ItemDrop( i("cadantine seed"), 1, UNCOMMON ), - new ItemDrop( i("dwarf weed seed"), 1, UNCOMMON ), - new ItemDrop( i("snapdragon seed"), 1, UNCOMMON ), - new ItemDrop( i("jangerberry seed"), 1, UNCOMMON ), - new ItemDrop( i("limpwurt seed"), 1, UNCOMMON ), - new ItemDrop( i("marentill seed"), 1, UNCOMMON ), - new ItemDrop( 5282, 1, UNCOMMON ), - new ItemDrop( i("ranarr seed"), 1, UNCOMMON ), - new ItemDrop( i("strawberry seed"), 1, UNCOMMON ), - new ItemDrop( i("tarromin seed"), 1, UNCOMMON ), - new ItemDrop( i("watermelon seed"), 1, UNCOMMON ), - new ItemDrop( i("whiteberry seed"), 1, UNCOMMON ), - new ItemDrop( i("wildblood seed"), 1, UNCOMMON ), - new ItemDrop( i("toadflax seed"), 1, UNCOMMON ), - new ItemDrop( i("harralander seed"), 1, UNCOMMON ), - new ItemDrop( 995, new int[]{20, 420}, COMMON ), - new ItemDrop( i("lobster"), 3, UNCOMMON ), - new ItemDrop( i("bass"), 1, UNCOMMON ), - new ItemDrop( 149, 1, UNCOMMON ), - new ItemDrop( 133, 1, UNCOMMON ), - new ItemDrop( 199, 1, UNCOMMON ), - new ItemDrop( 201, 1, UNCOMMON ), - new ItemDrop( 203, 1, UNCOMMON ), - new ItemDrop( 205, 1, UNCOMMON ), - new ItemDrop( 207, 1, UNCOMMON ), - new ItemDrop( 209, 1, UNCOMMON ), - new ItemDrop( 211, 1, UNCOMMON ), - new ItemDrop( 213, 1, UNCOMMON ), - new ItemDrop( 215, 1, UNCOMMON ), - new ItemDrop( 217, 1, UNCOMMON ), - new ItemDrop( 2485, 1, UNCOMMON ), - }; - - public static final ItemDrop[] alwaysbones = { - new ItemDrop( 526, 1, ALWAYS ), - }; - - public static final ItemDrop[] bat = { - new ItemDrop( i("batbones"), 1, ALWAYS ), - }; -} +package com.rebotted.game.npcs.drops; + +import com.rebotted.game.npcs.drops.ItemDrop; + +/** + * Npc Drops + * @author Andrew (Mr Extremez) + */ + +public class NPCDrops extends NPCDropsHandler { + + public static final ItemDrop[] DEFAULT = { + new ItemDrop( i("bones"), 1, ALWAYS ), + new ItemDrop( 995, new int[]{1, 10}, COINSRATE), + new ItemDrop( 2677, 1, VERY_RARE ), + }; + + public static final ItemDrop[] rivertroll = { + new ItemDrop( i("bones"), 1, ALWAYS ), + new ItemDrop( 405, 1, COMMON ), + new ItemDrop( i("spinach roll"), 1, COMMON ), + new ItemDrop( i("fishing bait"), new int[]{1, 50}, UNCOMMON ), + new ItemDrop( 985, 1, RARE ), + new ItemDrop( 987, 1, RARE ), + new ItemDrop( i("feather"), new int[]{2, 7}, COMMON ), + new ItemDrop( 151, 1, UNCOMMON ), + new ItemDrop( i("raw tuna"), 1, UNCOMMON ), + new ItemDrop( i("raw salmon"), 1, UNCOMMON ), + new ItemDrop( i("raw trout"), 1, UNCOMMON ), + new ItemDrop( i("raw herring"), 1, UNCOMMON ), + new ItemDrop( i("raw pike"), 1, UNCOMMON ), + new ItemDrop( i("raw sardine"), 1, UNCOMMON ), + new ItemDrop( i("raw shrimps"), 1, UNCOMMON ), + new ItemDrop( i("raw anchovies"), 1, UNCOMMON ), + new ItemDrop( i("raw swordfish"), 1, UNCOMMON ), + new ItemDrop( i("raw shark"), 1, UNCOMMON ), + }; + + public static final ItemDrop[] darkbeast = { + new ItemDrop( i("rune 2h sword"), 1, UNCOMMON ), + new ItemDrop( i("black 2h sword"), 1, COMMON ), + new ItemDrop( i("black battleaxe"), 1, COMMON ), + new ItemDrop( i("black axe"), 1, UNCOMMON ), + new ItemDrop( i("rune battleaxe"), 1, RARE ), + new ItemDrop( i("adamant sq shield"), 1, COMMON ), + new ItemDrop( i("rune chainbody"), 1, UNCOMMON ), + new ItemDrop( i("rune full helm"), 1, RARE ), + new ItemDrop( i("rune sq shield"), 1, RARE ), + new ItemDrop( i("chaos rune"), 10, COMMON ), + new ItemDrop( i("blood rune"), 7, COMMON ), + new ItemDrop( i("air rune"), 47, UNCOMMON ), + new ItemDrop( i("death rune"), new int[]{3, 8}, UNCOMMON ), + new ItemDrop( i("law rune"), 3, UNCOMMON ), + new ItemDrop( 995, new int[]{64, 3000}, COMMON ), + new ItemDrop( 121, 1, UNCOMMON ), + new ItemDrop( 385, new int[]{1, 7}, UNCOMMON ), + new ItemDrop( i("death talisman"), 1, UNCOMMON ), + new ItemDrop( i("adamant bar"), 1, UNCOMMON ), + new ItemDrop( 199, new int[]{1, 5}, COMMON ), + new ItemDrop( 201, new int[]{1, 5}, COMMON ), + new ItemDrop( 203, new int[]{1, 4}, COMMON ), + new ItemDrop( 205, new int[]{1, 3}, UNCOMMON ), + new ItemDrop( 207, new int[]{1, 3}, UNCOMMON ), + new ItemDrop( 209, new int[]{1, 3}, UNCOMMON ), + new ItemDrop( 211, new int[]{1, 3}, UNCOMMON ), + new ItemDrop( 215, new int[]{1, 3}, UNCOMMON ), + new ItemDrop( 2485, new int[]{1, 3}, UNCOMMON ), + new ItemDrop( 213, new int[]{1, 3}, UNCOMMON ), + new ItemDrop( 217, new int[]{1, 3}, UNCOMMON ), + }; + + public static final ItemDrop[] ogre = { + new ItemDrop( i("big bones"), 1, ALWAYS ), + new ItemDrop( i("strawberry seed"), 1, UNCOMMON ), + new ItemDrop( i("avantoe seed"), 1, UNCOMMON ), + new ItemDrop( i("belladonna seed"), 1, UNCOMMON ), + new ItemDrop( 5282, 1, UNCOMMON ), + new ItemDrop( i("cadantine seed"), 1, UNCOMMON ), + new ItemDrop( i("cactus seed"), 1, UNCOMMON ), + new ItemDrop( i("harralander seed"), 1, UNCOMMON ), + new ItemDrop( i("irit seed"), 1, UNCOMMON ), + new ItemDrop( i("jangerberry seed"), 1, UNCOMMON ), + new ItemDrop( i("limpwurt seed"), 1, UNCOMMON ), + new ItemDrop( i("poison ivy seed"), 1, UNCOMMON ), + new ItemDrop( i("spirit weed seed"), 1, UNCOMMON ), + new ItemDrop( i("tarromin seed"), 1, UNCOMMON ), + new ItemDrop( i("toadflax seed"), 1, UNCOMMON ), + new ItemDrop( i("wildblood seed"), 1, UNCOMMON ), + new ItemDrop( i("whiteberry seed"), 1, UNCOMMON ), + new ItemDrop( i("marentill seed"), 1, UNCOMMON ), + new ItemDrop( i("ranarr seed"), 1, RARE ), + new ItemDrop( i("dwarf weed seed"), 1, RARE ), + new ItemDrop( i("lantadyme seed"), 1, RARE ), + new ItemDrop( i("watermelon seed"), 1, RARE ), + new ItemDrop( i("kwuarm seed"), 1, RARE ), + }; + + public static final ItemDrop[] shade = { + new ItemDrop( 546, 1, COMMON ), + new ItemDrop( 548, 1, COMMON ), + }; + + public static final ItemDrop[] babybluedragon = { + new ItemDrop( i("babydragon bones"), 1, ALWAYS ), + }; + + public static final ItemDrop[] bear = { + new ItemDrop( 526, 1, ALWAYS ), + new ItemDrop( i("bear fur"), 1, ALWAYS ), + new ItemDrop( i("raw bear meat"), 1, ALWAYS ), + }; + + public static final ItemDrop[] monk = { + new ItemDrop( 526, 1, ALWAYS ), + new ItemDrop( 542, 1, RARE ), + new ItemDrop( 544, 1, RARE ), + }; + + public static final ItemDrop[] tzhaarxil = { + new ItemDrop( 6522, new int[]{9, 20}, RARE ), + new ItemDrop( 6523, 1, RARE ), + new ItemDrop( 6525, 1, RARE ), + new ItemDrop( 6524, 1, RARE ), + new ItemDrop( 6568, 1, RARE ), + new ItemDrop( 161, 1, UNCOMMON ), + new ItemDrop( 149, 1, UNCOMMON ), + new ItemDrop( 167, 1, UNCOMMON ), + new ItemDrop( i("tokkul"), new int[]{100, 1500}, COMMON ), + new ItemDrop( i("lobster"), 1, UNCOMMON ), + }; + + public static final ItemDrop[] tzhaarket = { + new ItemDrop( 6527, 1, RARE ), + new ItemDrop( i("fire battlestaff"), 1, RARE ), + new ItemDrop( 6524, 1, RARE ), + new ItemDrop( 6568, 1, RARE ), + new ItemDrop( 167, 1, UNCOMMON ), + new ItemDrop( 161, 1, UNCOMMON ), + new ItemDrop( i("tokkul"), new int[]{100, 1900}, COMMON ), + new ItemDrop( i("lobster"), 1, UNCOMMON ), + new ItemDrop( i("chilli potato"), new int[]{1, 3}, UNCOMMON ), + new ItemDrop( i("pure essence"), 5, VERY_RARE ), + }; + + public static final ItemDrop[] tzhaarhur = { + new ItemDrop( i("gold ore"), 1, COMMON ), + new ItemDrop( 443, new int[]{1, 3}, COMMON ), + new ItemDrop( 1762, 3, UNCOMMON ), + new ItemDrop( i("steel bar"), 1, UNCOMMON ), + new ItemDrop( i("tokkul"), new int[]{150, 800}, COMMON ), + new ItemDrop( i("molten glass"), 2, UNCOMMON ), + new ItemDrop( 149, 1, UNCOMMON ), + new ItemDrop( 161, 1, UNCOMMON ), + new ItemDrop( 1780, new int[]{4, 20}, UNCOMMON ), + new ItemDrop( i("battlestaff"), 1, RARE ), + new ItemDrop( 1744, 3, RARE ), + new ItemDrop( i("leather"), 3, RARE ), + new ItemDrop( 1738, new int[]{2, 10}, RARE ), + new ItemDrop( 7937, new int[]{2, 8}, RARE ), + new ItemDrop( i("lobster"), 1, RARE ), + }; + + public static final ItemDrop[] thief = { + new ItemDrop( 526, 1, ALWAYS ), + new ItemDrop( 199, 1, COMMON ), + new ItemDrop( 201, 1, COMMON ), + new ItemDrop( 203, 1, COMMON ), + new ItemDrop( 205, 1, COMMON ), + new ItemDrop( 207, 1, UNCOMMON ), + new ItemDrop( 209, 1, VERY_RARE ), + new ItemDrop( 211, 1, VERY_RARE ), + new ItemDrop( 213, 1, VERY_RARE ), + new ItemDrop( 217, 1, VERY_RARE ), + new ItemDrop( 2485, 1, VERY_RARE ), + new ItemDrop( i("bronze arrow"), new int[]{3, 8}, UNCOMMON ), + new ItemDrop( i("staff of air"), 1, UNCOMMON ), + new ItemDrop( i("iron knife"), new int[]{3, 10}, UNCOMMON ), + new ItemDrop( i("chaos rune"), new int[]{3, 8}, RARE ), + new ItemDrop( i("mind rune"), new int[]{5, 10}, VERY_RARE ), + new ItemDrop( i("earth rune"), new int[]{5, 10}, VERY_RARE ), + new ItemDrop( i("fire rune"), new int[]{5, 10}, VERY_RARE ), + new ItemDrop( 995, new int[]{3, 25}, COMMON ), + new ItemDrop( i("earth talisman"), 1, RARE ), + new ItemDrop( i("copper ore"), 1, RARE ), + }; + + public static final ItemDrop[] tzhaarmej = { + new ItemDrop( i("fire battlestaff"), 1, UNCOMMON ), + new ItemDrop( i("staff of fire"), 1, UNCOMMON ), + new ItemDrop( 6568, 1, RARE ), + new ItemDrop( 6526, 1, VERY_RARE ), + new ItemDrop( i("earth rune"), new int[]{10, 80}, COMMON ), + new ItemDrop( i("fire rune"), new int[]{10, 80}, COMMON ), + new ItemDrop( i("air rune"), new int[]{10, 80}, UNCOMMON ), + new ItemDrop( i("water rune"), new int[]{10, 80}, UNCOMMON ), + new ItemDrop( i("choas rune"), new int[]{5, 10}, UNCOMMON ), + new ItemDrop( i("nature rune"), new int[]{1, 8}, UNCOMMON ), + new ItemDrop( i("law rune"), new int[]{2, 5}, UNCOMMON ), + new ItemDrop( i("death rune"), new int[]{1, 6}, RARE ), + new ItemDrop( i("blood rune"), new int[]{1, 6}, RARE ), + new ItemDrop( i("smoke rune"), new int[]{1, 11}, RARE ), + new ItemDrop( i("lava rune"), new int[]{1, 40}, RARE ), + new ItemDrop( i("fire talisman"), 1, VERY_RARE ), + new ItemDrop( i("tokkul"), new int[]{1, 700}, COMMON ), + new ItemDrop( i("pure essence"), new int[]{4, 10}, COMMON ), + }; + + public static final ItemDrop[] watchman = { + new ItemDrop( i("bones"), 1, ALWAYS ), + new ItemDrop( i("bread"), 1, COMMON ), + }; + + public static final ItemDrop[] treespirit = { + new ItemDrop( i("knife"), 1, ALWAYS ), + new ItemDrop( i("bronze axe"), 1, COMMON ), + new ItemDrop( i("iron axe"), 1, COMMON ), + new ItemDrop( i("steel axe"), 1, COMMON ), + new ItemDrop( i("black axe"), 1, UNCOMMON ), + new ItemDrop( i("mithril axe"), 1, UNCOMMON ), + new ItemDrop( i("adamant axe"), 1, UNCOMMON + r(50) ), + new ItemDrop( i("rune axe"), 1, RARE ), + new ItemDrop( i("nature rune"), new int[]{5, 28}, COMMON ), + new ItemDrop( i("banana"), 1, COMMON ), + new ItemDrop( i("uncut ruby"), 1, UNCOMMON ), + new ItemDrop( i("uncut emerald"), 1, UNCOMMON ), + new ItemDrop( i("uncut diamond"), 1, RARE ), + new ItemDrop( i("uncut sapphire"), 1, UNCOMMON ), + new ItemDrop( i("rune javelin"), 5, UNCOMMON ), + new ItemDrop( i("rune spear"), 1, RARE ), + new ItemDrop( i("dragon spear"), 1, VERY_RARE ), + new ItemDrop( i("cactus seed"), 1, COMMON ), + new ItemDrop( i("poison ivy seed"), 1, COMMON ), + new ItemDrop( i("belladonna seed"), 1, COMMON ), + new ItemDrop( i("kwuarm seed"), 1, COMMON ), + new ItemDrop( i("half of a key"), 1, RARE ), + new ItemDrop( i("nature talisman"), 1, UNCOMMON ), + new ItemDrop( i("shield left half"), 1, VERY_RARE ), + new ItemDrop( 199, 1, COMMON ), + new ItemDrop( 3049, 1, UNCOMMON ), + new ItemDrop( 3051, 1, RARE ), + new ItemDrop( 211, 1, UNCOMMON ), + }; + + public static final ItemDrop[] cockatrice = { + new ItemDrop( 526, 1, ALWAYS ), + new ItemDrop( i("iron sword"), 1, COMMON ), + new ItemDrop( i("steel dagger"), 1, COMMON ), + new ItemDrop( i("steel longsword"), 1, COMMON ), + new ItemDrop( i("iron javelin"), 5, UNCOMMON ), + new ItemDrop( i("steel platelegs"), 1, UNCOMMON ), + new ItemDrop( 4097, 1, RARE ), + new ItemDrop( i("iron boots"), 1, RARE ), + new ItemDrop( i("rune med helm"), 1, VERY_RARE ), + new ItemDrop( i("rune chainbody"), 1, VERY_RARE ), + new ItemDrop( i("water rune"), new int[]{1, 3}, COMMON ), + new ItemDrop( i("fire rune"), 7, COMMON ), + new ItemDrop( i("nature rune"), new int[]{2, 6}, COMMON ), + new ItemDrop( i("law rune"), new int[]{2, 5}, COMMON ), + new ItemDrop( i("death rune"), 50, UNCOMMON ), + new ItemDrop( 199, 1, COMMON ), + new ItemDrop( 201, 1, COMMON ), + new ItemDrop( 203, 1, COMMON ), + new ItemDrop( 205, 1, COMMON ), + new ItemDrop( 209, 1, COMMON ), + new ItemDrop( 211, 1, COMMON ), + new ItemDrop( 207, 1, RARE ), + new ItemDrop( 213, 1, RARE ), + new ItemDrop( 215, 1, RARE ), + new ItemDrop( 2485, 1, RARE ), + new ItemDrop( 217, 1, VERY_RARE ), + new ItemDrop( i("potato seed"), 4, COMMON ), + new ItemDrop( i("onion seed"), 4, COMMON ), + new ItemDrop( i("cabbage seed"), 4, COMMON ), + new ItemDrop( i("tomato seed"), 3, COMMON ), + new ItemDrop( i("asgarnian seed"), 2, COMMON ), + new ItemDrop( i("yanillian seed"), 2, COMMON ), + new ItemDrop( i("sweetcorn seed"), 3, COMMON ), + new ItemDrop( i("strawberry seed"), 2, COMMON ), + new ItemDrop( i("watermelon seed"), 2, RARE ), + new ItemDrop( i("ranarr seed"), 1, RARE ), + new ItemDrop( i("marigold seed"), 1, RARE ), + new ItemDrop( 995, new int[]{1, 309}, COMMON ), + new ItemDrop( i("limpwurt root"), 1, COMMON ), + new ItemDrop( i("mithril ore"), 1, RARE ), + }; + + public static final ItemDrop[] unicorn = { + new ItemDrop( i("bones"), 1, ALWAYS ), + new ItemDrop( i("unicorn horn"), 1, ALWAYS ), + }; + + public static final ItemDrop[] giantrat = { + new ItemDrop( i("bones"), 1, ALWAYS ), + new ItemDrop( 2134, 1, ALWAYS ), + }; + + public static final ItemDrop[] jogre = { + new ItemDrop( i("jogre bones"), 1, ALWAYS ), + new ItemDrop( i("bronze spear"), 1, COMMON ), + new ItemDrop( i("iron spear"), 1, COMMON ), + new ItemDrop( i("steel javelin"), new int[]{3, 5}, UNCOMMON ), + new ItemDrop( i("nature rune"), new int[]{2, 8}, COMMON ), + new ItemDrop( i("knife"), 1, COMMON ), + new ItemDrop( i("pineapple"), 2, COMMON ), + new ItemDrop( 6306, 22, COMMON ), + new ItemDrop( 995, 22, COMMON ), + new ItemDrop( 3125, 1, COMMON ), + new ItemDrop( i("big bones"), new int[]{1, 6}, COMMON ), + new ItemDrop( 526, new int[]{1, 3}, COMMON ), + new ItemDrop( i("banana"), 1, UNCOMMON ), + new ItemDrop( i("limpwurt seed"), 1, COMMON ), + new ItemDrop( i("marentill seed"), 1, COMMON ), + new ItemDrop( i("tarromin seed"), 1, COMMON ), + new ItemDrop( i("harralander seed"), 1, UNCOMMON ), + new ItemDrop( i("strawberry sed"), 1, UNCOMMON ), + new ItemDrop( i("watermelon seeed"), 1, UNCOMMON ), + new ItemDrop( i("wildblood seed"), 1, UNCOMMON ), + new ItemDrop( i("toadflax seed"), 1, UNCOMMON ), + new ItemDrop( i("avantoe seed"), 1, UNCOMMON ), + new ItemDrop( i("cactus seed"), 1, UNCOMMON ), + new ItemDrop( i("jangerberry seed"), 1, UNCOMMON ), + new ItemDrop( i("whiteberry seed"), 1, UNCOMMON ), + new ItemDrop( i("belladonna seed"), 1, UNCOMMON ), + new ItemDrop( 5282, 1, UNCOMMON ), + new ItemDrop( i("poison ivy seed"), 1, UNCOMMON ), + new ItemDrop( i("kwuarm seed"), 1, UNCOMMON ), + new ItemDrop( i("cadantine seed"), 1, UNCOMMON ), + new ItemDrop( i("ranarr seed"), 1, RARE ), + new ItemDrop( i("lantadyme seed"), 1, RARE ), + new ItemDrop( i("dwarf weed seed"), 1, RARE ), + new ItemDrop( 1533, 1, COMMON ), + new ItemDrop( 1525, 1, COMMON ), + new ItemDrop( 203, 1, COMMON ), + new ItemDrop( 201, 1, COMMON ), + new ItemDrop( 205, 1, UNCOMMON ), + new ItemDrop( 207, 1, UNCOMMON ), + new ItemDrop( 209, 1, UNCOMMON ), + new ItemDrop( 217, 1, RARE ), + new ItemDrop( 2485, 1, RARE ), + }; + + public static final ItemDrop[] blackdemon = { + new ItemDrop(i("steel battleaxe"), 1, COMMON), + new ItemDrop(i("black axe"), 1, COMMON), + new ItemDrop(i("black sword"), 1, COMMON), + new ItemDrop(i("black 2h sword"), 1, COMMON), + new ItemDrop(i("rune battleaxe"), 1, RARE), + new ItemDrop(i("rune 2h sword"), 1, VERY_RARE), + new ItemDrop(i("black full helm"), 1, COMMON), + new ItemDrop(i("mithril kiteshield"), 1, COMMON), + new ItemDrop(i("rune med helm"), 1, RARE), + new ItemDrop(i("rune full helm"), 1, RARE), + new ItemDrop(i("rune chainbody"), 1, RARE), + new ItemDrop(i("rune sq shield"), 1, RARE), + new ItemDrop(i("air rune"), new int[]{50, 75}, COMMON), + new ItemDrop(i("blood rune"), 7, UNCOMMON), + new ItemDrop(i("fire rune"), new int[]{37, 40}, COMMON), + new ItemDrop(i("chaos rune"), 10, COMMON), + new ItemDrop(i("law rune"), new int[]{3, 45}, COMMON), + new ItemDrop(i("adamant bar"), 1, COMMON), + new ItemDrop(454, 20, RARE), + new ItemDrop(995, new int[]{132, 1100}, COMMON), + new ItemDrop(i("lobster"), 1, UNCOMMON), + new ItemDrop(133, 1, UNCOMMON), + new ItemDrop(199, 1, COMMON), + new ItemDrop(201, 1, COMMON), + new ItemDrop(203, 1, COMMON), + new ItemDrop(205, 1, COMMON), + new ItemDrop(207, 1, UNCOMMON), + new ItemDrop(209, 1, UNCOMMON), + new ItemDrop(211, 1, UNCOMMON), + new ItemDrop(213, 1, UNCOMMON), + new ItemDrop(215, 1, UNCOMMON), + new ItemDrop(2485, 1, RARE), + new ItemDrop(217, 1, RARE), + new ItemDrop(i("ashes"), 1, ALWAYS) + }; + + public static final ItemDrop[] firegiant = { + new ItemDrop( i("big bones"), 1, ALWAYS ), + new ItemDrop( i("steel axe"), 1, COMMON ), + new ItemDrop( i("fire battlestaff"), 1, UNCOMMON ), + new ItemDrop( i("rune scimitar"), 1, RARE ), + new ItemDrop( i("mithril sq shield"), 1, COMMON ), + new ItemDrop( i("rune arrow"), 12, UNCOMMON ), + new ItemDrop( i("fire rune"), new int[]{37, 204}, COMMON ), + new ItemDrop( i("chaos rune"), 5, UNCOMMON ), + new ItemDrop( i("blood rune"), 5, UNCOMMON ), + new ItemDrop( i("law rune"), new int[]{2, 6}, UNCOMMON ), + new ItemDrop( 199, 1, COMMON ), + new ItemDrop( 201, 1, COMMON ), + new ItemDrop( 203, 1, COMMON ), + new ItemDrop( 211, 1, COMMON ), + new ItemDrop( 205, 1, UNCOMMON ), + new ItemDrop( 207, 1, UNCOMMON ), + new ItemDrop( 209, 1, UNCOMMON ), + new ItemDrop( 215, 1, UNCOMMON ), + new ItemDrop( 217, 1, UNCOMMON ), + new ItemDrop( 995, new int[]{15, 360}, COMMON ), + new ItemDrop( i("lobster"), 1, UNCOMMON ), + new ItemDrop( i("steel bar"), 1, UNCOMMON ), + new ItemDrop( 117, 1, UNCOMMON ), + }; + + public static final ItemDrop[] evilchicken = { + new ItemDrop( i("raw chicken"), 1, ALWAYS ), + new ItemDrop( 526, 1, ALWAYS ), + new ItemDrop( i("feather"), new int[]{32, 750}, ALWAYS ), + }; + + public static final ItemDrop[] pyrefiend = { + new ItemDrop( i("fire rune"), new int[]{30, 90}, COMMON ), + new ItemDrop( i("chaos rune"), 12, COMMON ), + new ItemDrop( i("law rune"), 1, UNCOMMON ), + new ItemDrop( i("death rune"), 3, UNCOMMON ), + new ItemDrop( i("steel full helm"), 1, COMMON ), + new ItemDrop( i("staff of fire"), 1, COMMON ), + new ItemDrop( i("steel axe"), 1, COMMON ), + new ItemDrop( i("steel battleaxe"), 1, UNCOMMON ), + new ItemDrop( i("steel arrow"), 1, UNCOMMON ), + new ItemDrop( i("mithril chainbody"), 1, UNCOMMON ), + new ItemDrop( i("steel boots"), 1, RARE ), + new ItemDrop( i("adamant med helm"), 1, RARE ), + new ItemDrop( 995, new int[]{10, 474}, COMMON ), + new ItemDrop( i("gold ore"), 1, COMMON ), + new ItemDrop( i("jug of wine"), 1, UNCOMMON ), + }; + + public static final ItemDrop[] jelly = { + new ItemDrop( i("choas rune"), 15, UNCOMMON ), + new ItemDrop( i("death rune"), 5, UNCOMMON ), + new ItemDrop( i("water rune"), new int[]{5, 21}, RARE ), + new ItemDrop( i("blood rune"), 7, RARE ), + new ItemDrop( i("steel battleaxe"), 1, COMMON ), + new ItemDrop( i("steel 2h sword"), 1, COMMON ), + new ItemDrop( i("mithril kiteshield"), 1, UNCOMMON ), + new ItemDrop( i("mithril boots"), 1, UNCOMMON ), + new ItemDrop( i("rune full helm"), 1, RARE ), + new ItemDrop( i("steel platebody"), 1, RARE ), + new ItemDrop( i("rune battleaxe"), 1, VERY_RARE ), + new ItemDrop( 995, new int[]{11, 497}, COMMON ), + new ItemDrop( i("gold bar"), 1, UNCOMMON ), + new ItemDrop( i("thread"), 10, RARE ), + }; + + public static final ItemDrop[] rockslug = { + new ItemDrop( i("earth rune"), new int[]{5, 42}, COMMON ), + new ItemDrop( i("pure essence"), 1, COMMON ), + new ItemDrop( i("chaos rune"), new int[]{2, 5}, UNCOMMON ), + new ItemDrop( i("tin ore"), 1, COMMON ), + new ItemDrop( i("copper ore"), 1, COMMON ), + new ItemDrop( i("bronze bar"), 1, COMMON ), + new ItemDrop( i("iron ore"), 1, COMMON ), + new ItemDrop( i("iron bar"), 1, COMMON ), + new ItemDrop( i("coal"), 1, COMMON ), + new ItemDrop( i("mithril ore"), 1, UNCOMMON ), + new ItemDrop( i("potato seed"), 4, COMMON ), + new ItemDrop( i("onion seed"), 4, COMMON ), + new ItemDrop( i("cabbage seed"), 4, COMMON ), + new ItemDrop( i("tomato seed"), 3, UNCOMMON ), + new ItemDrop( i("sweetcorn seed"), 3, UNCOMMON ), + new ItemDrop( 5308, 3, UNCOMMON ), + new ItemDrop( i("strawberry seed"), 2, RARE ), + new ItemDrop( i("watermelon seed"), 2, RARE ), + new ItemDrop( i("hammer"), 1, COMMON ), + new ItemDrop( i("dwarven stout"), 1, COMMON ), + new ItemDrop( 995, 23, UNCOMMON ), + new ItemDrop( 4115, 1, RARE ), + }; + + public static final ItemDrop[] kurask = { + new ItemDrop( i("bones"), 1, ALWAYS ), + new ItemDrop( i("nature rune"), new int[]{5, 30}, UNCOMMON ), + new ItemDrop( i("death rune"), new int[]{1, 6}, UNCOMMON ), + new ItemDrop( i("mind rune"), new int[]{4, 12}, UNCOMMON ), + new ItemDrop( i("mithril axe"), 1, UNCOMMON ), + new ItemDrop( i("broad arrow"), new int[]{1, 11}, UNCOMMON ), + new ItemDrop( i("rune longsword"), 1, RARE ), + new ItemDrop( i("adamant platebody"), 1, UNCOMMON ), + new ItemDrop( i("mithril kiteshield"), 1, UNCOMMON ), + new ItemDrop( 4111, 1, VERY_RARE ), + new ItemDrop( i("white berries"), 1, COMMON ), + new ItemDrop( i("limpwurt root"), 2, COMMON ), + new ItemDrop( 199, 1, COMMON ), + new ItemDrop( 201, 1, COMMON ), + new ItemDrop( 203, 1, COMMON ), + new ItemDrop( 205, 1, COMMON ), + new ItemDrop( 209, 1, UNCOMMON ), + new ItemDrop( 211, 1, UNCOMMON ), + new ItemDrop( 213, 1, UNCOMMON ), + new ItemDrop( 215, 1, UNCOMMON ), + new ItemDrop( 217, 1, UNCOMMON ), + new ItemDrop( 207, 1, RARE ), + new ItemDrop( 2485, 1, RARE ), + new ItemDrop( i("irit seed"), 1, UNCOMMON ), + new ItemDrop( i("cactus seed"), 1, UNCOMMON ), + new ItemDrop( i("toadflax seed"), 1, UNCOMMON ), + new ItemDrop( i("poison ivy seed"), 1, UNCOMMON ), + new ItemDrop( i("avantoe seed"), 1, UNCOMMON ), + new ItemDrop( i("kwuarm seed"), 1, UNCOMMON ), + new ItemDrop( i("cadantine seed"), 1, UNCOMMON ), + new ItemDrop( i("belladonna seed"), 1, UNCOMMON ), + new ItemDrop( i("lantadyme seed"), 1, UNCOMMON ), + new ItemDrop( i("snapdragon seed"), 1, RARE ), + new ItemDrop( i("dwarf weed seed"), 1, RARE ), + new ItemDrop( i("torstol seed"), 1, VERY_RARE ), + new ItemDrop( i("plain pizza"), 1, UNCOMMON ), + new ItemDrop( i("banana"), new int[]{1, 3}, COMMON ), + new ItemDrop( 2115, new int[]{2, 6}, COMMON ), + new ItemDrop( 995, new int[]{22, 748}, COMMON ), + new ItemDrop( 1780, new int[]{20, 30}, COMMON ), + new ItemDrop( 161, 1, COMMON ), + new ItemDrop( 173, 1, UNCOMMON ), + new ItemDrop( i("bones"), new int[]{1, 3}, UNCOMMON ), + new ItemDrop( i("big bones"), new int[]{1, 3}, UNCOMMON ), + }; + + public static final ItemDrop[] earthwarrior = { + new ItemDrop( 199, 1, COMMON ), + new ItemDrop( 201, 1, COMMON ), + new ItemDrop( 203, 1, COMMON ), + new ItemDrop( 205, 1, COMMON ), + new ItemDrop( 207, 1, UNCOMMON ), + new ItemDrop( 209, 1, UNCOMMON ), + new ItemDrop( 211, 1, UNCOMMON ), + new ItemDrop( 213, 1, UNCOMMON ), + new ItemDrop( 215, 1, RARE ), + new ItemDrop( 2485, 1, RARE ), + new ItemDrop( 217, 1, RARE ), + new ItemDrop( i("earth rune"), new int[]{12, 60}, COMMON ), + new ItemDrop( i("law rune"), 2, COMMON ), + new ItemDrop( i("nature rune"), new int[]{3, 6}, COMMON ), + new ItemDrop( i("chaos rune"), 3, UNCOMMON ), + new ItemDrop( i("death rune"), 2, UNCOMMON ), + new ItemDrop( i("blood rune"), 2, RARE ), + new ItemDrop( i("air rune"), 45, VERY_RARE ), + new ItemDrop( i("fire rune"), 6, VERY_RARE ), + new ItemDrop( i("limpwurt seed"), 1, COMMON ), + new ItemDrop( i("jangerberry seed"), 1, COMMON ), + new ItemDrop( i("marrentill seed"), 1, COMMON ), + new ItemDrop( 5282, 1, COMMON ), + new ItemDrop( i("strawberry seed"), 1, COMMON ), + new ItemDrop( i("tarromin seed"), 1, COMMON ), + new ItemDrop( i("toadflax seed"), 1, COMMON ), + new ItemDrop( i("wildblood seed"), 1, COMMON ), + new ItemDrop( i("belladonna seed"), 1, UNCOMMON ), + new ItemDrop( i("harralander seed"), 1, UNCOMMON ), + new ItemDrop( i("irit seed"), 1, UNCOMMON ), + new ItemDrop( i("avantoe seed"), 1, RARE ), + new ItemDrop( i("cactus seed"), 1, RARE ), + new ItemDrop( i("dwarf weed seed"), 1, RARE ), + new ItemDrop( i("kwuarm seed"), 1, RARE ), + new ItemDrop( i("lantadyme seed"), 1, RARE ), + new ItemDrop( i("poison ivy seed"), 1, RARE ), + new ItemDrop( i("ranarr seed"), 1, RARE ), + new ItemDrop( i("cadantine seed"), 1, VERY_RARE ), + new ItemDrop( i("snapdragon seed"), 1, VERY_RARE ), + new ItemDrop( 995, new int[]{1, 479}, COMMON ), + new ItemDrop( i("steel spear"), 1, COMMON ), + new ItemDrop( i("staff of earth"), 1, UNCOMMON ), + }; + + public static final ItemDrop[] basilisk = { + new ItemDrop( i("bones"), 1, ALWAYS ), + new ItemDrop( i("water rune"), new int[]{75, 175}, COMMON ), + new ItemDrop( i("nature rune"), new int[]{15, 45}, UNCOMMON ), + new ItemDrop( i("chaos rune"), 12, UNCOMMON ), + new ItemDrop( i("law rune"), 3, UNCOMMON ), + new ItemDrop( i("steel battleaxe"), 1, COMMON ), + new ItemDrop( i("mithril spear"), 1, UNCOMMON ), + new ItemDrop( i("mithril axe"), 1, UNCOMMON ), + new ItemDrop( i("mithril kiteshield"), 1, UNCOMMON ), + new ItemDrop( i("rune dagger"), 1, UNCOMMON ), + new ItemDrop( i("adamant full helm"), 1, UNCOMMON ), + new ItemDrop( 4109, 1, RARE ), + new ItemDrop( 4117, 1, VERY_RARE ), + new ItemDrop( 199, 1, COMMON ), + new ItemDrop( 201, 1, COMMON ), + new ItemDrop( 203, 1, COMMON ), + new ItemDrop( 205, 1, COMMON ), + new ItemDrop( 207, new int[]{1, 3}, COMMON ), + new ItemDrop( 209, 1, RARE ), + new ItemDrop( 2485, 1, RARE ), + new ItemDrop( 211, 1, RARE ), + new ItemDrop( 215, 1, RARE ), + new ItemDrop( 213, 1, RARE ), + new ItemDrop( 217, 1, RARE ), + }; + + public static final ItemDrop[] abberantspectre = { + new ItemDrop( i("belladonna seed"), 1, COMMON ), + new ItemDrop( i("cactus seed"), 1, COMMON ), + new ItemDrop( i("irit seed"), 1, COMMON ), + new ItemDrop( i("toadflax seed"), 1, COMMON ), + new ItemDrop( i("avantoe seed"), 1, COMMON ), + new ItemDrop( i("cadantine seed"), 1, UNCOMMON ), + new ItemDrop( i("kwuarm seed"), 1, UNCOMMON ), + new ItemDrop( i("poison ivy seed"), 1, UNCOMMON ), + new ItemDrop( i("lantadyme seed"), 1, UNCOMMON ), + new ItemDrop( i("dwarf weed seed"), 1, RARE ), + new ItemDrop( i("snapdragon seed"), 1, RARE ), + new ItemDrop( i("torstol seed"), 1, VERY_RARE ), + new ItemDrop( 199, new int[]{1, 3}, COMMON ), + new ItemDrop( 201, new int[]{1, 3}, COMMON ), + new ItemDrop( 203, new int[]{1, 3}, COMMON ), + new ItemDrop( 205, new int[]{1, 3}, COMMON ), + new ItemDrop( 207, new int[]{1, 3}, COMMON ), + new ItemDrop( 209, new int[]{1, 3}, COMMON ), + new ItemDrop( 211, new int[]{1, 3}, COMMON ), + new ItemDrop( 213, new int[]{1, 3}, COMMON ), + new ItemDrop( 5302, new int[]{1, 3}, UNCOMMON ), + new ItemDrop( 215, new int[]{1, 3}, UNCOMMON ), + new ItemDrop( 217, new int[]{1, 3}, UNCOMMON ), + new ItemDrop( 3051, new int[]{1, 3}, VERY_RARE ), + new ItemDrop( i("steel axe"), 1, UNCOMMON ), + new ItemDrop( i("mithril kiteshield"), 1, UNCOMMON ), + new ItemDrop( i("lava battlestaff"), 1, UNCOMMON ), + new ItemDrop( i("adamant platelegs"), 1, UNCOMMON ), + new ItemDrop( i("rune full helm"), 1, RARE ), + new ItemDrop( 4103, 1, RARE ), + new ItemDrop( 995, new int[]{278, 487}, UNCOMMON ), + }; + + public static final ItemDrop[] turoth = { + new ItemDrop( i("bones"), 1, ALWAYS ), + new ItemDrop( i("mithril axe"), 1, COMMON ), + new ItemDrop( i("steel platelegs"), 1, COMMON ), + new ItemDrop( i("mithril kiteshield"), 1, COMMON ), + new ItemDrop( i("adamant full helm"), 1, UNCOMMON ), + new ItemDrop( i("rune dagger"), 1, UNCOMMON ), + new ItemDrop( 4113, 1, RARE ), + new ItemDrop( i("law rune"), 3, COMMON ), + new ItemDrop( i("nature rune"), new int[]{15, 45}, UNCOMMON ), + new ItemDrop( i("poision ivy seed"), 1, COMMON ), + new ItemDrop( i("cactus seed"), 1, COMMON ), + new ItemDrop( i("belladonna seed"), 1, COMMON ), + new ItemDrop( i("toadflax seed"), 1, COMMON ), + new ItemDrop( i("irit seed"), 1, COMMON ), + new ItemDrop( i("snapdragon seed"), 1, UNCOMMON ), + new ItemDrop( i("cadantine seed"), 1, UNCOMMON ), + new ItemDrop( i("avantoe seed"), 1, UNCOMMON ), + new ItemDrop( i("kwuarm seed"), 1, UNCOMMON ), + new ItemDrop( i("lantadyme seed"), 1, RARE ), + new ItemDrop( i("dwarf weed seed"), 1, RARE ), + new ItemDrop( i("ranarr seed"), 1, RARE ), + new ItemDrop( i("torstol seed"), 1, VERY_RARE ), + new ItemDrop( 199, new int[]{1, 3}, COMMON ), + new ItemDrop( 201, new int[]{1, 3}, COMMON ), + new ItemDrop( 203, new int[]{1, 3}, COMMON ), + new ItemDrop( 205, new int[]{1, 3}, COMMON ), + new ItemDrop( 207, new int[]{1, 3}, UNCOMMON ), + new ItemDrop( 209, new int[]{1, 3}, UNCOMMON ), + new ItemDrop( 211, new int[]{1, 3}, UNCOMMON ), + new ItemDrop( 213, new int[]{1, 3}, UNCOMMON ), + new ItemDrop( 5302, new int[]{1, 3}, RARE ), + new ItemDrop( 217, new int[]{1, 3}, RARE ), + new ItemDrop( 215, new int[]{1, 3}, RARE ), + new ItemDrop( 995, new int[]{44, 440}, COMMON ), + new ItemDrop( i("limpwurt root"), 1, COMMON ), + }; + + public static final ItemDrop[] elfwarrior = { + new ItemDrop( i("bones"), 1, ALWAYS ), + new ItemDrop( i("water rune"), 70, COMMON ), + new ItemDrop( i("fire rune"), 37, UNCOMMON ), + new ItemDrop( i("law rune"), new int[]{1, 3}, UNCOMMON ), + new ItemDrop( i("nature rune"), 12, UNCOMMON ), + new ItemDrop( i("mithril spear"), 1, COMMON ), + new ItemDrop( i("rune dagger"), 1, UNCOMMON ), + new ItemDrop( i("mithril kiteshield"), 1, COMMON ), + new ItemDrop( 1099, 1, COMMON ), + new ItemDrop( 1135, 1, COMMON ), + new ItemDrop( 1065, 1, COMMON ), + new ItemDrop( i("adamant med helm"), 1, UNCOMMON ), + new ItemDrop( i("rune med helm"), 1, RARE ), + new ItemDrop( i("bass"), 1, UNCOMMON ), + new ItemDrop( i("shark"), 1, UNCOMMON ), + new ItemDrop( i("lobster"), 1, UNCOMMON ), + new ItemDrop( i("sea turtle"), 1, RARE ), + new ItemDrop( i("manta ray"), 1, VERY_RARE ), + new ItemDrop( i("kwuarm seed"), 1, UNCOMMON ), + new ItemDrop( i("irit seed"), 1, UNCOMMON ), + new ItemDrop( i("avantoe seed"), 1, UNCOMMON ), + new ItemDrop( i("toadflax seed"), 1, UNCOMMON ), + new ItemDrop( i("poison ivy seed"), 1, UNCOMMON ), + new ItemDrop( i("belladonna seed"), 1, UNCOMMON ), + new ItemDrop( i("cadantine seed"), 1, UNCOMMON ), + new ItemDrop( i("dwarf weed seed"), 1, UNCOMMON ), + new ItemDrop( i("cactus seed"), 1, UNCOMMON ), + new ItemDrop( i("lantadyme seed"), 1, RARE ), + new ItemDrop( i("snapdragon seed"), 1, RARE ), + new ItemDrop( 199, 1, COMMON ), + new ItemDrop( 201, 1, COMMON ), + new ItemDrop( 203, 1, COMMON ), + new ItemDrop( 205, 1, COMMON ), + new ItemDrop( 209, 1, COMMON ), + new ItemDrop( 211, 1, COMMON ), + new ItemDrop( 213, 1, COMMON ), + new ItemDrop( 215, 1, RARE ), + new ItemDrop( 2485, 1, RARE ), + new ItemDrop( 207, 1, RARE ), + new ItemDrop( 217, 1, RARE ), + new ItemDrop( 995, new int[]{20, 427}, COMMON ), + new ItemDrop( i("adamantite ore"), 1, UNCOMMON ), + }; + + public static final ItemDrop[] man = { + new ItemDrop( 526, 1, ALWAYS ), + new ItemDrop( 995, new int[]{1, 40}, COMMON ), + new ItemDrop( i("water rune"), 7, UNCOMMON ), + new ItemDrop( i("earth rune"), 4, UNCOMMON ), + new ItemDrop( i("fire rune"), 6, UNCOMMON ), + new ItemDrop( i("mind rune"), 9, UNCOMMON ), + new ItemDrop( i("bronze arrow"), 7, UNCOMMON ), + new ItemDrop( i("iron dagger"), 1, UNCOMMON ), + new ItemDrop( i("bronze full helm"), 1, UNCOMMON ), + new ItemDrop( i("air talisman"), 1, UNCOMMON ), + new ItemDrop( i("earth talisman"), 1, UNCOMMON ), + new ItemDrop( i("fishing bait"), 1, UNCOMMON ), + new ItemDrop( i("copper ore"), 1, UNCOMMON ), + new ItemDrop( i("tin ore"), 1, UNCOMMON ), + new ItemDrop( i("chaos rune"), 2, RARE ), + new ItemDrop( i("body rune"), 7, RARE ), + new ItemDrop( i("staff of air"), 1, RARE + r(5) ), + new ItemDrop( 199, 1, COMMON ), + new ItemDrop( 201, 1, UNCOMMON ), + new ItemDrop( 203, 1, UNCOMMON ), + new ItemDrop( 205, 1, UNCOMMON ), + new ItemDrop( 207, 1, UNCOMMON ), + new ItemDrop( 213, 1, UNCOMMON ), + new ItemDrop( 209, 1, UNCOMMON ), + new ItemDrop( 211, 1, RARE ), + new ItemDrop( 215, 1, RARE ), + new ItemDrop( 217, 1, RARE ), + new ItemDrop( 2485, 1, RARE ), + }; + + public static final ItemDrop[] dagannoth = { + new ItemDrop( 526, 1, ALWAYS ), + new ItemDrop( i("bronze spear"), 1, COMMON ), + new ItemDrop( i("bronze axe"), 1, COMMON ), + new ItemDrop( i("iron spear"), 1, COMMON ), + new ItemDrop( i("mithril spear"), 1, UNCOMMON ), + new ItemDrop( i("cactus seed"), 1, COMMON ), + new ItemDrop( i("poison ivy seed"), 1, COMMON ), + new ItemDrop( i("belladonna seed"), 1, COMMON ), + new ItemDrop( i("irit seed"), 1, COMMON ), + new ItemDrop( i("avantoe seed"), 1, COMMON ), + new ItemDrop( i("toadflax seed"), 1, COMMON ), + new ItemDrop( i("ranarr seed"), 1, UNCOMMON ), + new ItemDrop( i("cadantine seed"), 1, UNCOMMON ), + new ItemDrop( i("kwuarm seed"), 1, UNCOMMON ), + new ItemDrop( i("lantadyme seed"), 1, UNCOMMON ), + new ItemDrop( i("dwarf weed seed"), 1, UNCOMMON ), + new ItemDrop( i("snapdragon seed"), 1, UNCOMMON ), + new ItemDrop( i("torstol seed"), 1, UNCOMMON ), + new ItemDrop( i("steel arrow"), 15, COMMON ), + new ItemDrop( i("mithril javelin"), new int[]{2, 6}, UNCOMMON ), + new ItemDrop( i("harpoon"), 1, COMMON ), + new ItemDrop( i("lobster pot"), 1, COMMON ), + new ItemDrop( i("fishing bait"), 50, COMMON ), + new ItemDrop( i("feather"), 15, COMMON ), + new ItemDrop( i("raw sardine"), 5, COMMON ), + new ItemDrop( i("raw herring"), 4, COMMON ), + new ItemDrop( 402, 10, COMMON ), + new ItemDrop( 411, new int[]{1, 3}, COMMON ), + new ItemDrop( i("raw lobster"), 1, COMMON ), + new ItemDrop( i("raw tuna"), 1, UNCOMMON ), + new ItemDrop( 995, new int[]{1, 85}, COMMON ), + new ItemDrop( i("water rune"), new int[]{15, 45}, COMMON ), + new ItemDrop( 46, 12, COMMON ), + new ItemDrop( 405, 1, UNCOMMON ), + new ItemDrop( 45, 12, UNCOMMON ), + }; + + public static final ItemDrop[] chaoselemental = { + new ItemDrop( i("rune sword"), 1, UNCOMMON ), + new ItemDrop( i("dragon 2h sword"), 1, RARE ), + new ItemDrop( i("iron arrow"), new int[]{500, 1000}, COMMON ), + new ItemDrop( i("mithril dart"), 400, COMMON ), + new ItemDrop( i("rune arrow"), 200, COMMON ), + new ItemDrop( i("air rune"), 500, UNCOMMON ), + new ItemDrop( i("chaos rune"), new int[]{250, 2500}, COMMON ), + new ItemDrop( i("death rune"), 500, RARE ), + new ItemDrop( i("blood rune"), 500, RARE ), + new ItemDrop( 119, 1, COMMON ), + new ItemDrop( 2446, 1, COMMON ), + new ItemDrop( 125, 1, COMMON ), + new ItemDrop( 137, 1, COMMON ), + new ItemDrop( 2289, 3, COMMON ), + new ItemDrop( 361, 5, COMMON ), + new ItemDrop( 464, new int[]{1, 6}, COMMON ), + new ItemDrop( i("shark"), 10, COMMON ), + new ItemDrop( 187, 1, UNCOMMON ), + new ItemDrop( 2003, 10, UNCOMMON ), + new ItemDrop( 6689, new int[]{4, 6}, UNCOMMON ), + new ItemDrop( 995, new int[]{3000, 12000}, UNCOMMON ), + new ItemDrop( i("bones"), 4, COMMON ), + new ItemDrop( i("bat bones"), 5, COMMON ), + new ItemDrop( i("big bones"), 3, COMMON ), + new ItemDrop( i("dragon bones"), 1, UNCOMMON ), + new ItemDrop( i("babydragon bones"), new int[]{1, 3}, UNCOMMON ), + new ItemDrop( i("wildblood seed"), new int[]{1, 3}, COMMON ), + new ItemDrop( i("avantoe seed"), new int[]{1, 3}, UNCOMMON ), + new ItemDrop( i("limpwurt seed"), new int[]{1, 2}, UNCOMMON ), + new ItemDrop( i("strawberry seed"), new int[]{1, 2}, UNCOMMON ), + new ItemDrop( i("tarromin seed"), new int[]{1, 2}, UNCOMMON ), + new ItemDrop( i("ranarr seed"), new int[]{1, 2}, UNCOMMON ), + new ItemDrop( i("toadflax seed"), new int[]{1, 2}, UNCOMMON ), + new ItemDrop( i("jangerberry seed"), new int[]{1, 2}, UNCOMMON ), + new ItemDrop( i("irit seed"), new int[]{1, 2}, UNCOMMON ), + new ItemDrop( i("poison ivy seed"), new int[]{1, 2}, UNCOMMON ), + new ItemDrop( i("marrentill seed"), new int[]{1, 2}, UNCOMMON ), + new ItemDrop( i("cactus seed"), new int[]{1, 2}, UNCOMMON ), + new ItemDrop( i("kwuarm seed"), new int[]{1, 2}, UNCOMMON ), + new ItemDrop( i("harralander seed"), new int[]{1, 2}, UNCOMMON ), + new ItemDrop( i("belladonna seed"), new int[]{1, 2}, UNCOMMON ), + new ItemDrop( i("cadantine seed"), new int[]{1, 2}, UNCOMMON ), + new ItemDrop( i("whiteberry seed"), new int[]{1, 2}, COMMON ), + new ItemDrop( i("lantadyme seed"), 1, RARE ), + }; + + public static final ItemDrop[] dagannothsupereme = { + new ItemDrop( i("dragon bones"), 1, ALWAYS ), + new ItemDrop( i("steel bar"), 5, ALWAYS ), + new ItemDrop( i("adamant axe"), 1, UNCOMMON ), + new ItemDrop( i("rune longsword"), 1, RARE ), + new ItemDrop( i("fremennik blade"), 1, RARE ), + new ItemDrop( i("rune battleaxe"), 1, RARE ),// fremennik + // blade + // not + // tradeable + new ItemDrop( i("rune 2h sword"), 1, RARE ), + new ItemDrop( i("seercull"), 1, RARE ), + new ItemDrop( i("dragon axe"), 1, RARE ), + new ItemDrop( i("iron arrow"), new int[]{218, 590}, COMMON ), + new ItemDrop( i("steel arrow"), new int[]{54, 98}, COMMON ), + new ItemDrop( i("iron knife"), new int[]{214, 500}, UNCOMMON ), + new ItemDrop( i("steel knife"), new int[]{54, 90}, UNCOMMON ), + new ItemDrop( i("mithril knife"), new int[]{31, 69}, UNCOMMON ), + new ItemDrop( i("rune throwing axe"), 7, UNCOMMON ), + new ItemDrop( i("rune javelin"), new int[]{1, 10}, UNCOMMON ), + new ItemDrop( 2489, 1, UNCOMMON ), + new ItemDrop( i("spined body"), 1, UNCOMMON ), + new ItemDrop( i("spined chaps"), 1, UNCOMMON ), + new ItemDrop( i("fremennik shield"), 1, UNCOMMON ), + new ItemDrop( i("fremennik helm"), 1, UNCOMMON ), // fremennik shield + helm not + // tradeable + new ItemDrop( i("archer helm"), 1, RARE ), + new ItemDrop( i("archers' ring"), 1, RARE ), + new ItemDrop( i("shark"), 5, UNCOMMON ), + new ItemDrop( i("belladonna seed"), 1, UNCOMMON ), + new ItemDrop( i("cactus seed"), 1, UNCOMMON ), + new ItemDrop( i("poison ivy seed"), 1, UNCOMMON ), + new ItemDrop( i("irit seed"), 1, UNCOMMON ), + new ItemDrop( i("toadflax seed"), 1, UNCOMMON ), + new ItemDrop( i("avantoe seed"), 1, UNCOMMON ), + new ItemDrop( i("kwuarm seed"), 1, RARE ), + new ItemDrop( i("cadantine seed"), 1, RARE ), + new ItemDrop( i("lantadyme seed"), 1, RARE ), + new ItemDrop( i("dwarf weed seed"), 1, RARE ), + new ItemDrop( i("air talisman"), 1, RARE ), + new ItemDrop( i("mind talisman"), 1, RARE ), + new ItemDrop( i("earth talisman"), 1, RARE ), + new ItemDrop( i("fire talisman"), 1, RARE ), + new ItemDrop( i("body talisman"), 1, RARE ), + new ItemDrop( i("cosmic talisman"), 1, RARE ), + new ItemDrop( 995, new int[]{900, 3000}, COMMON ), + new ItemDrop( i("opal bolt tips"), new int[]{1, 2}, COMMON ), + new ItemDrop( 1516, 94, UNCOMMON ), + new ItemDrop( 1518, new int[]{91, 122}, UNCOMMON ), + new ItemDrop( i("oyster pearls"), 1, COMMON ), + new ItemDrop( 207, 1, UNCOMMON ), + new ItemDrop( i("feather"), new int[]{1, 200}, RARE ), + new ItemDrop( i("runite limbs"), 1, RARE ), + }; + + public static final ItemDrop[] giantmole = { + new ItemDrop( i("big bones"), 1, ALWAYS ), + new ItemDrop( i("mole claw"), 1, ALWAYS ), + new ItemDrop( i("mole skin"), new int[]{1, 6}, ALWAYS ), + new ItemDrop( i("air rune"), 105, COMMON ), + new ItemDrop( i("fire rune"), 105, COMMON ), + new ItemDrop( i("blood rune"), 15, COMMON ), + new ItemDrop( i("death rune"), 7, COMMON ), + new ItemDrop( i("law rune"), 15, UNCOMMON ), + new ItemDrop( i("iron arrow"), new int[]{690, 1380}, UNCOMMON ), + new ItemDrop( i("adamant longsword"), 1, COMMON ), + new ItemDrop( i("mithril axe"), 1, COMMON ), + new ItemDrop( i("mithril battleaxe"), 1, COMMON ), + new ItemDrop( i("mithril 2h sword"), 1, COMMON ), + new ItemDrop( i("rune battleaxe"), 1, UNCOMMON ), + new ItemDrop( i("rune 2h sword"), 1, RARE ), + new ItemDrop( i("mithril platebody"), 1, COMMON ), + new ItemDrop( i("rune med helm"), 1, COMMON ), + new ItemDrop( i("amulet of strength"), 1, COMMON ), + new ItemDrop( i("rune sq shield"), 1, UNCOMMON ), + new ItemDrop( 441, 100, UNCOMMON ), + new ItemDrop( i("mithril bar"), 1, RARE ), + new ItemDrop( 995, new int[]{360, 11000}, UNCOMMON ), + new ItemDrop( i("shark"), new int[]{1, 5}, UNCOMMON ), + new ItemDrop( i("oyster pearls"), 1, RARE ), + new ItemDrop( 1516, new int[]{50, 150}, UNCOMMON ), + }; + + public static final ItemDrop[] dagannothprime = { + new ItemDrop( i("dagganoth bones"), 1, ALWAYS ), + new ItemDrop( i("dagganoth hide"), 1, ALWAYS ), + new ItemDrop( i("air battlestaff"), 1, COMMON ), + new ItemDrop( i("earth battlestaff"), 1, COMMON ), + new ItemDrop( i("water battlestaff"), 1, COMMON ), + new ItemDrop( i("mud battlestaff"), 1, RARE ), + new ItemDrop( 1392, new int[]{1, 10}, RARE ), + new ItemDrop( i("dragon axe"), 1, RARE ), + new ItemDrop( i("air talisman"), new int[]{1, 80}, UNCOMMON ), + new ItemDrop( i("earth talisman"), new int[]{1, 80}, UNCOMMON ), + new ItemDrop( i("water talisman"), new int[]{1, 80}, UNCOMMON ), + new ItemDrop( i("air rune"), 155, UNCOMMON ), + new ItemDrop( i("mud rune"), 32, UNCOMMON ), + new ItemDrop( i("death rune"), 63, UNCOMMON ), + new ItemDrop( i("fremennik shield"), 1, UNCOMMON ), + new ItemDrop( i("fremennik helm"), 1, UNCOMMON ), // shield + // + + // helm + // not + // tradeable + new ItemDrop( i("seers' ring"), 1, RARE ), + new ItemDrop( i("skeletal top"), 1, RARE ), + new ItemDrop( i("skeletal bottoms"), 1, RARE ), + new ItemDrop( i("farseer helm"), 1, RARE ), + new ItemDrop( 995, new int[]{972, 2994}, COMMON ), + new ItemDrop( 7937, 150, UNCOMMON ), + new ItemDrop( 207, 1, UNCOMMON ), + new ItemDrop( i("belladonna seed"), 1, UNCOMMON ), + new ItemDrop( i("cactus seed"), 1, UNCOMMON ), + new ItemDrop( i("poison ivy seed"), 1, UNCOMMON ), + new ItemDrop( i("irit seed"), 1, UNCOMMON ), + new ItemDrop( i("toadflax seed"), 1, UNCOMMON ), + new ItemDrop( i("avantoe seed"), 1, UNCOMMON ), + new ItemDrop( i("kwuarm seed"), 1, RARE ), + new ItemDrop( i("cadantine seed"), 1, RARE ), + new ItemDrop( i("lantadyme seed"), 1, RARE ), + new ItemDrop( i("dwarf weed seed"), 1, RARE ), + }; + + public static final ItemDrop[] daggannothrex = { + new ItemDrop( i("dagganoth bones"), 1, ALWAYS ), + new ItemDrop( i("dagganoth hide"), 1, ALWAYS ), + new ItemDrop( i("fremennik blade"), 1, COMMON ), + new ItemDrop( i("mithril warhammer"), 1, COMMON ), // fremy + // blade + // not + // tradeable + new ItemDrop( i("adamant axe"), 1, COMMON ), + new ItemDrop( i("mithril 2h sword"), 1, UNCOMMON ), + new ItemDrop( i("rune axe"), 1, UNCOMMON ), + new ItemDrop( i("dragon axe"), 1, RARE ), + new ItemDrop( i("steel kiteshield"), 1, COMMON ), + new ItemDrop( i("steel platebody"), 1, COMMON ), + new ItemDrop( i("adamant platebody"), 1, UNCOMMON ), + new ItemDrop( i("fremennik shield"), 1, UNCOMMON ),// fremmy helm + shield not + // tradeable + new ItemDrop( i("fremennik helm"), 1, UNCOMMON ), + new ItemDrop( i("berserker ring"), 1, RARE ), + new ItemDrop( i("warrior ring"), 1, RARE ), + new ItemDrop( i("ring of life"), 1, RARE ), + new ItemDrop( i("rock-shell plate"), 1, RARE ), + new ItemDrop( i("rock-shell legs"), 1, RARE ), + new ItemDrop( 147, 1, UNCOMMON ), + new ItemDrop( 159, 1, UNCOMMON ), + new ItemDrop( 165, 1, UNCOMMON ), + new ItemDrop( 141, 1, UNCOMMON ), + new ItemDrop( 2456, 1, UNCOMMON ), + new ItemDrop( 191, 1, UNCOMMON ), + new ItemDrop( 129, 1, UNCOMMON ), + new ItemDrop( i("adamant bar"), 1, UNCOMMON ), + new ItemDrop( 4448, 25, UNCOMMON ), + new ItemDrop( 454, 100, UNCOMMON ), + new ItemDrop( 441, 150, UNCOMMON ), + new ItemDrop( 2354, new int[]{17, 38}, UNCOMMON ), + new ItemDrop( 365, 5, UNCOMMON ), + new ItemDrop( 373, 5, UNCOMMON ), + new ItemDrop( 385, 5, UNCOMMON ), + new ItemDrop( 207, 1, UNCOMMON ), + new ItemDrop( i("body talisman"), 1, COMMON ), + new ItemDrop( i("earth talisman"), 1, COMMON ), + new ItemDrop( 995, new int[]{995, 3839}, UNCOMMON ), + }; + + public static final ItemDrop[] monkeyguard = { + new ItemDrop( 3182, 1, ALWAYS ), + }; + + public static final ItemDrop[] bandit = { + new ItemDrop( 526, 1, ALWAYS ), + new ItemDrop( i("chaos rune"), 2, COMMON ), + new ItemDrop( i("death rune"), 2, UNCOMMON ), + new ItemDrop( i("nature rune"), 2, UNCOMMON ), + new ItemDrop( i("law rune"), 2, UNCOMMON ), + new ItemDrop( i("cosmic rune"), 2, UNCOMMON ), + new ItemDrop( 205, 1, UNCOMMON ), + new ItemDrop( 203, 1, UNCOMMON ), + new ItemDrop( 201, 1, UNCOMMON ), + new ItemDrop( 199, 1, UNCOMMON ), + new ItemDrop( 217, 1, RARE ), + new ItemDrop( 2485, 1, RARE ), + new ItemDrop( 215, 1, RARE ), + new ItemDrop( 213, 1, RARE ), + new ItemDrop( 211, 1, RARE ), + new ItemDrop( 209, 1, RARE ), + new ItemDrop( 207, 1, UNCOMMON + r(200) ), + new ItemDrop( i("steel axe"), 1, COMMON ), + new ItemDrop( i("iron battleaxe"), 1, UNCOMMON ), + new ItemDrop( i("iron scimitar"), 1, UNCOMMON ), + new ItemDrop( i("steel sq shield"), 1, UNCOMMON ), + new ItemDrop( 995, new int[]{12, 49}, COMMON ), + new ItemDrop( i("coal"), 1, COMMON ), + new ItemDrop( i("steel bar"), 1, UNCOMMON ), + }; + + public static final ItemDrop[] abyssaldemon = { + new ItemDrop( i("black sword"), 1, COMMON ), + new ItemDrop( i("black axe"), 1, COMMON ), + new ItemDrop( i("steel battleaxe"), 1, COMMON ), + new ItemDrop( i("abyssal whip"), 1, VERY_RARE ), + new ItemDrop( i("mithril kiteshield"), 1, UNCOMMON ), + new ItemDrop( i("rune chainbody"), 1, UNCOMMON ), + new ItemDrop( i("rune med helm"), 1, UNCOMMON ), + new ItemDrop( 199, 1, COMMON ), + new ItemDrop( 201, 1, COMMON ), + new ItemDrop( 203, 1, COMMON ), + new ItemDrop( 205, 1, UNCOMMON ), + new ItemDrop( 207, 1, UNCOMMON ), + new ItemDrop( 209, 1, UNCOMMON ), + new ItemDrop( 211, 1, UNCOMMON ), + new ItemDrop( 215, 1, UNCOMMON ), + new ItemDrop( 2485, 1, UNCOMMON ), + new ItemDrop( 213, 1, UNCOMMON ), + new ItemDrop( 217, 1, UNCOMMON ), + new ItemDrop( i("air rune"), 50, COMMON ), + new ItemDrop( i("blood rune"), 7, COMMON ), + new ItemDrop( i("chaos rune"), 10, COMMON ), + new ItemDrop( i("law rune"), 3, UNCOMMON ), + new ItemDrop( 995, new int[]{9, 3000}, COMMON ), + new ItemDrop( i("lobster"), 1, COMMON ), + new ItemDrop( i("cosmic talisman"), 1, COMMON ), + new ItemDrop( 7937, 60, UNCOMMON ), + new ItemDrop( i("earth talisman"), 1, UNCOMMON ), + new ItemDrop( i("adamant bar"), 1, UNCOMMON ), + new ItemDrop( 133, 1, UNCOMMON ), + }; + + public static final ItemDrop[] nechryael = { + new ItemDrop( i("rune full helm"), 1, UNCOMMON ), + new ItemDrop( i("adamant platelegs"), 1, UNCOMMON ), + new ItemDrop( i("mithril kiteshield"), 1, UNCOMMON ), + new ItemDrop( i("rune boots"), 1, UNCOMMON ), + new ItemDrop( i("rune sq shield"), 1, VERY_RARE ), + new ItemDrop( i("steel 2h sword"), 1, COMMON ), + new ItemDrop( i("steel battleaxe"), 1, COMMON ), + new ItemDrop( i("steel axe"), 1, COMMON ), + new ItemDrop( i("rune longsword"), 1, VERY_RARE ), + new ItemDrop( i("rune battleaxe"), 1, VERY_RARE ), + new ItemDrop( i("rune 2h sword"), 1, VERY_RARE ), + new ItemDrop( i("death rune"), new int[]{5, 10}, COMMON ), + new ItemDrop( i("chaos rune"), new int[]{3, 37}, UNCOMMON ), + new ItemDrop( i("belladonna seed"), 1, COMMON ), + new ItemDrop( i("irit seed"), 1, COMMON ), + new ItemDrop( i("cactus seed"), 1, COMMON ), + new ItemDrop( i("avantoe seed"), 1, UNCOMMON ), + new ItemDrop( i("kwuarm seed"), 1, UNCOMMON ), + new ItemDrop( i("poison ivy seed"), 1, UNCOMMON ), + new ItemDrop( i("toadflax seed"), 1, UNCOMMON ), + new ItemDrop( i("cadantine seed"), 1, UNCOMMON ), + new ItemDrop( i("dwarf weed seed"), 1, RARE ), + new ItemDrop( i("lantadyme seed"), 1, RARE ), + new ItemDrop( 995, new int[]{11, 8992}, COMMON ), + new ItemDrop( i("tuna"), 1, COMMON ), + new ItemDrop( i("thread"), 10, UNCOMMON ), + new ItemDrop( i("gold bar"), 1, UNCOMMON ), + new ItemDrop( i("rune bar"), 1, RARE ), + }; + + public static final ItemDrop[] gargoyle = { + new ItemDrop( i("steel 2h sword"), 1, COMMON ), + new ItemDrop( i("steel battleaxe"), 1, COMMON ), + new ItemDrop( i("steel axe"), 1, COMMON ), + new ItemDrop( i("granite maul"), 1, VERY_RARE + r(50) ), + new ItemDrop( i("rune full helm"), 1, UNCOMMON ), + new ItemDrop( i("adamant boots"), 1, UNCOMMON ), + new ItemDrop( i("steel full helm"), 1, RARE ), + new ItemDrop( 4101, 1, RARE ), + new ItemDrop( i("fire rune"), new int[]{37, 75}, COMMON ), + new ItemDrop( i("chaos rune"), 15, COMMON ), + new ItemDrop( i("death rune"), 5, UNCOMMON ), + new ItemDrop( 995, new int[]{11, 498}, COMMON ), + new ItemDrop( 7937, 35, UNCOMMON ), + new ItemDrop( i("mithril bar"), 3, UNCOMMON ), + new ItemDrop( i("steel bar"), 3, UNCOMMON ), + new ItemDrop( i("gold bar"), 1, UNCOMMON ), + new ItemDrop( i("thread"), 10, UNCOMMON ), + }; + + public static final ItemDrop[] dustdevil = { + new ItemDrop(526, 1, ALWAYS), + new ItemDrop(i("steel axe"), 1, COMMON), + new ItemDrop(i("rune arrow"), 12, COMMON), + new ItemDrop(2489, 1, COMMON), + new ItemDrop(i("earth battlestaff"), 1, RARE), + new ItemDrop(i("rune dagger"), 1, RARE), + new ItemDrop(i("rune javelin"), 5, RARE), + new ItemDrop(i("dragon chainbody"), 1, VERY_RARE + r(30000)), + new ItemDrop(i("fire rune"), new int[]{3, 266}, COMMON), + new ItemDrop(i("chaos rune"), 5, UNCOMMON), + new ItemDrop(i("soul rune"), new int[]{1, 5}, UNCOMMON), + new ItemDrop(i("law rune"), 1, VERY_RARE), + new ItemDrop(995, new int[]{15, 396}, COMMON), + new ItemDrop(i("mithril bar"), 1, COMMON), + new ItemDrop(1883, new int[]{1, 2}, UNCOMMON), + new ItemDrop(199, 1, COMMON), + new ItemDrop(201, 1, COMMON), + new ItemDrop(203, 1, COMMON), + new ItemDrop(205, 1, UNCOMMON), + new ItemDrop(207, 1, UNCOMMON), + new ItemDrop(209, 1, UNCOMMON), + new ItemDrop(211, 1, UNCOMMON), + new ItemDrop(215, 1, UNCOMMON), + new ItemDrop(2485, 1, RARE), + new ItemDrop(213, 1, RARE), + new ItemDrop(217, 1, RARE) + }; + + public static final ItemDrop[] banshee = { + new ItemDrop( i("iron mace"), 1, UNCOMMON ), + new ItemDrop( i("iron dagger"), 1, RARE ), + new ItemDrop( i("iron kiteshield"), 1, RARE ), + new ItemDrop( i("adamant kiteshield"), 1, VERY_RARE ), + new ItemDrop( 4105, 1, VERY_RARE ), + new ItemDrop( 556, 3, COMMON ), + new ItemDrop( i("chaos rune"), new int[]{3, 17}, COMMON ), + new ItemDrop( i("cosmic rune"), 2, UNCOMMON ), + new ItemDrop( i("fire rune"), new int[]{5, 12}, UNCOMMON ), + new ItemDrop( 995, new int[]{13, 35}, COMMON ), + new ItemDrop( 7937, 23, COMMON ), + new ItemDrop( 313, new int[]{7, 15}, COMMON ), + new ItemDrop( i("iron ore"), 1, UNCOMMON ), + new ItemDrop( i("eye of newt"), 1, UNCOMMON ), + new ItemDrop( 199, 1, COMMON ), + new ItemDrop( 203, 1, COMMON ), + new ItemDrop( 201, 1, COMMON ), + new ItemDrop( 205, 1, COMMON ), + new ItemDrop( 213, 1, COMMON ), + new ItemDrop( 207, 1, UNCOMMON ), + new ItemDrop( 209, 1, UNCOMMON ), + new ItemDrop( 211, 1, UNCOMMON ), + new ItemDrop( 2485, 1, UNCOMMON ), + new ItemDrop( 217, 1, UNCOMMON ), + new ItemDrop( 215, 1, UNCOMMON ), + }; + + public static final ItemDrop[] infernalmage = { + new ItemDrop( 526, 1, ALWAYS ), + new ItemDrop( i("staff"), 1, COMMON ), + new ItemDrop( i("staff of fire"), 1, UNCOMMON ), + new ItemDrop( i("lava battlestaff"), 1, RARE ), + new ItemDrop( i("mystic fire staff"), 1, RARE ), + new ItemDrop( 4099, 1, RARE ), + new ItemDrop( 4107, 1, RARE ), + new ItemDrop( i("earth rune"), new int[]{5, 36}, COMMON ), + new ItemDrop( i("fire rune"), new int[]{10, 18}, COMMON ), + new ItemDrop( i("death rune"), 7, COMMON ), + new ItemDrop( i("blood rune"), new int[]{4, 7}, UNCOMMON ), + new ItemDrop( i("air rune"), new int[]{10, 18}, UNCOMMON ), + new ItemDrop( i("mind rune"), 18, UNCOMMON ), + new ItemDrop( i("water rune"), new int[]{10, 18}, UNCOMMON ), + new ItemDrop( i("body rune"), 18, UNCOMMON ), + new ItemDrop( 995, new int[]{1, 30}, COMMON ), + }; + + public static final ItemDrop[] bloodveld = { + new ItemDrop( 526, 1, ALWAYS ), + new ItemDrop( i("steel axe"), 1, COMMON ), + new ItemDrop( i("steel scimitar"), 1, UNCOMMON ), + new ItemDrop( i("steel full helm"), 1, COMMON ), + new ItemDrop( i("mithril sq shield"), 1, UNCOMMON ), + new ItemDrop( i("mithril chainbody"), 1, UNCOMMON ), + new ItemDrop( i("black boots"), 1, RARE ), + new ItemDrop( i("rune med helm"), 1, RARE ), + new ItemDrop( i("rune full helm"), 1, RARE ), + new ItemDrop( i("fire rune"), 60, COMMON ), + new ItemDrop( i("blood rune"), new int[]{3, 30}, UNCOMMON ), + new ItemDrop( 995, new int[]{10, 460}, COMMON ), + new ItemDrop( i("gold ore"), 1, UNCOMMON ), + new ItemDrop( 526, new int[]{1, 2}, UNCOMMON ), + new ItemDrop( i("big bones"), new int[]{1, 5}, UNCOMMON ), + new ItemDrop( i("meat pizza"), 1, UNCOMMON ), + new ItemDrop( i("gold ring"), 1, RARE ), + new ItemDrop( 199, 1, UNCOMMON ), + new ItemDrop( 201, 1, UNCOMMON ), + new ItemDrop( 203, 1, UNCOMMON ), + new ItemDrop( 205, 1, UNCOMMON ), + new ItemDrop( 207, 1, UNCOMMON ), + new ItemDrop( 209, 1, UNCOMMON ), + new ItemDrop( 211, 1, UNCOMMON ), + new ItemDrop( 213, 1, UNCOMMON ), + new ItemDrop( 215, 1, UNCOMMON ), + new ItemDrop( 2485, 1, UNCOMMON ), + new ItemDrop( 217, 1, UNCOMMON ), + }; + + public static final ItemDrop[] dwarf = { + new ItemDrop( 526, 1, ALWAYS ), + new ItemDrop( i("bronze pickaxe"), 1, COMMON ), + new ItemDrop( i("tin ore"), 1, COMMON ), + new ItemDrop( i("bronze bar"), 1, COMMON ), + new ItemDrop( i("copper ore"), 1, COMMON ), + new ItemDrop( i("iron ore"), 1, COMMON ), + new ItemDrop( i("iron pickaxe"), 1, UNCOMMON ), + new ItemDrop( i("coal"), 1, UNCOMMON ), + new ItemDrop( i("iron bar"), 1, UNCOMMON ), + new ItemDrop( i("nature rune"), 2, RARE ), + new ItemDrop( i("chaos rune"), 2, RARE ), + new ItemDrop( i("bronze med helm"), 1, COMMON ), + new ItemDrop( i("bronze battleaxe"), 1, UNCOMMON ), + new ItemDrop( i("iron battleaxe"), 1, UNCOMMON ), + new ItemDrop( 995, new int[]{3, 30}, COMMON ), + new ItemDrop( i("hammer"), 1, UNCOMMON ), + new ItemDrop( i("dwarven stout"), 1, UNCOMMON ), + }; + + public static final ItemDrop[] mossgiant = { + new ItemDrop( i("big bones"), 1, ALWAYS ), + new ItemDrop( i("magic staff"), 1, COMMON ), + new ItemDrop( i("mithril spear"), 1, COMMON ), + new ItemDrop( i("mithril sword"), 1, COMMON ), + new ItemDrop( i("steel arrow"), 30, COMMON ), + new ItemDrop( i("iron arrow"), 15, COMMON ), + new ItemDrop( i("adamant sword"), 1, RARE ), + new ItemDrop( i("black full helm"), 1, COMMON ), + new ItemDrop( i("black sq shield"), 1, COMMON ), + new ItemDrop( i("steel med helm"), 1, COMMON ), + new ItemDrop( i("steel kiteshield"), 1, UNCOMMON ), + new ItemDrop( i("air rune"), 18, COMMON ), + new ItemDrop( i("cosmic rune"), 3, COMMON ), + new ItemDrop( i("earth rune"), 27, COMMON ), + new ItemDrop( i("nature rune"), 6, COMMON ), + new ItemDrop( i("law rune"), new int[]{2, 4}, UNCOMMON ), + new ItemDrop( i("blood rune"), 1, UNCOMMON ), + new ItemDrop( i("chaos rune"), 7, UNCOMMON ), + new ItemDrop( i("death rune"), new int[]{1, 2}, RARE ), + new ItemDrop( i("strawberry seed"), 1, COMMON ), + new ItemDrop( i("wildblood seed"), 1, COMMON ), + new ItemDrop( i("tarromin seed"), 1, COMMON ), + new ItemDrop( i("harralander seed"), 1, COMMON ), + new ItemDrop( i("jangerberry seed"), 1, COMMON ), + new ItemDrop( i("marentill seed"), 1, COMMON ), + new ItemDrop( i("belladonna seed"), 1, UNCOMMON ), + new ItemDrop( i("limpwurt seed"), 1, UNCOMMON ), + new ItemDrop( i("toadflax seed"), 1, UNCOMMON ), + new ItemDrop( i("whiteberry seed"), 1, UNCOMMON ), + new ItemDrop( 5282, 1, UNCOMMON ), + new ItemDrop( i("avantoe seed"), 1, RARE ), + new ItemDrop( i("cactus seed"), 1, RARE ), + new ItemDrop( i("irit seed"), 1, RARE ), + new ItemDrop( i("kwuarm seed"), 1, RARE ), + new ItemDrop( i("poison ivy seed"), 1, RARE ), + new ItemDrop( i("ranarr seed"), 1, RARE ), + new ItemDrop( i("cadantine seed"), 1, RARE ), + new ItemDrop( i("lantadyme seed"), 1, RARE ), + new ItemDrop( i("watermelon seed"), 1, RARE ), + new ItemDrop( i("dwarf weed seed"), 1, VERY_RARE ), + new ItemDrop( 205, 1, COMMON ), + new ItemDrop( 201, 1, COMMON ), + new ItemDrop( 203, 1, COMMON ), + new ItemDrop( 199, 1, COMMON ), + new ItemDrop( 211, 1, RARE ), + new ItemDrop( 215, 1, RARE ), + new ItemDrop( 217, 1, RARE ), + new ItemDrop( 209, 1, RARE ), + new ItemDrop( 2485, 1, RARE ), + new ItemDrop( 207, 1, RARE ), + new ItemDrop( 995, new int[]{2, 500}, COMMON ), + new ItemDrop( i("steel bar"), 1, COMMON ), + new ItemDrop( i("coal"), 1, UNCOMMON ), + new ItemDrop( i("spinach roll"), 1, UNCOMMON ), + new ItemDrop( i("fire talisman"), 1, RARE ), + }; + + public static final ItemDrop[] goblin = { + new ItemDrop( 526, 1, ALWAYS ), + new ItemDrop( 995, new int[]{1, 26}, COMMON ), + new ItemDrop( i("iron dagger"), 1, COMMON ), + new ItemDrop( i("bronze arrow"), new int[]{4, 16}, COMMON ), + new ItemDrop( i("bronze med helm"), 1, COMMON ), + new ItemDrop( i("bronze sq shield"), 1, COMMON ), + new ItemDrop( i("air rune"), new int[]{2, 4}, COMMON ), + new ItemDrop( i("body rune"), new int[]{2, 11}, COMMON ), + new ItemDrop( i("earth rune"), 4, COMMON ), + new ItemDrop( i("water rune"), 6, COMMON ), + new ItemDrop( i("air talisman"), 1, COMMON ), + new ItemDrop( i("chef's hat"), 1, COMMON ), + new ItemDrop( i("goblin mail"), 1, COMMON ), + new ItemDrop( i("bronze full helm"), 1, UNCOMMON ), + new ItemDrop( i("bronze sword"), 1, UNCOMMON ), + new ItemDrop( i("bronze longsword"), 1, UNCOMMON ), + new ItemDrop( i("iron arrow"), new int[]{3, 6}, UNCOMMON ), + new ItemDrop( i("bronze chainbody"), 1, UNCOMMON ), + new ItemDrop( i("staff of air"), 1, RARE ), + new ItemDrop( i("bronze kiteshield"), 1, UNCOMMON ), + new ItemDrop( i("raw chicken"), 1, UNCOMMON ), + new ItemDrop( i("fire talisman"), 1, UNCOMMON ), + new ItemDrop( i("mind rune"), new int[]{2, 19}, UNCOMMON ), + new ItemDrop( i("earth talisman"), 1, UNCOMMON ), + new ItemDrop( i("bronze axe"), 1, RARE ), + new ItemDrop( i("bronze scimitar"), 1, RARE ), + new ItemDrop( i("iron full helm"), 1, RARE ), + new ItemDrop( i("leather body"), 1, RARE ), + new ItemDrop( i("cape"), 1, RARE ), + new ItemDrop( i("chaos rune"), 1, RARE ), + new ItemDrop( i("nature rune"), 1, RARE ), + new ItemDrop( i("mind talisman"), 1, RARE ), + new ItemDrop( 946, 1, RARE ), + new ItemDrop( i("tin ore"), 1, RARE ), + }; + + public static final ItemDrop[] lesserdemon = { + new ItemDrop( i("ashes"), 1, ALWAYS ), + new ItemDrop( 995, new int[]{10, 650}, COMMON ), + new ItemDrop( i("steel axe"), 1, COMMON ), + new ItemDrop( i("steel scimitar"), 1, COMMON ), + new ItemDrop( i("steel full helm"), 1, COMMON ), + new ItemDrop( i("black 2h sword"), 1, COMMON ), + new ItemDrop( i("mithril sq shield"), 1, UNCOMMON ), + new ItemDrop( i("mithril chainbody"), 1, UNCOMMON ), + new ItemDrop( i("fire rune"), new int[]{6, 120}, UNCOMMON ), + new ItemDrop( i("chaos rune"), new int[]{7, 24}, UNCOMMON ), + new ItemDrop( 445, new int[]{2, 4}, UNCOMMON ), + new ItemDrop( i("jug of wine"), 1, UNCOMMON ), + new ItemDrop( i("death rune"), new int[]{3, 6}, RARE ), + new ItemDrop( i("black kiteshield"), 1, RARE ), + new ItemDrop( i("rune med helm"), 1, VERY_RARE ), + }; + + public static final ItemDrop[] greaterdemon = { + new ItemDrop( i("steel axe"), 1, COMMON ), + new ItemDrop( i("steel battleaxe"), 1, COMMON ), + new ItemDrop( i("steel 2h sword"), 1, COMMON ), + new ItemDrop( i("mithril kitesiheld"), 1, UNCOMMON ), + new ItemDrop( i("black 2h sword"), 1, UNCOMMON ), + new ItemDrop( i("rune full helm"), 1, RARE ), + new ItemDrop( i("adamant platelegs"), 1, RARE ), + new ItemDrop( i("adamant 2h sword"), 1, VERY_RARE ), + new ItemDrop( 995, new int[]{9, 630}, COMMON ), + new ItemDrop( i("fire rune"), 75, COMMON ), + new ItemDrop( i("chaos rune"), 15, COMMON ), + new ItemDrop( i("death rune"), 5, COMMON ), + new ItemDrop( i("thread"), 10, UNCOMMON ), + new ItemDrop( i("tuna"), 1, UNCOMMON ), + new ItemDrop( i("gold bar"), 1, UNCOMMON ), + new ItemDrop( i("ashes"), 1, ALWAYS ), + }; + + public static final ItemDrop[] guard = { + new ItemDrop( i("bones"), 1, ALWAYS ), + new ItemDrop( 995, new int[]{1, 25}, COMMON ), + new ItemDrop( i("grapes"), 1, COMMON ), + new ItemDrop( i("air rune"), 6, COMMON ), + new ItemDrop( i("earth rune"), new int[]{3, 6}, COMMON ), + new ItemDrop( i("fire rune"), 2, COMMON ), + new ItemDrop( i("body talisman"), 1, COMMON ), + new ItemDrop( i("iron dagger"), 1, COMMON ), + new ItemDrop( i("law talisman"), 1, RARE ), + new ItemDrop( i("iron arrow"), new int[]{1, 2}, COMMON ), + new ItemDrop( i("bronze arrow"), new int[]{1, 5}, UNCOMMON ), + new ItemDrop( i("steel arrow"), new int[]{1, 10}, UNCOMMON ), + new ItemDrop( i("law rune"), 2, RARE ), + new ItemDrop( i("nature rune"), 1, RARE ), + new ItemDrop( i("chaos rune"), new int[]{1, 2}, RARE ), + new ItemDrop( i("steel warhammer"), 1, RARE ), + new ItemDrop( 1947, new int[]{1, 3}, RARE ), + new ItemDrop( i("iron ore"), 1, RARE ), + new ItemDrop( i("iron platebody"), 1, RARE ), + new ItemDrop( i("steel bar"), 1, RARE ), + new ItemDrop( i("potato seed"), new int[]{4, 6}, COMMON ), + new ItemDrop( i("onion seed"), 4, COMMON ), + new ItemDrop( i("cabbage seed"), 4, UNCOMMON ), + new ItemDrop( i("tomato seed"), new int[]{3, 4}, UNCOMMON ), + new ItemDrop( i("strawberry seed"), new int[]{1, 3}, RARE ), + new ItemDrop( i("watermelon seed"), new int[]{2, 4}, RARE ), + new ItemDrop( 199, 1, RARE ), + }; + + public static final ItemDrop[] alkharidwarrior = { + new ItemDrop( i("bones"), 1, ALWAYS ), + new ItemDrop( i("air rune"), 5, UNCOMMON ), + new ItemDrop( i("mind rune"), 9, COMMON ), + new ItemDrop( i("fire rune"), 6, COMMON ), + new ItemDrop( i("earth rune"), 4, COMMON ), + new ItemDrop( i("chaos rune"), 2, RARE ), + new ItemDrop( i("law rune"), 1, VERY_RARE ), + new ItemDrop( i("bronze med helm"), 1, COMMON ), + new ItemDrop( i("bronze arrow"), 7, COMMON ), + new ItemDrop( i("iron dagger"), 1, UNCOMMON ), + new ItemDrop( i("iron med helm"), 1, UNCOMMON ), + new ItemDrop( i("staff of air"), 1, UNCOMMON ), + new ItemDrop( 199, 1, COMMON ), + new ItemDrop( 201, 1, COMMON ), + new ItemDrop( 203, 1, UNCOMMON ), + new ItemDrop( 205, 1, UNCOMMON ), + new ItemDrop( 207, 1, UNCOMMON ), + new ItemDrop( 209, 1, UNCOMMON ), + new ItemDrop( 211, 1, UNCOMMON ), + new ItemDrop( 213, 1, UNCOMMON ), + new ItemDrop( 215, 1, UNCOMMON ), + new ItemDrop( 2485, 1, UNCOMMON ), + new ItemDrop( 217, 1, UNCOMMON ), + }; + + public static final ItemDrop[] icewarrior = { + new ItemDrop( i("bones"), 1, ALWAYS ), + new ItemDrop( 995, new int[]{1, 15}, COMMON ), + new ItemDrop( i("iron battleaxe"), 1, COMMON ), + new ItemDrop( i("mithril arrow"), 3, COMMON ), + new ItemDrop( i("cosmic rune"), 2, COMMON ), + new ItemDrop( i("chaos rune"), 3, COMMON ), + new ItemDrop( i("nature rune"), 4, COMMON ), + new ItemDrop( i("law rune"), 2, COMMON ), + new ItemDrop( i("mithril mace"), 1, UNCOMMON ), + new ItemDrop( i("adamant arrow"), 2, UNCOMMON ), + new ItemDrop( i("tarromin seed"), 1, COMMON ), + new ItemDrop( i("death rune"), 2, UNCOMMON ), + new ItemDrop( i("mind rune"), 24, RARE ), + new ItemDrop( i("mithril ore"), 1, RARE ), + new ItemDrop( i("guam seed"), 1, COMMON ), + new ItemDrop( i("iron 2h sword"), 1, UNCOMMON ), + new ItemDrop( i("harralander seed"), 1, COMMON ), + new ItemDrop( i("steel sword"), 1, VERY_RARE ), + new ItemDrop( i("limpwurt seed"), 1, COMMON ), + new ItemDrop( i("black kiteshield"), 1, VERY_RARE ), + new ItemDrop( i("wildblood seed"), 1, COMMON ), + new ItemDrop( i("mithril sq shield"), 1, VERY_RARE ), + new ItemDrop( i("strawberry seed"), 1, COMMON ), + new ItemDrop( i("rune longsword"), 1, VERY_RARE ), + new ItemDrop( i("jangerberry seed"), 1, COMMON ), + new ItemDrop( i("marentill seed"), 1, UNCOMMON ), + new ItemDrop( i("cadantine seed"), 1, UNCOMMON ), + new ItemDrop( i("bittecape mushroom spore"), 1, UNCOMMON ), + new ItemDrop( i("irit seed"), 1, UNCOMMON ), + new ItemDrop( i("avantoe seed"), 1, UNCOMMON ), + new ItemDrop( i("dwarf weed seed"), 1, RARE ), + new ItemDrop( i("toadflax seed"), 1, RARE ), + new ItemDrop( i("ranarr seed"), 1, RARE ), + new ItemDrop( i("whiteberry seed"), 1, RARE ), + new ItemDrop( i("poison ivy seed"), 1, RARE ), + new ItemDrop( i("kwuarm seed"), 1, RARE ), + new ItemDrop( i("cactus seed"), 1, RARE ), + new ItemDrop( i("watermelon seed"), 1, RARE ), + new ItemDrop( i("belladonna seed"), 1, VERY_RARE ), + new ItemDrop( i("lantadyme seed"), 1, VERY_RARE ), + new ItemDrop( 199, 1, COMMON ), + new ItemDrop( 201, 1, COMMON ), + new ItemDrop( 203, 1, COMMON ), + new ItemDrop( 205, 1, COMMON ), + new ItemDrop( 207, 1, UNCOMMON ), + new ItemDrop( 209, 1, UNCOMMON ), + new ItemDrop( 211, 1, UNCOMMON ), + new ItemDrop( 213, 1, RARE ), + new ItemDrop( 215, 1, RARE ), + new ItemDrop( 217, 1, RARE ), + new ItemDrop( 2485, 1, RARE ), + }; + + public static final ItemDrop[] blackknight = { + new ItemDrop( 526, 1, ALWAYS ), + new ItemDrop( 291, 1, ALWAYS ), + new ItemDrop( i("iron sword"), 1, COMMON ), + new ItemDrop( i("iron full helm"), 1, COMMON ), + new ItemDrop( i("steel mace"), 1, COMMON ), + new ItemDrop( i("black full helm"), 1, RARE ), + new ItemDrop( i("mithril arrow"), 3, UNCOMMON ), + new ItemDrop( i("black 2h sword"), 1, RARE ), + new ItemDrop( i("black sword"), 1, RARE ), + new ItemDrop( i("mind rune"), new int[]{2, 9}, UNCOMMON ), + new ItemDrop( i("earth rune"), 10, UNCOMMON ), + new ItemDrop( i("body rune"), 9, UNCOMMON ), + new ItemDrop( i("cosmic rune"), 7, UNCOMMON ), + new ItemDrop( i("chaos rune"), new int[]{4, 6}, UNCOMMON ), + new ItemDrop( i("death rune"), 2, UNCOMMON ), + new ItemDrop( i("law rune"), new int[]{2, 4}, UNCOMMON ), + new ItemDrop( i("nature rune"), 6, RARE ), + new ItemDrop( 199, 1, COMMON ), + new ItemDrop( 201, 1, COMMON ), + new ItemDrop( 203, 1, COMMON ), + new ItemDrop( 205, 1, COMMON ), + new ItemDrop( 207, 1, UNCOMMON ), + new ItemDrop( 209, 1, UNCOMMON ), + new ItemDrop( 211, 1, UNCOMMON ), + new ItemDrop( 213, 1, UNCOMMON ), + new ItemDrop( 215, 1, UNCOMMON ), + new ItemDrop( 2485, 1, UNCOMMON ), + new ItemDrop( 217, 1, UNCOMMON ), + }; + + public static final ItemDrop[] whiteknight = { + new ItemDrop( 526, 1, ALWAYS ), + new ItemDrop( i("water rune"), new int[]{20, 47}, COMMON ), + new ItemDrop( i("body rune"), new int[]{9, 24}, COMMON ), + new ItemDrop( i("mind rune"), new int[]{5, 7}, COMMON ), + new ItemDrop( i("choas rune"), new int[]{2, 5}, UNCOMMON ), + new ItemDrop( i("nature rune"), new int[]{4, 7}, UNCOMMON ), + new ItemDrop( i("law rune"), new int[]{2, 5}, RARE ), + new ItemDrop( i("blood rune"), new int[]{2, 5}, RARE ), // members + new ItemDrop( i("iron longsword"), 1, COMMON ), + new ItemDrop( i("steel sword"), 1, COMMON ), + new ItemDrop( i("mithril arrow"), new int[]{5, 14}, COMMON ), + new ItemDrop( i("adamant arrow"), new int[]{2, 5}, UNCOMMON ), + new ItemDrop( i("steel med helm"), 1, COMMON ), + new ItemDrop( i("potato seed"), 4, COMMON ), + new ItemDrop( i("tomato seed"), 3, COMMON ), + new ItemDrop( i("cabbage seed"), 4, COMMON ), + new ItemDrop( i("onion seed"), 4, COMMON ), + new ItemDrop( i("sweetcorn seed"), 3, UNCOMMON ), + new ItemDrop( i("watermelon seed"), 2, UNCOMMON ), + new ItemDrop( i("strawberry seed"), 2, RARE ), + new ItemDrop( 995, new int[]{1, 200}, COMMON ), + new ItemDrop( i("pot of flour"), 1, RARE ), + new ItemDrop( 2335, 1, UNCOMMON ), + new ItemDrop( i("iron ore"), 1, UNCOMMON ), + new ItemDrop( i("iron bar"), new int[]{1, 2}, COMMON ), + new ItemDrop( 199, 1, UNCOMMON ), + new ItemDrop( 201, 1, UNCOMMON ), + new ItemDrop( 203, 1, UNCOMMON ), + new ItemDrop( 205, 1, UNCOMMON ), + new ItemDrop( 207, 1, UNCOMMON ), + new ItemDrop( 209, 1, RARE ), + new ItemDrop( 211, 1, RARE ), + new ItemDrop( 213, 1, RARE ), + new ItemDrop( 215, 1, RARE ), + new ItemDrop( 2485, 1, RARE ), + new ItemDrop( 217, 1, RARE ), + }; + + public static final ItemDrop[] icegiant = { + new ItemDrop( i("big bones"), 1, ALWAYS ), + new ItemDrop( i("iron battleaxe"), 1, COMMON ), + new ItemDrop( i("iron platelegs"), 1, COMMON ), + new ItemDrop( i("iron 2h sword"), 1, COMMON ), + new ItemDrop( i("steel axe"), 1, COMMON ), + new ItemDrop( i("steel sword"), 1, COMMON ), + new ItemDrop( i("black kiteshield"), 1, COMMON ), + new ItemDrop( i("water rune"), 12, COMMON ), + new ItemDrop( i("mind rune"), 24, COMMON ), + new ItemDrop( i("body rune"), 37, COMMON ), + new ItemDrop( i("cosmic rune"), new int[]{2, 4}, COMMON ), + new ItemDrop( 995, new int[]{8, 454}, COMMON ), + new ItemDrop( i("adamant arrow"), 5, UNCOMMON ), + new ItemDrop( i("law rune"), 3, UNCOMMON ), + new ItemDrop( i("nature rune"), 6, UNCOMMON ), + new ItemDrop( i("banana"), 1, UNCOMMON ), + new ItemDrop( i("jug of wine"), 1, UNCOMMON ), + new ItemDrop( i("mithril ore"), 1, UNCOMMON ), + new ItemDrop( i("mithril sq shield"), 1, RARE ), + new ItemDrop( i("mithril mace"), 1, RARE ), + new ItemDrop( i("death rune"), new int[]{2, 4}, RARE ), + }; + + public static final ItemDrop[] hobgoblin = { + new ItemDrop( i("bones"), 1, ALWAYS ), + new ItemDrop( 995, new int[]{1, 71}, COMMON ), + new ItemDrop( i("iron sword"), 1, COMMON ), + new ItemDrop( i("iron longsword"), 1, UNCOMMON ), + new ItemDrop( i("steel longsword"), 1, UNCOMMON ), + new ItemDrop( i("steel dagger"), 1, UNCOMMON ), + new ItemDrop( i("limpwurt root"), 1, UNCOMMON ), + new ItemDrop( i("water rune"), 2, UNCOMMON ), + new ItemDrop( i("body rune"), 6, UNCOMMON ), + new ItemDrop( i("fire rune"), 7, UNCOMMON ), + new ItemDrop( i("cosmic rune"), 2, UNCOMMON ), + new ItemDrop( i("chaos rune"), 3, UNCOMMON ), + new ItemDrop( i("nature rune"), 4, UNCOMMON ), + new ItemDrop( i("law rune"), 2, UNCOMMON ), + }; + + public static final ItemDrop[] pirate = { + new ItemDrop( i("bones"), 1, ALWAYS ), + new ItemDrop( i("air rune"), 10, COMMON ), + new ItemDrop( i("earth rune"), 9, COMMON ), + new ItemDrop( i("fire rune"), 5, COMMON ), + new ItemDrop( i("chaos rune"), 2, COMMON ), + new ItemDrop( i("nature rune"), 2, COMMON ), + new ItemDrop( i("law rune"), 2, RARE ), + new ItemDrop( i("bronze scimitar"), 1, COMMON ), + new ItemDrop( i("bronze arrow"), new int[]{9, 12}, COMMON ), + new ItemDrop( i("iron dagger"), 1, COMMON ), + new ItemDrop( i("staff of air"), 1, UNCOMMON ), + new ItemDrop( 995, new int[]{4, 55}, COMMON ), + new ItemDrop( i("iron bar"), 1, RARE ), + new ItemDrop( i("chef's hat"), 1, RARE ), + new ItemDrop( i("limpwurt root"), 1, RARE ), + new ItemDrop( i("tinderbox"), 1, RARE ), + new ItemDrop( i("iron platebody"), 1, VERY_RARE ), + new ItemDrop( i("eye patch"), 1, COMMON ), + new ItemDrop( i("knife"), 1, RARE ), + }; + + public static final ItemDrop[] zombie = { + new ItemDrop( i("bones"), 1, ALWAYS ), + new ItemDrop( 995, new int[]{1, 25}, COMMON ), + new ItemDrop( i("fishing bait"), 7, COMMON ), + new ItemDrop( i("bronze axe"), 1, UNCOMMON ), + new ItemDrop( i("iron axe"), 1, UNCOMMON ), + new ItemDrop( i("bronze med helm"), 1, UNCOMMON ), + new ItemDrop( i("iron mace"), 1, UNCOMMON ), + new ItemDrop( i("bronze kiteshield"), 1, UNCOMMON ), + new ItemDrop( i("iron arrow"), 5, UNCOMMON ), + new ItemDrop( i("iron dagger"), 1, UNCOMMON ), + new ItemDrop( i("steel arrow"), new int[]{5, 32}, UNCOMMON ), + new ItemDrop( i("mithril arrow"), 2, UNCOMMON ), + new ItemDrop( i("chaos rune"), 4, UNCOMMON ), + new ItemDrop( i("air rune"), 3, UNCOMMON ), + new ItemDrop( i("fire rune"), 7, UNCOMMON ), + new ItemDrop( i("mind rune"), 5, UNCOMMON ), + new ItemDrop( i("body rune"), new int[]{3, 5}, UNCOMMON ), + new ItemDrop( i("nature rune"), 5, UNCOMMON ), + new ItemDrop( i("law rune"), 3, UNCOMMON ), + new ItemDrop( i("cosmic rune"), 2, UNCOMMON ), + new ItemDrop( i("tinderbox"), 1, UNCOMMON ), + new ItemDrop( i("copper ore"), 1, UNCOMMON ), + new ItemDrop( i("iron ore"), 1, UNCOMMON ), + new ItemDrop( i("tin ore"), 1, UNCOMMON ), + new ItemDrop( i("eye of newt"), 1, UNCOMMON ), + new ItemDrop( i("ashes"), 1, UNCOMMON ), + new ItemDrop( i("half a meat pie"), 1, VERY_RARE ), + }; + + public static final ItemDrop[] skeleton = { + new ItemDrop(i("bones"), 1, ALWAYS), + new ItemDrop(i("iron dagger"), 1, COMMON), + new ItemDrop(i("iron med helm"), 1, COMMON), + new ItemDrop(i("air rune"), 12, COMMON), + new ItemDrop(i("water rune"), 5, COMMON), + new ItemDrop(i("earth rune"), 3, COMMON), + new ItemDrop(i("fire rune"), 2, COMMON), + new ItemDrop(i("mind rune"), new int[]{1, 24}, COMMON), + new ItemDrop(995, 10, COMMON), + new ItemDrop(i("bronze arrow"), new int[]{1, 10}, COMMON), + new ItemDrop(i("iron mace"), 1, COMMON), + new ItemDrop(i("iron axe"), 1, UNCOMMON), + new ItemDrop(i("cosmic rune"), 2, UNCOMMON), + new ItemDrop(i("iron arrow"), 5, UNCOMMON), + new ItemDrop(i("iron sword"), 1, UNCOMMON), + new ItemDrop(i("chaos rune"), 4, UNCOMMON), + new ItemDrop(i("nature rune"), new int[]{1, 2}, UNCOMMON), + new ItemDrop(i("iron sword"), 1, UNCOMMON), + new ItemDrop(i("law rune"), 2, UNCOMMON), + new ItemDrop(i("bucket"), 1, UNCOMMON), + new ItemDrop(1947, 1, UNCOMMON), + new ItemDrop(i("iron ore"), 1, UNCOMMON), + new ItemDrop(i("bronze bar"), 1, UNCOMMON), + new ItemDrop(i("iron scimitar"), 1, RARE), + new ItemDrop(i("steel arrow"), 1, RARE), + new ItemDrop(i("fire talisman"), 1, RARE), + new ItemDrop(i("adamant kiteshield"), 1, VERY_RARE), + }; + + public static final ItemDrop[] hillgiant = { + new ItemDrop(i("big bones"), 1, ALWAYS), + new ItemDrop(i("limpwurt root"), 1, UNCOMMON), + new ItemDrop(i("beer"), 1, COMMON), + new ItemDrop(i("iron arrow"), 3, COMMON), + new ItemDrop(i("iron full helm"), 1, COMMON), + new ItemDrop(i("water rune"), 7, COMMON), + new ItemDrop(995, new int[]{8, 23}, COMMON), + new ItemDrop(i("body talisman"), 1, UNCOMMON), + new ItemDrop(i("fire rune"), 15, UNCOMMON), + new ItemDrop(i("law rune"), new int[]{1, 2}, UNCOMMON), + new ItemDrop(i("nature rune"), 6, UNCOMMON), + new ItemDrop(i("mind rune"), 3, UNCOMMON), + new ItemDrop(i("steel longsword"), 1, UNCOMMON), + new ItemDrop(i("steel arrow"), new int[]{10, 15}, UNCOMMON), + new ItemDrop(i("iron kiteshield"), 1, UNCOMMON), + new ItemDrop(i("iron 2h sword"), 1, RARE), + new ItemDrop(i("mithril arrow"), 1, RARE), + new ItemDrop(i("steel dagger"), 1, RARE), + new ItemDrop(i("death rune"), 2, RARE), + new ItemDrop(i("chaos rune"), 2, RARE), + new ItemDrop(i("steel platebody"), 1, VERY_RARE), + new ItemDrop(i("adamant arrow"), new int[]{1, 5}, VERY_RARE) + }; + + public static final ItemDrop[] deadlyredspider = { + new ItemDrop( i("red spiders' eggs"), 1, UNCOMMON ), + }; + + public static final ItemDrop[] reddragon = { + new ItemDrop( i("dragon bones"), 1, ALWAYS ), + new ItemDrop( i("red dragonhide"), 1, ALWAYS ), + new ItemDrop( i("mithril 2h sword"), 1, COMMON ), + new ItemDrop( i("mithril javelin"), 1, COMMON ), + new ItemDrop( i("mithril axe"), 1, COMMON ), + new ItemDrop( i("mithril kiteshield"), 1, UNCOMMON ), + new ItemDrop( i("adamant platebody"), 1, UNCOMMON ), + new ItemDrop( i("mithril battleaxe"), 1, UNCOMMON ), + new ItemDrop( i("rune arrow"), 4, UNCOMMON ), + new ItemDrop( i("rune dart"), 8, UNCOMMON ), + new ItemDrop( i("rune longsword"), 1, UNCOMMON ), + new ItemDrop( i("law rune"), 4, UNCOMMON ), + new ItemDrop( i("death rune"), 5, UNCOMMON ), + new ItemDrop( i("blood rune"), 2, UNCOMMON ), + new ItemDrop( 199, 1, COMMON ), + new ItemDrop( 201, 1, COMMON ), + new ItemDrop( 203, 1, COMMON ), + new ItemDrop( 205, 1, COMMON ), + new ItemDrop( 207, 1, UNCOMMON ), + new ItemDrop( 209, 1, UNCOMMON ), + new ItemDrop( 211, 1, UNCOMMON ), + new ItemDrop( 213, 1, UNCOMMON ), + new ItemDrop( 215, 1, UNCOMMON ), + new ItemDrop( 2485, 1, UNCOMMON ), + new ItemDrop( 217, 1, UNCOMMON ), + new ItemDrop( 995, new int[]{30, 660}, COMMON ), + new ItemDrop( i("chocolate cake"), 3, UNCOMMON ), + new ItemDrop( i("adamant bar"), 1, UNCOMMON ), + }; + + public static final ItemDrop[] rat = { + new ItemDrop(i("bones"), 1, ALWAYS), + }; + + public static final ItemDrop[] cow = { + new ItemDrop(i("bones"), 1, ALWAYS), + new ItemDrop(i("cowhide"), 1, ALWAYS), + new ItemDrop(i("raw beef"), 1, ALWAYS), + }; + + public static final ItemDrop[] chicken = { + new ItemDrop(i("bones"), 1, ALWAYS), + new ItemDrop(i("feather"), new int[]{5, 15}, ALWAYS), + new ItemDrop(i("raw chicken"), 1, ALWAYS), + new ItemDrop(i("egg"), 1, UNCOMMON), + }; + + public static final ItemDrop[] rockcrab = { + new ItemDrop( 207, 1, RARE ), + new ItemDrop( 211, 1, RARE ), + new ItemDrop( i("tarromin seed"), 1, RARE ), + new ItemDrop( i("ranarr seed"), 1, RARE ), + new ItemDrop( i("irit seed"), 1, VERY_RARE ), + new ItemDrop( i("bronze pickaxe"), 1, COMMON ), + new ItemDrop( i("iron pickaxe"), 1, COMMON ), + new ItemDrop( i("bronze axe"), 1, UNCOMMON ), + new ItemDrop( i("fire rune"), 7, COMMON ), + new ItemDrop( i("nature rune"), 4, UNCOMMON ), + new ItemDrop( i("chaos rune"), 1, RARE ), + new ItemDrop( i("cosmic talisman"), 1, RARE ), + new ItemDrop( 995, new int[]{3, 498}, COMMON ), + new ItemDrop( i("oyster"), new int[]{1, 2}, COMMON ), + new ItemDrop( 402, new int[]{1, 4}, COMMON ), + new ItemDrop( i("edible seaweed"), 2, RARE ), + new ItemDrop( i("oyster pearl"), 1, COMMON ), + new ItemDrop( i("empty oyster"), 1, COMMON ), + new ItemDrop( i("spinach roll"), 1, UNCOMMON ), + new ItemDrop( i("knife"), 1, UNCOMMON ), + new ItemDrop( i("iron ore"), 1, UNCOMMON ), + new ItemDrop( i("coal"), 2, UNCOMMON ), + new ItemDrop( i("copper ore"), 3, UNCOMMON ), + new ItemDrop( i("tin ore"), 3, UNCOMMON ), + new ItemDrop( i("fishing bait"), new int[]{1, 10}, UNCOMMON ), + new ItemDrop( 45, 5, UNCOMMON ), + new ItemDrop( i("limpwurt root"), 1, RARE ), + }; + + public static final ItemDrop[] kingblackdragon = { + new ItemDrop( i("dragon bones"), 1, ALWAYS ), + new ItemDrop( i("black dragonhide"), 1, ALWAYS ), + new ItemDrop( i("rune longsword"), 1, UNCOMMON ), + new ItemDrop( i("rune battleaxe"), 1, UNCOMMON ), + new ItemDrop( i("blood rune"), 50, COMMON ), + new ItemDrop( i("death rune"), 50, COMMON ), + new ItemDrop( i("law rune"), 50, UNCOMMON ), + new ItemDrop( i("mithril arrow"), 250, UNCOMMON ), + new ItemDrop( i("rune arrow"), 50, UNCOMMON ), + new ItemDrop( i("rune sq shield"), 1, UNCOMMON ), + new ItemDrop( i("rune platebody"), 1, UNCOMMON ), + new ItemDrop( i("dragon med helm"), 1, RARE ), + new ItemDrop( 2361, new int[]{1, 4}, UNCOMMON ), + new ItemDrop( 2363, new int[]{1, 2}, UNCOMMON ), + new ItemDrop( 443, 100, UNCOMMON ), + new ItemDrop( 445, 50, UNCOMMON ), + new ItemDrop( 453, 3, UNCOMMON ), + new ItemDrop( 995, new int[]{1000, 3000}, COMMON ), + new ItemDrop( 1516, 50, COMMON ), + new ItemDrop( 1514, 10, COMMON ), + }; + + public static final ItemDrop[] greendragon = { + new ItemDrop( i("dragon bones"), 1, ALWAYS ), + new ItemDrop( i("green dragonhide"), 1, ALWAYS ), + new ItemDrop( i("steel platelegs"), 1, COMMON ), + new ItemDrop( i("mithril kiteshield"), 1, UNCOMMON ), + new ItemDrop( i("adamant full helm"), 1, RARE ), + new ItemDrop( i("steel battleaxe"), 1, COMMON ), + new ItemDrop( i("mithril axe"), 1, COMMON ), + new ItemDrop( i("mithril spear"), 1, UNCOMMON ), + new ItemDrop( i("rune dagger"), 1, UNCOMMON ), + new ItemDrop( i("water rune"), new int[]{75, 150}, COMMON ), + new ItemDrop( i("fire rune"), 37, COMMON ), + new ItemDrop( i("nature rune"), new int[]{15, 75}, COMMON ), + new ItemDrop( i("law rune"), 3, COMMON ), + new ItemDrop( 995, new int[]{11, 440}, COMMON ), + new ItemDrop( i("bass"), 1, COMMON ), + new ItemDrop( i("adamantite ore"), 1, UNCOMMON ), + new ItemDrop( 209, 1, COMMON ), + new ItemDrop( 205, 1, COMMON ), + new ItemDrop( 199, 1, UNCOMMON ), + new ItemDrop( 211, 1, UNCOMMON ), + new ItemDrop( 215, 1, UNCOMMON ), + new ItemDrop( 201, 1, UNCOMMON ), + new ItemDrop( 203, 1, UNCOMMON ), + new ItemDrop( 207, 1, UNCOMMON ), + new ItemDrop( 213, 1, UNCOMMON ), + new ItemDrop( 2485, 1, UNCOMMON ), + new ItemDrop( 217, 1, UNCOMMON ), + new ItemDrop( i("nature talisman"), 1, RARE ), + }; + + public static final ItemDrop[] bluedragon = { + new ItemDrop( i("dragon bones"), 1, ALWAYS ), + new ItemDrop( i("blue dragonhide"), 1, ALWAYS ), + new ItemDrop( i("steel platelegs"), 1, COMMON ), + new ItemDrop( i("mithril kiteshield"), 1, UNCOMMON ), + new ItemDrop( i("adamant full helm"), 1, UNCOMMON ), + new ItemDrop( i("steel battleaxe"), 1, COMMON ), + new ItemDrop( i("mithril axe"), 1, COMMON ), + new ItemDrop( i("mithril spear"), 1, UNCOMMON ), + new ItemDrop( i("adamant dagger"), 1, UNCOMMON ), + new ItemDrop( i("rune dagger"), 1, RARE ), + new ItemDrop( i("water rune"), 75, COMMON ), + new ItemDrop( i("fire rune"), 37, UNCOMMON ), + new ItemDrop( i("nature rune"), 15, UNCOMMON ), + new ItemDrop( i("law rune"), 3, UNCOMMON ), + new ItemDrop( i("death rune"), 5, VERY_RARE ), + new ItemDrop( 995, new int[]{11, 454}, COMMON ), + new ItemDrop( i("bass"), 1, COMMON ), + new ItemDrop( i("adamantite ore"), 1, UNCOMMON ), + new ItemDrop( 199, 1, COMMON ), + new ItemDrop( 201, 1, COMMON ), + new ItemDrop( 203, 1, COMMON ), + new ItemDrop( 205, 1, COMMON ), + new ItemDrop( 207, 1, UNCOMMON ), + new ItemDrop( 211, 1, UNCOMMON ), + new ItemDrop( 213, 1, UNCOMMON ), + new ItemDrop( 215, 1, UNCOMMON ), + new ItemDrop( 2485, 1, UNCOMMON ), + new ItemDrop( 217, 1, RARE ), + }; + + public static final ItemDrop[] kalphiteworker = { + new ItemDrop( i("water rune"), 2, UNCOMMON ), + new ItemDrop( i("fire rune"), 7, UNCOMMON ), + new ItemDrop( i("body rune"), 6, UNCOMMON ), + new ItemDrop( i("cosmic rune"), 2, UNCOMMON ), + new ItemDrop( i("chaos rune"), 3, UNCOMMON ), + new ItemDrop( i("nature rune"), 4, UNCOMMON ), + new ItemDrop( i("law rune"), 2, UNCOMMON ), + new ItemDrop( i("blood rune"), 1, VERY_RARE ), + new ItemDrop( i("hard leather body"), 1, UNCOMMON ), + new ItemDrop( i("iron sword"), 1, UNCOMMON ), + new ItemDrop( i("iron dagger"), 1, UNCOMMON ), + new ItemDrop( i("steel dagger"), 1, UNCOMMON ), + new ItemDrop( i("mithril sq shield"), 1, UNCOMMON ), + new ItemDrop( i("steel sword"), 1, RARE ), + new ItemDrop( i("steel longsword"), 1, RARE ), + new ItemDrop( i("rune dagger"), 1, RARE ), + new ItemDrop( 995, new int[]{1, 1000}, COMMON ), + new ItemDrop( 1823, 1, COMMON ), + new ItemDrop( i("bucket of sand"), 1, UNCOMMON ), + new ItemDrop( 199, 1, COMMON ), + new ItemDrop( 201, 1, COMMON ), + new ItemDrop( 203, 1, COMMON ), + new ItemDrop( 205, 1, UNCOMMON ), + new ItemDrop( 207, 1, UNCOMMON ), + new ItemDrop( 209, 1, UNCOMMON ), + new ItemDrop( 211, 1, RARE ), + new ItemDrop( 213, 1, RARE ), + new ItemDrop( 215, 1, RARE ), + new ItemDrop( 2485, 1, RARE ), + new ItemDrop( 217, 1, RARE ), + }; + + public static final ItemDrop[] kalphitesoldier = { + new ItemDrop( i("steel full helm"), 1, COMMON ), + new ItemDrop( i("steel scimitar"), 1, COMMON ), + new ItemDrop( i("steel axe"), 1, COMMON ), + new ItemDrop( i("steel sword"), 1, UNCOMMON ), + new ItemDrop( i("steel dagger"), 1, UNCOMMON ), + new ItemDrop( i("hard leather body"), 1, UNCOMMON ), + new ItemDrop( i("adamant chain body"), 1, UNCOMMON ), + new ItemDrop( i("adamant sq shield"), 1, UNCOMMON ), + new ItemDrop( i("rune dagger"), 1, RARE ), + new ItemDrop( i("adamant scimitar"), 1, RARE ), + new ItemDrop( i("adamant axe"), 1, RARE ), + new ItemDrop( i("adamant med helm"), 1, RARE ), + new ItemDrop( i("adamant full helm"), 1, RARE ), + new ItemDrop( i("adamant dagger"), 1, RARE ), + new ItemDrop( i("rune chainbody"), 1, RARE ), + new ItemDrop( i("air rune"), new int[]{15, 27}, COMMON ), + new ItemDrop( i("fire rune"), new int[]{6, 60}, COMMON ), + new ItemDrop( i("water rune"), 2, UNCOMMON ), + new ItemDrop( i("body rune"), 2, UNCOMMON ), + new ItemDrop( i("chaos rune"), 12, UNCOMMON ), + new ItemDrop( i("cosmic rune"), 2, UNCOMMON ), + new ItemDrop( i("death rune"), new int[]{3, 12}, UNCOMMON ), + new ItemDrop( i("law rune"), new int[]{1, 2}, UNCOMMON ), + new ItemDrop( i("nature rune"), new int[]{1, 5}, RARE ), + new ItemDrop( 995, new int[]{10, 450}, COMMON ), + new ItemDrop( 3139, new int[]{1, 2}, UNCOMMON ), + new ItemDrop( i("lobster"), 1, UNCOMMON ), + new ItemDrop( 1823, 1, UNCOMMON ), + new ItemDrop( i("uncut diamond"), 1, RARE ), + new ItemDrop( i("uncut dragonstone"), 1, RARE ), + new ItemDrop( 205, 1, COMMON ), + new ItemDrop( 203, 1, RARE ), + new ItemDrop( 201, 1, RARE ), + new ItemDrop( 199, 1, RARE ), + new ItemDrop( 207, 1, RARE ), + new ItemDrop( 213, 1, RARE ), + new ItemDrop( 211, 1, RARE ), + new ItemDrop( 2485, 1, RARE ), + new ItemDrop( 209, 1, RARE ), + }; + + public static final ItemDrop[] kalphiteguardian = { + new ItemDrop( i("mithril kiteshield"), 1, UNCOMMON ), + new ItemDrop( i("adamant sq shield"), 1, UNCOMMON ), + new ItemDrop( i("rune med helm"), 1, UNCOMMON ), + new ItemDrop( i("rune chainbody"), 1, RARE ), + new ItemDrop( i("rune platebody"), 1, VERY_RARE ), + new ItemDrop( i("rune sq shield"), 1, VERY_RARE ), + new ItemDrop( i("steel axe"), 1, COMMON ), + new ItemDrop( i("steel battleaxe"), 1, COMMON ), + new ItemDrop( i("mithril longsword"), 1, COMMON ), + new ItemDrop( i("mithril sword"), 1, COMMON ), + new ItemDrop( i("adamant dagger"), 1, UNCOMMON ), + new ItemDrop( i("rune 2h sword"), 1, UNCOMMON ), + new ItemDrop( i("rune battleaxe"), 1, UNCOMMON ), + new ItemDrop( i("rune dagger"), 1, UNCOMMON ), + new ItemDrop( i("rune sword"), 1, RARE ), + new ItemDrop( i("air rune"), 50, UNCOMMON ), + new ItemDrop( i("blood rune"), 7, UNCOMMON ), + new ItemDrop( i("fire rune"), 37, UNCOMMON ), + new ItemDrop( i("law rune"), new int[]{3, 46}, UNCOMMON ), + new ItemDrop( i("death rune"), new int[]{18, 45}, UNCOMMON ), + new ItemDrop( i("chaos rune"), 10, UNCOMMON ), + new ItemDrop( i("adamant javelin"), 1, UNCOMMON ), + new ItemDrop( i("cosmic rune"), 2, UNCOMMON ), + new ItemDrop( i("rune arrow"), new int[]{42, 150}, UNCOMMON ), + new ItemDrop( 995, new int[]{28, 3000}, COMMON ), + new ItemDrop( i("lobster"), new int[]{1, 2}, UNCOMMON ), + new ItemDrop( 163, 1, UNCOMMON ), + new ItemDrop( 145, 1, UNCOMMON ), + new ItemDrop( 157, 1, UNCOMMON ), + new ItemDrop( 3138, new int[]{2, 4}, UNCOMMON ), + new ItemDrop( 199, 1, COMMON ), + new ItemDrop( 215, 1, COMMON ), + new ItemDrop( 203, 1, COMMON ), + new ItemDrop( 201, 1, COMMON ), + new ItemDrop( 205, 1, COMMON ), + new ItemDrop( 211, 1, UNCOMMON ), + new ItemDrop( 207, 1, UNCOMMON ), + new ItemDrop( 209, 1, UNCOMMON ), + new ItemDrop( 213, 1, UNCOMMON ), + new ItemDrop( 2485, 1, RARE ), + new ItemDrop( 217, 1, RARE ), + }; + + public static final ItemDrop[] kalphitequeen = { + new ItemDrop( i("rune spear"), 2, COMMON ), + new ItemDrop( i("rune axe"), 1, COMMON ), + new ItemDrop( i("rune battleaxe"), 1, UNCOMMON ), + new ItemDrop( i("rune 2h sword"), 1, UNCOMMON ), + new ItemDrop( i("rune warhammer"), new int[]{1, 2}, UNCOMMON ), + new ItemDrop( i("adamant longsword"), 1, UNCOMMON ), + new ItemDrop( i("lava battlestaff"), 2, UNCOMMON ), + new ItemDrop( i("dragon 2h sword"), 1, VERY_RARE + r(20) ), + new ItemDrop( i("rune chainbody"), new int[]{1, 3}, COMMON ), + new ItemDrop( i("dragon chainbody"), 1, VERY_RARE + r(30000) ), + new ItemDrop( i("mithril arrow"), 500, COMMON ), + new ItemDrop( i("iron arrow"), new int[]{1, 355}, UNCOMMON ), + new ItemDrop( i("steel arrow"), new int[]{1, 150}, UNCOMMON ), + new ItemDrop( i("rune arrow"), 100, UNCOMMON ), + new ItemDrop( i("blood rune"), new int[]{250, 300}, UNCOMMON ), + new ItemDrop( i("nature rune"), new int[]{200, 250}, COMMON ), + new ItemDrop( i("fire rune"), 600, COMMON ), + new ItemDrop( i("law rune"), new int[]{20, 250}, UNCOMMON ), + new ItemDrop( i("death rune"), new int[]{200, 300}, UNCOMMON ), + new ItemDrop( i("cosmic rune"), new int[]{200, 300}, UNCOMMON ), + new ItemDrop( i("sapphire"), 1, UNCOMMON ), + new ItemDrop( i("emerald"), 1, UNCOMMON ), + new ItemDrop( i("ruby"), 1, UNCOMMON ), + new ItemDrop( 414, 40, UNCOMMON ), + new ItemDrop( 246, new int[]{20, 40}, COMMON ), + new ItemDrop( i("amulet of power"), 1, COMMON ), + new ItemDrop( 995, new int[]{3000, 75000}, UNCOMMON ), + new ItemDrop( i("lobster"), 7, UNCOMMON ), + new ItemDrop( i("shark"), 7, UNCOMMON ), + }; + + public static final ItemDrop[] imp = { + new ItemDrop(i("ashes"), 1, ALWAYS), + new ItemDrop(i("red bead"), 1, UNCOMMON), + new ItemDrop(i("yellow bead"), 1, UNCOMMON), + new ItemDrop(i("black bead"), 1, UNCOMMON), + new ItemDrop(i("white bead"), 1, UNCOMMON), + new ItemDrop(i("tinderbox"), 1, UNCOMMON), + new ItemDrop(i("ball of wool"), 1, COMMON), + new ItemDrop(i("hammer"), 1, COMMON), + new ItemDrop(i("mind talisman"), 1, UNCOMMON), + new ItemDrop(i("burnt meat"), 1, UNCOMMON), + new ItemDrop(1947, 1, UNCOMMON), + new ItemDrop(753, 1, UNCOMMON), + new ItemDrop(i("tinder"), 1, UNCOMMON), + new ItemDrop(i("shears"), 1, UNCOMMON), + new ItemDrop(i("bucket"), 1, UNCOMMON), + new ItemDrop(i("bucket of water"), 1, RARE), + new ItemDrop(i("jug"), 1, RARE), + new ItemDrop(i("jug of water"), 1, RARE), + new ItemDrop(i("jug of wine"), 1, RARE), + new ItemDrop(1931, 1, RARE), + new ItemDrop(2311, 1, RARE), + new ItemDrop(i("flier"), 1, RARE), + }; + + public static final ItemDrop[] cavecrawler = { + new ItemDrop(i("potato seed"), new int[]{1, 3}, COMMON), + new ItemDrop(i("watermelon seed"), 1, UNCOMMON), + new ItemDrop(i("tomato seed"), new int[]{1, 2}, COMMON), + new ItemDrop(i("onion seed"), new int[]{1, 2}, COMMON), + new ItemDrop(i("sweetcorn seed"), new int[]{1, 2}, COMMON), + new ItemDrop(i("cabbage seed"), new int[]{1, 2}, COMMON), + new ItemDrop(i("strawberry seed"), 1, COMMON), + new ItemDrop(239, 1, COMMON), + new ItemDrop(i("snape grass"), 1, RARE), + new ItemDrop(235, 1, UNCOMMON), + new ItemDrop(223, 1, UNCOMMON), + new ItemDrop(i("eye of newt"), 1, COMMON), + new ItemDrop(i("limpwurt root"), 1, COMMON), + new ItemDrop(i("vial of water"), 1, COMMON), + new ItemDrop(i("earth rune"), new int[]{9, 10}, COMMON), + new ItemDrop(i("nature rune"), 3, COMMON), + new ItemDrop(i("fire rune"), 12, COMMON), + new ItemDrop(995, new int[]{3, 29}, COMMON), + new ItemDrop(i("bronze boots"), 1, UNCOMMON), + new ItemDrop(187, 1, UNCOMMON), + new ItemDrop(199, new int[]{1, 2}, COMMON), + new ItemDrop(201, new int[]{1, 2}, COMMON), + new ItemDrop(203, new int[]{1, 2}, COMMON), + new ItemDrop(205, new int[]{1, 2}, COMMON), + new ItemDrop(207, new int[]{1, 2}, UNCOMMON), + new ItemDrop(209, new int[]{1, 2}, UNCOMMON), + new ItemDrop(211, new int[]{1, 2}, UNCOMMON), + new ItemDrop(213, new int[]{1, 2}, UNCOMMON), + new ItemDrop(215, new int[]{1, 2}, RARE), + new ItemDrop(217, new int[]{1, 2}, RARE), + new ItemDrop(2485, new int[]{1, 2}, RARE), + }; + + public static final ItemDrop[] crawlinghand = { + new ItemDrop( 526, 1, ALWAYS ), + new ItemDrop( i("leather gloves"), 1, COMMON ), + new ItemDrop( i("gold ring"), 1, UNCOMMON ), + new ItemDrop( i("sapphire ring"), 1, UNCOMMON ), + new ItemDrop( i("emerald ring"), 1, UNCOMMON ), + new ItemDrop( i("ruby ring"), 1, UNCOMMON ), + new ItemDrop( 995, new int[]{5, 442}, COMMON ), + new ItemDrop( i("ashes"), 1, UNCOMMON ), + new ItemDrop( 2902, 1, COMMON ), + new ItemDrop( 2912, 1, UNCOMMON ), + new ItemDrop( 2922, 1, UNCOMMON ), + new ItemDrop( 2932, 1, UNCOMMON ), + new ItemDrop( 2942, 1, UNCOMMON ), + new ItemDrop( 4115, 1, VERY_RARE ), + }; + + public static final ItemDrop[] bronzedragon = { + new ItemDrop( i("dragon bones"), 1, ALWAYS ), + new ItemDrop( i("bronze bar"), 5, ALWAYS ), + new ItemDrop( i("adamant javelin"), new int[]{30, 60}, COMMON ), + new ItemDrop( i("adamant dart"), 16, UNCOMMON ), + new ItemDrop( i("mithril axe"), 1, UNCOMMON ), + new ItemDrop( i("mithril 2h sword"), 1, UNCOMMON ), + new ItemDrop( i("mithril battleaxe"), 1, UNCOMMON ), + new ItemDrop( i("rune knife"), new int[]{2, 3}, UNCOMMON ), + new ItemDrop( i("rune javelin"), 1, RARE ), + new ItemDrop( i("rune longsword"), 1, RARE ), + new ItemDrop( i("rune battleaxe"), 1, RARE ), + new ItemDrop( i("dragon dagger"), 1, VERY_RARE ), + new ItemDrop( i("mithril kiteshield"), 1, UNCOMMON ), + new ItemDrop( i("adamant platebody"), 1, RARE ), + new ItemDrop( i("rune sq shield"), 1, RARE ), + new ItemDrop( i("dragon plateskirt"), 1, VERY_RARE + 1498 ), + new ItemDrop( i("dragon platelegs"), 1, VERY_RARE + 1599 ), + new ItemDrop( i("law rune"), new int[]{10, 45}, COMMON ), + new ItemDrop( i("fire rune"), new int[]{50, 100}, UNCOMMON ), + new ItemDrop( i("blood rune"), new int[]{15, 30}, UNCOMMON ), + new ItemDrop( i("nature rune"), 67, UNCOMMON ), + new ItemDrop( i("death rune"), new int[]{25, 45}, UNCOMMON ), + new ItemDrop( i("adamant bar"), 1, RARE ), + new ItemDrop( i("runite bar"), 1, RARE ), + }; + + public static final ItemDrop[] blackdragon = { + new ItemDrop( i("dragon bones"), 1, ALWAYS ), + new ItemDrop( i("black dragonhide"), 1, ALWAYS ), + new ItemDrop( i("mithril axe"), 1, UNCOMMON ), + new ItemDrop( i("black axe"), 1, UNCOMMON ), + new ItemDrop( i("mithril battleaxe"), 1, UNCOMMON ), + new ItemDrop( i("mithril 2h sword"), 1, UNCOMMON ), + new ItemDrop( i("adamant platebody"), 1, UNCOMMON ), + new ItemDrop( i("rune longsword"), 1, RARE ), + new ItemDrop( i("rune sq shield"), 1, RARE ), + new ItemDrop( i("rune battleaxe"), 1, VERY_RARE ), + new ItemDrop( i("rune 2h sword"), 1, VERY_RARE ), + new ItemDrop( i("adamant dart"), 16, COMMON ), + new ItemDrop( i("rune knife"), 2, UNCOMMON ), + new ItemDrop( i("rune dart"), 10, UNCOMMON ), + new ItemDrop( i("air rune"), 75, UNCOMMON ), + new ItemDrop( i("blood rune"), 15, UNCOMMON ), + new ItemDrop( i("death rune"), new int[]{5, 50}, UNCOMMON ), + new ItemDrop( i("fire rune"), 50, UNCOMMON ), + new ItemDrop( i("law rune"), new int[]{10, 45}, UNCOMMON ), + new ItemDrop( i("nature rune"), new int[]{67, 79}, UNCOMMON ), + new ItemDrop( i("chaos rune"), 90, UNCOMMON ), + new ItemDrop( i("adamant bar"), new int[]{1, 2}, UNCOMMON ), + new ItemDrop( i("steel bar"), 1, VERY_RARE ), + new ItemDrop( 995, new int[]{129, 2900}, COMMON ), + new ItemDrop( i("chocolate cake"), 1, UNCOMMON ), + }; + + public static final ItemDrop[] irondragon = { + new ItemDrop( i("dragon bones"), 1, ALWAYS ), + new ItemDrop( i("iron bar"), 5, ALWAYS ), + new ItemDrop( i("adamant 2h sword"), 1, UNCOMMON ), + new ItemDrop( i("adamant battleaxe"), 1, UNCOMMON ), + new ItemDrop( i("adamant axe"), 1, UNCOMMON ), + new ItemDrop( i("rune axe"), 1, RARE ), + new ItemDrop( i("rune mace"), 1, RARE ), + new ItemDrop( i("rune longsword"), 1, RARE ), + new ItemDrop( i("rune battleaxe"), 1, UNCOMMON ), + new ItemDrop( i("rune 2h sword"), 1, VERY_RARE ), + new ItemDrop( i("adamant sq shield"), 1, UNCOMMON ), + new ItemDrop( i("rune med helm"), 1, RARE ), + new ItemDrop( i("rune full helm"), 1, RARE ), + new ItemDrop( i("rune sq shield"), 1, RARE ), + new ItemDrop( i("rune kiteshield"), 1, RARE ), + new ItemDrop( i("dragon plateskirt"), 1, VERY_RARE + 592 ), + new ItemDrop( i("dragon platelegs"), 1, VERY_RARE + 541 ), + new ItemDrop( i("rune javelin"), new int[]{4, 8}, COMMON ), + new ItemDrop( i("rune dart"), 9, UNCOMMON ), + new ItemDrop( i("rune knife"), new int[]{1, 6}, UNCOMMON ), + new ItemDrop( i("steel arrow"), 150, RARE ), + new ItemDrop( i("blood rune"), 15, COMMON ), + new ItemDrop( i("soul rune"), new int[]{3, 5}, UNCOMMON ), + new ItemDrop( i("death rune"), new int[]{15, 30}, RARE ), + new ItemDrop( i("chaos rune"), new int[]{25, 50}, RARE ), + new ItemDrop( i("nature rune"), new int[]{60, 79}, RARE ), + new ItemDrop( i("law rune"), new int[]{45, 90}, RARE ), + new ItemDrop( i("adamant bar"), 2, UNCOMMON ), + new ItemDrop( i("runite bar"), 1, RARE ), + new ItemDrop( 161, 1, COMMON ), + new ItemDrop( 145, 1, RARE ), + new ItemDrop( 2442, 1, RARE ), + new ItemDrop( 995, new int[]{270, 3000}, COMMON ), + new ItemDrop( i("curry"), new int[]{1, 2}, UNCOMMON ), + }; + + public static final ItemDrop[] steeldragon = { + new ItemDrop( i("dragon bones"), 1, ALWAYS ), + new ItemDrop( i("steel bar"), 5, ALWAYS ), + new ItemDrop( i("rune axe"), 1, UNCOMMON ), + new ItemDrop( i("rune mace"), 1, COMMON ), + new ItemDrop( i("rune battleaxe"), 1, RARE ), + new ItemDrop( i("rune 2h sword"), 1, RARE ), + new ItemDrop( i("adamant kiteshield"), 1, UNCOMMON ), + new ItemDrop( i("rune full helm"), 1, UNCOMMON ), + new ItemDrop( i("rune sq shield"), 1, VERY_RARE ), + new ItemDrop( i("dragon plateskirt"), 1, VERY_RARE ), + new ItemDrop( i("dragon platelegs"), 1, VERY_RARE ), + new ItemDrop( i("blood rune"), 20, COMMON ), + new ItemDrop( i("rune javelin"), 7, COMMON ), + new ItemDrop( i("soul rune"), 5, UNCOMMON ), + new ItemDrop( i("rune dart"), new int[]{9, 12}, UNCOMMON ), + new ItemDrop( i("rune knife"), 7, UNCOMMON ), + new ItemDrop( 995, new int[]{470, 12650}, COMMON ), + new ItemDrop( 145, 3, COMMON ), + new ItemDrop( 165, 2, UNCOMMON ), + new ItemDrop( 161, 1, UNCOMMON ), + new ItemDrop( i("runite bar"), 1, UNCOMMON ), + new ItemDrop( 2011, new int[]{1, 2}, UNCOMMON ), + }; + + public static final ItemDrop[] darkwizard = { + new ItemDrop( i("bones"), 1, ALWAYS ), + new ItemDrop( i("earth rune"), new int[]{10, 36}, COMMON ), + new ItemDrop( i("air rune"), new int[]{10, 18}, COMMON ), + new ItemDrop( i("water rune"), new int[]{10, 18}, COMMON ), + new ItemDrop( i("fire rune"), new int[]{10, 18}, COMMON ), + new ItemDrop( i("mind rune"), new int[]{10, 18}, COMMON ), + new ItemDrop( i("body rune"), new int[]{10, 18}, COMMON ), + new ItemDrop( i("chaos rune"), new int[]{3, 5}, COMMON ), + new ItemDrop( i("nature rune"), new int[]{2, 3}, UNCOMMON ), + new ItemDrop( i("law rune"), 3, COMMON ), + new ItemDrop( i("cosmic rune"), new int[]{2, 4}, UNCOMMON ), + new ItemDrop( i("blood rune"), new int[]{2, 4}, COMMON ), + new ItemDrop( 995, new int[]{1, 29}, COMMON ), + new ItemDrop( i("staff"), 1, COMMON ), + new ItemDrop( i("staff of air"), 1, COMMON ), + new ItemDrop( 1017, 1, COMMON ), + new ItemDrop( 581, 1, COMMON ), + new ItemDrop( i("fire talisman"), 1, COMMON ), + new ItemDrop( i("earth talisman"), 1, VERY_RARE ), + new ItemDrop( i("mind talisman"), 1, RARE ), + new ItemDrop( i("staff of water"), 1, VERY_RARE ), + }; + + public static final ItemDrop[] highwayman = { + new ItemDrop( i("bones"), 1, ALWAYS ), + new ItemDrop( 1019, 1, ALWAYS ), + }; + + public static final ItemDrop[] chaosdruid = { + new ItemDrop( 526, 1, ALWAYS ), + new ItemDrop( 199, new int[]{1, 2}, COMMON ), + new ItemDrop( 201, new int[]{1, 2}, COMMON ), + new ItemDrop( 203, new int[]{1, 2}, COMMON ), + new ItemDrop( 205, new int[]{1, 2}, COMMON ), + new ItemDrop( 211, new int[]{1, 2}, UNCOMMON ), + new ItemDrop( 209, new int[]{1, 2}, UNCOMMON ), + new ItemDrop( 213, new int[]{1, 2}, UNCOMMON ), + new ItemDrop( 207, new int[]{1, 2}, UNCOMMON ), + new ItemDrop( 2485, new int[]{1, 2}, UNCOMMON ), + new ItemDrop( 217, new int[]{1, 2}, UNCOMMON ), + new ItemDrop( 215, new int[]{1, 2}, UNCOMMON ), + new ItemDrop( 219, new int[]{1, 2}, VERY_RARE ), + new ItemDrop( i("law rune"), 2, COMMON ), + new ItemDrop( i("body rune"), 9, COMMON ), + new ItemDrop( i("air rune"), new int[]{9, 36}, COMMON ), + new ItemDrop( i("earth rune"), 9, COMMON ), + new ItemDrop( i("mind rune"), 12, COMMON ), + new ItemDrop( i("nature rune"), 3, UNCOMMON ), + new ItemDrop( 995, new int[]{2, 485}, COMMON ), + new ItemDrop( i("vial of water"), 1, COMMON ), + new ItemDrop( 540, 1, COMMON ), + new ItemDrop( 538, 1, COMMON ), + new ItemDrop( i("bronze longsword"), 1, UNCOMMON ), + new ItemDrop( i("snape grass"), 1, RARE ), + new ItemDrop( i("unholy mould"), 1, RARE ), + new ItemDrop( i("cosmic talisman"), 1, VERY_RARE ), + new ItemDrop( i("iron med helm"), 1, VERY_RARE ), + new ItemDrop( i("uncut jade"), 1, VERY_RARE ), + }; + + public static final ItemDrop[] jailer = { + new ItemDrop( 526, 1, ALWAYS ), + new ItemDrop( i("jail key"), 1, ALWAYS ), + }; + + public static final ItemDrop[] wyvern = { + new ItemDrop( 6812, 1, ALWAYS ), + new ItemDrop( i("mithril sword"), 1, COMMON ), + new ItemDrop( i("black axe"), 1, UNCOMMON ), + new ItemDrop( i("adamant axe"), 1, UNCOMMON ), + new ItemDrop( i("snakeskin chaps"), 1, UNCOMMON ), + new ItemDrop( i("earth battlesatff"), 1, RARE ), + new ItemDrop( i("granite legs"), 1, RARE ), + new ItemDrop( 7937, 60, RARE ), + new ItemDrop( i("air rune"), new int[]{10, 64}, UNCOMMON ), + new ItemDrop( i("water rune"), new int[]{11, 33}, UNCOMMON ), + new ItemDrop( i("chaos rune"), 10, UNCOMMON ), + new ItemDrop( i("law rune"), new int[]{2, 3}, UNCOMMON ), + new ItemDrop( i("blood rune"), new int[]{2, 9}, UNCOMMON ), + new ItemDrop( i("soul rune"), new int[]{5, 9}, UNCOMMON ), + new ItemDrop( i("death rune"), new int[]{1, 4}, UNCOMMON ), + new ItemDrop( i("belladonna seed"), 1, UNCOMMON ), + new ItemDrop( i("cadantine seed"), 1, UNCOMMON ), + new ItemDrop( i("dwarf weed seed"), 1, UNCOMMON ), + new ItemDrop( i("snapdragon seed"), 1, UNCOMMON ), + new ItemDrop( i("jangerberry seed"), 1, UNCOMMON ), + new ItemDrop( i("limpwurt seed"), 1, UNCOMMON ), + new ItemDrop( i("marentill seed"), 1, UNCOMMON ), + new ItemDrop( 5282, 1, UNCOMMON ), + new ItemDrop( i("ranarr seed"), 1, UNCOMMON ), + new ItemDrop( i("strawberry seed"), 1, UNCOMMON ), + new ItemDrop( i("tarromin seed"), 1, UNCOMMON ), + new ItemDrop( i("watermelon seed"), 1, UNCOMMON ), + new ItemDrop( i("whiteberry seed"), 1, UNCOMMON ), + new ItemDrop( i("wildblood seed"), 1, UNCOMMON ), + new ItemDrop( i("toadflax seed"), 1, UNCOMMON ), + new ItemDrop( i("harralander seed"), 1, UNCOMMON ), + new ItemDrop( 995, new int[]{20, 420}, COMMON ), + new ItemDrop( i("lobster"), 3, UNCOMMON ), + new ItemDrop( i("bass"), 1, UNCOMMON ), + new ItemDrop( 149, 1, UNCOMMON ), + new ItemDrop( 133, 1, UNCOMMON ), + new ItemDrop( 199, 1, UNCOMMON ), + new ItemDrop( 201, 1, UNCOMMON ), + new ItemDrop( 203, 1, UNCOMMON ), + new ItemDrop( 205, 1, UNCOMMON ), + new ItemDrop( 207, 1, UNCOMMON ), + new ItemDrop( 209, 1, UNCOMMON ), + new ItemDrop( 211, 1, UNCOMMON ), + new ItemDrop( 213, 1, UNCOMMON ), + new ItemDrop( 215, 1, UNCOMMON ), + new ItemDrop( 217, 1, UNCOMMON ), + new ItemDrop( 2485, 1, UNCOMMON ), + }; + + public static final ItemDrop[] alwaysbones = { + new ItemDrop( 526, 1, ALWAYS ), + }; + + public static final ItemDrop[] bat = { + new ItemDrop( i("batbones"), 1, ALWAYS ), + }; +} diff --git a/2006Redone Server/src/redone/game/npcs/drops/NPCDropsHandler.java b/2006Redone Server/src/com/rebotted/game/npcs/drops/NPCDropsHandler.java similarity index 93% rename from 2006Redone Server/src/redone/game/npcs/drops/NPCDropsHandler.java rename to 2006Redone Server/src/com/rebotted/game/npcs/drops/NPCDropsHandler.java index ff390502..85d37325 100644 --- a/2006Redone Server/src/redone/game/npcs/drops/NPCDropsHandler.java +++ b/2006Redone Server/src/com/rebotted/game/npcs/drops/NPCDropsHandler.java @@ -1,250 +1,250 @@ -package redone.game.npcs.drops; - -import redone.Server; -import redone.game.items.ItemList; -import redone.util.Misc; - -/** - * Npc Drops Handler - * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) - */ - -public class NPCDropsHandler { - - public static int // found on http://runescape.wikia.com/wiki/Drop_rate - ALWAYS = 0, - COINSRATE = 3, - COMMON = 32, - UNCOMMON = 64, - RARE = 256, - VERY_RARE = 512; - - /** - * Handles the npc drops for the npc names. - * - * @param NPCId - * @return - */ - public static final ItemDrop[] NPC_DROPS(String npc, int NPCId) { - if (npc.equals("man") || npc.equals("woman") || npc.equals("drunken_man")) { - return NPCDrops.man; - } else if (npc.equals("skeletal_wyvern")) { - return NPCDrops.wyvern; - } else if (npc.equals("dark_beast")) { - return NPCDrops.darkbeast; - } else if (npc.equals("shade")) { - return NPCDrops.shade; - } else if (npc.equals("watchman")) { - return NPCDrops.watchman; - } else if (npc.equals("river_troll")) { - return NPCDrops.rivertroll; - } else if (npc.equals("cave_crawler")) { - return NPCDrops.cavecrawler; - } else if (npc.equals("thief")) { - return NPCDrops.thief; - } else if (npc.equals("tzhaar-xil") || npc.equals("Tzhaar-Xil")) { - return NPCDrops.tzhaarxil; - } else if (npc.equals("tzhaar-ket") || npc.equals("Tzhaar-Ket")) { - return NPCDrops.tzhaarket; - } else if (npc.equals("tzhaar-hur") || npc.equals("Tzhaar-Hur")) { - return NPCDrops.tzhaarhur; - } else if (npc.equals("tzhaar-mej") || npc.equals("Tzhaar-Mej")) { - return NPCDrops.tzhaarmej; - } else if (npc.equals("tree_spirit")) { - return NPCDrops.treespirit; - } else if (npc.equals("unicorn")) { - return NPCDrops.unicorn; - } else if (npc.equals("evil_chicken")) { - return NPCDrops.evilchicken; - } else if (npc.equals("white_knight")) { - return NPCDrops.whiteknight; - } else if (npc.equals("black_knight")) { - return NPCDrops.blackknight; - } else if (npc.equals("bear")) { - return NPCDrops.bear; - } else if (npc.equals("jogre")) { - return NPCDrops.jogre; - } else if (npc.equals("ogre")) { - return NPCDrops.ogre; - } else if (npc.equals("chaos_druid")) { - return NPCDrops.chaosdruid; - } else if (npc.equals("jailer")) { - return NPCDrops.jailer; - } else if (npc.equals("fire_giant") || npc.equals("Fire_giant")) { - return NPCDrops.firegiant; - } else if (npc.equals("basilisk")) { - return NPCDrops.basilisk; - } else if (npc.equals("baby_blue_dragon") || npc.equals("baby_red_dragon") || npc.equals("baby_dragon")) { - return NPCDrops.babybluedragon; - } else if (npc.equals("red_dragon")) { - return NPCDrops.reddragon; - } else if (npc.equals("elf_warrior")) { - return NPCDrops.elfwarrior; - } else if (npc.equals("dagannoth")) { - return NPCDrops.dagannoth; - } else if (npc.equals("giant_mole")) { - return NPCDrops.giantmole; - } else if (npc.equals("dagannoth_supreme")) { - return NPCDrops.dagannothsupereme; - } else if (npc.equals("chaos_elemental")) { - return NPCDrops.chaoselemental; - } else if (npc.equals("dagannoth_prime")) { - return NPCDrops.dagannothprime; - } else if (npc.equals("dagannoth_rex")) { - return NPCDrops.daggannothrex; - } else if (npc.equals("monkey_guard")) { - return NPCDrops.monkeyguard; - } else if (npc.equals("monk")) { - return NPCDrops.monk; - } else if (npc.equals("abyssal_demon")) { - return NPCDrops.abyssaldemon; - } else if (npc.equals("pyrefiend")) { - return NPCDrops.pyrefiend; - } else if (npc.equals("aberrant_spectre") - || npc.equals("aberrant_specter") - || npc.equals("aberant_specter")) { - return NPCDrops.abberantspectre; - } else if (npc.equals("earth_warrior")) { - return NPCDrops.earthwarrior; - } else if (npc.equals("gargoyle")) { - return NPCDrops.gargoyle; - } else if (npc.equals("dust_devil") || npc.equals("dustdevil")) { - return NPCDrops.dustdevil; - } else if (npc.equals("cockatrice")) { - return NPCDrops.cockatrice; - } else if (npc.equals("infernal_mage")) { - return NPCDrops.infernalmage; - } else if (npc.equals("nechryael")) { - return NPCDrops.nechryael; - } else if (npc.equals("bloodveld")) { - return NPCDrops.bloodveld; - } else if (npc.equals("turoth")) { - return NPCDrops.turoth; - } else if (npc.equals("banshee")) { - return NPCDrops.banshee; - } else if (npc.equals("crawling_hand")) { - return NPCDrops.crawlinghand; - } else if (npc.equals("highwayman")) { - return NPCDrops.highwayman; - } else if (npc.equals("wild_dog") || npc.equals("battle_mage")) { - return NPCDrops.alwaysbones; - } else if (npc.equals("kalphite_queen")) { - return NPCDrops.kalphitequeen; - } else if (npc.equals("kalphite_worker")) { - return NPCDrops.kalphiteworker; - } else if (npc.equals("kalphite_soldier")) { - return NPCDrops.kalphitesoldier; - } else if (npc.equals("kalphite_guardian")) { - return NPCDrops.kalphiteguardian; - } else if (npc.equals("bat") || npc.equals("giant_bat")) { - return NPCDrops.bat; - } else if (npc.equals("bronze_dragon")) { - return NPCDrops.bronzedragon; - } else if (npc.equals("black_dragon")) { - return NPCDrops.blackdragon; - } else if (npc.equals("iron_dragon")) { - return NPCDrops.irondragon; - } else if (npc.equals("steel_dragon")) { - return NPCDrops.steeldragon; - } else if (npc.equals("moss_giant")) { - return NPCDrops.mossgiant; - } else if (npc.equals("greater_demon")) { - return NPCDrops.greaterdemon; - } else if (npc.equals("black_demon")) { - return NPCDrops.blackdemon; - } else if (npc.equals("dwarf")) { - return NPCDrops.dwarf; - } else if (npc.equals("jelly")) { - return NPCDrops.jelly; - } else if (npc.equals("rock_crab")) { - return NPCDrops.rockcrab; - } else if (npc.equals("rockslug")) { - return NPCDrops.rockslug; - } else if (npc.equals("king_black_dragon")) { - return NPCDrops.kingblackdragon; - } else if (npc.equals("green_dragon")) { - return NPCDrops.greendragon; - } else if (npc.equals("blue_dragon")) { - return NPCDrops.bluedragon; - } else if (npc.equals("goblin")) { - return NPCDrops.goblin; - } else if (npc.equals("lesser_demon") || npc.equals("Lesser_demon") - || npc.equals("lesserdemon")) { - return NPCDrops.lesserdemon; - } else if (npc.equals("guard") || npc.equals("jail_guard")) { - return NPCDrops.guard; - } else if (npc.equals("al-kharid_warrior")) { - return NPCDrops.alkharidwarrior; - } else if (npc.equals("ice_warrior")) { - return NPCDrops.icewarrior; - } else if (npc.equals("kurask")) { - return NPCDrops.kurask; - } else if (npc.equals("ice_giant")) { - return NPCDrops.icegiant; - } else if (npc.equals("hobgoblin")) { - return NPCDrops.hobgoblin; - } else if (npc.equals("pirate")) { - return NPCDrops.pirate; - } else if (npc.equals("zombie")) { - return NPCDrops.zombie; - } else if (npc.equals("skeleton")) { - return NPCDrops.skeleton; - } else if (npc.equals("deadly_red_spider")) { - return NPCDrops.deadlyredspider; - } else if (npc.equals("rat")) { - return NPCDrops.rat; - } else if (npc.equals("imp")) { - return NPCDrops.imp; - } else if (npc.equals("cow") || npc.equals("cow_calf")) { - return NPCDrops.cow; - } else if (npc.equals("chicken") || npc.equals("rooster")) { - return NPCDrops.chicken; - } else if (npc.equals("hill_giant")) { - return NPCDrops.hillgiant; - } else if (npc.equals("giant_rat")) { - return NPCDrops.giantrat; - } else if (npc.equals("dark_wizard")) { - return NPCDrops.darkwizard; - } else { - return NPCDrops.DEFAULT; - } - } - - /** - * Gets the item name - * - * @param ItemID - * @return - */ - public static int i(String ItemName) { - return getItemId(ItemName); - } - - /** - * Item name main method - * - * @param itemName - * @return - */ - public static int getItemId(String itemName) { - for (ItemList i : Server.itemHandler.ItemList) { - if (i != null) { - if (i.itemName.equalsIgnoreCase(itemName)) { - return i.itemId; - } - } - } - return -1; - } - - /** - * Misc.random in shorter form - * - * @param random - * @return - */ - public static int r(int random) { - return Misc.random(random); - } - -} +package com.rebotted.game.npcs.drops; + +import com.rebotted.GameEngine; +import com.rebotted.game.items.ItemList; +import com.rebotted.util.Misc; + +/** + * Npc Drops Handler + * @author Andrew (Mr Extremez) + */ + +public class NPCDropsHandler { + + public static int // found on http://runescape.wikia.com/wiki/Drop_rate + ALWAYS = 0, + COINSRATE = 3, + COMMON = 32, + UNCOMMON = 64, + RARE = 256, + VERY_RARE = 512; + + /** + * Handles the npc drops for the npc names. + * + * @param NPCId + * @return + */ + public static final ItemDrop[] NPC_DROPS(String npc, int NPCId) { + if (npc.equals("man") || npc.equals("woman") || npc.equals("drunken_man")) { + return NPCDrops.man; + } else if (npc.equals("skeletal_wyvern")) { + return NPCDrops.wyvern; + } else if (npc.equals("dark_beast")) { + return NPCDrops.darkbeast; + } else if (npc.equals("shade")) { + return NPCDrops.shade; + } else if (npc.equals("watchman")) { + return NPCDrops.watchman; + } else if (npc.equals("river_troll")) { + return NPCDrops.rivertroll; + } else if (npc.equals("cave_crawler")) { + return NPCDrops.cavecrawler; + } else if (npc.equals("thief")) { + return NPCDrops.thief; + } else if (npc.equals("tzhaar-xil") || npc.equals("Tzhaar-Xil")) { + return NPCDrops.tzhaarxil; + } else if (npc.equals("tzhaar-ket") || npc.equals("Tzhaar-Ket")) { + return NPCDrops.tzhaarket; + } else if (npc.equals("tzhaar-hur") || npc.equals("Tzhaar-Hur")) { + return NPCDrops.tzhaarhur; + } else if (npc.equals("tzhaar-mej") || npc.equals("Tzhaar-Mej")) { + return NPCDrops.tzhaarmej; + } else if (npc.equals("tree_spirit")) { + return NPCDrops.treespirit; + } else if (npc.equals("unicorn")) { + return NPCDrops.unicorn; + } else if (npc.equals("evil_chicken")) { + return NPCDrops.evilchicken; + } else if (npc.equals("white_knight")) { + return NPCDrops.whiteknight; + } else if (npc.equals("black_knight")) { + return NPCDrops.blackknight; + } else if (npc.equals("bear")) { + return NPCDrops.bear; + } else if (npc.equals("jogre")) { + return NPCDrops.jogre; + } else if (npc.equals("ogre")) { + return NPCDrops.ogre; + } else if (npc.equals("chaos_druid")) { + return NPCDrops.chaosdruid; + } else if (npc.equals("jailer")) { + return NPCDrops.jailer; + } else if (npc.equals("fire_giant") || npc.equals("Fire_giant")) { + return NPCDrops.firegiant; + } else if (npc.equals("basilisk")) { + return NPCDrops.basilisk; + } else if (npc.equals("baby_blue_dragon") || npc.equals("baby_red_dragon") || npc.equals("baby_dragon")) { + return NPCDrops.babybluedragon; + } else if (npc.equals("red_dragon")) { + return NPCDrops.reddragon; + } else if (npc.equals("elf_warrior")) { + return NPCDrops.elfwarrior; + } else if (npc.equals("dagannoth")) { + return NPCDrops.dagannoth; + } else if (npc.equals("giant_mole")) { + return NPCDrops.giantmole; + } else if (npc.equals("dagannoth_supreme")) { + return NPCDrops.dagannothsupereme; + } else if (npc.equals("chaos_elemental")) { + return NPCDrops.chaoselemental; + } else if (npc.equals("dagannoth_prime")) { + return NPCDrops.dagannothprime; + } else if (npc.equals("dagannoth_rex")) { + return NPCDrops.daggannothrex; + } else if (npc.equals("monkey_guard")) { + return NPCDrops.monkeyguard; + } else if (npc.equals("monk")) { + return NPCDrops.monk; + } else if (npc.equals("abyssal_demon")) { + return NPCDrops.abyssaldemon; + } else if (npc.equals("pyrefiend")) { + return NPCDrops.pyrefiend; + } else if (npc.equals("aberrant_spectre") + || npc.equals("aberrant_specter") + || npc.equals("aberant_specter")) { + return NPCDrops.abberantspectre; + } else if (npc.equals("earth_warrior")) { + return NPCDrops.earthwarrior; + } else if (npc.equals("gargoyle")) { + return NPCDrops.gargoyle; + } else if (npc.equals("dust_devil") || npc.equals("dustdevil")) { + return NPCDrops.dustdevil; + } else if (npc.equals("cockatrice")) { + return NPCDrops.cockatrice; + } else if (npc.equals("infernal_mage")) { + return NPCDrops.infernalmage; + } else if (npc.equals("nechryael")) { + return NPCDrops.nechryael; + } else if (npc.equals("bloodveld")) { + return NPCDrops.bloodveld; + } else if (npc.equals("turoth")) { + return NPCDrops.turoth; + } else if (npc.equals("banshee")) { + return NPCDrops.banshee; + } else if (npc.equals("crawling_hand")) { + return NPCDrops.crawlinghand; + } else if (npc.equals("highwayman")) { + return NPCDrops.highwayman; + } else if (npc.equals("wild_dog") || npc.equals("battle_mage")) { + return NPCDrops.alwaysbones; + } else if (npc.equals("kalphite_queen")) { + return NPCDrops.kalphitequeen; + } else if (npc.equals("kalphite_worker")) { + return NPCDrops.kalphiteworker; + } else if (npc.equals("kalphite_soldier")) { + return NPCDrops.kalphitesoldier; + } else if (npc.equals("kalphite_guardian")) { + return NPCDrops.kalphiteguardian; + } else if (npc.equals("bat") || npc.equals("giant_bat")) { + return NPCDrops.bat; + } else if (npc.equals("bronze_dragon")) { + return NPCDrops.bronzedragon; + } else if (npc.equals("black_dragon")) { + return NPCDrops.blackdragon; + } else if (npc.equals("iron_dragon")) { + return NPCDrops.irondragon; + } else if (npc.equals("steel_dragon")) { + return NPCDrops.steeldragon; + } else if (npc.equals("moss_giant")) { + return NPCDrops.mossgiant; + } else if (npc.equals("greater_demon")) { + return NPCDrops.greaterdemon; + } else if (npc.equals("black_demon")) { + return NPCDrops.blackdemon; + } else if (npc.equals("dwarf")) { + return NPCDrops.dwarf; + } else if (npc.equals("jelly")) { + return NPCDrops.jelly; + } else if (npc.equals("rock_crab")) { + return NPCDrops.rockcrab; + } else if (npc.equals("rockslug")) { + return NPCDrops.rockslug; + } else if (npc.equals("king_black_dragon")) { + return NPCDrops.kingblackdragon; + } else if (npc.equals("green_dragon")) { + return NPCDrops.greendragon; + } else if (npc.equals("blue_dragon")) { + return NPCDrops.bluedragon; + } else if (npc.equals("goblin")) { + return NPCDrops.goblin; + } else if (npc.equals("lesser_demon") || npc.equals("Lesser_demon") + || npc.equals("lesserdemon")) { + return NPCDrops.lesserdemon; + } else if (npc.equals("guard") || npc.equals("jail_guard")) { + return NPCDrops.guard; + } else if (npc.equals("al-kharid_warrior")) { + return NPCDrops.alkharidwarrior; + } else if (npc.equals("ice_warrior")) { + return NPCDrops.icewarrior; + } else if (npc.equals("kurask")) { + return NPCDrops.kurask; + } else if (npc.equals("ice_giant")) { + return NPCDrops.icegiant; + } else if (npc.equals("hobgoblin")) { + return NPCDrops.hobgoblin; + } else if (npc.equals("pirate")) { + return NPCDrops.pirate; + } else if (npc.equals("zombie")) { + return NPCDrops.zombie; + } else if (npc.equals("skeleton")) { + return NPCDrops.skeleton; + } else if (npc.equals("deadly_red_spider")) { + return NPCDrops.deadlyredspider; + } else if (npc.equals("rat")) { + return NPCDrops.rat; + } else if (npc.equals("imp")) { + return NPCDrops.imp; + } else if (npc.equals("cow") || npc.equals("cow_calf")) { + return NPCDrops.cow; + } else if (npc.equals("chicken") || npc.equals("rooster")) { + return NPCDrops.chicken; + } else if (npc.equals("hill_giant")) { + return NPCDrops.hillgiant; + } else if (npc.equals("giant_rat")) { + return NPCDrops.giantrat; + } else if (npc.equals("dark_wizard")) { + return NPCDrops.darkwizard; + } else { + return NPCDrops.DEFAULT; + } + } + + /** + * Gets the item name + * + * @param ItemID + * @return + */ + public static int i(String ItemName) { + return getItemId(ItemName); + } + + /** + * Item name main method + * + * @param itemName + * @return + */ + public static int getItemId(String itemName) { + for (ItemList i : GameEngine.itemHandler.ItemList) { + if (i != null) { + if (i.itemName.equalsIgnoreCase(itemName)) { + return i.itemId; + } + } + } + return -1; + } + + /** + * Misc.random in shorter form + * + * @param random + * @return + */ + public static int r(int random) { + return Misc.random(random); + } + +} diff --git a/2006Redone Server/src/com/rebotted/game/npcs/impl/MilkCow.java b/2006Redone Server/src/com/rebotted/game/npcs/impl/MilkCow.java new file mode 100644 index 00000000..21e3d136 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/npcs/impl/MilkCow.java @@ -0,0 +1,50 @@ +package com.rebotted.game.npcs.impl; + +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.players.Player; + +/** + * @author Tom + */ + +public class MilkCow { + + /** + * The empty bucket Id + */ + private static int BUCKET = 1925; + + /** + * The bucket of milk Id + */ + private static int BUCKET_OF_MILK = 1927; + + public static void milk(final Player player) { + if (!player.getItemAssistant().playerHasItem(BUCKET)) { + player.getPacketSender().sendMessage("You need a bucket in order to milk this cow."); + return; + } else { + player.startAnimation(2305); + player.milking = true; + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + + @Override + public void execute(CycleEventContainer container) { + player.getItemAssistant().deleteItem(BUCKET, 1); + player.getPacketSender().sendMessage("You milk the cow."); + player.getItemAssistant().addItem(BUCKET_OF_MILK, 1); + container.stop(); + } + + @Override + public void stop() { + player.milking = false; + } + }, 7); + return; + } + } + +} diff --git a/2006Redone Server/src/redone/game/npcs/impl/Pets.java b/2006Redone Server/src/com/rebotted/game/npcs/impl/Pets.java similarity index 87% rename from 2006Redone Server/src/redone/game/npcs/impl/Pets.java rename to 2006Redone Server/src/com/rebotted/game/npcs/impl/Pets.java index 071dc284..3a831324 100644 --- a/2006Redone Server/src/redone/game/npcs/impl/Pets.java +++ b/2006Redone Server/src/com/rebotted/game/npcs/impl/Pets.java @@ -1,90 +1,91 @@ -package redone.game.npcs.impl; - -import redone.game.npcs.Npc; -import redone.game.npcs.NpcHandler; -import redone.game.players.Client; - -public class Pets { - - private final int[][] catArray = { { 3505, 7583 }, { 3506, 7584 }, - { 766, 1560 }, { 3507, 7585 }, { 765, 1559 }, { 764, 1558 }, - { 763, 1557 }, { 762, 1556 }, { 761, 1555 }, { 768, 1561 }, - { 769, 1562 }, { 770, 1563 }, { 771, 1564 }, { 772, 1565 }, - { 773, 1566 } }; - - public static final int[] CAT_ITEMS = { 1555, 1556, 1557, 1558, 1559, 1560, - 1561, 1562, 1563, 1564, 1565, 7585, 7584 }; - - public void pickUp(Client c, int Type) { - for (Npc i : NpcHandler.npcs) { - if (i == null) { - continue; - } - } - for (Npc i : NpcHandler.npcs) { - if (i != null) { - if (i.npcType == Type) { - if (i.spawnedBy == c.playerId && i.spawnedBy > 0) { - i.absX = 0; - i.absY = 0; - i = null; - break; - } - } - } - } - } - - public void pickUpClean(Client c, int id) { - for (int[] element : catArray) { - if (element[0] == id) { - c.getItemAssistant().addItem(element[1], 1); - } - } - for (Npc i : NpcHandler.npcs) { - if (i == null) { - continue; - } - if (i.npcType == id) { - i.absX = 0; - i.absY = 0; - } - } - c.hasNpc = false; - } - - public static int summonItemId(int itemId) { - if (itemId == 1555) { - return 761; - } else if (itemId == 1556) { - return 762; - } else if (itemId == 1557) { - return 763; - } else if (itemId == 1558) { - return 764; - } else if (itemId == 1559) { - return 765; - } else if (itemId == 1560) { - return 766; - } else if (itemId == 1561) { - return 768; - } else if (itemId == 1562) { - return 769; - } else if (itemId == 1563) { - return 770; - } else if (itemId == 1564) { - return 771; - } else if (itemId == 1565) { - return 772; - } else if (itemId == 1566) { - return 773; - } else if (itemId == 7585) { - return 3507; - } else if (itemId == 7584) { - return 3506; - } else if (itemId == 7583) { - return 3505; - } - return 0; - } -} +package com.rebotted.game.npcs.impl; + +import com.rebotted.game.npcs.Npc; +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; + +public class Pets { + + private final int[][] catArray = { { 3505, 7583 }, { 3506, 7584 }, + { 766, 1560 }, { 3507, 7585 }, { 765, 1559 }, { 764, 1558 }, + { 763, 1557 }, { 762, 1556 }, { 761, 1555 }, { 768, 1561 }, + { 769, 1562 }, { 770, 1563 }, { 771, 1564 }, { 772, 1565 }, + { 773, 1566 } }; + + public static final int[] CAT_ITEMS = { 1555, 1556, 1557, 1558, 1559, 1560, + 1561, 1562, 1563, 1564, 1565, 7585, 7584 }; + + public void pickUp(Client c, int Type) { + for (Npc i : NpcHandler.npcs) { + if (i == null) { + continue; + } + } + for (Npc i : NpcHandler.npcs) { + if (i != null) { + if (i.npcType == Type) { + if (i.spawnedBy == c.playerId && i.spawnedBy > 0) { + i.absX = 0; + i.absY = 0; + i = null; + break; + } + } + } + } + } + + public void pickUpClean(Player c, int id) { + for (int[] element : catArray) { + if (element[0] == id) { + c.getItemAssistant().addItem(element[1], 1); + } + } + for (Npc i : NpcHandler.npcs) { + if (i == null) { + continue; + } + if (i.npcType == id) { + i.absX = 0; + i.absY = 0; + } + } + c.hasNpc = false; + } + + public static int summonItemId(int itemId) { + if (itemId == 1555) { + return 761; + } else if (itemId == 1556) { + return 762; + } else if (itemId == 1557) { + return 763; + } else if (itemId == 1558) { + return 764; + } else if (itemId == 1559) { + return 765; + } else if (itemId == 1560) { + return 766; + } else if (itemId == 1561) { + return 768; + } else if (itemId == 1562) { + return 769; + } else if (itemId == 1563) { + return 770; + } else if (itemId == 1564) { + return 771; + } else if (itemId == 1565) { + return 772; + } else if (itemId == 1566) { + return 773; + } else if (itemId == 7585) { + return 3507; + } else if (itemId == 7584) { + return 3506; + } else if (itemId == 7583) { + return 3505; + } + return 0; + } +} diff --git a/2006Redone Server/src/redone/game/objects/Object.java b/2006Redone Server/src/com/rebotted/game/objects/Object.java similarity index 72% rename from 2006Redone Server/src/redone/game/objects/Object.java rename to 2006Redone Server/src/com/rebotted/game/objects/Object.java index e557104c..cee41016 100644 --- a/2006Redone Server/src/redone/game/objects/Object.java +++ b/2006Redone Server/src/com/rebotted/game/objects/Object.java @@ -1,34 +1,34 @@ -package redone.game.objects; - -import redone.Server; - -public class Object { - - public int objectId; - public int objectX; - public int objectY; - public int height; - public int face, faceOriginal; - public int type; - public int newId; - public int tick; - - public Object(int ID, int X, int Y, int Height, int Face, int Type, int NewId, int Tick) { - Object p = Server.objectManager.getObject(X, Y, Height); - if (p != null) { - if (ID == p.objectId) { - return; - } - } - objectId = ID; - objectX = X; - objectY = Y; - height = Height; - face = Face; - type = Type; - newId = NewId; - tick = Tick; - Server.objectManager.addObject(this); - } - -} +package com.rebotted.game.objects; + +import com.rebotted.GameEngine; + +public class Object { + + public int objectId; + public int objectX; + public int objectY; + public int height; + public int face, faceOriginal; + public int type; + public int newId; + public int tick; + + public Object(int ID, int X, int Y, int Height, int Face, int Type, int NewId, int Tick) { + Object p = GameEngine.objectManager.getObject(X, Y, Height); + if (p != null) { + if (ID == p.objectId) { + return; + } + } + objectId = ID; + objectX = X; + objectY = Y; + height = Height; + face = Face; + type = Type; + newId = NewId; + tick = Tick; + GameEngine.objectManager.addObject(this); + } + +} diff --git a/2006Redone Server/src/redone/game/objects/ObjectDefaults.java b/2006Redone Server/src/com/rebotted/game/objects/ObjectDefaults.java similarity index 77% rename from 2006Redone Server/src/redone/game/objects/ObjectDefaults.java rename to 2006Redone Server/src/com/rebotted/game/objects/ObjectDefaults.java index 4dee71c9..f76d3c45 100644 --- a/2006Redone Server/src/redone/game/objects/ObjectDefaults.java +++ b/2006Redone Server/src/com/rebotted/game/objects/ObjectDefaults.java @@ -1,61 +1,61 @@ -package redone.game.objects; - -import redone.game.players.Client; -import redone.world.clip.ObjectDef; - -/** - * ObjectDefaults - * @author Andrew (I'm A Boss on Rune-Server and Mr Extremez on Mopar & Runelocus) - */ - -public class ObjectDefaults { - - private static int - SOUTH = 0, - NORTH = 1, - EAST = 2, - WEST = 3; - - public static int getObjectType(Client player, int objectType) { - String objectName = ObjectDef.getObjectDef(objectType).name; - if (objectName.contains("Wardrobe") || objectName.contains("chest") || objectName.contains("Cupboard") || objectName.contains("Coffin")) { - return 10; - } - return 0; - } - - public static int getObjectFace(Client player, int objectType) { - switch (objectType) { - case 388: - case 389: - if (player.objectX == 3112 || player.objectX == 3104 || player.objectX == 3096) { - return EAST; - } else { - return SOUTH; - } - case 1528: - case 1529: - return player.objectX == 3172 ? WEST : EAST; - case 14879: - return 1; - case 1568: - return player.objectX == 3405 ? EAST : SOUTH; - case 375: - case 376: - case 377: - return player.objectX == 3096 ? NORTH : SOUTH; - case 399: - return player.objectX == 3096 && player.objectY == 3469 ? WEST : player.objectX == 3096 ? SOUTH : EAST; - case 398: - return player.objectX == 3096 && player.objectY == 3469 ? WEST : player.objectX == 3096 ? SOUTH : EAST; - case 3193: - return player.objectX == 3381 ? EAST : NORTH; - case 378: - return player.objectX == 3096 ? NORTH : SOUTH; - case 3194: - return player.objectX == 3381 ? EAST : NORTH; - } - return SOUTH; - } - -} +package com.rebotted.game.objects; + +import com.rebotted.game.players.Player; +import com.rebotted.world.clip.ObjectDef; + +/** + * ObjectDefaults + * @author Andrew (Mr Extremez) + */ + +public class ObjectDefaults { + + private static int + SOUTH = 0, + NORTH = 1, + EAST = 2, + WEST = 3; + + public static int getObjectType(Player player, int objectType) { + String objectName = ObjectDef.getObjectDef(objectType).name; + if (objectName.contains("Wardrobe") || objectName.contains("chest") || objectName.contains("Cupboard") || objectName.contains("Coffin")) { + return 10; + } + return 0; + } + + public static int getObjectFace(Player player, int objectType) { + switch (objectType) { + case 388: + case 389: + if (player.objectX == 3112 || player.objectX == 3104 || player.objectX == 3096) { + return EAST; + } else { + return SOUTH; + } + case 1528: + case 1529: + return player.objectX == 3172 ? WEST : EAST; + case 14879: + return 1; + case 1568: + return player.objectX == 3405 ? EAST : SOUTH; + case 375: + case 376: + case 377: + return player.objectX == 3096 ? NORTH : SOUTH; + case 399: + return player.objectX == 3096 && player.objectY == 3469 ? WEST : player.objectX == 3096 ? SOUTH : EAST; + case 398: + return player.objectX == 3096 && player.objectY == 3469 ? WEST : player.objectX == 3096 ? SOUTH : EAST; + case 3193: + return player.objectX == 3381 ? EAST : NORTH; + case 378: + return player.objectX == 3096 ? NORTH : SOUTH; + case 3194: + return player.objectX == 3381 ? EAST : NORTH; + } + return SOUTH; + } + +} diff --git a/2006Redone Server/src/redone/game/objects/Objects.java b/2006Redone Server/src/com/rebotted/game/objects/Objects.java similarity index 89% rename from 2006Redone Server/src/redone/game/objects/Objects.java rename to 2006Redone Server/src/com/rebotted/game/objects/Objects.java index 528e0241..eac48d3f 100644 --- a/2006Redone Server/src/redone/game/objects/Objects.java +++ b/2006Redone Server/src/com/rebotted/game/objects/Objects.java @@ -1,83 +1,84 @@ -package redone.game.objects; - -import redone.world.clip.ObjectDef; - -public class Objects { - - public long delay, oDelay; - public int xp, item, owner, target, times; - public boolean bait; - public String belongsTo; - public int objectId; - public int objectX; - public int objectY; - public int objectHeight; - public int objectFace; - public int objectType; - public int objectTicks; - - public int getObjectId() { - return objectId; - } - - public int getObjectX() { - return objectX; - } - - public int getObjectY() { - return objectY; - } - - public Objects(int id, int x, int y, int height, int face, int type, int ticks) { - objectId = id; - objectX = x; - objectY = y; - objectHeight = height; - objectFace = face; - objectType = type; - objectTicks = ticks; - } - - public int[] getObjectSize() { - ObjectDef def = ObjectDef.getObjectDef(objectId); - if (def == null) - return new int[] {1, 1}; - if (objectId == 2781) { - return new int[] {3, 3}; - } - int xLength; - int yLength; - if (objectFace != 1 && objectFace != 3) { - xLength = def.xLength(); - yLength = def.yLength(); - } else { - xLength = def.yLength(); - yLength = def.xLength(); - } - - return new int[] {xLength, yLength}; - } - - @Override - public String toString() { - return "Objects{" + - "objectId=" + objectId + - ", objectX=" + objectX + - ", objectY=" + objectY + - ", objectHeight=" + objectHeight + - '}'; - } - - public int getObjectHeight() { - return objectHeight; - } - - public int getObjectFace() { - return objectFace; - } - - public int getObjectType() { - return objectType; - } - -} +package com.rebotted.game.objects; + +import com.rebotted.world.clip.ObjectDef; + +public class Objects { + + public long delay, oDelay; + public int xp, item, owner, target, times; + public boolean bait; + public String belongsTo; + public int objectId; + public int objectX; + public int objectY; + public int objectHeight; + public int objectFace; + public int objectType; + public int objectTicks; + + public int getObjectId() { + return objectId; + } + + public int getObjectX() { + return objectX; + } + + public int getObjectY() { + return objectY; + } + + public Objects(int id, int x, int y, int height, int face, int type, int ticks) { + objectId = id; + objectX = x; + objectY = y; + objectHeight = height; + objectFace = face; + objectType = type; + objectTicks = ticks; + } + + public int[] getObjectSize() { + ObjectDef def = ObjectDef.getObjectDef(objectId); + if (def == null) { + return new int[] {1, 1}; + } + if (objectId == 2781) { + return new int[] {3, 3}; + } + int xLength; + int yLength; + if (objectFace != 1 && objectFace != 3) { + xLength = def.xLength(); + yLength = def.yLength(); + } else { + xLength = def.yLength(); + yLength = def.xLength(); + } + + return new int[] {xLength, yLength}; + } + + @Override + public String toString() { + return "Objects{" + + "objectId=" + objectId + + ", objectX=" + objectX + + ", objectY=" + objectY + + ", objectHeight=" + objectHeight + + '}'; + } + + public int getObjectHeight() { + return objectHeight; + } + + public int getObjectFace() { + return objectFace; + } + + public int getObjectType() { + return objectType; + } + +} diff --git a/2006Redone Server/src/redone/game/objects/ObjectsActions.java b/2006Redone Server/src/com/rebotted/game/objects/ObjectsActions.java similarity index 79% rename from 2006Redone Server/src/redone/game/objects/ObjectsActions.java rename to 2006Redone Server/src/com/rebotted/game/objects/ObjectsActions.java index 7a4eed20..300256a4 100644 --- a/2006Redone Server/src/redone/game/objects/ObjectsActions.java +++ b/2006Redone Server/src/com/rebotted/game/objects/ObjectsActions.java @@ -1,2879 +1,2877 @@ -package redone.game.objects; - -import redone.Constants; -import redone.Server; -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.content.guilds.Guilds; -import redone.game.content.minigames.FightPits; -import redone.game.content.minigames.PestControl; -import redone.game.content.minigames.castlewars.CastleWarObjects; -import redone.game.content.minigames.castlewars.CastleWars; -import redone.game.content.quests.QuestRewards; -import redone.game.content.random.Balloons; -import redone.game.content.random.PartyRoom; -import redone.game.content.randomevents.FreakyForester; -import redone.game.content.skills.agility.AgilityShortcut; -import redone.game.content.skills.core.Mining; -import redone.game.content.skills.core.Woodcutting; -import redone.game.content.skills.crafting.Spinning; -import redone.game.content.skills.farming.Farming; -import redone.game.content.skills.fletching.LogCutting; -import redone.game.content.skills.runecrafting.AbyssalHandler; -import redone.game.content.skills.runecrafting.RuneCraftingActions; -import redone.game.content.skills.smithing.Smelting; -import redone.game.content.skills.thieving.Stalls; -import redone.game.content.skills.thieving.ThieveOther; -import redone.game.content.traveling.Desert; -import redone.game.globalworldobjects.ClimbOther; -import redone.game.globalworldobjects.DoubleGates; -import redone.game.globalworldobjects.PassDoor; -import redone.game.globalworldobjects.SingleGates; -import redone.game.globalworldobjects.ClimbOther.ClimbData; -import redone.game.items.impl.LightSources; -import redone.game.npcs.NpcHandler; -import redone.game.npcs.impl.MilkCow; -import redone.game.objects.impl.AxeInLog; -import redone.game.objects.impl.BrimhavenVines; -import redone.game.objects.impl.Climbing; -import redone.game.objects.impl.FlourMill; -import redone.game.objects.impl.Levers; -import redone.game.objects.impl.OtherObjects; -import redone.game.objects.impl.Pickable; -import redone.game.objects.impl.Searching; -import redone.game.objects.impl.SpecialObjects; -import redone.game.objects.impl.UseOther; -import redone.game.objects.impl.Webs; -import redone.game.players.Client; -import redone.game.players.Position; -import redone.util.Misc; -import redone.world.clip.Region; - -public class ObjectsActions { - - private final Client player; - - public ObjectsActions(Client Client) { - player = Client; - } - - public void firstClickObject(int objectType, int objectX, int objectY) { - player.faceUpdate(0); - player.clickObjectType = 0; - player.turnPlayerTo(objectX, objectY); - if (!Region.objectExists(objectType, objectX, objectY, player.heightLevel) && player.playerRights > 1) { - player.getActionSender().sendMessage("[DEBUG] This object does not exist."); - return; - } - if (Webs.webs(player, objectType)) { - Webs.slashWeb(player, objectType, objectX, objectY); - return; - } - if (player.stopPlayerPacket == true) { - return; - } - LogCutting.resetFletching(player); - if (player.getGnomeStrongHold().gnomeCourse(objectType)) { - return; - } - if (player.getWildernessAgility().wildernessCourse(objectType)) { - return; - } - if (player.getBarbarianAgility().barbarianCourse(objectType)) { - return; - } - if (player.getPyramidAgility().pyramidCourse(objectType)) { - return; - } - if (player.getApeAtollAgility().apeAtollCourse(objectType)) { - return; - } - if (player.getWerewolfAgility().werewolfCourse(objectType)) { - return; - } - if (objectType >= 115 && objectType <= 121) { - Balloons.popBalloon(player, objectX, objectY); - return; - } - if (objectType >= 5103 && objectType <= 5107) { - BrimhavenVines.handleBrimhavenVines(player, objectType); - return; - } - ClimbOther.handleOpenOther(player, objectType); - for (ClimbData t: ClimbData.values()) { - if (objectType == t.getOpen()) { - ClimbOther.useOther(player, objectType); - } - } - OtherObjects.searchSpecialObject(player, objectType); - Searching.searchObject(player, objectType); - Levers.pullLever(player, objectType); - ThieveOther.lockedDoor(player, objectType); - SingleGates.useSingleGate(player, objectType); - DoubleGates.useDoubleGate(player, objectType); - PassDoor.processDoor(player, objectType); - AbyssalHandler.handleAbyssalTeleport(player, objectType); - // if its a rock we can mine, mine it - if (Mining.rockExists(objectType)) - player.getMining().startMining(player, objectType, player.objectX, player.objectY, player.clickObjectType); - switch (objectType) { - case 6: - player.getCannon().clickCannon(objectX, objectY); - break; - case 6702: - case 6703: - case 6704: - case 6705: - case 6706: - case 6707: - player.getBarrows().useStairs(); - break; - - case 10284: - player.getBarrows().useChest(); - break; - - case 6823: - if(player.barrowsNpcs[0][1] == 0) { - NpcHandler.spawnNpc(player, 2030, player.getX(), player.getY()-1, 3, 0, 120, 25, 200, 200, true, true); - player.barrowsNpcs[0][1] = 1; - } else { - player.getActionSender().sendMessage("You have already searched in this sarcophagus."); - } - break; - - case 6772: - if(player.barrowsNpcs[1][1] == 0) { - NpcHandler.spawnNpc(player, 2029, player.getX()+1, player.getY(), 3, 0, 120, 20, 200, 200, true, true); - player.barrowsNpcs[1][1] = 1; - } else { - player.getActionSender().sendMessage("You have already searched in this sarcophagus."); - } - break; - - case 6822: - if(player.barrowsNpcs[2][1] == 0) { - NpcHandler.spawnNpc(player, 2028, player.getX(), player.getY()-1, 3, 0, 90, 17, 200, 200, true, true); - player.barrowsNpcs[2][1] = 1; - } else { - player.getActionSender().sendMessage("You have already searched in this sarcophagus."); - } - break; - - case 6773: - if(player.barrowsNpcs[3][1] == 0) { - NpcHandler.spawnNpc(player, 2027, player.getX(), player.getY()-1, 3, 0, 120, 23, 200, 200, true, true); - player.barrowsNpcs[3][1] = 1; - } else { - player.getActionSender().sendMessage("You have already searched in this sarcophagus."); - } - break; - - case 6771: - player.getDialogueHandler().sendDialogues(3222, 2026); - break; - - case 6821: - if(player.barrowsNpcs[5][1] == 0) { - NpcHandler.spawnNpc(player, 2025, player.getX()-1, player.getY(), 3, 0, 90, 19, 200, 200, true, true); - player.barrowsNpcs[5][1] = 1; - } else { - player.getActionSender().sendMessage("You have already searched in this sarcophagus."); - } - break; - - case 2145: - if (player.objectX == 3249 && player.objectY == 3192) { - player.getActionSender().object(2146, 3249, 3192, 0, 0, 10); - Region.addObject(2146, 3249, 3192, 0, 10, 0, false); - } - break; - - case 2146: - if (player.objectX == 3249 && player.objectY == 3192) { - player.getActionSender().object(2145, 3249, 3192, 0, 0, 10); - } - break; - - case 399: - if (player.objectX == 3096 && player.objectY == 3469) { - player.getActionSender().object(398, 3096, 3469, 0, 3, 10); - Region.addObject(398, 3096, 3469, 0, 10, 3, false); - } - break; - - case 398: - if (player.objectX == 3096 && player.objectY == 3469) { - player.getActionSender().object(399, 3096, 3469, 0, 3, 10); - } - break; - - case 3828: - if (player.objectX == 3509 && player.objectY == 9497) { - player.getPlayerAssistant().movePlayer(3507, 9494, 0); - } else { - player.getPlayerAssistant().movePlayer(3484, 9509, 2); - } - break; - - case 2271: - player.getActionSender().object(2272, 2984, 3336, 1, 10); - Region.addObject(2272, 2984, 3336, 2, 10, 1, false); - player.getActionSender().sendMessage("You open the cupboard."); - break; - - case 2272: - if (player.knightS == 5) { - player.getActionSender().sendMessage("You search the cupboard..."); - player.getDialogueHandler().sendDialogues(659, -1); - player.knightS = 6; - } else { - player.getActionSender().sendMessage("You search the cupboard..."); - player.getActionSender().sendMessage("and don't find anything interesting."); - } - break; - - case 9038: - case 9039: - if (!player.getItemAssistant().playerHasItem(6306, 100) && player.absX == 2816) { - player.getDialogueHandler().sendStatement("You need 100 trading sticks to enter here."); - player.nextChat = 0; - return; - } - if (player.absY == 3082 || player.absY == 3085) { - player.getDialogueHandler().sendStatement("You can't enter from here."); - player.nextChat = 0; - return; - } - if (player.absX == 2816 && player.getItemAssistant().playerHasItem(6306, 100)) { - player.getPlayerAssistant().movePlayer(player.absX+1, player.absY, 0); - player.getItemAssistant().deleteItem(6306, 100); - } else if (player.absX == 2817) { - player.getPlayerAssistant().movePlayer(player.absX+1, player.absY, 0); - } - break; - - case 12047: - case 12045: - if (player.absY == 4439 || player.absY == 4436 || player.absX == 2467 || player.absX == 2464) { - player.getDialogueHandler().sendStatement("You can't enter the gate from here."); - player.nextChat = 0; - return; - } - if (!player.getItemAssistant().playerHasItem(1601, 1)) { - if (player.absX == 2469 || player.absY == 4434) { - player.getDialogueHandler().sendStatement("You need 1 cut diamond to enter."); - player.nextChat = 0; - return; - } - } else if (player.absX == 2470) { - player.getPlayerAssistant().movePlayer(player.absX-1, player.absY, 0); - player.getActionSender().sendMessage("You pass through the gate."); - } else if (player.absY == 4433) { - player.getPlayerAssistant().movePlayer(player.absX, player.absY+1, 0); - player.getActionSender().sendMessage("You pass through the gate."); - } else if (player.absX == 2469) { - player.getItemAssistant().deleteItem(1601, 1); - player.getPlayerAssistant().movePlayer(player.absX+1, player.absY, 0); - player.getActionSender().sendMessage("You pass through the gate."); - } else if (player.absY == 4434) { - player.getItemAssistant().deleteItem(1601, 1); - player.getPlayerAssistant().movePlayer(player.absX, player.absY-1, 0); - player.getActionSender().sendMessage("You pass through the gate."); - } - break; - - case 69: - case 2178: - //if (c.objectX == 2675 && c.objectY == 3170) { - //c.getDH().sendDialogues(79, 0); - //} else { - if (player.playerLevel[player.playerFishing] <= 50) { - player.getActionSender().sendMessage("You need a fishing level of 50 or higher to play Fishing Trawler."); - return; - } - Server.trawler.getWaitingRoom().join(player); - //} - break; - - case 2179: - case 70: - Server.trawler.getWaitingRoom().leave(player); - break; - case 2167: - Server.trawler.fixHole(player, objectX, objectY); - break; - case 2166: - Server.trawler.showReward(player); - break; - case 2159: - case 2160: - player.trawlerFade(2676, 3170, 0); - break; - case 2175: - Server.trawler.downLadder(player, objectX, objectY); - break; - case 2174: - Server.trawler.upLadder(player, objectX, objectY); - break; - - case 2230: - case 2265: - player.getActionSender().sendMessage("You look at hajedys cart."); - break; - - case 10041: - player.getActionSender().sendMessage("You can't chop this tree."); - break; - - case 12163: - case 12164: - case 12165: - case 12166: - Woodcutting.handleCanoe(player, player.objectId); - break; - - case 5947: - if (player.inWild()) { - return; - } - if (player.getItemAssistant().playerHasItem(954) - && LightSources.playerHasLightSource(player)) { - player.getItemAssistant().deleteItem(954, 1); - player.getPlayerAssistant().movePlayer(3168, 9572, 0); - return; - } else if (player.getItemAssistant().playerHasItem(954) - && !LightSources.playerHasLightSource(player)) { - player.getItemAssistant().deleteItem(954, 1); - player.getPlayerAssistant().movePlayer(3168, 9572, 0); - return; - } else { - player.getActionSender().sendMessage( - "You need a rope to go down there."); - } - break; - - case 5946: - if (player.inWild()) { - return; - } - LightSources.brightness3(player); - player.getPlayerAssistant().movePlayer(3168, 3172, 0); - break; - - case 4490: - case 4487:// slayer tower doors - if (player.absY == 3535) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY + 1, 0); - } else if (player.absY == 3536) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY - 1, 0); - } - break; - - case 5163: - player.getActionSender().sendMessage("This chest is empty."); - break; - - case 1506: - case 1508: - if (player.absX == 3291 || player.absX == 3294) { - return; - } - if (player.absY == 3167) { - player.getPlayerAssistant().movePlayer(player.absX, 3166, 0); - } else if (player.absY == 3166) { - player.getPlayerAssistant().movePlayer(player.absX, 3167, 0); - } - break; - - case 3832: - player.getPlayerAssistant().movePlayer(3509, 9496, 2); - break; - - case 2896: - case 2897: - if (player.playerRights < 3) { - player.getActionSender() - .sendMessage("You can't open that!"); - player.getPlayerAssistant().movePlayer(2728, 3349, 0); - } - break; - - case 5581: // take axe from log - AxeInLog.pullAxeFromLog(player, objectX, objectY); - break; - - case 2112: - if (player.absY == 9756 - && player.playerLevel[player.playerMining] >= 60) { - player.getPlayerAssistant().movePlayer(3046, 9757, 0); - player.getActionSender() - .sendMessage("You enter the guild."); - } else if (player.absY == 9757 - && player.playerLevel[player.playerMining] >= 60) { - player.getPlayerAssistant().movePlayer(3046, 9756, 0); - player.getActionSender() - .sendMessage("You enter the guild."); - } else if (player.playerLevel[player.playerMining] < 60) { - player.getActionSender().sendMessage( - "You need 60 mining to enter this guild"); - } - break; - - case 5008: - player.getPlayerAssistant().movePlayer(2838, 10124, 0); - break; - - case 5998: - player.getPlayerAssistant().movePlayer(2730, 3713, 0); - break; - - case 7258: - player.getPlayerAssistant().movePlayer(2906, 3537, 0); - break; - - case 10177: - player.getPlayerAssistant().movePlayer(1798, 4407, 3); - break; - - case 10193: - player.getPlayerAssistant().movePlayer(2545, 10143, 0); - break; - - case 8966: - player.getPlayerAssistant().movePlayer(2523, 3740, 0); - break; - - case 10194: - player.getPlayerAssistant().movePlayer(2542, 3740, 0); - break; - - case 10195: - player.getPlayerAssistant().movePlayer(1809, 4405, 2); - break; - - case 10196: - player.getPlayerAssistant().movePlayer(1807, 4405, 3); - break; - - case 10197: - player.getPlayerAssistant().movePlayer(1823, 4404, 2); - break; - - case 10198: - player.getPlayerAssistant().movePlayer(1825, 4404, 3); - break; - - case 10199: - player.getPlayerAssistant().movePlayer(1834, 4388, 2); - break; - - case 10200: - player.getPlayerAssistant().movePlayer(1834, 4390, 3); - break; - - case 10201: - player.getPlayerAssistant().movePlayer(1811, 4394, 1); - break; - - case 10202: - player.getPlayerAssistant().movePlayer(1812, 4394, 2); - break; - - case 10203: - player.getPlayerAssistant().movePlayer(1799, 4386, 2); - break; - - case 10204: - player.getPlayerAssistant().movePlayer(1799, 4388, 1); - break; - - case 10205: - player.getPlayerAssistant().movePlayer(1796, 4382, 1); - break; - - case 10206: - player.getPlayerAssistant().movePlayer(1796, 4382, 2); - break; - - case 10207: - player.getPlayerAssistant().movePlayer(1800, 4369, 2); - break; - - case 10208: - player.getPlayerAssistant().movePlayer(1802, 4370, 1); - break; - - case 10209: - player.getPlayerAssistant().movePlayer(1827, 4362, 1); - break; - - case 10210: - player.getPlayerAssistant().movePlayer(1825, 4362, 2); - break; - - case 10211: - player.getPlayerAssistant().movePlayer(1863, 4373, 2); - break; - - case 10212: - player.getPlayerAssistant().movePlayer(1863, 4371, 1); - break; - - case 10213: - player.getPlayerAssistant().movePlayer(1864, 4389, 1); - break; - - case 10214: - player.getPlayerAssistant().movePlayer(1864, 4387, 2); - break; - - case 10215: - player.getPlayerAssistant().movePlayer(1890, 4407, 0); - break; - - case 10216: - player.getPlayerAssistant().movePlayer(1890, 4406, 1); - break; - - case 10217: - player.getPlayerAssistant().movePlayer(1957, 4373, 1); - break; - - case 10218: - player.getPlayerAssistant().movePlayer(1957, 4371, 0); - break; - - case 10219: - player.getPlayerAssistant().movePlayer(1824, 4379, 3); - break; - - case 10220: - player.getPlayerAssistant().movePlayer(1824, 4381, 2); - break; - - case 10221: - player.getPlayerAssistant().movePlayer(1838, 4375, 2); - break; - - case 10222: - player.getPlayerAssistant().movePlayer(1838, 4377, 3); - break; - - case 10223: - player.getPlayerAssistant().movePlayer(1850, 4386, 1); - break; - - case 10224: - player.getPlayerAssistant().movePlayer(1850, 4387, 2); - break; - - case 10225: - player.getPlayerAssistant().movePlayer(1932, 4378, 1); - break; - - case 10226: - player.getPlayerAssistant().movePlayer(1932, 4380, 2); - break; - - case 10227: - if (player.objectX == 1961 && player.objectY == 4392) - player.getPlayerAssistant().movePlayer(1961, 4392, 2); - else - player.getPlayerAssistant().movePlayer(1932, 4377, 1); - break; - - case 10228: - player.getPlayerAssistant().movePlayer(1961, 4393, 3); - break; - - case 10229: - player.getPlayerAssistant().movePlayer(1912, 4367, 0); - break; - - case 10230: - player.getPlayerAssistant().movePlayer(2899, 4449, 0); - break; - - case 2620: - if (player.gertCat == 6) { - player.getActionSender().sendMessage("You have already found fluffs kitten."); - return; - } - if (player.gertCat == 5) { - player.getActionSender().sendMessage("You search the crate..."); - if (Misc.random(25) == 1) { - player.getItemAssistant().addItem(1554, 1); - player.gertCat = 6; - player.getActionSender().sendMessage("You find the kitten you should go back to fluffs."); - } else { - player.getActionSender().sendMessage("and find nothing..."); - } - player.getActionSender().sendMessage("and find nothing..."); - } - break; - - case 14921: - case 9390: - case 2781: - case 2785: - case 2966: - case 3294: - case 3413: - case 4304: - case 4305: - case 6189: - case 6190: - case 11009: - case 11010: - case 11666: - case 12100: - case 12809: - Smelting.startSmelting(player, objectType); - break; - - case 2156:// wizard tower (draynor) - player.getPlayerAssistant().startTeleport(3109, 3168, 0, "modern"); - break; - - case 2157:// dark wizard tower (falador) - player.getPlayerAssistant().startTeleport(2906, 3335, 0, "modern"); - break; - - case 2158:// thormac sorcer tower (cammy) - player.getPlayerAssistant().startTeleport(2702, 3398, 0, "modern"); - break; - - case 10596: - if (player.playerLevel[player.playerSlayer] < 72) { - player.getActionSender().sendMessage( - "You need 72 slayer to enter."); - return; - } else { - player.getActionSender().sendMessage( - "You enter the icy cavern."); - player.getPlayerAssistant().movePlayer(3056, 9555, 0); - } - break; - - case 10595: - player.getActionSender().sendMessage( - "You leave the icy cavern."); - player.getPlayerAssistant().movePlayer(3056, 9562, 0); - break; - - case 12982: - if (player.absY == 3278) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY - 3, 0); - } else if (player.absY == 3275) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY + 3, 0); - } - break; - - case 2266: - if (player.absY == 2963) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY + 1, 0); - } else if (player.absY == 2964) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY - 1, 0); - } - break; - - case 2606: - if (player.absY == 9599) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY + 1, 0); - } else if (player.absY == 9600) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY - 1, 0); - } - break; - - case 2634: - if (player.absX == 2837 - && player.playerLevel[player.playerMining] >= 50) { - player.getPlayerAssistant().movePlayer(player.absX + 3, - player.absY, 0); - } else if (player.absX == 2840 - && player.playerLevel[player.playerMining] >= 50) { - player.getPlayerAssistant().movePlayer(player.absX - 3, - player.absY, 0); - } else if (player.playerLevel[player.playerMining] < 50) { - player.getDialogueHandler().sendStatement("You need 50 mining to pass to this rock slide."); - player.nextChat = 0; - return; - } - break; - - case 1967: - case 1968: - if (player.absX == 2464 || player.absX == 2467) { - return; - } - if (player.absY == 3491) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY + 2, 0); - } else if (player.absY == 3493) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY - 2, 0); - } - break; - - case 4577: - if (player.absY == 3635) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY + 1, 0); - } else if (player.absY == 3636) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY - 1, 0); - } - break; - - case 4551: - if (player.objectX == 2522 && player.objectY == 3597) { - player.getPlayerAssistant().movePlayer(2514, 3619, 0); - player.startAnimation(3067); - } - break; - - case 4558: - if (player.objectX == 2514 && player.objectY == 3617) { - player.getPlayerAssistant().movePlayer(2522, 3595, 0); - player.startAnimation(3067); - } - break; - - case 2216: - if (player.absX == 2876) { - player.getPlayerAssistant().movePlayer(2880, 2952, 0); - } else if (player.absX == 2880) { - player.getPlayerAssistant().movePlayer(2876, 2952, 0); - } - break; - - case 1804: - if (player.absY == 3449 - && player.getItemAssistant().playerHasItem(983, 1)) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY + 1, 0); - } else if (player.absY == 3450 - && player.getItemAssistant().playerHasItem(983, 1)) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY - 1, 0); - } else if (!player.getItemAssistant().playerHasItem(983, 1)) { - player.getDialogueHandler().sendStatement("You need a brass key to enter here."); - player.nextChat = 0; - } - break; - - case 135: - if (player.absY == 3353) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY + 1, 0); - } else if (player.absY == 3354) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY - 1, 0); - } - break; - - case 1528:// curtain varrock pray altar - if (player.absY == 3390) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY + 1, 0); - } else if (player.absY == 3391) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY - 1, 0); - } - break; - - case 95: - case 94: - case 90: - case 89: - case 5812: - case 2341: - player.getActionSender().sendMessage( - "Will be added later with the quest!"); - break; - - case 8689: - if (player.milking == false) { - MilkCow.milk(player); - } - break; - - case 24: - if (player.absX == 2764) { - player.getPlayerAssistant().movePlayer(player.absX + 1, - player.absY, 1); - } else if (player.absX == 2765) { - player.getPlayerAssistant().movePlayer(player.absX - 1, - player.absY, 1); - } - break; - - case 2706: - if (player.absY == 3321) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY + 1, 0); - } else if (player.absY == 3322) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY - 1, 0); - } - break; - - case 102: - if (player.absY == 3480) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY + 1, 0); - } else if (player.absY == 3481) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY - 1, 0); - } - break; - - case 9330: - case 9328: - case 9293: - case 11844: - case 9301: - case 9302: - case 2322: - case 2323: - case 2296: - case 5100: - case 5110: - case 5111: - case 14922: - case 3067: - case 9309: - case 9310: - case 2618: - case 2332: - case 5088: - case 5090: - case 4615: - case 4616: - case 3933: - case 12127: - case 9294: - case 9326: - case 9321: - case 993: - AgilityShortcut.processAgilityShortcut(player); - break; - - case 2612: - player.getActionSender().object(2613, 3096, 3269, 1, 0, 10); - Region.addObject(2613, 3096, 3269, 1, 10, 0, false); - player.getActionSender().sendMessage("You open the cupboard."); - break; - - case 2613: - player.getItemAssistant().addItem(1550, 1); - break; - - - case 9391: - case 62: - case 416: - case 6545: - case 3500: - player.getActionSender().sendMessage( - "This feature is currently disabled."); - break; - - case 2670: - Desert.cutCactus(player, Desert.getCacCutter(player), objectType, - objectX, objectY); - break; - - /** - * tutorial island objects - */ - - case 1519: - case 1516: - if (player.tutorialProgress == 28 && player.absX == 3129) { - player.getPlayerAssistant().movePlayer(player.absX - 1, - player.absY, player.heightLevel); - } else if (player.tutorialProgress == 28 && player.absX == 3128) { - player.getPlayerAssistant().movePlayer(player.absX + 1, - player.absY, player.heightLevel); - } - break; - - case 3015: - case 3016: - if (player.tutorialProgress == 7 || player.diedOnTut == true) { - if (player.diedOnTut == true) { - player.getPlayerAssistant().movePlayer(player.absX - 1, - player.absY, 0); - player.getActionSender().createArrow(3078, 3084, - player.getH(), 2); - player.getDialogueHandler().sendStatement2( - "You have died and have already beat this step", - "you may continue."); - } else if (player.diedOnTut == false) { - player.getPlayerAssistant().movePlayer(player.absX - 1, - player.absY, 0); - player.getDialogueHandler().sendDialogues(3020, -1); - } else { - player.getActionSender().sendMessage( - "You aren't on this part yet."); - return; - } - } - break; - - case 3018: // door again - if (player.tutorialProgress > 9) { - PassDoor.passThroughDoor(player, 3018, 1, 2, 0, -1, 0, 0); - if (player.diedOnTut) { - player.getDialogueHandler().sendStatement2( - "You have died and have already beat this step", - "you may continue."); - player.getActionSender().createArrow(3086, 3126, - player.getH(), 2); - } else { - player.getDialogueHandler().sendDialogues(3038, -1); - } - } - break; - - case 3017:// door tutorial island - if (player.tutorialProgress > 6 || player.diedOnTut) { - if (player.diedOnTut && Position.checkPosition(player, 3079, 3084, 0)) { - PassDoor.passThroughDoor(player, 3017, 3, 0, 0, -1, 0, 0); - player.getDialogueHandler().sendStatement2("You have died and have already beat this step", "you may continue."); - player.getActionSender().createArrow(3072, 3090, player.getH(), 2); - } else if (player.diedOnTut == false && Position.checkPosition(player, 3079, 3084, 0)) { - PassDoor.passThroughDoor(player, 3017, 3, 0, 0, -1, 0, 0); - player.getActionSender().drawHeadicon(1, 3, 0, 0); - } - } else { - player.getActionSender().sendMessage("You aren't on this part yet."); - return; - } - break; - - case 3025: - if (player.tutorialProgress >= 28) { - if (Position.checkPosition(player, 3129, 3124, 0)) { - PassDoor.passThroughDoor(player, 3025, 3, 0, 0, 1, 0, 0); - } - // client.getPacketDispatcher().tutorialIslandInterface(70, - // 15); - player.getActionSender().chatbox(6180); - player.getDialogueHandler() - .chatboxText( - player, - "Follow the path to the chapel and enter it.", - "Once inside talk to the monk. He'll tell you all about the skill.", - "", "", "Prayer"); - player.getActionSender().chatbox(6179); - player.getActionSender().drawHeadicon(1, 8, 0, 0); // sends - // to - // prayer - // dude - } - - break; - case 3026: - if (player.tutorialProgress >= 32) { - // client.getPacketDispatcher().tutorialIslandInterface(80, - // 17); - player.getActionSender().drawHeadicon(1, 9, 0, 0); // sends - // to - // prayer - // dude - if (Position.checkPosition(player, 3122, 3103, 0)) { - PassDoor.passThroughDoor(player, 3026, 0, 1, 0, 0, -1, 0); - } - } - break; - - case 3024: - if (player.tutorialProgress >= 27) { - if (Position.checkPosition(player, 3124, 3124, 0)) { - PassDoor.passThroughDoor(player, 3024, 3, 0, 0, 1, 0, 0); - } - // client.getPacketDispatcher().tutorialIslandInterface(65, - // 14); - player.getActionSender().chatbox(6180); - player.getDialogueHandler() - .chatboxText( - player, - "The guide here will tell you all about making cash. Just click on", - "him to hear what he's got to say.", "", "", - "Financial advice"); - player.getActionSender().chatbox(6179); - player.getActionSender().drawHeadicon(1, 7, 0, 0); - } - break; - - case 3045: - if (player.tutorialProgress == 26) { - player.getPlayerAssistant().openUpBank(); - // client.getPacketDispatcher().tutorialIslandInterface(60, - // 13); - player.getActionSender().createArrow(3125, 3124, - player.getH(), 2); - player.getActionSender().chatbox(6180); - player.getDialogueHandler() - .chatboxText( - player, - "You can store stuff here for safekeeping. If you die anything", - "in your bank will be saved. To deposit something, rich click it", - "and select 'store'. Once you've had a good look, close the", - "window and move on through the door indicated.", - "This is your bank box"); - player.getActionSender().chatbox(6179); - player.tutorialProgress = 27; - player.getActionSender().createArrow(1, 7); - } else if (player.tutorialProgress >= 27) { - player.getDialogueHandler().sendDialogues(1013, 494); - } - break; - - case 3039: - if (player.getItemAssistant().playerHasItem(2307) && player.tutorialProgress >= 8) { - player.startAnimation(896); - player.getPlayerAssistant().requestUpdates(); - player.getItemAssistant().deleteItem(2307, 1); - player.getItemAssistant().addItem(2309, 1); - player.getDialogueHandler().sendDialogues(3037, -1); - } - break; - - case 3019: - if (player.tutorialProgress >= 11 || player.diedOnTut) { - if (player.diedOnTut && Position.checkPosition(player, 3086, 3126, 0)) { - PassDoor.passThroughDoor(player, 3019, 2, 3, 0, 0, -1, 0); - player.getDialogueHandler().sendStatement2( - "You have died and have already beat this step", - "you may continue."); - player.getActionSender().createArrow(3088, 3119, - player.getH(), 2); - } else { - if (Position.checkPosition(player, 3086, 3126, 0)) { - player.getDialogueHandler().sendDialogues(3042, -1); - } - } - } - break; - - - case 3014: - if (Position.checkPosition(player, 3097, 3107, 0) && player.tutorialProgress >= 2) { - PassDoor.passThroughDoor(player, 3014, 1, 0, 0, 1, 0, 0); - player.getDialogueHandler().sendDialogues(3011, -1); - player.getActionSender().createArrow(1, 2); - } else if (Position.checkPosition(player, 3097, 3107, 0) && player.diedOnTut) { - player.getActionSender().createArrow(3089, 3092, player.getH(), 2); - player.getDialogueHandler().sendStatement2("You have died and have already beat this step", "you may continue."); - } else if (player.tutorialProgress < 2 && player.diedOnTut != true) { - player.getActionSender().sendMessage("You aren't on this step yet."); - return; - } - break; - - case 9299: - if (player.absX == 3240) { - if (player.absY == 3191) { - player.getPlayerAssistant().walkTo(0, -1); - player.getPlayerAssistant().sendFrame36(173, 0); - player.playerWalkIndex = 749; - player.getPlayerAssistant().requestUpdates(); - //PlayerAssistant.sendFrame36(c, 173,1); - - } else { - player.getPlayerAssistant().walkTo(0, 1); - player.playerWalkIndex = 749; - player.getPlayerAssistant().requestUpdates(); - } - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - // TODO Auto-generated method stub - player.getPlayerAssistant().setAnimationBack(); - player.stopPlayerPacket = false; - container.stop(); - } - - @Override - public void stop() { - // TODO Auto-generated method stub - - } - - }, 1); - } else { - player.getActionSender().sendMessage("You can't do that from here."); - } - break; - - case 3020: - case 3021: - if (player.diedOnTut == true && (player.getY() == 9502 || player.getY() == 9503)) { - player.getDialogueHandler() - .sendStatement2( - "You have died so now all you need to do is continue", - "onto the next step."); - player.getActionSender().createArrow(3111, 9518, - player.getH(), 2); - } else if (player.diedOnTut == false && player.tutorialProgress >= 21 && (player.getY() == 9502 || player.getY() == 9503)) { - player.getActionSender().chatbox(6180); - player.getDialogueHandler() - .chatboxText( - player, - "In this area you will find out about combat with swords and", - "bows. Speak to the guide and he will tell you all about it.", - "", "", "Combat"); - player.getActionSender().chatbox(6179); - player.getActionSender().object(-1, 3094, 9502, 0, 0); - player.getActionSender().object(3021, 3095, 9502, 7, 0); - - player.getActionSender().object(-1, 3094, 9503, 0, 0); - player.getActionSender().object(3020, 3095, 9503, 1, 0); - - player.getPlayerAssistant().walkTo(1, 0); - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - player.getActionSender().object(3020, 3094, 9503, - 2, 0); - player.getActionSender().object(3021, 3094, 9502, - 2, 0); - // others - player.getActionSender().object(-1, 3095, 9502, 0, - 0); - player.getActionSender().object(-1, 3095, 9503, 0, - 0); - player.getActionSender().createArrow(1, 6); // draws - // headicon - // to - // combat dude - - container.stop(); - } - @Override - public void stop() { - - } - }, 2); - } - break; - - case 3023: - case 3022: - if (player.tutorialProgress >= 24 - && (player.getY() == 9519 || player.getY() == 9518) - || player.diedOnTut == true) { - if (player.diedOnTut == true) { - player.getDialogueHandler() - .sendStatement2("Be more careful this time", - "now continue to kill the rat and talk to the guide."); - } - player.getActionSender().chatbox(6180); - player.getDialogueHandler() - .chatboxText( - player, - "", - "To attack the rat, right click it and select the attack option. you", - "will then walk over to it and start hitting it.", - "", "Attacking"); - player.getActionSender().chatbox(6179); - player.getActionSender().object(-1, 3111, 9518, 0, 0); - player.getActionSender().object(3022, 3110, 9518, 7, 0); - - player.getActionSender().object(-1, 3111, 9519, 0, 0); - player.getActionSender().object(3023, 3110, 9519, 1, 0); - - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - - player.getActionSender().object(3022, 3111, 9518, - 0, 0); - player.getActionSender().object(3023, 3111, 9519, - 0, 0); - // others - player.getActionSender().object(-1, 3110, 9518, 7, - 0); - player.getActionSender().object(-1, 3110, 9519, 1, - 0); - player.getActionSender().createArrow(1, 6); // draws - // headicon - // to combat ude - - container.stop(); - } - @Override - public void stop() { - - } - }, 4); - } else if (player.tutorialProgress >= 25 - && (player.getY() == 9519 || player.getY() == 9518)) { - player.getActionSender().object(-1, 3111, 9518, 0, 0); - player.getActionSender().object(3022, 3110, 9518, 7, 0); - - player.getActionSender().object(-1, 3111, 9519, 0, 0); - player.getActionSender().object(3023, 3110, 9519, 1, 0); - - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - - player.getActionSender().object(3022, 3111, 9518, - 0, 0); - player.getActionSender().object(3023, 3111, 9519, - 0, 0); - // others - player.getActionSender().object(-1, 3110, 9518, 7, - 0); - player.getActionSender().object(-1, 3110, 9519, 1, - 0); - - container.stop(); - } - @Override - public void stop() { - - } - }, 4); - } - break; - - // tutorial stuff end - - case 12349: - case 12350: - if (player.absX == 3213) { - if (player.absY == 3221 || player.absY == 3222) { - player.getPlayerAssistant().movePlayer(player.absX - 1, player.absY, 0); - } - } else if (player.absX == 3212) { - if (player.absY == 3221 || player.absY == 3222) { - player.getPlayerAssistant().movePlayer(player.absX + 1, player.absY, 0); - } - } - break; - - case 11716: - case 11721: - if (player.absX == 2964) { - player.getPlayerAssistant().movePlayer(player.absX + 1, - player.absY, 0); - } else if (player.absX == 2965) { - player.getPlayerAssistant().movePlayer(player.absX - 1, - player.absY, 0); - } else if (player.absY == 3337) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY - 1, 0); - } else if (player.absY == 3338) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY + 1, 0); - } else if (player.absX == 2981) { - player.getPlayerAssistant().movePlayer(player.absX + 1, - player.absY, 0); - } else if (player.absX == 2982) { - player.getPlayerAssistant().movePlayer(player.absX - 1, - player.absY, 0); - } - break; - - case 11717: - case 11719: - if (player.absY == 3342) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY + 1, 2); - } else if (player.absY == 3343) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY - 1, 2); - } else if (player.absY == 3335) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY - 1, 2); - } else if (player.absY == 3334) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY + 1, 2); - } - break; - - case 4500:// fremennik dung - if (player.objectX == 2809 && player.objectY == 10001) { - player.getPlayerAssistant().movePlayer(2796, 3615, 0); - } - break; - - // case 5008://near rock crabs not sure where it leads to think its - // the boating place somewhere - case 4499: - if (player.objectX == 2797 && player.objectY == 3614) { - player.getPlayerAssistant().movePlayer(2808, 10002, 0); - } - break; - - case 9295: - if (player.playerLevel[player.playerAgility] < 51) { - player.getActionSender().sendMessage( - "You need 51 agility to use this shortcut."); - return; - } else if (player.absX == 3155) { - player.turnPlayerTo(player.objectX, player.objectY); - player.getPlayerAssistant().movePlayer(3149, 9906, 0); - player.startAnimation(844); - } else if (player.absX == 3149) { - player.turnPlayerTo(player.objectX, player.objectY); - player.getPlayerAssistant().movePlayer(3155, 9906, 0); - player.startAnimation(844); - } - break; - - case 8717: - player.getActionSender() - .sendMessage( - "Feature currently disabled will be added in a later release."); - break; - - case 7057: - if (player.absY == 3250) { - return; - } - player.getPlayerAssistant().movePlayer(3093, 3251, 1); - break; - - case 7056: - player.getPlayerAssistant().movePlayer(3089, 3251, 0); - break; - - case 2186: - if (player.absY == 3161) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY - 1, 0); - } else if (player.absY == 3160) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY + 1, 0); - } - break; - - case 3029: - if (player.tutorialProgress >= 14 || player.diedOnTut == true) { - if (player.diedOnTut == true) { - player.startAnimation(828); - player.getPlayerAssistant().movePlayer(3088, 9520, 0); - player.getActionSender().createArrow(3094, 9503, - player.getH(), 2); - player.getDialogueHandler().sendStatement2( - "You have died and have already beat this step", - "you may continue."); - } else if (player.diedOnTut == false) { - player.getDialogueHandler().sendDialogues(3051, -1); - player.startAnimation(828); - player.getPlayerAssistant().movePlayer(3088, 9520, 0); - } else { - player.getActionSender().sendMessage( - "You aren't on this part yet."); - return; - } - } - break; - - case 3028: - if (player.tutorialProgress >= 14) { - player.getActionSender().sendMessage( - "You have already completed this step."); - return; - } - break; - - case 9300: - if (player.absY == 3335) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY - 1, 0); - } else if (player.absY == 3334) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY + 1, 0); - } - break; - - case 2492: - if (player.objectX == 2911 && player.objectY == 3614) { - return; - } - player.getPlayerAssistant().movePlayer(3253, 3399, 0); - break; - - case 5083: - if (!player.hasPaidBrim) { - player.getDialogueHandler().sendDialogues(1048, 1595); - } else { - player.getPlayerAssistant().movePlayer(2709, 9564, 0); - player.hasPaidBrim = false; - } - break; - - case 5084: - player.getPlayerAssistant().movePlayer(2744, 3152, 0); - break; - case 5094: - player.getPlayerAssistant().movePlayer(2643, 9594, 2); - break; - case 5098: - player.getPlayerAssistant().movePlayer(2637, 9517, 0); - break; - case 5097: - player.getPlayerAssistant().movePlayer(2636, 9510, 2); - break; - - case 2287: - if (player.playerLevel[16] < 35) { - player.getActionSender().sendMessage( - "You need 35 agility to enter here!"); - return; - } - if (player.absX == 2552 && player.absY == 3561) { - player.getPlayerAssistant().movePlayer(2552, 3558, 0); - player.startAnimation(844); - } else if (player.absX == 2552 && player.absY == 3558) { - player.getPlayerAssistant().movePlayer(2552, 3561, 0); - player.startAnimation(844); - } - break; - - case 2514: - case 1600: - case 1601: - case 2025: - case 2113: - case 2647: - case 2712: - case 2391: - case 2392: - case 2624: - case 2625: - case 2641: - case 1805: - Guilds.attemptGuild(player, objectType); - break; - - case 14315: - if (!PestControl.waitingBoat.containsKey(player) && player.absX == 2657 && player.absY > 2638 && player.absY < 264) { - PestControl.addToWaitRoom(player); - } else { - if (player.absX == 2657 && player.absY > 2638 && player.absY < 2641) { - player.getPlayerAssistant().movePlayer(2661, 2639, 0); - } - } - break; - case 14314: - if (player.inPcBoat()) { - if (PestControl.waitingBoat.containsKey(player)) { - PestControl.leaveWaitingBoat(player); - } else { - if (player.absX == 2661 && player.absY > 2637 && player.absY < 2641) { - player.getPlayerAssistant().movePlayer(2657, 2639, 0); - } - } - } - break; - case 9369: - if (player.absX == 2399 && player.absY == 5177) { - FightPits.addPlayer(player); - } else if (player.absX == 2399 && player.absY == 5175) { - FightPits.removePlayer(player, false); - } - break; - - case 9368: - if (player.absX > 2397 && player.absX < 2401 && player.absY == 5167) { - FightPits.removePlayer(player, false); - } - break; - - case 3031: - if (player.tutorialProgress == 26) { - player.getActionSender().sendMessage( - "You have already completed this step."); - return; - } else if (player.tutorialProgress > 35) { - UseOther.useDown(player, objectType); - } - break; - - case 3030: - if (player.tutorialProgress == 26) { - // client.getPacketDispatcher().tutorialIslandInterface(55, - // 12); - player.getDialogueHandler().sendDialogues(3078, -1); - player.getPlayerAssistant().movePlayer(3111, 3125, 0); - player.startAnimation(828); - } else if (player.tutorialProgress > 35) { - UseOther.useUp(player, objectType); - } - break; - - case 5493: - player.getPlayerAssistant().movePlayer(3165, 3251, 0); - player.getActionSender() - .sendMessage("You climb up the ladder."); - player.startAnimation(828); - player.getPlayerAssistant().removeAllWindows(); - break; - - case 4881: - player.getPlayerAssistant().movePlayer(2806, 2785, 0); - player.getActionSender().sendMessage("You climb up the rope."); - player.startAnimation(828); - player.getPlayerAssistant().removeAllWindows(); - break; - - case 4411: - case 4415: - case 4417: - case 4418: - case 4419: - case 4420: - case 4469: - case 4470: - case 4911: - case 4912: - case 4437: - case 6281: - case 6280: - case 4472: - case 4471: - case 4406: - case 4407: - case 4458: - case 4902: - case 4903: - case 4900: - case 4901: - case 4377: - case 4378: - if (!CastleWars.isInCw(player)) { - player.getActionSender().sendMessage("You have to be in castle wars to use these objects."); - CastleWars.resetPlayer(player); - return; - } - CastleWarObjects.handleObject(player, objectType, objectX, objectY); - break; - - case 1757: - if (CastleWars.isInCw(player)) { - CastleWarObjects.handleObject(player, objectType, objectX, objectY); - } else if (player.objectX == 2892 && player.objectY == 9907) { - player.getPlayerAssistant().movePlayer(2893, 3507, 0); - } else { - UseOther.useUp(player, objectType); - } - break; - - case 4031: - SpecialObjects.initShantay(player, objectType); - break; - - case 2693: - SpecialObjects.openShantayChest(player, objectType, objectX, objectY, - "open"); - break; - - case 2883: - case 2882: - player.getDialogueHandler().sendDialogues(1018, 925); - break; - - case 2320: - long clickTimer = 0; - if (player.absY <= 9963 && player.playerLevel[player.playerAgility] > 14 && System.currentTimeMillis() - clickTimer > 2000) { - player.getPlayerAssistant().movePlayer(3120, 9970, 0); - player.startAnimation(744); - player.turnPlayerTo(player.objectX, player.objectY); - player.getActionSender().sendMessage("You swing on the monkey bars."); - player.getPlayerAssistant().addSkillXP(25, player.playerAgility); - clickTimer = System.currentTimeMillis(); - } else if (player.absY <= 9970 && player.playerLevel[player.playerAgility] > 14 && System.currentTimeMillis() - clickTimer > 2000) { - player.getPlayerAssistant().movePlayer(3120, 9963, 0); - player.startAnimation(744); - player.turnPlayerTo(player.objectX, player.objectY); - player.getActionSender().sendMessage("You swing on the monkey bars."); - player.getPlayerAssistant().addSkillXP(25, player.playerAgility); - clickTimer = System.currentTimeMillis(); - } else if (player.playerLevel[player.playerAgility] < 15) { - player.getActionSender().sendMessage("You need 15 agility to use these monkey bars."); - } else { - player.getActionSender().sendMessage("You can't do the monkey bars here."); - } - break; - - // PARTY ROOM START - case 2417: // 26193 if falador - player.inPartyRoom = true; - PartyRoom.open(player); - break; - - case 2416: - player.inPartyRoom = true; - PartyRoom.dropAll(); - break; - - case 9356: - player.getPlayerAssistant().enterCaves(); - break; - - case 9357: - player.getPlayerAssistant().resetTzhaar(); - break; - - case 492: - player.getPlayerAssistant().movePlayer(2856, 9570, 0); - break; - - case 1764: - if (player.objectX == 2856 && player.objectY == 9569) { - player.getPlayerAssistant().movePlayer(2858, 3168, 0); - } - break; - - case 9358: - player.getPlayerAssistant().movePlayer(2444, 5171, 0); - break; - - case 9359: - player.getPlayerAssistant().movePlayer(2862, 9572, 0); - break; - - case 2610: - player.getPlayerAssistant().movePlayer(2833, 3257, 0); - break; - - case 2609: - player.getPlayerAssistant().movePlayer(2834, 9657, 0); - break; - - case 2465: - case 2466: - case 2467: - case 2468: - case 2469: - case 2470: - case 2471: - case 2472: - case 2473: - case 2474: - case 2475: - case 2478: - case 2479: - case 2480: - case 2481: - case 2482: - case 2483: - case 2484: - case 2485: - case 2486: - case 2487: - case 2488: - case 2452: - case 2453: - case 2454: - case 2455: - case 2456: - case 2457: - case 2458: - case 2459: - case 2460: - case 2461: - case 2462: - RuneCraftingActions.handleRuneCrafting(player, objectType); - break; - - case 6481: - player.getPlayerAssistant().movePlayer(3233, 9317, 0); - break; - - /** - * End - */ - - case 3829: - player.getPlayerAssistant().movePlayer(3227, 3107, 0); - break; - - case 4427: - player.getPlayerAssistant().movePlayer(2373, - player.absY == 3120 ? 3119 : 3120, 0); - break; - - case 4428: - player.getPlayerAssistant().movePlayer(2372, - player.absY == 3120 ? 3119 : 3120, 0); - break; - - case 4465: - player.getPlayerAssistant().movePlayer( - player.absX == 2414 ? 2415 : 2414, 3073, 0); - break; - - case 4424: - case 4423: - if (!CastleWars.isInCw(player)) { - player.getActionSender().sendMessage("You have to be in castle wars to use these objects."); - CastleWars.resetPlayer(player); - return; - } - player.getPlayerAssistant().movePlayer(2427, - player.absY == 3087 ? 3088 : 3087, 0); - break; - - - /** - * End - */ - - case 2079: - if (player.getItemAssistant().playerHasItem(432, 1)) { - player.getItemAssistant().addItem(433, 1); - player.getActionSender().sendMessage( - "All that's in the chest is a message..."); - player.pirateTreasure = 4; - } else { - player.getActionSender().sendMessage( - "You need a key to open this chest."); - } - break; - - case 2071: - if (player.pirateTreasure == 2) { - player.getDialogueHandler().sendStatement("You search the crate..."); - player.getActionSender().sendMessage( - "You find a bottle of rum and 10 bananas."); - player.getItemAssistant().addItem(431, 1); - player.getItemAssistant().addItem(1963, 10); - player.nextChat = 0; - } else { - player.getActionSender().sendMessage( - "You aren't on this step right now."); - } - break; - - case 2593: - player.getActionSender().sendMessage( - "Disabled for dragon slayer."); - break; - - case 2024: // WP quest - if (player.witchspot == 2) { - // c.getDH().sendStatement("You drink from the cauldron, it tastes horrible!", - // "You feel yourself imbued with power."); - player.witchspot = 3; - QuestRewards.witchFinish(player); - } else { - player.getActionSender().sendMessage( - "You are not on this part of the quest."); - } - break; - - case 2614: - if (player.vampSlayer == 3 && player.clickedVamp == false) { - NpcHandler.spawnNpc(player, 757, player.getX(), player.getY(), 0, 0, 50, 10, 30, 30, true, true); - player.getActionSender().sendMessage("You will need a stake and hammer to attack count draynor."); - player.clickedVamp = true; - } else if (player.vampSlayer == 3 && player.clickedVamp == true) { - player.getActionSender().sendMessage("You have already spawned the vampyre."); - return; - } else if (player.vampSlayer > 3) { - player.getActionSender().sendMessage("You have already killed the vampire."); - } else if (player.vampSlayer < 3) { - player.getActionSender().sendMessage("You still need to progress into vampire slayer to fight this monster."); - } - break; - - case 2617: - if (player.absX > 3076 && player.absX < 3079 && player.absY == 9771) { - player.getPlayerAssistant().movePlayer(3115, 3356, 0); - } - break; - - case 2616: - if (player.absX > 3114 && player.absX < 3117 && player.absY == 3356) { - player.getPlayerAssistant().movePlayer(3077, 9771, 0); - } - break; - - case 10093: - case 10094: - if (player.getItemAssistant().playerHasItem(1927, 1)) { - player.turnPlayerTo(player.objectX, player.objectY); - player.startAnimation(883); - player.getItemAssistant().addItem(2130, 1); - player.getItemAssistant().deleteItem(1927, 1); - player.getPlayerAssistant() - .addSkillXP(18, player.playerCooking); - } else { - player.getActionSender().sendMessage( - "You need a bucket of milk to do this."); - } - break; - - case 2072: // crate - if (player.getItemAssistant().playerHasItem(1963, 10) - && player.luthas == true) { - player.getItemAssistant().deleteItem(1963, 10); - player.getDialogueHandler().sendStatement( - "You pack your bananas in the crate..."); - player.getActionSender().sendMessage( - "Talk to luthas for your reward."); - player.bananas = 2; - } else if (player.getItemAssistant().playerHasItem(431, 1) - && player.pirateTreasure == 1) { - player.getItemAssistant().deleteItem(431, 1); - player.getDialogueHandler().sendStatement( - "You stash your rum in the crate"); - player.pirateTreasure = 2; - } else if (player.objectX == 2746) { - player.getActionSender().sendMessage("You search the crate..."); - player.stopPlayerPacket = true; - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - player.getActionSender().sendMessage("You find nothing of interest."); - container.stop(); - } - - @Override - public void stop() { - player.stopPlayerPacket = false; - } - }, 2); - } else { - player.getDialogueHandler().sendStatement( - "I should talk to luthas and see what to do."); - player.getActionSender().sendMessage( - "I think I need to put some bannanas in this crate."); - } - break; - - case 2073: // Banana tree - case 4754: - if (System.currentTimeMillis() - player.waitTime > 2000) { - if (player.luthas == true) { - player.bananas += 1; - player.getItemAssistant().addItem(1963, 1); - player.waitTime = System.currentTimeMillis(); - } - player.getItemAssistant().addItem(1963, 1); - player.waitTime = System.currentTimeMillis(); - } else { - player.getActionSender().sendMessage("You must wait two seconds before grabbing another banana."); - } - break; - - case 2406: - if (player.playerEquipment[player.playerWeapon] == 772) { - player.getPlayerAssistant().startTeleport(2452, 4470, 0, - "modern"); - player.getActionSender().sendMessage( - "You are suddenly teleported away."); - } else { - player.getActionSender() - .sendMessage("This door is locked."); - } - break; - - case 3759://entrance - if (player.absX == 2893 && player.absY == 3671) { - player.getPlayerAssistant().movePlayer(2893, 10074, 0); - } - break; - - case 3760://exit - if (player.absX == 2893 && player.absY == 10074) { - player.getPlayerAssistant().movePlayer(2893, 3671, 0); - } - break; - - case 1568: - if (player.absX == 3098) { - player.getActionSender().sendMessage("You can't use the trapdoor here."); - return; - } - /*if (objectX == 3097 && objectY == 3468) { - player.getPlayerAssistant().movePlayer(3097, 9868, 0);*/ - if (CastleWars.isInCw(player)) { - CastleWarObjects.handleObject(player, objectY, objectY, objectY); - //} else { - //OtherObjects.useDown(c, c.objectId); - } - break; - - case 96: - case 98: - case 1722: - case 1723: - case 1733: - case 1734: - case 1736: - case 1737: - case 1742: - case 1744: - case 1755: - case 2405: - case 2711: - case 3432: - case 3443: - case 4383: - case 4755: - case 4756: - case 4879: - case 5492: - case 5096: - case 6278: - case 11724: - case 11725: - case 11727: - case 11728: - case 11729: - case 11731: - case 11732: - case 11733: - case 11734: - case 11735: - case 11736: - case 11737: - case 12265: - case 2147: - case 2148: - case 2408: - case 6279: - case 7257: - case 6439: - case 11888: - case 11889: - case 11890: - case 4568: - case 4569: - case 4570: - case 4413: - case 9582: - case 9584: - case 5131: - case 5130: - case 1725: - case 1726: - case 6434: - case 6436: - case 1738: - case 5167: - case 12266: - case 272: - case 273: - case 245: - case 246: - case 1767: - Climbing.handleClimbing(player); - break; - - case 190: - if (player.absY == 3385) { - player.getPlayerAssistant().movePlayer(player.absX, 3382, 0); - } else if (player.absY == 3382) { - player.getPlayerAssistant().movePlayer(player.absX, 3385, 0); - } - break; - - case 1754: - if (player.objectX == 2696 && player.objectY == 3282) { - player.startAnimation(827); - player.getPlayerAssistant().removeAllWindows(); - player.getPlayerAssistant().movePlayer(2696, 9683, 0); - player.getActionSender().sendMessage("You climb down."); - } else { - UseOther.useDown(player, player.objectId); - } - break; - - case 1759: - case 9472: - case 11867: - case 100: - UseOther.useDown(player, player.objectId); - break; - - case 1739: - Climbing.handleLadder(player); - player.dialogueAction = 147; - break; - - case 1748: - if (player.objectX == 3286 && player.objectY == 3192) { - Climbing.climbDown(player); - } else { - Climbing.handleLadder(player); - player.dialogueAction = 147; - } - break; - - case 12537: - case 2884: - case 12965: - case 14747: - Climbing.handleLadder(player); - player.dialogueAction = 147; - break; - - case 12536: - case 12964: - case 1750: - case 2833: - case 2796: - case 4772: - case 1752: - case 11739: - case 14745: - case 9558: - Climbing.climbUp(player); - break; - - case 1747: - if (player.objectX == 2642 && player.objectY == 3428 && player.absX == 2643 && player.absY == 3429) { - return; - } - if (player.absX > 3081 && player.absX < 3085 && player.absY == 3514) { - return; - } - if (player.objectX == 2532 && player.objectY == 3545) { - player.getAgility().climbUp(player.getX(), player.getY(), 1); - } else { - Climbing.climbUp(player); - } - break; - - case 1740: - case 12538: - case 1746: - case 4778: - case 12966: - case 2797: - case 1749: - case 11742: - case 11741: - case 14746: - case 9559: - Climbing.climbDown(player); - break; - - /** - * Bank Booths - */ - case 11338: - case 2214: - case 10517: - // case 3045: - case 5276: - case 6084: - case 11758: - case 14367: - case 2213: - player.getDialogueHandler().sendDialogues(1013, 494); - break; - - case 9398:// deposit box - player.getPlayerAssistant().sendFrame126("The Bank of " + Constants.SERVER_NAME + " - Deposit Box", 7421); - player.getPlayerAssistant().sendFrame248(4465, 197); - player.getItemAssistant().resetItems(7423); - break; - - case 3194: // Bank Chest open - case 4483: // Bank Chest - case 104: // shantay chest open - player.getPlayerAssistant().openUpBank(); - break; - - case 2403:// should be 2418 but not working - if (player.shieldArrav >= 6 && player.getItemAssistant().playerHasItem(759)) { - Server.objectHandler.createAnObject(player, 2604, objectX, objectY, 0); - Region.addObject(2604, objectX, objectY, 0, 0, 0, false); - } - else { - player.getActionSender().sendMessage("It's locked, maybe I can get the key from somewhere."); - } - break; - - case 2604: - if (player.objectX == 3235 && player.objectY == 9761 && player.shieldArrav >= 6) { - player.getDialogueHandler().sendDialogues(742, -1); - } else { - player.getPlayerAssistant().openUpBank(); - } - break; - - case 3193: - if (player.objectX == 3382 && player.objectY == 3270) { - player.getActionSender().object(3194, 3382, 3270, 0, 1, 10); - Region.addObject(3194, 3382, 3270, 0, 10, 1, false); - } else if (player.objectX == 3381 && player.objectY == 3269) { - player.getActionSender().object(3194, 3381, 3269, 0, 2, 10); - Region.addObject(3194, 3381, 3269, 0, 10, 2, false); - } else { - Server.objectHandler.createAnObject(player, 3194, objectX, objectY, -1); - } - break; - - case 2412: - if (player.objectX == 3048 && player.objectY == 3233) { - player.getPlayerAssistant().movePlayer(3048, 3231, 1); - player.getActionSender().sendMessage("You cross the Gangplank."); - } - break; - - case 2413: - if (player.objectX == 3048 && player.objectY == 3232) { - player.getPlayerAssistant().movePlayer(3048, 3234, 0); - } - break; - - case 2083: - if (player.objectX == 3030 && player.objectY == 3217) { - player.getPlayerAssistant().movePlayer(3032, 3217, 1); - player.getActionSender().sendMessage("You cross the Gangplank."); - } - break; - - case 2084: - if (player.objectX == 3031 && player.objectY == 3217) { - player.getPlayerAssistant().movePlayer(3029, 3217, 0); - } - break; - - case 2081: - if (player.objectX == 2956 && player.objectY == 3145) { - player.getPlayerAssistant().movePlayer(2956, 3143, 1); - } - break; - - case 2082: - if (player.objectX == 2956 && player.objectY == 3144) { - player.getPlayerAssistant().movePlayer(2956, 3146, 0); - } - break; - - case 2415: - if (player.objectX == 2834 && player.objectY == 3333) { - player.getPlayerAssistant().movePlayer(2834, 3335, 0); - } - break; - - case 2414: - if (player.objectX == 2834 && player.objectY == 3334) { - player.getPlayerAssistant().movePlayer(2834, 3332, 1); - } - break; - - case 14304: - // Sailing.startTravel(c, 14); - player.getPlayerAssistant().movePlayer(2659, 2676, 0); - player.getDialogueHandler().sendStatement("You arrive safely."); - break; - - case 14306: - // Sailing.startTravel(c, 15); - player.getPlayerAssistant().movePlayer(3041, 3202, 0); - player.getDialogueHandler().sendStatement("You arrive safely."); - break; - - case 1782:// full flour bin - FlourMill.emptyFlourBin(player); - break; - - case 2718: // Hopper - FlourMill.hopperControl(player); - break; - - case 8972: - if (!player.canLeaveArea) { - player.getDialogueHandler().sendDialogues(3, 2458); - } else { - FreakyForester.leaveArea(player); - } - break; - - case 1765://down - if (player.inWild() && player.absX > 3015 && player.absX < 3019) { - player.getPlayerAssistant().movePlayer(3067, 10256, 0); - } - break; - - case 1766://up - if (player.inWild() && player.absX > 3067 && player.absX < 3070) { - player.getPlayerAssistant().movePlayer(3016, 3849, 0); - } - break; - - case 6552: - if (player.playerMagicBook == 0) { - player.playerMagicBook = 1; - player.getActionSender().setSidebarInterface(6, 12855); - player.getActionSender().sendMessage("An ancient wisdomin fills your mind."); - player.getPlayerAssistant().resetAutocast(); - } else { - player.getActionSender().setSidebarInterface(6, 1151); // modern - player.playerMagicBook = 0; - player.getActionSender().sendMessage("You feel a drain on your memory."); - player.getPlayerAssistant().resetAutocast(); - } - break; - - case 8958: - if (player.getX() == 2490 && (player.getY() == 10162 || player.getY() == 10164)) { - new Object(6951, player.objectX, player.objectY, player.heightLevel, 1, 10, 8958, 15); - } - break; - - case 8959: - if (player.getX() == 2490 && (player.getY() == 10146 || player.getY() == 10148)) { - new Object(6951, player.objectX, player.objectY, player.heightLevel, 1, 10, 8959, 15); - } - break; - - case 8960: - if (player.getX() == 2490 && (player.getY() == 10132 || player.getY() == 10130)) { - new Object(6951, player.objectX, player.objectY, player.heightLevel, 1, 10, 8960, 15); - } - break; - - case 14235: - case 14233: - if (player.absX == 2670) { - player.getPlayerAssistant().movePlayer(player.absX + 1, - player.absY, 0); - } else if (player.absX == 2671) { - player.getPlayerAssistant().movePlayer(player.absX - 1, - player.absY, 0); - } else if (player.absY == 2585) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY - 1, 0); - } else if (player.absY == 2584) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY + 1, 0); - } else if (player.absX == 2643) { - player.getPlayerAssistant().movePlayer(player.absX - 1, - player.absY, 0); - } else if (player.absX == 2642) { - player.getPlayerAssistant().movePlayer(player.absX + 1, - player.absY, 0); - } - break; - - case 14829: - case 14830: - case 14827: - case 14828: - case 14826: - case 14831: - // Server.objectHandler.startObelisk(objectType); - Server.objectManager.startObelisk(objectType); - break; - - /* - * Doors - */ - case 6749: - if (objectX == 3562 && objectY == 9678) { - player.getActionSender().object(6749, 3562, 9678, -3, 0); - Region.addObject(6749, 3562, 9678, 0, 0, -3, false); - player.getActionSender().object(6730, 3562, 9677, -1, 0); - Region.addObject(6730, 3562, 9677, 0, 0, -1, false); - } else if (objectX == 3558 && objectY == 9677) { - player.getActionSender().object(6749, 3558, 9677, -1, 0); - Region.addObject(6749, 3558, 9677, 0, 0, -1, false); - player.getActionSender().object(6730, 3558, 9678, -3, 0); - Region.addObject(6730, 3558, 9677, 0, 0, -3, false); - } - break; - case 6730: - if (objectX == 3558 && objectY == 9677) { - player.getActionSender().object(6749, 3562, 9678, -3, 0); - Region.addObject(6749, 3562, 9678, 0, 0, -3, false); - player.getActionSender().object(6730, 3562, 9677, -1, 0); - Region.addObject(6730, 3562, 9677, 0, 0, -1, false); - } else if (objectX == 3558 && objectY == 9678) { - player.getActionSender().object(6749, 3558, 9677, -1, 0); - Region.addObject(6749, 3558, 9677, 0, 0, -1, false); - player.getActionSender().object(6730, 3558, 9678, -3, 0); - Region.addObject(6730, 3558, 9678, 0, 0, -3, false); - } - break; - case 6727: - if (objectX == 3551 && objectY == 9684) { - player.getActionSender().sendMessage( - "You cant open this door.."); - } - break; - case 6746: - if (objectX == 3552 && objectY == 9684) { - player.getActionSender().sendMessage( - "You cant open this door.."); - } - break; - case 6748: - if (objectX == 3545 && objectY == 9678) { - player.getActionSender().object(6748, 3545, 9678, -3, 0); - Region.addObject(6748, 3545, 9678, 0, 0, -3, false); - player.getActionSender().object(6729, 3545, 9677, -1, 0); - Region.addObject(6729, 3545, 9677, 0, 0, -1, false); - } else if (objectX == 3541 && objectY == 9677) { - player.getActionSender().object(6748, 3541, 9677, -1, 0); - Region.addObject(6748, 3541, 9677, 0, 0, -1, false); - player.getActionSender().object(6729, 3541, 9678, -3, 0); - Region.addObject(6729, 3541, 9678, 0, 0, -3, false); - } - break; - case 6729: - if (objectX == 3545 && objectY == 9677) { - player.getActionSender().object(6748, 3545, 9678, -3, 0); - Region.addObject(6748, 3545, 9678, 0, 0, -3, false); - player.getActionSender().object(6729, 3545, 9677, -1, 0); - Region.addObject(6729, 3545, 9677, 0, 0, -1, false); - } else if (objectX == 3541 && objectY == 9678) { - player.getActionSender().object(6748, 3541, 9677, -1, 0); - Region.addObject(6748, 3541, 9677, 0, 0, -1, false); - player.getActionSender().object(6729, 3541, 9678, -3, 0); - Region.addObject(6729, 3541, 9678, 0, 0, -3, false); - } - break; - case 6726: - if (objectX == 3534 && objectY == 9684) { - player.getActionSender().object(6726, 3534, 9684, -4, 0); - Region.addObject(6726, 3534, 9684, 0, 0, -4, false); - player.getActionSender().object(6745, 3535, 9684, -2, 0); - Region.addObject(6745, 3535, 9684, 0, 0, -4, false); - } else if (objectX == 3535 && objectY == 9688) { - player.getActionSender().object(6726, 3535, 9688, -2, 0); - Region.addObject(6726, 3535, 9688, 0, 0, -2, false); - player.getActionSender().object(6745, 3534, 9688, -4, 0); - Region.addObject(6745, 3534, 9688, 0, 0, -4, false); - } - break; - case 6745: - if (objectX == 3535 && objectY == 9684) { - player.getActionSender().object(6726, 3534, 9684, -4, 0); - Region.addObject(6726, 3534, 9684, 0, 0, -4, false); - player.getActionSender().object(6745, 3535, 9684, -2, 0); - Region.addObject(6745, 3535, 9684, 0, 0, -2, false); - } else if (objectX == 3534 && objectY == 9688) { - player.getActionSender().object(6726, 3535, 9688, -2, 0); - Region.addObject(6726, 3535, 9688, 0, 0, -2, false); - player.getActionSender().object(6745, 3534, 9688, -4, 0); - Region.addObject(6745, 3534, 9688, 0, 0, -4, false); - } - break; - case 6743: - if (objectX == 3545 && objectY == 9695) { - player.getActionSender().object(6724, 3545, 9694, -1, 0); - Region.addObject(6724, 3545, 9694, 0, 0, -1, false); - player.getActionSender().object(6743, 3545, 9695, -3, 0); - Region.addObject(6743, 3545, 9695, 0, 0, -3, false); - } else if (objectX == 3541 && objectY == 9694) { - player.getActionSender().object(6724, 3541, 9694, -1, 0); - Region.addObject(6724, 3541, 9694, 0, 0, -1, false); - player.getActionSender().object(6743, 3541, 9695, -3, 0); - Region.addObject(6743, 3541, 9695, 0, 0, -3, false); - } - break; - case 6724: - if (objectX == 3545 && objectY == 9694) { - player.getActionSender().object(6724, 3545, 9694, -1, 0); - Region.addObject(6724, 3545, 9694, 0, 0, -1, false); - player.getActionSender().object(6743, 3545, 9695, -3, 0); - Region.addObject(6743, 3545, 9695, 0, 0, -3, false); - } else if (objectX == 3541 && objectY == 9695) { - player.getActionSender().object(6724, 3541, 9694, -1, 0); - Region.addObject(6724, 3541, 9694, 0, 0, -1, false); - player.getActionSender().object(6743, 3541, 9695, -3, 0); - Region.addObject(6743, 3541, 9695, 0, 0, -3, false); - } - break; - - case 9319: - if (player.heightLevel == 0) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY, 1); - } else if (player.heightLevel == 1) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY, 2); - } - break; - - case 9320: - if (player.heightLevel == 1) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY, 0); - } else if (player.heightLevel == 2) { - player.getPlayerAssistant().movePlayer(player.absX, - player.absY, 1); - } - break; - - case 4496: - case 4494: - if (player.heightLevel == 2) { - player.getPlayerAssistant().movePlayer(player.absX - 5, - player.absY, 1); - } else if (player.heightLevel == 1) { - player.getPlayerAssistant().movePlayer(player.absX + 5, - player.absY, 0); - } - break; - - case 4493: - if (player.heightLevel == 0 && player.absY > 3536 && player.absY < 3539 && player.absX == 3438) { - player.getPlayerAssistant().movePlayer(player.absX - 5, player.absY, 1); - } else if (player.heightLevel == 1 && player.absY > 3536 && player.absY < 3539 && player.absX == 3433) { - player.getPlayerAssistant().movePlayer(player.absX + 5, player.absY, 2); - } - break; - - case 4495: - if (player.heightLevel == 1 && player.absX == 3412) { - player.getPlayerAssistant().movePlayer(player.absX + 5, player.absY, 2); - } - break; - - case 5126: - if (player.absY == 3554) { - player.getPlayerAssistant().walkTo(0, 1); - } else { - player.getPlayerAssistant().walkTo(0, -1); - } - break; - - case 409: - case 4859: - case 61: - case 10638: - case 411: - case 412: - if (player.playerLevel[5] < player.getPlayerAssistant() - .getLevelForXP(player.playerXP[5])) { - player.startAnimation(645); - player.playerLevel[5] = player.getPlayerAssistant() - .getLevelForXP(player.playerXP[5]); - player.getActionSender().sendMessage( - "You recharge your prayer points."); - player.getPlayerAssistant().refreshSkill(5); - } else { - player.getActionSender().sendMessage( - "You already have full prayer points."); - } - break; - - case 2640: - if (player.inWild()) { - player.getActionSender().sendMessage( - "You can't use this in the wilderness."); - return; - } - if (player.playerLevel[5] < player.getPlayerAssistant() - .getLevelForXP(player.playerXP[5])) { - player.startAnimation(645); - player.playerLevel[5] = player.getPlayerAssistant() - .getLevelForXP(player.playerXP[5]) + 2; - player.getActionSender().sendMessage( - "You recharge your prayer points."); - player.getPlayerAssistant().refreshSkill(5); - } else { - player.getActionSender().sendMessage( - "You already have full prayer points."); - } - break; - - case 2407: - if (player.inWild()) { - player.getActionSender().sendMessage( - "You can't use this in the wilderness."); - return; - } else { - player.getActionSender().sendMessage( - "You feel the world around you dissolve..."); - player.getPlayerAssistant().movePlayer(3171, - 3609 + Misc.random(10), 0); - } - break; - - case 2879: - player.getPlayerAssistant().movePlayer(2538, 4716, 0); - break; - case 2878: - if (player.inWild()) { - player.getActionSender().sendMessage( - "You can't use this in the wilderness."); - return; - } else { - player.getPlayerAssistant().movePlayer(2509, 4689, 0); - } - break; - - case 9706: - player.getPlayerAssistant().startTeleport2(3105, 3951, 0); - break; - case 9707: - player.getPlayerAssistant().startTeleport2(3105, 3956, 0); - break; - - case 2558: - player.getActionSender().sendMessage("This door is locked."); - break; - - case 10529: - case 10527: - if (player.absY <= player.objectY) { - player.getPlayerAssistant().walkTo(0, 1); - } else { - player.getPlayerAssistant().walkTo(0, -1); - } - break; - case 2873: - if (player.getItemAssistant().hasFreeSlots(1)) - player.getItemAssistant().addItem(2412, 1); - break; - case 2874: - if (player.getItemAssistant().hasFreeSlots(1)) - player.getItemAssistant().addItem(2414, 1); - break; - case 2875: - if (player.getItemAssistant().hasFreeSlots(1)) - player.getItemAssistant().addItem(2413, 1); - break; - - } - } - - public void secondClickObject(int objectType, int obX, int obY) { - player.faceUpdate(0); - player.clickObjectType = 0; - player.turnPlayerTo(obX, obY); - if (!Region.objectExists(objectType, obX, obY, player.heightLevel) && player.playerRights > 1) { - player.getActionSender().sendMessage("[DEBUG] This object does not exist."); - return; - } - LogCutting.resetFletching(player); - switch (objectType) { - case 6: - player.getCannon().loadCannon(obX, obY); - break; - - case 389: - case 378: - Searching.searchObject(player, objectType); - break; - - case 2145: - if (player.restGhost == 2 && player.playerEquipment[player.playerAmulet] == 552) { - NpcHandler.spawnNpc(player, 457, player.getX(), player.getY() + 2, 0, 0, 0, 0, 0, 0, false, false); - player.getActionSender().sendMessage("You search the coffin."); - } else if (player.restGhost == 4 && player.getItemAssistant().playerHasItem(553, 1)) { - player.getItemAssistant().deleteItem(553, 1); - player.getActionSender().sendMessage("You have freed the ghost!"); - QuestRewards.restFinish(player); - NpcHandler.spawnNpc(player, 457, player.getX(), player.getY() + 2, 0, 0, 0, 0, 0, 0, false, false); - } else if (player.restGhost == 2 && player.playerEquipment[player.playerAmulet] != 552) { - player.getDialogueHandler().sendStatement("You need the ghost speak amulet for this part."); - player.nextChat = 0; - } else if (player.restGhost == 4 && !player.getItemAssistant().playerHasItem(553, 1)) { - player.getDialogueHandler().sendStatement("You need the skull for this part."); - player.nextChat = 0; - } else if (player.restGhost == 0) { - player.getActionSender().sendMessage("You have not started this quest yet."); - } else if (player.restGhost == 5) { - player.getActionSender().sendMessage("You have already finished this quest."); - } - break; - - case 2402: - if (player.shieldArrav == 1) - player.getDialogueHandler().sendDialogues(696, -1); - else - player.getActionSender().sendMessage("The bookcase is empty."); - break; - - case 2550: - ThieveOther.pickLock(player, 1, 3.5, 2674, 3306, 1, false); - break; - - case 2551: - ThieveOther.pickLock(player, 14, 15, 2674, 3303, 2, false); - break; - case 2272: - player.getActionSender().object(2271, 2984, 3336, 1, 10); - player.getActionSender().sendMessage("You close the cupboard."); - break; - case 2613: - player.getActionSender().object(2612, 3096, 3269, 0, 10); - player.getActionSender().sendMessage("You close the cupboard."); - break; - case 9038: - case 9039: - if (!player.getItemAssistant().playerHasItem(6306, 100) && player.absX == 2816) { - player.getDialogueHandler().sendStatement("You need 100 trading sticks to enter here."); - player.nextChat = 0; - return; - } - if (player.absY == 3082 || player.absY == 3085) { - player.getDialogueHandler().sendStatement("You can't enter from here."); - player.nextChat = 0; - return; - } - if (player.absX == 2816 && player.getItemAssistant().playerHasItem(6306, 100)) { - player.getPlayerAssistant().movePlayer(player.absX+1, player.absY, 0); - player.getItemAssistant().deleteItem(6306, 100); - } else if (player.absX == 2817) { - player.getPlayerAssistant().movePlayer(player.absX+1, player.absY, 0); - } - break; - case 4569: - if (player.objectX == 2506 && player.objectY == 3640) { - Climbing.climbUp(player); - } - break; - case 2230: - case 2265: - if (player.absY > 3209 && player.absY < 3215) { - player.getDialogueHandler().sendDialogues(3173, 510); - } else { - player.getDialogueHandler().sendDialogues(3178, 510); - } - break; - case 10041: - player.getActionSender().sendMessage("You can't chop this tree."); - break; - case 10177: - player.getPlayerAssistant().movePlayer(2544, 3743, 0); - break; - - case 11889: - Climbing.handleClimbing(player); - break; - - case 2884: - case 14747: - case 12537: - Climbing.climbUp(player); - break; - - case 14921: - case 9390: - case 2781: - case 2785: - case 2966: - case 3294: - case 3413: - case 4304: - case 4305: - case 6189: - case 6190: - case 11009: - case 11010: - case 11666: - case 12100: - case 12809: - Smelting.startSmelting(player, objectType); - break; - - case 2644: - Spinning.showSpinning(player); - break; - - case 1739: - Climbing.climbUp(player); - break; - - case 1748: - case 12965: - Climbing.climbUp(player); - break; - - case 2090: - case 2091: - case 3042: - Mining.prospectRock(player, "copper ore"); - break; - case 2094: - case 2095: - case 3043: - Mining.prospectRock(player, "tin ore"); - break; - case 2110: - Mining.prospectRock(player, "blurite ore"); - break; - case 2092: - case 2093: - Mining.prospectRock(player, "iron ore"); - break; - case 2100: - case 2101: - Mining.prospectRock(player, "silver ore"); - break; - case 2098: - case 2099: - Mining.prospectRock(player, "gold ore"); - break; - case 2096: - case 2097: - Mining.prospectRock(player, "coal"); - break; - case 2102: - case 2103: - Mining.prospectRock(player, "mithril ore"); - break; - case 2104: - case 2105: - Mining.prospectRock(player, "adamantite ore"); - break; - case 2106: - case 2107: - Mining.prospectRock(player, "runite ore"); - break; - case 10947: - Mining.prospectRock(player, "granite"); - break; - case 10946: - Mining.prospectRock(player, "sandstone"); - break; - case 2111: - Mining.prospectRock(player, "gem rocks"); - break; - - case 11338: // Bank Booth - case 2214: // Bank Booth - case 3045: // Bank Booth - case 5276: // Bank Booth - case 6084: // Bank Booth - case 11758: // Bank Booth - case 14367: // Bank Booth - case 4483: // open bank chest - case 3194: // open bank chest - case 10517: - case 2213: - player.getPlayerAssistant().openUpBank(); - break; - - case 1161: - case 2646: - case 313: - case 5585: - case 5584: - case 312: - case 3366: - Pickable.pickObject(player, player.objectId, player.objectX, - player.objectY); - break; - - case 2558: - if (System.currentTimeMillis() - player.lastLockPick < 3000 - || player.freezeTimer > 0) { - break; - } - if (player.getItemAssistant().playerHasItem(1523, 1)) { - player.lastLockPick = System.currentTimeMillis(); - if (Misc.random(10) <= 3) { - player.getActionSender().sendMessage( - "You fail to pick the lock."); - break; - } - if (player.objectX == 3044 && player.objectY == 3956) { - if (player.absX == 3045) { - player.getPlayerAssistant().walkTo2(-1, 0); - } else if (player.absX == 3044) { - player.getPlayerAssistant().walkTo2(1, 0); - } - - } else if (player.objectX == 3038 && player.objectY == 3956) { - if (player.absX == 3037) { - player.getPlayerAssistant().walkTo2(1, 0); - } else if (player.absX == 3038) { - player.getPlayerAssistant().walkTo2(-1, 0); - } - } else if (player.objectX == 3041 && player.objectY == 3959) { - if (player.absY == 3960) { - player.getPlayerAssistant().walkTo2(0, -1); - } else if (player.absY == 3959) { - player.getPlayerAssistant().walkTo2(0, 1); - } - } - } else { - player.getActionSender().sendMessage("I need a lockpick to pick this lock."); - } - break; - - } - } - - public void thirdClickObject(int objectType, int obX, int obY) { - player.clickObjectType = 0; - if (player.playerRights == 3) { - player.getActionSender().sendMessage("Object type: " + objectType); - } - if (!Region.objectExists(objectType, obX, obY, player.heightLevel) && player.playerRights > 1) { - player.getActionSender().sendMessage("[DEBUG] This object does not exist."); - return; - } - if (Stalls.isObject(objectType)) { - Stalls.attemptStall(player, objectType, obX, obY); - return; - } - switch (objectType) { - case 6: - player.getCannon().pickup(obX, obY); - break; - case 3194: - if (player.objectX == 3382 && player.objectY == 3270) { - player.getActionSender().object(3193, 3382, 3270, 0, 1, 10); - } else if (player.objectX == 3381 && player.objectY == 3269) { - player.getActionSender().object(3193, 3381, 3269, 0, 2, 10); - } - break; - case 4569: - if (player.objectX == 2506 && player.objectY == 3640) { - Climbing.climbDown(player); - } - break; - case 10177: - player.getPlayerAssistant().movePlayer(1798, 4407, 3); - break; - case 11890: - Climbing.handleClimbing(player); - break; - case 1739: - case 1748: - case 12965: - case 2884: - case 14747: - case 12537: - Climbing.climbDown(player); - break; - } - } - - public void fourthClickObject(int objectType, int obX, int obY) { - player.clickObjectType = 0; - if (player.playerRights == 3) { - player.getActionSender().sendMessage("Object type: " + objectType); - } - if (!Region.objectExists(objectType, obX, obY, player.heightLevel) && player.playerRights > 1) { - player.getActionSender().sendMessage("[DEBUG] This object does not exist."); - return; - } - Farming.openGuide(player, player.objectId); - switch (objectType) { - - } - } -} +package com.rebotted.game.objects; + +import com.rebotted.GameConstants; +import com.rebotted.GameEngine; +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.content.guilds.Guilds; +import com.rebotted.game.content.minigames.FightPits; +import com.rebotted.game.content.minigames.PestControl; +import com.rebotted.game.content.minigames.castlewars.CastleWarObjects; +import com.rebotted.game.content.minigames.castlewars.CastleWars; +import com.rebotted.game.content.quests.QuestRewards; +import com.rebotted.game.content.random.Balloons; +import com.rebotted.game.content.random.PartyRoom; +import com.rebotted.game.content.randomevents.FreakyForester; +import com.rebotted.game.content.skills.agility.AgilityShortcut; +import com.rebotted.game.content.skills.core.Mining; +import com.rebotted.game.content.skills.core.Woodcutting; +import com.rebotted.game.content.skills.crafting.Spinning; +import com.rebotted.game.content.skills.farming.Farming; +import com.rebotted.game.content.skills.fletching.LogCutting; +import com.rebotted.game.content.skills.runecrafting.AbyssalHandler; +import com.rebotted.game.content.skills.runecrafting.RuneCraftingActions; +import com.rebotted.game.content.skills.smithing.Smelting; +import com.rebotted.game.content.skills.thieving.Stalls; +import com.rebotted.game.content.skills.thieving.ThieveOther; +import com.rebotted.game.content.traveling.Desert; +import com.rebotted.game.globalworldobjects.ClimbOther; +import com.rebotted.game.globalworldobjects.DoubleGates; +import com.rebotted.game.globalworldobjects.PassDoor; +import com.rebotted.game.globalworldobjects.SingleGates; +import com.rebotted.game.globalworldobjects.ClimbOther.ClimbData; +import com.rebotted.game.items.impl.LightSources; +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.game.npcs.impl.MilkCow; +import com.rebotted.game.objects.impl.AxeInLog; +import com.rebotted.game.objects.impl.BrimhavenVines; +import com.rebotted.game.objects.impl.Climbing; +import com.rebotted.game.objects.impl.FlourMill; +import com.rebotted.game.objects.impl.Levers; +import com.rebotted.game.objects.impl.OtherObjects; +import com.rebotted.game.objects.impl.Pickable; +import com.rebotted.game.objects.impl.Searching; +import com.rebotted.game.objects.impl.SpecialObjects; +import com.rebotted.game.objects.impl.UseOther; +import com.rebotted.game.objects.impl.Webs; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.Position; +import com.rebotted.util.Misc; +import com.rebotted.world.clip.Region; + +public class ObjectsActions { + + private final Player player; + + public ObjectsActions(Player player2) { + player = player2; + } + + public void firstClickObject(int objectType, int objectX, int objectY) { + player.faceUpdate(0); + player.clickObjectType = 0; + player.turnPlayerTo(objectX, objectY); + if (!Region.objectExists(objectType, objectX, objectY, player.heightLevel) && player.playerRights > 1) { + player.getPacketSender().sendMessage("[DEBUG] This object does not exist."); + return; + } + if (Webs.webs(player, objectType)) { + Webs.slashWeb(player, objectType, objectX, objectY); + return; + } + if (player.stopPlayerPacket == true) { + return; + } + LogCutting.resetFletching(player); + if (player.getGnomeStrongHold().gnomeCourse(objectType)) { + return; + } + if (player.getWildernessAgility().wildernessCourse(objectType)) { + return; + } + if (player.getBarbarianAgility().barbarianCourse(objectType)) { + return; + } + if (player.getPyramidAgility().pyramidCourse(objectType)) { + return; + } + if (player.getApeAtollAgility().apeAtollCourse(objectType)) { + return; + } + if (player.getWerewolfAgility().werewolfCourse(objectType)) { + return; + } + if (objectType >= 115 && objectType <= 121) { + Balloons.popBalloon(player, objectX, objectY); + return; + } + if (objectType >= 5103 && objectType <= 5107) { + BrimhavenVines.handleBrimhavenVines(player, objectType); + return; + } + ClimbOther.handleOpenOther(player, objectType); + for (ClimbData t: ClimbData.values()) { + if (objectType == t.getOpen()) { + ClimbOther.useOther(player, objectType); + } + } + OtherObjects.searchSpecialObject(player, objectType); + Searching.searchObject(player, objectType); + Levers.pullLever(player, objectType); + ThieveOther.lockedDoor(player, objectType); + SingleGates.useSingleGate(player, objectType); + DoubleGates.useDoubleGate(player, objectType); + PassDoor.processDoor(player, objectType); + AbyssalHandler.handleAbyssalTeleport(player, objectType); + // if its a rock we can mine, mine it + if (Mining.rockExists(objectType)) + player.getMining().startMining(player, objectType, player.objectX, player.objectY, player.clickObjectType); + switch (objectType) { + case 6: + player.getCannon().clickCannon(objectX, objectY); + break; + case 6702: + case 6703: + case 6704: + case 6705: + case 6706: + case 6707: + player.getBarrows().useStairs(); + break; + + case 10284: + player.getBarrows().useChest(); + break; + + case 6823: + if(player.barrowsNpcs[0][1] == 0) { + NpcHandler.spawnNpc(player, 2030, player.getX(), player.getY()-1, 3, 0, 120, 25, 200, 200, true, true); + player.barrowsNpcs[0][1] = 1; + } else { + player.getPacketSender().sendMessage("You have already searched in this sarcophagus."); + } + break; + + case 6772: + if(player.barrowsNpcs[1][1] == 0) { + NpcHandler.spawnNpc(player, 2029, player.getX()+1, player.getY(), 3, 0, 120, 20, 200, 200, true, true); + player.barrowsNpcs[1][1] = 1; + } else { + player.getPacketSender().sendMessage("You have already searched in this sarcophagus."); + } + break; + + case 6822: + if(player.barrowsNpcs[2][1] == 0) { + NpcHandler.spawnNpc(player, 2028, player.getX(), player.getY()-1, 3, 0, 90, 17, 200, 200, true, true); + player.barrowsNpcs[2][1] = 1; + } else { + player.getPacketSender().sendMessage("You have already searched in this sarcophagus."); + } + break; + + case 6773: + if(player.barrowsNpcs[3][1] == 0) { + NpcHandler.spawnNpc(player, 2027, player.getX(), player.getY()-1, 3, 0, 120, 23, 200, 200, true, true); + player.barrowsNpcs[3][1] = 1; + } else { + player.getPacketSender().sendMessage("You have already searched in this sarcophagus."); + } + break; + + case 6771: + player.getDialogueHandler().sendDialogues(3222, 2026); + break; + + case 6821: + if(player.barrowsNpcs[5][1] == 0) { + NpcHandler.spawnNpc(player, 2025, player.getX()-1, player.getY(), 3, 0, 90, 19, 200, 200, true, true); + player.barrowsNpcs[5][1] = 1; + } else { + player.getPacketSender().sendMessage("You have already searched in this sarcophagus."); + } + break; + + case 2145: + if (player.objectX == 3249 && player.objectY == 3192) { + player.getPacketSender().object(2146, 3249, 3192, 0, 0, 10); + Region.addObject(2146, 3249, 3192, 0, 10, 0, false); + } + break; + + case 2146: + if (player.objectX == 3249 && player.objectY == 3192) { + player.getPacketSender().object(2145, 3249, 3192, 0, 0, 10); + } + break; + + case 399: + if (player.objectX == 3096 && player.objectY == 3469) { + player.getPacketSender().object(398, 3096, 3469, 0, 3, 10); + Region.addObject(398, 3096, 3469, 0, 10, 3, false); + } + break; + + case 398: + if (player.objectX == 3096 && player.objectY == 3469) { + player.getPacketSender().object(399, 3096, 3469, 0, 3, 10); + } + break; + + case 3828: + if (player.objectX == 3509 && player.objectY == 9497) { + player.getPlayerAssistant().movePlayer(3507, 9494, 0); + } else { + player.getPlayerAssistant().movePlayer(3484, 9509, 2); + } + break; + + case 2271: + player.getPacketSender().object(2272, 2984, 3336, 1, 10); + Region.addObject(2272, 2984, 3336, 2, 10, 1, false); + player.getPacketSender().sendMessage("You open the cupboard."); + break; + + case 2272: + if (player.knightS == 5) { + player.getPacketSender().sendMessage("You search the cupboard..."); + player.getDialogueHandler().sendDialogues(659, -1); + player.knightS = 6; + } else { + player.getPacketSender().sendMessage("You search the cupboard..."); + player.getPacketSender().sendMessage("and don't find anything interesting."); + } + break; + + case 9038: + case 9039: + if (!player.getItemAssistant().playerHasItem(6306, 100) && player.absX == 2816) { + player.getDialogueHandler().sendStatement("You need 100 trading sticks to enter here."); + player.nextChat = 0; + return; + } + if (player.absY == 3082 || player.absY == 3085) { + player.getDialogueHandler().sendStatement("You can't enter from here."); + player.nextChat = 0; + return; + } + if (player.absX == 2816 && player.getItemAssistant().playerHasItem(6306, 100)) { + player.getPlayerAssistant().movePlayer(player.absX+1, player.absY, 0); + player.getItemAssistant().deleteItem(6306, 100); + } else if (player.absX == 2817) { + player.getPlayerAssistant().movePlayer(player.absX+1, player.absY, 0); + } + break; + + case 12047: + case 12045: + if (player.absY == 4439 || player.absY == 4436 || player.absX == 2467 || player.absX == 2464) { + player.getDialogueHandler().sendStatement("You can't enter the gate from here."); + player.nextChat = 0; + return; + } + if (!player.getItemAssistant().playerHasItem(1601, 1)) { + if (player.absX == 2469 || player.absY == 4434) { + player.getDialogueHandler().sendStatement("You need 1 cut diamond to enter."); + player.nextChat = 0; + return; + } + } else if (player.absX == 2470) { + player.getPlayerAssistant().movePlayer(player.absX-1, player.absY, 0); + player.getPacketSender().sendMessage("You pass through the gate."); + } else if (player.absY == 4433) { + player.getPlayerAssistant().movePlayer(player.absX, player.absY+1, 0); + player.getPacketSender().sendMessage("You pass through the gate."); + } else if (player.absX == 2469) { + player.getItemAssistant().deleteItem(1601, 1); + player.getPlayerAssistant().movePlayer(player.absX+1, player.absY, 0); + player.getPacketSender().sendMessage("You pass through the gate."); + } else if (player.absY == 4434) { + player.getItemAssistant().deleteItem(1601, 1); + player.getPlayerAssistant().movePlayer(player.absX, player.absY-1, 0); + player.getPacketSender().sendMessage("You pass through the gate."); + } + break; + + case 69: + case 2178: + //if (c.objectX == 2675 && c.objectY == 3170) { + //c.getDH().sendDialogues(79, 0); + //} else { + if (player.playerLevel[player.playerFishing] <= 50) { + player.getPacketSender().sendMessage("You need a fishing level of 50 or higher to play Fishing Trawler."); + return; + } + GameEngine.trawler.getWaitingRoom().join(player); + //} + break; + + case 2179: + case 70: + GameEngine.trawler.getWaitingRoom().leave(player); + break; + case 2167: + GameEngine.trawler.fixHole(player, objectX, objectY); + break; + case 2166: + GameEngine.trawler.showReward(player); + break; + case 2159: + case 2160: + player.trawlerFade(2676, 3170, 0); + break; + case 2175: + GameEngine.trawler.downLadder(player, objectX, objectY); + break; + case 2174: + GameEngine.trawler.upLadder(player, objectX, objectY); + break; + + case 2230: + case 2265: + player.getPacketSender().sendMessage("You look at hajedys cart."); + break; + + case 10041: + player.getPacketSender().sendMessage("You can't chop this tree."); + break; + + case 12163: + case 12164: + case 12165: + case 12166: + Woodcutting.handleCanoe(player, player.objectId); + break; + + case 5947: + if (player.inWild()) { + return; + } + if (player.getItemAssistant().playerHasItem(954) + && LightSources.playerHasLightSource(player)) { + player.getItemAssistant().deleteItem(954, 1); + player.getPlayerAssistant().movePlayer(3168, 9572, 0); + return; + } else if (player.getItemAssistant().playerHasItem(954) + && !LightSources.playerHasLightSource(player)) { + player.getItemAssistant().deleteItem(954, 1); + player.getPlayerAssistant().movePlayer(3168, 9572, 0); + return; + } else { + player.getPacketSender().sendMessage( + "You need a rope to go down there."); + } + break; + + case 5946: + if (player.inWild()) { + return; + } + LightSources.brightness3(player); + player.getPlayerAssistant().movePlayer(3168, 3172, 0); + break; + + case 4490: + case 4487:// slayer tower doors + if (player.absY == 3535) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY + 1, 0); + } else if (player.absY == 3536) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY - 1, 0); + } + break; + + case 5163: + player.getPacketSender().sendMessage("This chest is empty."); + break; + + case 1506: + case 1508: + if (player.absX == 3291 || player.absX == 3294) { + return; + } + if (player.absY == 3167) { + player.getPlayerAssistant().movePlayer(player.absX, 3166, 0); + } else if (player.absY == 3166) { + player.getPlayerAssistant().movePlayer(player.absX, 3167, 0); + } + break; + + case 3832: + player.getPlayerAssistant().movePlayer(3509, 9496, 2); + break; + + case 2896: + case 2897: + if (player.playerRights < 3) { + player.getPacketSender() + .sendMessage("You can't open that!"); + player.getPlayerAssistant().movePlayer(2728, 3349, 0); + } + break; + + case 5581: // take axe from log + AxeInLog.pullAxeFromLog(player, objectX, objectY); + break; + + case 2112: + if (player.absY == 9756 + && player.playerLevel[player.playerMining] >= 60) { + player.getPlayerAssistant().movePlayer(3046, 9757, 0); + player.getPacketSender() + .sendMessage("You enter the guild."); + } else if (player.absY == 9757 + && player.playerLevel[player.playerMining] >= 60) { + player.getPlayerAssistant().movePlayer(3046, 9756, 0); + player.getPacketSender() + .sendMessage("You enter the guild."); + } else if (player.playerLevel[player.playerMining] < 60) { + player.getPacketSender().sendMessage( + "You need 60 mining to enter this guild"); + } + break; + + case 5008: + player.getPlayerAssistant().movePlayer(2838, 10124, 0); + break; + + case 5998: + player.getPlayerAssistant().movePlayer(2730, 3713, 0); + break; + + case 7258: + player.getPlayerAssistant().movePlayer(2906, 3537, 0); + break; + + case 10177: + player.getPlayerAssistant().movePlayer(1798, 4407, 3); + break; + + case 10193: + player.getPlayerAssistant().movePlayer(2545, 10143, 0); + break; + + case 8966: + player.getPlayerAssistant().movePlayer(2523, 3740, 0); + break; + + case 10194: + player.getPlayerAssistant().movePlayer(2542, 3740, 0); + break; + + case 10195: + player.getPlayerAssistant().movePlayer(1809, 4405, 2); + break; + + case 10196: + player.getPlayerAssistant().movePlayer(1807, 4405, 3); + break; + + case 10197: + player.getPlayerAssistant().movePlayer(1823, 4404, 2); + break; + + case 10198: + player.getPlayerAssistant().movePlayer(1825, 4404, 3); + break; + + case 10199: + player.getPlayerAssistant().movePlayer(1834, 4388, 2); + break; + + case 10200: + player.getPlayerAssistant().movePlayer(1834, 4390, 3); + break; + + case 10201: + player.getPlayerAssistant().movePlayer(1811, 4394, 1); + break; + + case 10202: + player.getPlayerAssistant().movePlayer(1812, 4394, 2); + break; + + case 10203: + player.getPlayerAssistant().movePlayer(1799, 4386, 2); + break; + + case 10204: + player.getPlayerAssistant().movePlayer(1799, 4388, 1); + break; + + case 10205: + player.getPlayerAssistant().movePlayer(1796, 4382, 1); + break; + + case 10206: + player.getPlayerAssistant().movePlayer(1796, 4382, 2); + break; + + case 10207: + player.getPlayerAssistant().movePlayer(1800, 4369, 2); + break; + + case 10208: + player.getPlayerAssistant().movePlayer(1802, 4370, 1); + break; + + case 10209: + player.getPlayerAssistant().movePlayer(1827, 4362, 1); + break; + + case 10210: + player.getPlayerAssistant().movePlayer(1825, 4362, 2); + break; + + case 10211: + player.getPlayerAssistant().movePlayer(1863, 4373, 2); + break; + + case 10212: + player.getPlayerAssistant().movePlayer(1863, 4371, 1); + break; + + case 10213: + player.getPlayerAssistant().movePlayer(1864, 4389, 1); + break; + + case 10214: + player.getPlayerAssistant().movePlayer(1864, 4387, 2); + break; + + case 10215: + player.getPlayerAssistant().movePlayer(1890, 4407, 0); + break; + + case 10216: + player.getPlayerAssistant().movePlayer(1890, 4406, 1); + break; + + case 10217: + player.getPlayerAssistant().movePlayer(1957, 4373, 1); + break; + + case 10218: + player.getPlayerAssistant().movePlayer(1957, 4371, 0); + break; + + case 10219: + player.getPlayerAssistant().movePlayer(1824, 4379, 3); + break; + + case 10220: + player.getPlayerAssistant().movePlayer(1824, 4381, 2); + break; + + case 10221: + player.getPlayerAssistant().movePlayer(1838, 4375, 2); + break; + + case 10222: + player.getPlayerAssistant().movePlayer(1838, 4377, 3); + break; + + case 10223: + player.getPlayerAssistant().movePlayer(1850, 4386, 1); + break; + + case 10224: + player.getPlayerAssistant().movePlayer(1850, 4387, 2); + break; + + case 10225: + player.getPlayerAssistant().movePlayer(1932, 4378, 1); + break; + + case 10226: + player.getPlayerAssistant().movePlayer(1932, 4380, 2); + break; + + case 10227: + if (player.objectX == 1961 && player.objectY == 4392) + player.getPlayerAssistant().movePlayer(1961, 4392, 2); + else + player.getPlayerAssistant().movePlayer(1932, 4377, 1); + break; + + case 10228: + player.getPlayerAssistant().movePlayer(1961, 4393, 3); + break; + + case 10229: + player.getPlayerAssistant().movePlayer(1912, 4367, 0); + break; + + case 10230: + player.getPlayerAssistant().movePlayer(2899, 4449, 0); + break; + + case 2620: + if (player.gertCat == 6) { + player.getPacketSender().sendMessage("You have already found fluffs kitten."); + return; + } + if (player.gertCat == 5) { + player.getPacketSender().sendMessage("You search the crate..."); + if (Misc.random(25) == 1) { + player.getItemAssistant().addItem(1554, 1); + player.gertCat = 6; + player.getPacketSender().sendMessage("You find the kitten you should go back to fluffs."); + } else { + player.getPacketSender().sendMessage("and find nothing..."); + } + player.getPacketSender().sendMessage("and find nothing..."); + } + break; + + case 14921: + case 9390: + case 2781: + case 2785: + case 2966: + case 3294: + case 3413: + case 4304: + case 4305: + case 6189: + case 6190: + case 11009: + case 11010: + case 11666: + case 12100: + case 12809: + Smelting.startSmelting(player, objectType); + break; + + case 2156:// wizard tower (draynor) + player.getPlayerAssistant().startTeleport(3109, 3168, 0, "modern"); + break; + + case 2157:// dark wizard tower (falador) + player.getPlayerAssistant().startTeleport(2906, 3335, 0, "modern"); + break; + + case 2158:// thormac sorcer tower (cammy) + player.getPlayerAssistant().startTeleport(2702, 3398, 0, "modern"); + break; + + case 10596: + if (player.playerLevel[player.playerSlayer] < 72) { + player.getPacketSender().sendMessage( + "You need 72 slayer to enter."); + return; + } else { + player.getPacketSender().sendMessage( + "You enter the icy cavern."); + player.getPlayerAssistant().movePlayer(3056, 9555, 0); + } + break; + + case 10595: + player.getPacketSender().sendMessage( + "You leave the icy cavern."); + player.getPlayerAssistant().movePlayer(3056, 9562, 0); + break; + + case 12982: + if (player.absY == 3278) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY - 3, 0); + } else if (player.absY == 3275) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY + 3, 0); + } + break; + + case 2266: + if (player.absY == 2963) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY + 1, 0); + } else if (player.absY == 2964) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY - 1, 0); + } + break; + + case 2606: + if (player.absY == 9599) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY + 1, 0); + } else if (player.absY == 9600) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY - 1, 0); + } + break; + + case 2634: + if (player.absX == 2837 + && player.playerLevel[player.playerMining] >= 50) { + player.getPlayerAssistant().movePlayer(player.absX + 3, + player.absY, 0); + } else if (player.absX == 2840 + && player.playerLevel[player.playerMining] >= 50) { + player.getPlayerAssistant().movePlayer(player.absX - 3, + player.absY, 0); + } else if (player.playerLevel[player.playerMining] < 50) { + player.getDialogueHandler().sendStatement("You need 50 mining to pass to this rock slide."); + player.nextChat = 0; + return; + } + break; + + case 1967: + case 1968: + if (player.absX == 2464 || player.absX == 2467) { + return; + } + if (player.absY == 3491) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY + 2, 0); + } else if (player.absY == 3493) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY - 2, 0); + } + break; + + case 4577: + if (player.absY == 3635) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY + 1, 0); + } else if (player.absY == 3636) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY - 1, 0); + } + break; + + case 4551: + if (player.objectX == 2522 && player.objectY == 3597) { + player.getPlayerAssistant().movePlayer(2514, 3619, 0); + player.startAnimation(3067); + } + break; + + case 4558: + if (player.objectX == 2514 && player.objectY == 3617) { + player.getPlayerAssistant().movePlayer(2522, 3595, 0); + player.startAnimation(3067); + } + break; + + case 2216: + if (player.absX == 2876) { + player.getPlayerAssistant().movePlayer(2880, 2952, 0); + } else if (player.absX == 2880) { + player.getPlayerAssistant().movePlayer(2876, 2952, 0); + } + break; + + case 1804: + if (player.absY == 3449 + && player.getItemAssistant().playerHasItem(983, 1)) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY + 1, 0); + } else if (player.absY == 3450 + && player.getItemAssistant().playerHasItem(983, 1)) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY - 1, 0); + } else if (!player.getItemAssistant().playerHasItem(983, 1)) { + player.getDialogueHandler().sendStatement("You need a brass key to enter here."); + player.nextChat = 0; + } + break; + + case 135: + if (player.absY == 3353) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY + 1, 0); + } else if (player.absY == 3354) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY - 1, 0); + } + break; + + case 1528:// curtain varrock pray altar + if (player.absY == 3390) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY + 1, 0); + } else if (player.absY == 3391) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY - 1, 0); + } + break; + + case 95: + case 94: + case 90: + case 89: + case 5812: + case 2341: + player.getPacketSender().sendMessage( + "Will be added later with the quest!"); + break; + + case 8689: + if (player.milking == false) { + MilkCow.milk(player); + } + break; + + case 24: + if (player.absX == 2764) { + player.getPlayerAssistant().movePlayer(player.absX + 1, + player.absY, 1); + } else if (player.absX == 2765) { + player.getPlayerAssistant().movePlayer(player.absX - 1, + player.absY, 1); + } + break; + + case 2706: + if (player.absY == 3321) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY + 1, 0); + } else if (player.absY == 3322) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY - 1, 0); + } + break; + + case 102: + if (player.absY == 3480) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY + 1, 0); + } else if (player.absY == 3481) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY - 1, 0); + } + break; + + case 9330: + case 9328: + case 9293: + case 11844: + case 9301: + case 9302: + case 2322: + case 2323: + case 2296: + case 5100: + case 5110: + case 5111: + case 14922: + case 3067: + case 9309: + case 9310: + case 2618: + case 2332: + case 5088: + case 5090: + case 4615: + case 4616: + case 3933: + case 12127: + case 9294: + case 9326: + case 9321: + case 993: + AgilityShortcut.processAgilityShortcut(player); + break; + + case 2612: + player.getPacketSender().object(2613, 3096, 3269, 1, 0, 10); + Region.addObject(2613, 3096, 3269, 1, 10, 0, false); + player.getPacketSender().sendMessage("You open the cupboard."); + break; + + case 2613: + player.getItemAssistant().addItem(1550, 1); + break; + + + case 9391: + case 62: + case 416: + case 6545: + case 3500: + player.getPacketSender().sendMessage( + "This feature is currently disabled."); + break; + + case 2670: + Desert.cutCactus(player, Desert.getCacCutter(player), objectType, + objectX, objectY); + break; + + /** + * tutorial island objects + */ + + case 1519: + case 1516: + if (player.tutorialProgress == 28 && player.absX == 3129) { + player.getPlayerAssistant().movePlayer(player.absX - 1, + player.absY, player.heightLevel); + } else if (player.tutorialProgress == 28 && player.absX == 3128) { + player.getPlayerAssistant().movePlayer(player.absX + 1, + player.absY, player.heightLevel); + } + break; + + case 3015: + case 3016: + if (player.tutorialProgress == 7 || player.diedOnTut == true) { + if (player.diedOnTut == true) { + player.getPlayerAssistant().movePlayer(player.absX - 1, + player.absY, 0); + player.getPacketSender().createArrow(3078, 3084, + player.getH(), 2); + player.getDialogueHandler().sendStatement2( + "You have died and have already beat this step", + "you may continue."); + } else if (player.diedOnTut == false) { + player.getPlayerAssistant().movePlayer(player.absX - 1, + player.absY, 0); + player.getDialogueHandler().sendDialogues(3020, -1); + } else { + player.getPacketSender().sendMessage( + "You aren't on this part yet."); + return; + } + } + break; + + case 3018: // door again + if (player.tutorialProgress > 9) { + PassDoor.passThroughDoor(player, 3018, 1, 2, 0, -1, 0, 0); + if (player.diedOnTut) { + player.getDialogueHandler().sendStatement2( + "You have died and have already beat this step", + "you may continue."); + player.getPacketSender().createArrow(3086, 3126, + player.getH(), 2); + } else { + player.getDialogueHandler().sendDialogues(3038, -1); + } + } + break; + + case 3017:// door tutorial island + if (player.tutorialProgress > 6 || player.diedOnTut) { + if (player.diedOnTut && Position.checkPosition(player, 3079, 3084, 0)) { + PassDoor.passThroughDoor(player, 3017, 3, 0, 0, -1, 0, 0); + player.getDialogueHandler().sendStatement2("You have died and have already beat this step", "you may continue."); + player.getPacketSender().createArrow(3072, 3090, player.getH(), 2); + } else if (player.diedOnTut == false && Position.checkPosition(player, 3079, 3084, 0)) { + PassDoor.passThroughDoor(player, 3017, 3, 0, 0, -1, 0, 0); + player.getPacketSender().drawHeadicon(1, 3, 0, 0); + } + } else { + player.getPacketSender().sendMessage("You aren't on this part yet."); + return; + } + break; + + case 3025: + if (player.tutorialProgress >= 28) { + if (Position.checkPosition(player, 3129, 3124, 0)) { + PassDoor.passThroughDoor(player, 3025, 3, 0, 0, 1, 0, 0); + } + // client.getPacketDispatcher().tutorialIslandInterface(70, + // 15); + player.getPacketSender().chatbox(6180); + player.getDialogueHandler() + .chatboxText( + player, + "Follow the path to the chapel and enter it.", + "Once inside talk to the monk. He'll tell you all about the skill.", + "", "", "Prayer"); + player.getPacketSender().chatbox(6179); + player.getPacketSender().drawHeadicon(1, 8, 0, 0); // sends + // to + // prayer + // dude + } + + break; + case 3026: + if (player.tutorialProgress >= 32) { + // client.getPacketDispatcher().tutorialIslandInterface(80, + // 17); + player.getPacketSender().drawHeadicon(1, 9, 0, 0); // sends + // to + // prayer + // dude + if (Position.checkPosition(player, 3122, 3103, 0)) { + PassDoor.passThroughDoor(player, 3026, 0, 1, 0, 0, -1, 0); + } + } + break; + + case 3024: + if (player.tutorialProgress >= 27) { + if (Position.checkPosition(player, 3124, 3124, 0)) { + PassDoor.passThroughDoor(player, 3024, 3, 0, 0, 1, 0, 0); + } + // client.getPacketDispatcher().tutorialIslandInterface(65, + // 14); + player.getPacketSender().chatbox(6180); + player.getDialogueHandler() + .chatboxText( + player, + "The guide here will tell you all about making cash. Just click on", + "him to hear what he's got to say.", "", "", + "Financial advice"); + player.getPacketSender().chatbox(6179); + player.getPacketSender().drawHeadicon(1, 7, 0, 0); + } + break; + + case 3045: + if (player.tutorialProgress == 26) { + player.getPacketSender().openUpBank(); + // client.getPacketDispatcher().tutorialIslandInterface(60, + // 13); + player.getPacketSender().createArrow(3125, 3124, + player.getH(), 2); + player.getPacketSender().chatbox(6180); + player.getDialogueHandler() + .chatboxText( + player, + "You can store stuff here for safekeeping. If you die anything", + "in your bank will be saved. To deposit something, rich click it", + "and select 'store'. Once you've had a good look, close the", + "window and move on through the door indicated.", + "This is your bank box"); + player.getPacketSender().chatbox(6179); + player.tutorialProgress = 27; + player.getPacketSender().createArrow(1, 7); + } else if (player.tutorialProgress >= 27) { + player.getDialogueHandler().sendDialogues(1013, 494); + } + break; + + case 3039: + if (player.getItemAssistant().playerHasItem(2307) && player.tutorialProgress >= 8) { + player.startAnimation(896); + player.getPlayerAssistant().requestUpdates(); + player.getItemAssistant().deleteItem(2307, 1); + player.getItemAssistant().addItem(2309, 1); + player.getDialogueHandler().sendDialogues(3037, -1); + } + break; + + case 3019: + if (player.tutorialProgress >= 11 || player.diedOnTut) { + if (player.diedOnTut && Position.checkPosition(player, 3086, 3126, 0)) { + PassDoor.passThroughDoor(player, 3019, 2, 3, 0, 0, -1, 0); + player.getDialogueHandler().sendStatement2( + "You have died and have already beat this step", + "you may continue."); + player.getPacketSender().createArrow(3088, 3119, + player.getH(), 2); + } else { + if (Position.checkPosition(player, 3086, 3126, 0)) { + player.getDialogueHandler().sendDialogues(3042, -1); + } + } + } + break; + + + case 3014: + if (Position.checkPosition(player, 3097, 3107, 0) && player.tutorialProgress >= 2) { + PassDoor.passThroughDoor(player, 3014, 1, 0, 0, 1, 0, 0); + player.getDialogueHandler().sendDialogues(3011, -1); + player.getPacketSender().createArrow(1, 2); + } else if (Position.checkPosition(player, 3097, 3107, 0) && player.diedOnTut) { + player.getPacketSender().createArrow(3089, 3092, player.getH(), 2); + player.getDialogueHandler().sendStatement2("You have died and have already beat this step", "you may continue."); + } else if (player.tutorialProgress < 2 && player.diedOnTut != true) { + player.getPacketSender().sendMessage("You aren't on this step yet."); + return; + } + break; + + case 9299: + if (player.absX == 3240) { + if (player.absY == 3191) { + player.getPlayerAssistant().walkTo(0, -1); + player.getPacketSender().sendFrame36(173, 0); + player.playerWalkIndex = 749; + player.getPlayerAssistant().requestUpdates(); + //PlayerAssistant.sendFrame36(c, 173,1); + + } else { + player.getPlayerAssistant().walkTo(0, 1); + player.playerWalkIndex = 749; + player.getPlayerAssistant().requestUpdates(); + } + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + // TODO Auto-generated method stub + player.getPlayerAssistant().setAnimationBack(); + player.stopPlayerPacket = false; + container.stop(); + } + + @Override + public void stop() { + // TODO Auto-generated method stub + + } + + }, 1); + } else { + player.getPacketSender().sendMessage("You can't do that from here."); + } + break; + + case 3020: + case 3021: + if (player.diedOnTut == true && (player.getY() == 9502 || player.getY() == 9503)) { + player.getDialogueHandler() + .sendStatement2( + "You have died so now all you need to do is continue", + "onto the next step."); + player.getPacketSender().createArrow(3111, 9518, + player.getH(), 2); + } else if (player.diedOnTut == false && player.tutorialProgress >= 21 && (player.getY() == 9502 || player.getY() == 9503)) { + player.getPacketSender().chatbox(6180); + player.getDialogueHandler() + .chatboxText( + player, + "In this area you will find out about combat with swords and", + "bows. Speak to the guide and he will tell you all about it.", + "", "", "Combat"); + player.getPacketSender().chatbox(6179); + player.getPacketSender().object(-1, 3094, 9502, 0, 0); + player.getPacketSender().object(3021, 3095, 9502, 7, 0); + + player.getPacketSender().object(-1, 3094, 9503, 0, 0); + player.getPacketSender().object(3020, 3095, 9503, 1, 0); + + player.getPlayerAssistant().walkTo(1, 0); + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + player.getPacketSender().object(3020, 3094, 9503, + 2, 0); + player.getPacketSender().object(3021, 3094, 9502, + 2, 0); + // others + player.getPacketSender().object(-1, 3095, 9502, 0, + 0); + player.getPacketSender().object(-1, 3095, 9503, 0, + 0); + player.getPacketSender().createArrow(1, 6); // draws + // headicon + // to + // combat dude + + container.stop(); + } + @Override + public void stop() { + + } + }, 2); + } + break; + + case 3023: + case 3022: + if (player.tutorialProgress >= 24 + && (player.getY() == 9519 || player.getY() == 9518) + || player.diedOnTut == true) { + if (player.diedOnTut == true) { + player.getDialogueHandler() + .sendStatement2("Be more careful this time", + "now continue to kill the rat and talk to the guide."); + } + player.getPacketSender().chatbox(6180); + player.getDialogueHandler() + .chatboxText( + player, + "", + "To attack the rat, right click it and select the attack option. you", + "will then walk over to it and start hitting it.", + "", "Attacking"); + player.getPacketSender().chatbox(6179); + player.getPacketSender().object(-1, 3111, 9518, 0, 0); + player.getPacketSender().object(3022, 3110, 9518, 7, 0); + + player.getPacketSender().object(-1, 3111, 9519, 0, 0); + player.getPacketSender().object(3023, 3110, 9519, 1, 0); + + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + + player.getPacketSender().object(3022, 3111, 9518, + 0, 0); + player.getPacketSender().object(3023, 3111, 9519, + 0, 0); + // others + player.getPacketSender().object(-1, 3110, 9518, 7, + 0); + player.getPacketSender().object(-1, 3110, 9519, 1, + 0); + player.getPacketSender().createArrow(1, 6); // draws + // headicon + // to combat ude + + container.stop(); + } + @Override + public void stop() { + + } + }, 4); + } else if (player.tutorialProgress >= 25 + && (player.getY() == 9519 || player.getY() == 9518)) { + player.getPacketSender().object(-1, 3111, 9518, 0, 0); + player.getPacketSender().object(3022, 3110, 9518, 7, 0); + + player.getPacketSender().object(-1, 3111, 9519, 0, 0); + player.getPacketSender().object(3023, 3110, 9519, 1, 0); + + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + + player.getPacketSender().object(3022, 3111, 9518, + 0, 0); + player.getPacketSender().object(3023, 3111, 9519, + 0, 0); + // others + player.getPacketSender().object(-1, 3110, 9518, 7, + 0); + player.getPacketSender().object(-1, 3110, 9519, 1, + 0); + + container.stop(); + } + @Override + public void stop() { + + } + }, 4); + } + break; + + // tutorial stuff end + + case 12349: + case 12350: + if (player.absX == 3213) { + if (player.absY == 3221 || player.absY == 3222) { + player.getPlayerAssistant().movePlayer(player.absX - 1, player.absY, 0); + } + } else if (player.absX == 3212) { + if (player.absY == 3221 || player.absY == 3222) { + player.getPlayerAssistant().movePlayer(player.absX + 1, player.absY, 0); + } + } + break; + + case 11716: + case 11721: + if (player.absX == 2964) { + player.getPlayerAssistant().movePlayer(player.absX + 1, + player.absY, 0); + } else if (player.absX == 2965) { + player.getPlayerAssistant().movePlayer(player.absX - 1, + player.absY, 0); + } else if (player.absY == 3337) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY - 1, 0); + } else if (player.absY == 3338) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY + 1, 0); + } else if (player.absX == 2981) { + player.getPlayerAssistant().movePlayer(player.absX + 1, + player.absY, 0); + } else if (player.absX == 2982) { + player.getPlayerAssistant().movePlayer(player.absX - 1, + player.absY, 0); + } + break; + + case 11717: + case 11719: + if (player.absY == 3342) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY + 1, 2); + } else if (player.absY == 3343) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY - 1, 2); + } else if (player.absY == 3335) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY - 1, 2); + } else if (player.absY == 3334) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY + 1, 2); + } + break; + + case 4500:// fremennik dung + if (player.objectX == 2809 && player.objectY == 10001) { + player.getPlayerAssistant().movePlayer(2796, 3615, 0); + } + break; + + // case 5008://near rock crabs not sure where it leads to think its + // the boating place somewhere + case 4499: + if (player.objectX == 2797 && player.objectY == 3614) { + player.getPlayerAssistant().movePlayer(2808, 10002, 0); + } + break; + + case 9295: + if (player.playerLevel[player.playerAgility] < 51) { + player.getPacketSender().sendMessage( + "You need 51 agility to use this shortcut."); + return; + } else if (player.absX == 3155) { + player.turnPlayerTo(player.objectX, player.objectY); + player.getPlayerAssistant().movePlayer(3149, 9906, 0); + player.startAnimation(844); + } else if (player.absX == 3149) { + player.turnPlayerTo(player.objectX, player.objectY); + player.getPlayerAssistant().movePlayer(3155, 9906, 0); + player.startAnimation(844); + } + break; + + case 8717: + player.getPacketSender() + .sendMessage( + "Feature currently disabled will be added in a later release."); + break; + + case 7057: + if (player.absY == 3250) { + return; + } + player.getPlayerAssistant().movePlayer(3093, 3251, 1); + break; + + case 7056: + player.getPlayerAssistant().movePlayer(3089, 3251, 0); + break; + + case 2186: + if (player.absY == 3161) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY - 1, 0); + } else if (player.absY == 3160) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY + 1, 0); + } + break; + + case 3029: + if (player.tutorialProgress >= 14 || player.diedOnTut == true) { + if (player.diedOnTut == true) { + player.startAnimation(828); + player.getPlayerAssistant().movePlayer(3088, 9520, 0); + player.getPacketSender().createArrow(3094, 9503, + player.getH(), 2); + player.getDialogueHandler().sendStatement2( + "You have died and have already beat this step", + "you may continue."); + } else if (player.diedOnTut == false) { + player.getDialogueHandler().sendDialogues(3051, -1); + player.startAnimation(828); + player.getPlayerAssistant().movePlayer(3088, 9520, 0); + } else { + player.getPacketSender().sendMessage( + "You aren't on this part yet."); + return; + } + } + break; + + case 3028: + if (player.tutorialProgress >= 14) { + player.getPacketSender().sendMessage( + "You have already completed this step."); + return; + } + break; + + case 9300: + if (player.absY == 3335) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY - 1, 0); + } else if (player.absY == 3334) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY + 1, 0); + } + break; + + case 2492: + if (player.objectX == 2911 && player.objectY == 3614) { + return; + } + player.getPlayerAssistant().movePlayer(3253, 3399, 0); + break; + + case 5083: + if (!player.hasPaidBrim) { + player.getDialogueHandler().sendDialogues(1048, 1595); + } else { + player.getPlayerAssistant().movePlayer(2709, 9564, 0); + player.hasPaidBrim = false; + } + break; + + case 5084: + player.getPlayerAssistant().movePlayer(2744, 3152, 0); + break; + case 5094: + player.getPlayerAssistant().movePlayer(2643, 9594, 2); + break; + case 5098: + player.getPlayerAssistant().movePlayer(2637, 9517, 0); + break; + case 5097: + player.getPlayerAssistant().movePlayer(2636, 9510, 2); + break; + + case 2287: + if (player.playerLevel[16] < 35) { + player.getPacketSender().sendMessage( + "You need 35 agility to enter here!"); + return; + } + if (player.absX == 2552 && player.absY == 3561) { + player.getPlayerAssistant().movePlayer(2552, 3558, 0); + player.startAnimation(844); + } else if (player.absX == 2552 && player.absY == 3558) { + player.getPlayerAssistant().movePlayer(2552, 3561, 0); + player.startAnimation(844); + } + break; + + case 2514: + case 1600: + case 1601: + case 2025: + case 2113: + case 2647: + case 2712: + case 2391: + case 2392: + case 2624: + case 2625: + case 2641: + case 1805: + Guilds.attemptGuild(player, objectType); + break; + + case 14315: + if (!PestControl.waitingBoat.containsKey(player) && player.absX == 2657 && player.absY > 2638 && player.absY < 264) { + PestControl.addToWaitRoom(player); + } else { + if (player.absX == 2657 && player.absY > 2638 && player.absY < 2641) { + player.getPlayerAssistant().movePlayer(2661, 2639, 0); + } + } + break; + case 14314: + if (player.inPcBoat()) { + if (PestControl.waitingBoat.containsKey(player)) { + PestControl.leaveWaitingBoat(player); + } else { + if (player.absX == 2661 && player.absY > 2637 && player.absY < 2641) { + player.getPlayerAssistant().movePlayer(2657, 2639, 0); + } + } + } + break; + case 9369: + if (player.absX == 2399 && player.absY == 5177) { + FightPits.addPlayer(player); + } else if (player.absX == 2399 && player.absY == 5175) { + FightPits.removePlayer(player, false); + } + break; + + case 9368: + if (player.absX > 2397 && player.absX < 2401 && player.absY == 5167) { + FightPits.removePlayer(player, false); + } + break; + + case 3031: + if (player.tutorialProgress == 26) { + player.getPacketSender().sendMessage( + "You have already completed this step."); + return; + } else if (player.tutorialProgress > 35) { + UseOther.useDown(player, objectType); + } + break; + + case 3030: + if (player.tutorialProgress == 26) { + // client.getPacketDispatcher().tutorialIslandInterface(55, + // 12); + player.getDialogueHandler().sendDialogues(3078, -1); + player.getPlayerAssistant().movePlayer(3111, 3125, 0); + player.startAnimation(828); + } else if (player.tutorialProgress > 35) { + UseOther.useUp(player, objectType); + } + break; + + case 5493: + player.getPlayerAssistant().movePlayer(3165, 3251, 0); + player.getPacketSender() + .sendMessage("You climb up the ladder."); + player.startAnimation(828); + player.getPacketSender().closeAllWindows(); + break; + + case 4881: + player.getPlayerAssistant().movePlayer(2806, 2785, 0); + player.getPacketSender().sendMessage("You climb up the rope."); + player.startAnimation(828); + player.getPacketSender().closeAllWindows(); + break; + + case 4411: + case 4415: + case 4417: + case 4418: + case 4419: + case 4420: + case 4469: + case 4470: + case 4911: + case 4912: + case 4437: + case 6281: + case 6280: + case 4472: + case 4471: + case 4406: + case 4407: + case 4458: + case 4902: + case 4903: + case 4900: + case 4901: + case 4377: + case 4378: + if (!CastleWars.isInCw(player)) { + player.getPacketSender().sendMessage("You have to be in castle wars to use these objects."); + CastleWars.resetPlayer(player); + return; + } + CastleWarObjects.handleObject(player, objectType, objectX, objectY); + break; + + case 1757: + if (CastleWars.isInCw(player)) { + CastleWarObjects.handleObject(player, objectType, objectX, objectY); + } else if (player.objectX == 2892 && player.objectY == 9907) { + player.getPlayerAssistant().movePlayer(2893, 3507, 0); + } else { + UseOther.useUp(player, objectType); + } + break; + + case 4031: + SpecialObjects.initShantay(player, objectType); + break; + + case 2693: + SpecialObjects.openShantayChest(player, objectType, objectX, objectY, "open"); + break; + + case 2883: + case 2882: + player.getDialogueHandler().sendDialogues(1018, 925); + break; + + case 2320: + long clickTimer = 0; + if (player.absY <= 9963 && player.playerLevel[player.playerAgility] > 14 && System.currentTimeMillis() - clickTimer > 2000) { + player.getPlayerAssistant().movePlayer(3120, 9970, 0); + player.startAnimation(744); + player.turnPlayerTo(player.objectX, player.objectY); + player.getPacketSender().sendMessage("You swing on the monkey bars."); + player.getPlayerAssistant().addSkillXP(25, player.playerAgility); + clickTimer = System.currentTimeMillis(); + } else if (player.absY <= 9970 && player.playerLevel[player.playerAgility] > 14 && System.currentTimeMillis() - clickTimer > 2000) { + player.getPlayerAssistant().movePlayer(3120, 9963, 0); + player.startAnimation(744); + player.turnPlayerTo(player.objectX, player.objectY); + player.getPacketSender().sendMessage("You swing on the monkey bars."); + player.getPlayerAssistant().addSkillXP(25, player.playerAgility); + clickTimer = System.currentTimeMillis(); + } else if (player.playerLevel[player.playerAgility] < 15) { + player.getPacketSender().sendMessage("You need 15 agility to use these monkey bars."); + } else { + player.getPacketSender().sendMessage("You can't do the monkey bars here."); + } + break; + + // PARTY ROOM START + case 2417: // 26193 if falador + player.inPartyRoom = true; + PartyRoom.open(player); + break; + + case 2416: + player.inPartyRoom = true; + PartyRoom.dropAll(); + break; + + case 9356: + player.getPlayerAssistant().enterCaves(); + break; + + case 9357: + player.getPlayerAssistant().resetTzhaar(); + break; + + case 492: + player.getPlayerAssistant().movePlayer(2856, 9570, 0); + break; + + case 1764: + if (player.objectX == 2856 && player.objectY == 9569) { + player.getPlayerAssistant().movePlayer(2858, 3168, 0); + } + break; + + case 9358: + player.getPlayerAssistant().movePlayer(2444, 5171, 0); + break; + + case 9359: + player.getPlayerAssistant().movePlayer(2862, 9572, 0); + break; + + case 2610: + player.getPlayerAssistant().movePlayer(2833, 3257, 0); + break; + + case 2609: + player.getPlayerAssistant().movePlayer(2834, 9657, 0); + break; + + case 2465: + case 2466: + case 2467: + case 2468: + case 2469: + case 2470: + case 2471: + case 2472: + case 2473: + case 2474: + case 2475: + case 2478: + case 2479: + case 2480: + case 2481: + case 2482: + case 2483: + case 2484: + case 2485: + case 2486: + case 2487: + case 2488: + case 2452: + case 2453: + case 2454: + case 2455: + case 2456: + case 2457: + case 2458: + case 2459: + case 2460: + case 2461: + case 2462: + RuneCraftingActions.handleRuneCrafting(player, objectType); + break; + + case 6481: + player.getPlayerAssistant().movePlayer(3233, 9317, 0); + break; + + /** + * End + */ + + case 3829: + player.getPlayerAssistant().movePlayer(3227, 3107, 0); + break; + + case 4427: + player.getPlayerAssistant().movePlayer(2373, + player.absY == 3120 ? 3119 : 3120, 0); + break; + + case 4428: + player.getPlayerAssistant().movePlayer(2372, + player.absY == 3120 ? 3119 : 3120, 0); + break; + + case 4465: + player.getPlayerAssistant().movePlayer( + player.absX == 2414 ? 2415 : 2414, 3073, 0); + break; + + case 4424: + case 4423: + if (!CastleWars.isInCw(player)) { + player.getPacketSender().sendMessage("You have to be in castle wars to use these objects."); + CastleWars.resetPlayer(player); + return; + } + player.getPlayerAssistant().movePlayer(2427, + player.absY == 3087 ? 3088 : 3087, 0); + break; + + + /** + * End + */ + + case 2079: + if (player.getItemAssistant().playerHasItem(432, 1)) { + player.getItemAssistant().addItem(433, 1); + player.getPacketSender().sendMessage( + "All that's in the chest is a message..."); + player.pirateTreasure = 4; + } else { + player.getPacketSender().sendMessage( + "You need a key to open this chest."); + } + break; + + case 2071: + if (player.pirateTreasure == 2) { + player.getDialogueHandler().sendStatement("You search the crate..."); + player.getPacketSender().sendMessage( + "You find a bottle of rum and 10 bananas."); + player.getItemAssistant().addItem(431, 1); + player.getItemAssistant().addItem(1963, 10); + player.nextChat = 0; + } else { + player.getPacketSender().sendMessage( + "You aren't on this step right now."); + } + break; + + case 2593: + player.getPacketSender().sendMessage( + "Disabled for dragon slayer."); + break; + + case 2024: // WP quest + if (player.witchspot == 2) { + // c.getDH().sendStatement("You drink from the cauldron, it tastes horrible!", + // "You feel yourself imbued with power."); + player.witchspot = 3; + QuestRewards.witchFinish(player); + } else { + player.getPacketSender().sendMessage( + "You are not on this part of the quest."); + } + break; + + case 2614: + if (player.vampSlayer == 3 && player.clickedVamp == false) { + NpcHandler.spawnNpc(player, 757, player.getX(), player.getY(), 0, 0, 50, 10, 30, 30, true, true); + player.getPacketSender().sendMessage("You will need a stake and hammer to attack count draynor."); + player.clickedVamp = true; + } else if (player.vampSlayer == 3 && player.clickedVamp == true) { + player.getPacketSender().sendMessage("You have already spawned the vampyre."); + return; + } else if (player.vampSlayer > 3) { + player.getPacketSender().sendMessage("You have already killed the vampire."); + } else if (player.vampSlayer < 3) { + player.getPacketSender().sendMessage("You still need to progress into vampire slayer to fight this monster."); + } + break; + + case 2617: + if (player.absX > 3076 && player.absX < 3079 && player.absY == 9771) { + player.getPlayerAssistant().movePlayer(3115, 3356, 0); + } + break; + + case 2616: + if (player.absX > 3114 && player.absX < 3117 && player.absY == 3356) { + player.getPlayerAssistant().movePlayer(3077, 9771, 0); + } + break; + + case 10093: + case 10094: + if (player.getItemAssistant().playerHasItem(1927, 1)) { + player.turnPlayerTo(player.objectX, player.objectY); + player.startAnimation(883); + player.getItemAssistant().addItem(2130, 1); + player.getItemAssistant().deleteItem(1927, 1); + player.getPlayerAssistant() + .addSkillXP(18, player.playerCooking); + } else { + player.getPacketSender().sendMessage( + "You need a bucket of milk to do this."); + } + break; + + case 2072: // crate + if (player.getItemAssistant().playerHasItem(1963, 10) + && player.luthas == true) { + player.getItemAssistant().deleteItem(1963, 10); + player.getDialogueHandler().sendStatement( + "You pack your bananas in the crate..."); + player.getPacketSender().sendMessage( + "Talk to luthas for your reward."); + player.bananas = 2; + } else if (player.getItemAssistant().playerHasItem(431, 1) + && player.pirateTreasure == 1) { + player.getItemAssistant().deleteItem(431, 1); + player.getDialogueHandler().sendStatement( + "You stash your rum in the crate"); + player.pirateTreasure = 2; + } else if (player.objectX == 2746) { + player.getPacketSender().sendMessage("You search the crate..."); + player.stopPlayerPacket = true; + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + player.getPacketSender().sendMessage("You find nothing of interest."); + container.stop(); + } + + @Override + public void stop() { + player.stopPlayerPacket = false; + } + }, 2); + } else { + player.getDialogueHandler().sendStatement( + "I should talk to luthas and see what to do."); + player.getPacketSender().sendMessage( + "I think I need to put some bannanas in this crate."); + } + break; + + case 2073: // Banana tree + case 4754: + if (System.currentTimeMillis() - player.waitTime > 2000) { + if (player.luthas == true) { + player.bananas += 1; + player.getItemAssistant().addItem(1963, 1); + player.waitTime = System.currentTimeMillis(); + } + player.getItemAssistant().addItem(1963, 1); + player.waitTime = System.currentTimeMillis(); + } else { + player.getPacketSender().sendMessage("You must wait two seconds before grabbing another banana."); + } + break; + + case 2406: + if (player.playerEquipment[player.playerWeapon] == 772) { + player.getPlayerAssistant().startTeleport(2452, 4470, 0, + "modern"); + player.getPacketSender().sendMessage( + "You are suddenly teleported away."); + } else { + player.getPacketSender() + .sendMessage("This door is locked."); + } + break; + + case 3759://entrance + if (player.absX == 2893 && player.absY == 3671) { + player.getPlayerAssistant().movePlayer(2893, 10074, 0); + } + break; + + case 3760://exit + if (player.absX == 2893 && player.absY == 10074) { + player.getPlayerAssistant().movePlayer(2893, 3671, 0); + } + break; + + case 1568: + if (player.absX == 3098) { + player.getPacketSender().sendMessage("You can't use the trapdoor here."); + return; + } + /*if (objectX == 3097 && objectY == 3468) { + player.getPlayerAssistant().movePlayer(3097, 9868, 0);*/ + if (CastleWars.isInCw(player)) { + CastleWarObjects.handleObject(player, objectY, objectY, objectY); + //} else { + //OtherObjects.useDown(c, c.objectId); + } + break; + + case 96: + case 98: + case 1722: + case 1723: + case 1733: + case 1734: + case 1736: + case 1737: + case 1742: + case 1744: + case 1755: + case 2405: + case 2711: + case 3432: + case 3443: + case 4383: + case 4755: + case 4756: + case 4879: + case 5492: + case 5096: + case 6278: + case 11724: + case 11725: + case 11727: + case 11728: + case 11729: + case 11731: + case 11732: + case 11733: + case 11734: + case 11735: + case 11736: + case 11737: + case 12265: + case 2147: + case 2148: + case 2408: + case 6279: + case 7257: + case 6439: + case 11888: + case 11889: + case 11890: + case 4568: + case 4569: + case 4570: + case 4413: + case 9582: + case 9584: + case 5131: + case 5130: + case 1725: + case 1726: + case 6434: + case 6436: + case 1738: + case 5167: + case 12266: + case 272: + case 273: + case 245: + case 246: + case 1767: + Climbing.handleClimbing(player); + break; + + case 190: + if (player.absY == 3385) { + player.getPlayerAssistant().movePlayer(player.absX, 3382, 0); + } else if (player.absY == 3382) { + player.getPlayerAssistant().movePlayer(player.absX, 3385, 0); + } + break; + + case 1754: + if (player.objectX == 2696 && player.objectY == 3282) { + player.startAnimation(827); + player.getPacketSender().closeAllWindows(); + player.getPlayerAssistant().movePlayer(2696, 9683, 0); + player.getPacketSender().sendMessage("You climb down."); + } else { + UseOther.useDown(player, player.objectId); + } + break; + + case 1759: + case 9472: + case 11867: + case 100: + UseOther.useDown(player, player.objectId); + break; + + case 1739: + Climbing.handleLadder(player); + player.dialogueAction = 147; + break; + + case 1748: + if (player.objectX == 3286 && player.objectY == 3192) { + Climbing.climbDown(player); + } else { + Climbing.handleLadder(player); + player.dialogueAction = 147; + } + break; + + case 12537: + case 2884: + case 12965: + case 14747: + Climbing.handleLadder(player); + player.dialogueAction = 147; + break; + + case 12536: + case 12964: + case 1750: + case 2833: + case 2796: + case 4772: + case 1752: + case 11739: + case 14745: + case 9558: + Climbing.climbUp(player); + break; + + case 1747: + if (player.objectX == 2642 && player.objectY == 3428 && player.absX == 2643 && player.absY == 3429) { + return; + } + if (player.absX > 3081 && player.absX < 3085 && player.absY == 3514) { + return; + } + if (player.objectX == 2532 && player.objectY == 3545) { + player.getAgility().climbUp(player.getX(), player.getY(), 1); + } else { + Climbing.climbUp(player); + } + break; + + case 1740: + case 12538: + case 1746: + case 4778: + case 12966: + case 2797: + case 1749: + case 11742: + case 11741: + case 14746: + case 9559: + Climbing.climbDown(player); + break; + + /** + * Bank Booths + */ + case 11338: + case 2214: + case 10517: + // case 3045: + case 5276: + case 6084: + case 11758: + case 14367: + case 2213: + player.getDialogueHandler().sendDialogues(1013, 494); + break; + + case 9398:// deposit box + player.getPacketSender().sendFrame126("The Bank of " + GameConstants.SERVER_NAME + " - Deposit Box", 7421); + player.getPacketSender().sendFrame248(4465, 197); + player.getItemAssistant().resetItems(7423); + break; + + case 3194: // Bank Chest open + case 4483: // Bank Chest + case 104: // shantay chest open + player.getPacketSender().openUpBank(); + break; + + case 2403:// should be 2418 but not working + if (player.shieldArrav >= 6 && player.getItemAssistant().playerHasItem(759)) { + GameEngine.objectHandler.createAnObject(player, 2604, objectX, objectY, 0); + Region.addObject(2604, objectX, objectY, 0, 0, 0, false); + } + else { + player.getPacketSender().sendMessage("It's locked, maybe I can get the key from somewhere."); + } + break; + + case 2604: + if (player.objectX == 3235 && player.objectY == 9761 && player.shieldArrav >= 6) { + player.getDialogueHandler().sendDialogues(742, -1); + } else { + player.getPacketSender().openUpBank(); + } + break; + + case 3193: + if (player.objectX == 3382 && player.objectY == 3270) { + player.getPacketSender().object(3194, 3382, 3270, 0, 1, 10); + Region.addObject(3194, 3382, 3270, 0, 10, 1, false); + } else if (player.objectX == 3381 && player.objectY == 3269) { + player.getPacketSender().object(3194, 3381, 3269, 0, 2, 10); + Region.addObject(3194, 3381, 3269, 0, 10, 2, false); + } else { + GameEngine.objectHandler.createAnObject(player, 3194, objectX, objectY, -1); + } + break; + + case 2412: + if (player.objectX == 3048 && player.objectY == 3233) { + player.getPlayerAssistant().movePlayer(3048, 3231, 1); + player.getPacketSender().sendMessage("You cross the Gangplank."); + } + break; + + case 2413: + if (player.objectX == 3048 && player.objectY == 3232) { + player.getPlayerAssistant().movePlayer(3048, 3234, 0); + } + break; + + case 2083: + if (player.objectX == 3030 && player.objectY == 3217) { + player.getPlayerAssistant().movePlayer(3032, 3217, 1); + player.getPacketSender().sendMessage("You cross the Gangplank."); + } + break; + + case 2084: + if (player.objectX == 3031 && player.objectY == 3217) { + player.getPlayerAssistant().movePlayer(3029, 3217, 0); + } + break; + + case 2081: + if (player.objectX == 2956 && player.objectY == 3145) { + player.getPlayerAssistant().movePlayer(2956, 3143, 1); + } + break; + + case 2082: + if (player.objectX == 2956 && player.objectY == 3144) { + player.getPlayerAssistant().movePlayer(2956, 3146, 0); + } + break; + + case 2415: + if (player.objectX == 2834 && player.objectY == 3333) { + player.getPlayerAssistant().movePlayer(2834, 3335, 0); + } + break; + + case 2414: + if (player.objectX == 2834 && player.objectY == 3334) { + player.getPlayerAssistant().movePlayer(2834, 3332, 1); + } + break; + + case 14304: + // Sailing.startTravel(c, 14); + player.getPlayerAssistant().movePlayer(2659, 2676, 0); + player.getDialogueHandler().sendStatement("You arrive safely."); + break; + + case 14306: + // Sailing.startTravel(c, 15); + player.getPlayerAssistant().movePlayer(3041, 3202, 0); + player.getDialogueHandler().sendStatement("You arrive safely."); + break; + + case 1782:// full flour bin + FlourMill.emptyFlourBin(player); + break; + + case 2718: // Hopper + FlourMill.hopperControl(player); + break; + + case 8972: + if (!player.canLeaveArea) { + player.getDialogueHandler().sendDialogues(3, 2458); + } else { + FreakyForester.leaveArea(player); + } + break; + + case 1765://down + if (player.inWild() && player.absX > 3015 && player.absX < 3019) { + player.getPlayerAssistant().movePlayer(3067, 10256, 0); + } + break; + + case 1766://up + if (player.inWild() && player.absX > 3067 && player.absX < 3070) { + player.getPlayerAssistant().movePlayer(3016, 3849, 0); + } + break; + + case 6552: + if (player.playerMagicBook == 0) { + player.playerMagicBook = 1; + player.getPacketSender().setSidebarInterface(6, 12855); + player.getPacketSender().sendMessage("An ancient wisdomin fills your mind."); + player.getPlayerAssistant().resetAutocast(); + } else { + player.getPacketSender().setSidebarInterface(6, 1151); // modern + player.playerMagicBook = 0; + player.getPacketSender().sendMessage("You feel a drain on your memory."); + player.getPlayerAssistant().resetAutocast(); + } + break; + + case 8958: + if (player.getX() == 2490 && (player.getY() == 10162 || player.getY() == 10164)) { + new Object(6951, player.objectX, player.objectY, player.heightLevel, 1, 10, 8958, 15); + } + break; + + case 8959: + if (player.getX() == 2490 && (player.getY() == 10146 || player.getY() == 10148)) { + new Object(6951, player.objectX, player.objectY, player.heightLevel, 1, 10, 8959, 15); + } + break; + + case 8960: + if (player.getX() == 2490 && (player.getY() == 10132 || player.getY() == 10130)) { + new Object(6951, player.objectX, player.objectY, player.heightLevel, 1, 10, 8960, 15); + } + break; + + case 14235: + case 14233: + if (player.absX == 2670) { + player.getPlayerAssistant().movePlayer(player.absX + 1, + player.absY, 0); + } else if (player.absX == 2671) { + player.getPlayerAssistant().movePlayer(player.absX - 1, + player.absY, 0); + } else if (player.absY == 2585) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY - 1, 0); + } else if (player.absY == 2584) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY + 1, 0); + } else if (player.absX == 2643) { + player.getPlayerAssistant().movePlayer(player.absX - 1, + player.absY, 0); + } else if (player.absX == 2642) { + player.getPlayerAssistant().movePlayer(player.absX + 1, + player.absY, 0); + } + break; + + case 14829: + case 14830: + case 14827: + case 14828: + case 14826: + case 14831: + // Server.objectHandler.startObelisk(objectType); + GameEngine.objectManager.startObelisk(objectType); + break; + + /* + * Doors + */ + case 6749: + if (objectX == 3562 && objectY == 9678) { + player.getPacketSender().object(6749, 3562, 9678, -3, 0); + Region.addObject(6749, 3562, 9678, 0, 0, -3, false); + player.getPacketSender().object(6730, 3562, 9677, -1, 0); + Region.addObject(6730, 3562, 9677, 0, 0, -1, false); + } else if (objectX == 3558 && objectY == 9677) { + player.getPacketSender().object(6749, 3558, 9677, -1, 0); + Region.addObject(6749, 3558, 9677, 0, 0, -1, false); + player.getPacketSender().object(6730, 3558, 9678, -3, 0); + Region.addObject(6730, 3558, 9677, 0, 0, -3, false); + } + break; + case 6730: + if (objectX == 3558 && objectY == 9677) { + player.getPacketSender().object(6749, 3562, 9678, -3, 0); + Region.addObject(6749, 3562, 9678, 0, 0, -3, false); + player.getPacketSender().object(6730, 3562, 9677, -1, 0); + Region.addObject(6730, 3562, 9677, 0, 0, -1, false); + } else if (objectX == 3558 && objectY == 9678) { + player.getPacketSender().object(6749, 3558, 9677, -1, 0); + Region.addObject(6749, 3558, 9677, 0, 0, -1, false); + player.getPacketSender().object(6730, 3558, 9678, -3, 0); + Region.addObject(6730, 3558, 9678, 0, 0, -3, false); + } + break; + case 6727: + if (objectX == 3551 && objectY == 9684) { + player.getPacketSender().sendMessage( + "You cant open this door.."); + } + break; + case 6746: + if (objectX == 3552 && objectY == 9684) { + player.getPacketSender().sendMessage( + "You cant open this door.."); + } + break; + case 6748: + if (objectX == 3545 && objectY == 9678) { + player.getPacketSender().object(6748, 3545, 9678, -3, 0); + Region.addObject(6748, 3545, 9678, 0, 0, -3, false); + player.getPacketSender().object(6729, 3545, 9677, -1, 0); + Region.addObject(6729, 3545, 9677, 0, 0, -1, false); + } else if (objectX == 3541 && objectY == 9677) { + player.getPacketSender().object(6748, 3541, 9677, -1, 0); + Region.addObject(6748, 3541, 9677, 0, 0, -1, false); + player.getPacketSender().object(6729, 3541, 9678, -3, 0); + Region.addObject(6729, 3541, 9678, 0, 0, -3, false); + } + break; + case 6729: + if (objectX == 3545 && objectY == 9677) { + player.getPacketSender().object(6748, 3545, 9678, -3, 0); + Region.addObject(6748, 3545, 9678, 0, 0, -3, false); + player.getPacketSender().object(6729, 3545, 9677, -1, 0); + Region.addObject(6729, 3545, 9677, 0, 0, -1, false); + } else if (objectX == 3541 && objectY == 9678) { + player.getPacketSender().object(6748, 3541, 9677, -1, 0); + Region.addObject(6748, 3541, 9677, 0, 0, -1, false); + player.getPacketSender().object(6729, 3541, 9678, -3, 0); + Region.addObject(6729, 3541, 9678, 0, 0, -3, false); + } + break; + case 6726: + if (objectX == 3534 && objectY == 9684) { + player.getPacketSender().object(6726, 3534, 9684, -4, 0); + Region.addObject(6726, 3534, 9684, 0, 0, -4, false); + player.getPacketSender().object(6745, 3535, 9684, -2, 0); + Region.addObject(6745, 3535, 9684, 0, 0, -4, false); + } else if (objectX == 3535 && objectY == 9688) { + player.getPacketSender().object(6726, 3535, 9688, -2, 0); + Region.addObject(6726, 3535, 9688, 0, 0, -2, false); + player.getPacketSender().object(6745, 3534, 9688, -4, 0); + Region.addObject(6745, 3534, 9688, 0, 0, -4, false); + } + break; + case 6745: + if (objectX == 3535 && objectY == 9684) { + player.getPacketSender().object(6726, 3534, 9684, -4, 0); + Region.addObject(6726, 3534, 9684, 0, 0, -4, false); + player.getPacketSender().object(6745, 3535, 9684, -2, 0); + Region.addObject(6745, 3535, 9684, 0, 0, -2, false); + } else if (objectX == 3534 && objectY == 9688) { + player.getPacketSender().object(6726, 3535, 9688, -2, 0); + Region.addObject(6726, 3535, 9688, 0, 0, -2, false); + player.getPacketSender().object(6745, 3534, 9688, -4, 0); + Region.addObject(6745, 3534, 9688, 0, 0, -4, false); + } + break; + case 6743: + if (objectX == 3545 && objectY == 9695) { + player.getPacketSender().object(6724, 3545, 9694, -1, 0); + Region.addObject(6724, 3545, 9694, 0, 0, -1, false); + player.getPacketSender().object(6743, 3545, 9695, -3, 0); + Region.addObject(6743, 3545, 9695, 0, 0, -3, false); + } else if (objectX == 3541 && objectY == 9694) { + player.getPacketSender().object(6724, 3541, 9694, -1, 0); + Region.addObject(6724, 3541, 9694, 0, 0, -1, false); + player.getPacketSender().object(6743, 3541, 9695, -3, 0); + Region.addObject(6743, 3541, 9695, 0, 0, -3, false); + } + break; + case 6724: + if (objectX == 3545 && objectY == 9694) { + player.getPacketSender().object(6724, 3545, 9694, -1, 0); + Region.addObject(6724, 3545, 9694, 0, 0, -1, false); + player.getPacketSender().object(6743, 3545, 9695, -3, 0); + Region.addObject(6743, 3545, 9695, 0, 0, -3, false); + } else if (objectX == 3541 && objectY == 9695) { + player.getPacketSender().object(6724, 3541, 9694, -1, 0); + Region.addObject(6724, 3541, 9694, 0, 0, -1, false); + player.getPacketSender().object(6743, 3541, 9695, -3, 0); + Region.addObject(6743, 3541, 9695, 0, 0, -3, false); + } + break; + + case 9319: + if (player.heightLevel == 0) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY, 1); + } else if (player.heightLevel == 1) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY, 2); + } + break; + + case 9320: + if (player.heightLevel == 1) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY, 0); + } else if (player.heightLevel == 2) { + player.getPlayerAssistant().movePlayer(player.absX, + player.absY, 1); + } + break; + + case 4496: + case 4494: + if (player.heightLevel == 2) { + player.getPlayerAssistant().movePlayer(player.absX - 5, + player.absY, 1); + } else if (player.heightLevel == 1) { + player.getPlayerAssistant().movePlayer(player.absX + 5, + player.absY, 0); + } + break; + + case 4493: + if (player.heightLevel == 0 && player.absY > 3536 && player.absY < 3539 && player.absX == 3438) { + player.getPlayerAssistant().movePlayer(player.absX - 5, player.absY, 1); + } else if (player.heightLevel == 1 && player.absY > 3536 && player.absY < 3539 && player.absX == 3433) { + player.getPlayerAssistant().movePlayer(player.absX + 5, player.absY, 2); + } + break; + + case 4495: + if (player.heightLevel == 1 && player.absX == 3412) { + player.getPlayerAssistant().movePlayer(player.absX + 5, player.absY, 2); + } + break; + + case 5126: + if (player.absY == 3554) { + player.getPlayerAssistant().walkTo(0, 1); + } else { + player.getPlayerAssistant().walkTo(0, -1); + } + break; + + case 409: + case 4859: + case 61: + case 10638: + case 411: + case 412: + if (player.playerLevel[5] < player.getPlayerAssistant() + .getLevelForXP(player.playerXP[5])) { + player.startAnimation(645); + player.playerLevel[5] = player.getPlayerAssistant() + .getLevelForXP(player.playerXP[5]); + player.getPacketSender().sendMessage( + "You recharge your prayer points."); + player.getPlayerAssistant().refreshSkill(5); + } else { + player.getPacketSender().sendMessage( + "You already have full prayer points."); + } + break; + + case 2640: + if (player.inWild()) { + player.getPacketSender().sendMessage( + "You can't use this in the wilderness."); + return; + } + if (player.playerLevel[5] < player.getPlayerAssistant() + .getLevelForXP(player.playerXP[5])) { + player.startAnimation(645); + player.playerLevel[5] = player.getPlayerAssistant() + .getLevelForXP(player.playerXP[5]) + 2; + player.getPacketSender().sendMessage( + "You recharge your prayer points."); + player.getPlayerAssistant().refreshSkill(5); + } else { + player.getPacketSender().sendMessage( + "You already have full prayer points."); + } + break; + + case 2407: + if (player.inWild()) { + player.getPacketSender().sendMessage( + "You can't use this in the wilderness."); + return; + } else { + player.getPacketSender().sendMessage( + "You feel the world around you dissolve..."); + player.getPlayerAssistant().movePlayer(3171, + 3609 + Misc.random(10), 0); + } + break; + + case 2879: + player.getPlayerAssistant().movePlayer(2538, 4716, 0); + break; + case 2878: + if (player.inWild()) { + player.getPacketSender().sendMessage( + "You can't use this in the wilderness."); + return; + } else { + player.getPlayerAssistant().movePlayer(2509, 4689, 0); + } + break; + + case 9706: + player.getPlayerAssistant().startTeleport2(3105, 3951, 0); + break; + case 9707: + player.getPlayerAssistant().startTeleport2(3105, 3956, 0); + break; + + case 2558: + player.getPacketSender().sendMessage("This door is locked."); + break; + + case 10529: + case 10527: + if (player.absY <= player.objectY) { + player.getPlayerAssistant().walkTo(0, 1); + } else { + player.getPlayerAssistant().walkTo(0, -1); + } + break; + case 2873: + if (player.getItemAssistant().hasFreeSlots(1)) + player.getItemAssistant().addItem(2412, 1); + break; + case 2874: + if (player.getItemAssistant().hasFreeSlots(1)) + player.getItemAssistant().addItem(2414, 1); + break; + case 2875: + if (player.getItemAssistant().hasFreeSlots(1)) + player.getItemAssistant().addItem(2413, 1); + break; + + } + } + + public void secondClickObject(int objectType, int obX, int obY) { + player.faceUpdate(0); + player.clickObjectType = 0; + player.turnPlayerTo(obX, obY); + if (!Region.objectExists(objectType, obX, obY, player.heightLevel) && player.playerRights > 1) { + player.getPacketSender().sendMessage("[DEBUG] This object does not exist."); + return; + } + LogCutting.resetFletching(player); + switch (objectType) { + case 6: + player.getCannon().loadCannon(obX, obY); + break; + + case 389: + case 378: + Searching.searchObject(player, objectType); + break; + + case 2145: + if (player.restGhost == 2 && player.playerEquipment[player.playerAmulet] == 552) { + NpcHandler.spawnNpc(player, 457, player.getX(), player.getY() + 2, 0, 0, 0, 0, 0, 0, false, false); + player.getPacketSender().sendMessage("You search the coffin."); + } else if (player.restGhost == 4 && player.getItemAssistant().playerHasItem(553, 1)) { + player.getItemAssistant().deleteItem(553, 1); + player.getPacketSender().sendMessage("You have freed the ghost!"); + QuestRewards.restFinish(player); + NpcHandler.spawnNpc(player, 457, player.getX(), player.getY() + 2, 0, 0, 0, 0, 0, 0, false, false); + } else if (player.restGhost == 2 && player.playerEquipment[player.playerAmulet] != 552) { + player.getDialogueHandler().sendStatement("You need the ghost speak amulet for this part."); + player.nextChat = 0; + } else if (player.restGhost == 4 && !player.getItemAssistant().playerHasItem(553, 1)) { + player.getDialogueHandler().sendStatement("You need the skull for this part."); + player.nextChat = 0; + } else if (player.restGhost == 0) { + player.getPacketSender().sendMessage("You have not started this quest yet."); + } else if (player.restGhost == 5) { + player.getPacketSender().sendMessage("You have already finished this quest."); + } + break; + + case 2402: + if (player.shieldArrav == 1) + player.getDialogueHandler().sendDialogues(696, -1); + else + player.getPacketSender().sendMessage("The bookcase is empty."); + break; + + case 2550: + ThieveOther.pickLock(player, 1, 3.5, 2674, 3306, 1, false); + break; + + case 2551: + ThieveOther.pickLock(player, 14, 15, 2674, 3303, 2, false); + break; + case 2272: + player.getPacketSender().object(2271, 2984, 3336, 1, 10); + player.getPacketSender().sendMessage("You close the cupboard."); + break; + case 2613: + player.getPacketSender().object(2612, 3096, 3269, 0, 10); + player.getPacketSender().sendMessage("You close the cupboard."); + break; + case 9038: + case 9039: + if (!player.getItemAssistant().playerHasItem(6306, 100) && player.absX == 2816) { + player.getDialogueHandler().sendStatement("You need 100 trading sticks to enter here."); + player.nextChat = 0; + return; + } + if (player.absY == 3082 || player.absY == 3085) { + player.getDialogueHandler().sendStatement("You can't enter from here."); + player.nextChat = 0; + return; + } + if (player.absX == 2816 && player.getItemAssistant().playerHasItem(6306, 100)) { + player.getPlayerAssistant().movePlayer(player.absX+1, player.absY, 0); + player.getItemAssistant().deleteItem(6306, 100); + } else if (player.absX == 2817) { + player.getPlayerAssistant().movePlayer(player.absX+1, player.absY, 0); + } + break; + case 4569: + if (player.objectX == 2506 && player.objectY == 3640) { + Climbing.climbUp(player); + } + break; + case 2230: + case 2265: + if (player.absY > 3209 && player.absY < 3215) { + player.getDialogueHandler().sendDialogues(3173, 510); + } else { + player.getDialogueHandler().sendDialogues(3178, 510); + } + break; + case 10041: + player.getPacketSender().sendMessage("You can't chop this tree."); + break; + case 10177: + player.getPlayerAssistant().movePlayer(2544, 3743, 0); + break; + + case 11889: + Climbing.handleClimbing(player); + break; + + case 2884: + case 14747: + case 12537: + Climbing.climbUp(player); + break; + + case 14921: + case 9390: + case 2781: + case 2785: + case 2966: + case 3294: + case 3413: + case 4304: + case 4305: + case 6189: + case 6190: + case 11009: + case 11010: + case 11666: + case 12100: + case 12809: + Smelting.startSmelting(player, objectType); + break; + + case 2644: + Spinning.showSpinning(player); + break; + + case 1739: + Climbing.climbUp(player); + break; + + case 1748: + case 12965: + Climbing.climbUp(player); + break; + + case 2090: + case 2091: + case 3042: + Mining.prospectRock(player, "copper ore"); + break; + case 2094: + case 2095: + case 3043: + Mining.prospectRock(player, "tin ore"); + break; + case 2110: + Mining.prospectRock(player, "blurite ore"); + break; + case 2092: + case 2093: + Mining.prospectRock(player, "iron ore"); + break; + case 2100: + case 2101: + Mining.prospectRock(player, "silver ore"); + break; + case 2098: + case 2099: + Mining.prospectRock(player, "gold ore"); + break; + case 2096: + case 2097: + Mining.prospectRock(player, "coal"); + break; + case 2102: + case 2103: + Mining.prospectRock(player, "mithril ore"); + break; + case 2104: + case 2105: + Mining.prospectRock(player, "adamantite ore"); + break; + case 2106: + case 2107: + Mining.prospectRock(player, "runite ore"); + break; + case 10947: + Mining.prospectRock(player, "granite"); + break; + case 10946: + Mining.prospectRock(player, "sandstone"); + break; + case 2111: + Mining.prospectRock(player, "gem rocks"); + break; + + case 11338: // Bank Booth + case 2214: // Bank Booth + case 3045: // Bank Booth + case 5276: // Bank Booth + case 6084: // Bank Booth + case 11758: // Bank Booth + case 14367: // Bank Booth + case 4483: // open bank chest + case 3194: // open bank chest + case 10517: + case 2213: + player.getPacketSender().openUpBank(); + break; + + case 1161: + case 2646: + case 313: + case 5585: + case 5584: + case 312: + case 3366: + Pickable.pickObject(player, player.objectId, player.objectX, player.objectY); + break; + + case 2558: + if (System.currentTimeMillis() - player.lastLockPick < 3000 + || player.freezeTimer > 0) { + break; + } + if (player.getItemAssistant().playerHasItem(1523, 1)) { + player.lastLockPick = System.currentTimeMillis(); + if (Misc.random(10) <= 3) { + player.getPacketSender().sendMessage( + "You fail to pick the lock."); + break; + } + if (player.objectX == 3044 && player.objectY == 3956) { + if (player.absX == 3045) { + player.getPlayerAssistant().walkTo2(-1, 0); + } else if (player.absX == 3044) { + player.getPlayerAssistant().walkTo2(1, 0); + } + + } else if (player.objectX == 3038 && player.objectY == 3956) { + if (player.absX == 3037) { + player.getPlayerAssistant().walkTo2(1, 0); + } else if (player.absX == 3038) { + player.getPlayerAssistant().walkTo2(-1, 0); + } + } else if (player.objectX == 3041 && player.objectY == 3959) { + if (player.absY == 3960) { + player.getPlayerAssistant().walkTo2(0, -1); + } else if (player.absY == 3959) { + player.getPlayerAssistant().walkTo2(0, 1); + } + } + } else { + player.getPacketSender().sendMessage("I need a lockpick to pick this lock."); + } + break; + + } + } + + public void thirdClickObject(int objectType, int obX, int obY) { + player.clickObjectType = 0; + if (player.playerRights == 3) { + player.getPacketSender().sendMessage("Object type: " + objectType); + } + if (!Region.objectExists(objectType, obX, obY, player.heightLevel) && player.playerRights > 1) { + player.getPacketSender().sendMessage("[DEBUG] This object does not exist."); + return; + } + if (Stalls.isObject(objectType)) { + Stalls.attemptStall(player, objectType, obX, obY); + return; + } + switch (objectType) { + case 6: + player.getCannon().pickup(obX, obY); + break; + case 3194: + if (player.objectX == 3382 && player.objectY == 3270) { + player.getPacketSender().object(3193, 3382, 3270, 0, 1, 10); + } else if (player.objectX == 3381 && player.objectY == 3269) { + player.getPacketSender().object(3193, 3381, 3269, 0, 2, 10); + } + break; + case 4569: + if (player.objectX == 2506 && player.objectY == 3640) { + Climbing.climbDown(player); + } + break; + case 10177: + player.getPlayerAssistant().movePlayer(1798, 4407, 3); + break; + case 11890: + Climbing.handleClimbing(player); + break; + case 1739: + case 1748: + case 12965: + case 2884: + case 14747: + case 12537: + Climbing.climbDown(player); + break; + } + } + + public void fourthClickObject(int objectType, int obX, int obY) { + player.clickObjectType = 0; + if (player.playerRights == 3) { + player.getPacketSender().sendMessage("Object type: " + objectType); + } + if (!Region.objectExists(objectType, obX, obY, player.heightLevel) && player.playerRights > 1) { + player.getPacketSender().sendMessage("[DEBUG] This object does not exist."); + return; + } + Farming.openGuide(player, player.objectId); + switch (objectType) { + + } + } +} diff --git a/2006Redone Server/src/com/rebotted/game/objects/impl/AxeInLog.java b/2006Redone Server/src/com/rebotted/game/objects/impl/AxeInLog.java new file mode 100644 index 00000000..e060cd0a --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/objects/impl/AxeInLog.java @@ -0,0 +1,19 @@ +package com.rebotted.game.objects.impl; + +import com.rebotted.game.objects.Object; +import com.rebotted.game.players.Player; + +public class AxeInLog { + + public static void pullAxeFromLog(Player player, int x, int y) { + if (player.getItemAssistant().freeSlots() <= 0) { + player.getPacketSender().sendMessage("Not enough space in your inventory."); + return; + } + player.startAnimation(832); + player.getItemAssistant().addItem(1351, 1); + player.getPacketSender().sendMessage("You take the axe from the log."); + new Object(5582, x, y, player.heightLevel, 2, 10, 5581, 100); + } + +} diff --git a/2006Redone Server/src/com/rebotted/game/objects/impl/BrimhavenVines.java b/2006Redone Server/src/com/rebotted/game/objects/impl/BrimhavenVines.java new file mode 100644 index 00000000..372275db --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/objects/impl/BrimhavenVines.java @@ -0,0 +1,61 @@ +package com.rebotted.game.objects.impl; + +import com.rebotted.game.content.skills.core.Woodcutting; +import com.rebotted.game.players.Player; + +/** + * @author Genesis + */ + +public class BrimhavenVines { + + public static void handleBrimhavenVines(Player player, int objectType) { + if (!Woodcutting.hasAxe(player)) { + player.getPacketSender().sendMessage("You will need an axe to chop through these!"); + return; + } + player.getPacketSender().sendMessage("You chop your way through the vines."); + switch (objectType) { + case 12987: + case 12986: + BrimhavenVines.moveThroughVinesX(player, 3213, -2, 0, 2, 0); + break; + case 5103: + BrimhavenVines.moveThroughVinesX(player, 2689, 2, 0, -2, 0); + break; + case 5104: + BrimhavenVines.moveThroughVinesY(player, 9568, 0, 2, 0, -2); + break; + case 5105: + BrimhavenVines.moveThroughVinesX(player, 2672, 2, 0, -2, 0); + break; + case 5106: + BrimhavenVines.moveThroughVinesX(player, 2675, 2, 0, -2, 0); + break; + case 5107: + BrimhavenVines.moveThroughVinesX(player, 2694, 2, 0, -2, 0); + break; + } + } + + public static void moveThroughVinesX(Player player, int originX, int x1, int y1, int x2, int y2) { + int x = player.getX(); + int y = player.getY(); + if (player.absX <= originX) { + player.getPlayerAssistant().movePlayer(x + x1, y + y1, 0); + } else { + player.getPlayerAssistant().movePlayer(x + x2, y + y2, 0); + } + } + + public static void moveThroughVinesY(Player player, int originY, int x1, int y1, int x2, int y2) { + int x = player.getX(); + int y = player.getY(); + if (player.absY <= originY) { + player.getPlayerAssistant().movePlayer(x + x1, y + y1, 0); + } else { + player.getPlayerAssistant().movePlayer(x + x2, y + y2, 0); + } + } + +} diff --git a/2006Redone Server/src/redone/game/objects/impl/Climbing.java b/2006Redone Server/src/com/rebotted/game/objects/impl/Climbing.java similarity index 78% rename from 2006Redone Server/src/redone/game/objects/impl/Climbing.java rename to 2006Redone Server/src/com/rebotted/game/objects/impl/Climbing.java index cf5f3ae2..83e01459 100644 --- a/2006Redone Server/src/redone/game/objects/impl/Climbing.java +++ b/2006Redone Server/src/com/rebotted/game/objects/impl/Climbing.java @@ -1,786 +1,785 @@ -package redone.game.objects.impl; - -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.content.quests.QuestAssistant; -import redone.game.items.impl.LightSources; -import redone.game.players.Client; -import redone.util.Misc; - -/** - * Climbing handles stairs, ladders, trapdoors - * - * @author Andrew - */ - -public class Climbing { - - private static final int CLIMB_UP = 828, CLIMB_DOWN = CLIMB_UP; - - public static void handleClimbing(final Client client) { - if (System.currentTimeMillis() - client.climbDelay < 1200) { - return; - } - client.stopPlayer = true; - CycleEventHandler.getSingleton().addEvent(client, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - client.resetWalkingQueue(); - processClimbing(client); - client.getPlayerAssistant().requestUpdates(); - container.stop(); - } - - @Override - public void stop() { - client.climbDelay = System.currentTimeMillis(); - client.stopPlayer = false; - } - }, 1); - } - - public static void processClimbing(Client client) { - int chapionsGuildRequiredQP = Math.min(32, QuestAssistant.MAXIMUM_QUESTPOINTS); - switch (client.objectId) { - case 9584: - if (client.objectX == 2932 && client.objectY == 3282) { - client.getPlayerAssistant().movePlayer(2933, 3282, 0); - } - break; - - case 272: - client.getPlayerAssistant().movePlayer(client.absX, client.absY, 1); - break; - - - case 273: - client.getPlayerAssistant().movePlayer(client.absX, client.absY, 0); - break; - - case 245: - if (client.objectY == 3224) { - client.getPlayerAssistant().movePlayer(client.absX, client.absY+2, 2); - } else if (client.objectY == 3139 || client.objectX == 2835 || client.objectX == 2963) { - client.getPlayerAssistant().movePlayer(client.absX+2, client.absY, 2); - } else { - client.getPlayerAssistant().movePlayer(client.absX-2, client.absY, 2); - } - break; - case 246: - if (client.objectY == 3224) { - client.getPlayerAssistant().movePlayer(client.absX, client.absY-2, 1); - } else if (client.objectY == 3139 || client.objectX == 2835 || client.objectX == 2963) { - client.getPlayerAssistant().movePlayer(client.absX-2, client.absY, 1);; - } else { - client.getPlayerAssistant().movePlayer(client.absX+2, client.absY, 1); - } - break; - - case 11888: - if (client.absX == 2908 && client.absY == 3336) { - climbUp(client); - } - break; - - case 4568: - if (client.objectX == 2506 && client.objectY == 3640) { - climbUp(client); - } - break; - - case 4569: - if (client.objectX == 2506 && client.objectY == 3640) { - handleLadder(client); - } - break; - - case 4570: - if (client.objectX == 2506 && client.objectY == 3641) { - climbDown(client); - } - break; - - case 11889: - if (client.absX == 2908 && client.absY == 3336) { - handleLadder(client); - } - break; - - case 11890: - if (client.absX == 2908 && client.absY == 3336) { - climbDown(client); - } - break; - - case 9582: - if (client.objectX == 2931 && client.objectY == 3282) { - client.getPlayerAssistant().movePlayer(2933, 3282, 1); - } - break; - case 1722: - if (client.objectX == 2590 && client.objectY == 3089 && client.heightLevel == 0 && client.absY == 3088) { - client.getPlayerAssistant().movePlayer(client.absX, 3092, 1); - } else if (client.objectX == 2590 && client.objectY == 3089 && client.heightLevel == 0 && client.absY != 3088) { - return; - } - if (client.objectX == 3175 && client.objectY == 3420 && client.heightLevel == 0 && client.absX == 3177 && client.absX > 3418 && client.absX < 3425) { - return; - } else if (client.absY == 3423) { - client.getPlayerAssistant().movePlayer(client.absX, 3419, 1); - } - if (client.absX == 3098) { - client.getPlayerAssistant().movePlayer(3102, 3266, 1); - } else if (client.absY == 3445) { - client.getPlayerAssistant().movePlayer(3260, 3449, 1); - } else if (client.absY == 3358 - && client.questPoints >= chapionsGuildRequiredQP) { - client.getPlayerAssistant().movePlayer(client.absX, 3354, 1); - } else if (client.absY == 3358 - && client.questPoints < chapionsGuildRequiredQP) { - client.getActionSender().sendMessage( - "You need " + chapionsGuildRequiredQP + " quest points to use these stairs."); - } else if (client.absX == 3180) { - client.getPlayerAssistant().movePlayer(3176, client.absY, 1); - } else if (client.absX == 3159) { - client.getPlayerAssistant().movePlayer(3155, 3435, 1); - } else if (client.absX == 2661) { - client.getPlayerAssistant().movePlayer(2665, client.absY, 1); - } else if (client.absY == 3083) { - client.getPlayerAssistant().movePlayer(client.absX, 3087, 2); - } else if (client.absY == 3298) { - client.getPlayerAssistant().movePlayer(client.absX, 3294, 1); - } else if (client.absY == 3472) { - client.getPlayerAssistant().movePlayer(client.absX, 3476, 1); - } - break; - - case 1723: - if (client.absX == 3102) { - client.getPlayerAssistant().movePlayer(3098, 3266, 0); - } else if (client.absY == 3354 - && client.questPoints >= chapionsGuildRequiredQP) { - client.getPlayerAssistant().movePlayer(client.absX, 3358, 0); - } else if (client.absY == 3358 - && client.questPoints < chapionsGuildRequiredQP) { - client.getActionSender().sendMessage( - "You need " + chapionsGuildRequiredQP + " quest points to use these stairs"); - } else if (client.absY == 3449) { - client.getPlayerAssistant().movePlayer(3259, 3445, 0); - } else if (client.absX == 3155) { - client.getPlayerAssistant().movePlayer(3159, 3435, 0); - } else if (client.absX == 2665) { - client.getPlayerAssistant().movePlayer(2661, client.absY, 0); - } else if (client.absY == 3092) { - client.getPlayerAssistant().movePlayer(client.absX, 3088, 0); - } else if (client.absY == 3087) { - client.getPlayerAssistant().movePlayer(client.absX, 3083, 1); - } else if (client.absY == 3419) { - client.getPlayerAssistant().movePlayer(client.absX, 3423, 0); - } else if (client.absX == 3176) { - client.getPlayerAssistant().movePlayer(3180, client.absY, 0); - } else if (client.absY == 3321) { - client.getPlayerAssistant().movePlayer(client.absX, 3325, 0); - } else if (client.absY == 3294) { - client.getPlayerAssistant().movePlayer(client.absX, 3298, 0); - } else if (client.absY == 3476) { - client.getPlayerAssistant().movePlayer(client.absX, 3472, 0); - } - break; - - case 1733: - if (client.objectX == 2569 && client.objectY == 3122) { - client.getPlayerAssistant().movePlayer(2569, 9525, 0); - } else if (client.absX == 3186) { - client.getPlayerAssistant().movePlayer(3190, 9834, 0); - } else if (client.objectX == 2603 && client.objectY == 3078) { - client.getPlayerAssistant().feature("using this staircase"); - } else if (client.absX != 3186) { - client.getPlayerAssistant().movePlayer(client.absX, - client.absY + 6393, 0); - } - break; - - case 1734: - if (client.objectX == 2569 && client.objectY == 9522) { - client.getPlayerAssistant().movePlayer(2569, 3121, 0); - } else if (client.absX == 3190) { - client.getPlayerAssistant().movePlayer(3186, 3434, 0); - } else if (client.objectX == 3059 && client.objectY == 9776) { - client.getPlayerAssistant().movePlayer(3061, - client.absY - 6400, 0); - } else if (client.absX != 3190) { - client.getPlayerAssistant().movePlayer(client.absX, - client.absY - 6396, 0); - } - break; - - case 1737: - if (client.absY == 3294) { - client.getPlayerAssistant().movePlayer(2661, 3291, 1); - } else if (client.absY == 3302) { - client.getPlayerAssistant().movePlayer(2648, 3301, 1); - } else if (client.absY == 3293) { - client.getPlayerAssistant().movePlayer(2649, 3296, 1); - } - break; - - case 1736: - if (client.absY == 3291) { - client.getPlayerAssistant().movePlayer(2662, 3294, 0); - } else if (client.absY == 3301) { - client.getPlayerAssistant().movePlayer(2645, 3302, 0); - } else if (client.absX == 2649) { - client.getPlayerAssistant().movePlayer(2648, 3293, 0); - } - break; - - case 1742: - if (client.objectX == 2445 && client.objectY == 3434) { - client.getPlayerAssistant().movePlayer(2445, 3433, 1); - client.startAnimation(CLIMB_UP); - } else if (client.objectX == 2444 && client.objectY == 3414) { - client.getPlayerAssistant().movePlayer(2445, 3416, 1); - client.startAnimation(CLIMB_UP); - } else if (client.objectX == 2455 && client.objectY == 3417) { - client.getPlayerAssistant().movePlayer(2457, 3417, 1); - client.startAnimation(CLIMB_UP); - } else if (client.objectX == 2461 && client.objectY == 3416) { - client.getPlayerAssistant().movePlayer(2460, 3417, 1); - client.startAnimation(CLIMB_UP); - } else if (client.objectX == 2440 && client.objectY == 3404) { - client.getPlayerAssistant().movePlayer(2440, 3403, 1); - client.startAnimation(CLIMB_UP); - } - break; - - case 1744: - if (client.objectX == 2445 && client.objectY == 3434) { - client.getPlayerAssistant().movePlayer(2445, 3433, 0); - client.startAnimation(CLIMB_DOWN); - } else if (client.objectX == 2444 || client.objectX == 2445 - && client.objectY == 3415) { - client.getPlayerAssistant().movePlayer(2444, 3413, 0); - client.startAnimation(CLIMB_DOWN); - } else if (client.objectX == 2456 && client.objectY == 3417) { - client.getPlayerAssistant().movePlayer(2457, 3417, 0); - client.startAnimation(CLIMB_DOWN); - } else if (client.objectX == 2461 && client.objectY == 3417) { - client.getPlayerAssistant().movePlayer(2460, 3417, 0); - client.startAnimation(CLIMB_DOWN); - } else if (client.objectX == 2440 && client.objectY == 3404) { - client.getPlayerAssistant().movePlayer(2440, 3403, 0); - client.startAnimation(CLIMB_DOWN); - } - break; - case 7257: - client.getPlayerAssistant().movePlayer(3044, 4973, 1); - client.startAnimation(827); - client.getActionSender().sendMessage("You climb down."); - break; - case 6279: - if (client.getItemAssistant().playerHasItem(954, 1)) { - client.getPlayerAssistant().movePlayer(3206, 9379, 0); - client.startAnimation(827); - client.getActionSender().sendMessage("You climb down."); - } else { - client.getActionSender().sendMessage( - "You need a rope to enter."); - return; - } - break; - - case 6436: - UseOther.useUp(client, client.objectId); - break; - - case 6434: - case 5167: - UseOther.useDown(client, client.objectId); - break; - case 1767: - if (client.objectX == 3069 && client.objectY == 3856) { - UseOther.useDown(client, client.objectId); - } - break; - case 6439: - client.getPlayerAssistant().movePlayer(3309, 2963, 0); - client.getActionSender().sendMessage("You climb up."); - break; - - case 2408: - if (client.playerLevel[5] > 0) { - client.playerLevel[5] = 0; - } - client.getPlayerAssistant().refreshSkill(5); - client.getActionSender().sendMessage( - "Your prayer is drained as you enter the dungeon."); - client.getPlayerAssistant().movePlayer(2823, 9771, 0); - client.startAnimation(827); - client.getActionSender().sendMessage("You climb down."); - - break; - case 2147: - client.getPlayerAssistant().movePlayer(3104, 9576, 0); - client.startAnimation(827); - client.getActionSender().sendMessage("You climb down."); - break; - case 2148: - client.getPlayerAssistant().movePlayer(3103, 3162, 0); - client.startAnimation(828); - client.getActionSender().sendMessage("You climb up."); - break; - case 4383: - client.getPlayerAssistant().movePlayer(2515, 10007, 0); - client.startAnimation(827); - client.getActionSender().sendMessage("You climb down."); - break; - case 5131: - client.getPlayerAssistant().movePlayer(3549, 9865, 0); - client.getActionSender().sendMessage("You climb down."); - break; - case 5130: - client.getPlayerAssistant().movePlayer(3543, 3463, 0); - client.getActionSender().sendMessage("You climb up."); - break; - case 4413: - client.getPlayerAssistant().movePlayer(2510, 3644, 0); - client.startAnimation(828); - client.getActionSender().sendMessage("You climb up."); - break; - case 3432: - client.getPlayerAssistant().movePlayer(3440, 9887, 0); - break; - case 1738: - if (client.objectX == 2728 && client.objectY == 3460 - && client.heightLevel == 0) { - client.getPlayerAssistant().movePlayer(2749, 3462, 1); - } else if (client.objectX == 2746 && client.objectY == 3460 - && client.heightLevel == 0) { - client.getPlayerAssistant().movePlayer(2745, 3461, 1); - } else if (client.objectX == 2648 && client.objectY == 3310) { - Climbing.climbUp(client); - } else if (client.objectX == 2673 && client.objectY == 3300) { - client.getPlayerAssistant().movePlayer(2675, 3300, 1); - } else if (client.objectX == 3204 && client.objectY == 3207) { - client.getPlayerAssistant().movePlayer(3205, 3209, 1); - } else if (client.objectX == 3204 && client.objectY == 3229) { - client.getPlayerAssistant().movePlayer(3205, 3228, 1); - } else if (client.objectX == 3258 && client.objectY == 3487) { - client.getPlayerAssistant().movePlayer(3257, 3487, 1); - } else if (client.objectX == 3144 && client.objectY == 3447 && client.playerLevel[client.playerCooking] > 31 && client.playerEquipment[client.playerHat] == 1949) { - client.getPlayerAssistant().movePlayer(3143, 3448, 1); - } else if (client.objectX == 3010 && client.objectY == 3515) { - client.getPlayerAssistant().movePlayer(3012, 3515, 1); - } else if (client.objectX == 2895 && client.objectY == 3513) { - client.getPlayerAssistant().movePlayer(2897, 3513, 1); - } - break; - case 3443: - client.getPlayerAssistant().movePlayer(3423, 3485, 0); - break; - case 1755: - if (client.objectX == 3116 && client.objectY == 9852) { - client.getPlayerAssistant().movePlayer(3116, 3451, 0); - client.startAnimation(CLIMB_UP); - } else if (client.objectX == 3097 && client.objectY == 9867) { - client.getPlayerAssistant().movePlayer(3096, 3468, 0); - client.startAnimation(CLIMB_UP); - } else if (client.objectX == 3237 && client.objectY == 9858) { - client.getPlayerAssistant().movePlayer(3238, 3458, 0); - client.startAnimation(CLIMB_UP); - } else if (client.objectX == 3088 && client.objectY == 9971) { - UseOther.useUp(client, client.objectId); - // client.startAnimation(CLIMB_UP); - } else if (client.objectX == 3209 && client.objectY == 9616) { - // OtherObjects.useUp(client, client.objectId); - client.getPlayerAssistant().movePlayer(3209, 3215, 0); - client.startAnimation(CLIMB_UP); - client.getActionSender().sendMessage("You climb up."); - } else if (client.objectX == 3019 && client.objectY == 9740) {// noord - client.getPlayerAssistant().movePlayer(3019, 3341, 0); - client.startAnimation(CLIMB_UP); - } else if (client.objectX == 3020 && client.objectY == 9739) {// oost - client.getPlayerAssistant().movePlayer(3021, 3339, 0); - client.startAnimation(CLIMB_UP); - } else if (client.objectX == 3018 && client.objectY == 9739) {// wst - client.getPlayerAssistant().movePlayer(3017, 3339, 0); - client.startAnimation(CLIMB_UP); - } else if (client.objectX == 3019 && client.objectY == 9738) {// zuid - client.getPlayerAssistant().movePlayer(3019, 3337, 0); - client.startAnimation(CLIMB_UP); - } else { - UseOther.useUp(client, client.objectId); - } - break; - - case 2405: - UseOther.useUp(client, client.objectId); - break; - - case 98: - if (client.inWild()) { - return; - } - if (!LightSources.playerHasLightSource(client)) { - client.getPlayerAssistant().movePlayer(2641, 9740, 0); - return; - } else if (LightSources.playerHasLightSource(client)) { - client.getPlayerAssistant().movePlayer(2641, 9764, 0); - return; - } - break; - - case 96: - if (client.inWild()) { - return; - } - LightSources.brightness3(client); - client.getPlayerAssistant().movePlayer(2649, 9804, 0); - break; - - case 2711: - if (client.absY == 3325) { - client.getPlayerAssistant().movePlayer(client.absX, 3321, 1); - } - break; - - case 4755: - if (client.absY == 2797) { - client.getPlayerAssistant().movePlayer(client.absX, 2793, 0); - } - break; - - case 4756: - if (client.absY == 2793) { - client.getPlayerAssistant().movePlayer(client.absX, 2797, 1); - } - break; - - case 4879: - client.getPlayerAssistant().movePlayer(2807, 9200, 0); - client.getActionSender().sendMessage( - "You go down the trapdoor."); - client.startAnimation(827); - client.getPlayerAssistant().removeAllWindows(); - break; - - case 5492: - if (client.getItemAssistant().playerHasItem(1523, 1) - && Misc.random(4) < 3) { - client.getPlayerAssistant().movePlayer(3149, 9652, 0); - client.getActionSender().sendMessage( - "You go down the trapdoor."); - client.startAnimation(827); - client.getPlayerAssistant().addSkillXP(.5, - client.playerThieving); - client.getPlayerAssistant().removeAllWindows(); - } else if (!client.getItemAssistant().playerHasItem(1523, 1) - && Misc.random(5) < 2) { - client.getPlayerAssistant().movePlayer(3149, 9652, 0); - client.getActionSender().sendMessage( - "You go down the trapdoor."); - client.startAnimation(827); - client.getPlayerAssistant().addSkillXP(.5, - client.playerThieving); - client.getPlayerAssistant().removeAllWindows(); - } else if (client.getItemAssistant().playerHasItem(1523, 1) - && Misc.random(4) > 3) { - client.getActionSender().sendMessage( - "You fail to pick the lock."); - client.getActionSender() - .sendMessage( - "Your thieving has been drained, your fingers feel numb."); - client.playerLevel[17] = client.getPlayerAssistant() - .getLevelForXP(client.playerXP[17]) - 1; - client.getPlayerAssistant().refreshSkill(17); - client.getItemAssistant().deleteItem(1523, 1); - } else if (!client.getItemAssistant().playerHasItem(1523, 1) - && Misc.random(5) > 2) { - client.getActionSender().sendMessage( - "You fail to pick the lock."); - client.getActionSender() - .sendMessage( - "Your thieving has been drained, your fingers feel numb."); - client.playerLevel[17] = client.getPlayerAssistant() - .getLevelForXP(client.playerXP[17]) - 1; - client.getPlayerAssistant().refreshSkill(17); - } - break; - - case 6278: - if (client.objectX == 2637 && client.objectY == 3408) { - UseOther.useDown(client, 6278); - } - break; - - case 11724: - if (client.absX == 2971) { - client.getPlayerAssistant().movePlayer(2968, 3348, 1); - } - break; - - case 11725: - if (client.absY == 3348) { - client.getPlayerAssistant().movePlayer(2971, 3347, 0); - } - break; - - case 1725: - if (client.absX == 3285 || client.absX == 3286 - && client.heightLevel == 0) { - client.getPlayerAssistant().movePlayer(client.absX, 3492, 1); - } else if (client.absY == 3509) { - client.getPlayerAssistant().movePlayer(2751, 3513, 1); - } else if (client.absX == 3226) { - client.getPlayerAssistant().movePlayer(3230, 3394, 1); - } - break; - - case 5096: - client.getPlayerAssistant().movePlayer(2649, 9591, 0); - break; - - case 1726: - if (client.absY == 3513) { - client.getPlayerAssistant().movePlayer(2751, 3509, 0); - } else if (client.absX == 3230) { - client.getPlayerAssistant().movePlayer(3226, 3394, 0); - } else if (client.absX == 3285 || client.absX == 3286 - && client.heightLevel == 1) { - client.getPlayerAssistant().movePlayer(client.absX, 3496, 0); - } - break; - - case 11727: - if (client.absY == 3350 || client.absY == 3351 - || client.absY == 3340 || client.absY == 3341 - || client.absY == 3342) { - climbUp(client); - } - break; - - case 11728: - if (client.absY == 3350 || client.absY == 3351 - || client.absY == 3340 || client.absY == 3341 - || client.absY == 3342) { - climbDown(client); - } - break; - - case 11729: - if (client.objectX == 2954 && client.objectY == 3338) { - client.getPlayerAssistant().movePlayer(2956, 3338, 1); - } else if (client.objectX == 2960 && client.objectY == 3338) { - client.getPlayerAssistant().movePlayer(2959, 3339, 2); - } else if (client.objectX == 2957 && client.objectY == 3338) { - client.getPlayerAssistant().movePlayer(2959, 3338, 3); - } - break; - - case 11731: - if (client.objectX == 2955 && client.objectY == 3338) { - client.getPlayerAssistant().movePlayer(2956, 3338, 0); - } else if (client.objectX == 2960 && client.objectY == 3339) { - client.getPlayerAssistant().movePlayer(2959, 3338, 1); - } else if (client.objectX == 2958 && client.objectY == 3338) { - client.getPlayerAssistant().movePlayer(2957, 3337, 2); - } - break; - - case 11732: - if (client.objectX == 3034 && client.objectY == 3363) { - client.getPlayerAssistant().movePlayer(3036, 3363, 1); - } else if (client.objectX == 3048 && client.objectY == 3352) { - client.getPlayerAssistant().movePlayer(3049, 3354, 1); - } - break; - - case 11733: - if (client.objectX == 3035 && client.objectY == 3363) { - client.getPlayerAssistant().movePlayer(3036, 3362, 0); - } else if (client.objectX == 3049 && client.objectY == 3353) { - client.getPlayerAssistant().movePlayer(3049, 3354, 0); - } - break; - - case 11734: - if (client.absY == 3336) { - client.getPlayerAssistant().movePlayer(2984, 3340, 2); - } else if (client.absY == 3380) { - client.getPlayerAssistant().movePlayer(client.absX, 3384, 1); - } - break; - - case 11735: - if (client.absY == 3340) { - client.getPlayerAssistant().movePlayer(2984, 3336, 1); - } else if (client.absY == 3384) { - client.getPlayerAssistant().movePlayer(client.absX, 3380, 0); - } - break; - - case 11736: - if (client.absY == 3368) { - client.getPlayerAssistant().movePlayer(client.absX, 3372, 1); - } else if (client.absY == 3362) { - client.getPlayerAssistant().movePlayer(client.absX, 3366, 1); - } - break; - - case 11737: - if (client.absY == 3366) { - client.getPlayerAssistant().movePlayer(client.absX, 3362, 0); - } else { - client.getPlayerAssistant().movePlayer(client.absX, 3368, 0); - } - break; - - case 12266: - if (client.objectX == 3077 && client.objectY == 3493) { - client.getPlayerAssistant().movePlayer(3077, 9893, 0); - client.startAnimation(827); - client.getActionSender().sendMessage("You climb down."); - } - break; - - case 12265: - if (client.objectX == 3076 && client.objectY == 9893) { - client.getPlayerAssistant().movePlayer(3078, 3493, 0); - client.startAnimation(828); - client.getActionSender().sendMessage("You climb up."); - } - break; - } - } - - public static void climbUp(Client client) { - if (System.currentTimeMillis() - client.climbDelay < 1200) { - return; - } - - switch (client.heightLevel) { - case -1: - client.getPlayerAssistant().movePlayer(client.absX, client.absY, 0); - client.climbDelay = System.currentTimeMillis(); - client.getActionSender().sendMessage("You climb up."); - client.startAnimation(CLIMB_UP); - client.getPlayerAssistant().closeAllWindows(); - break; - case 0: - client.getPlayerAssistant().movePlayer(client.absX, client.absY, 1); - client.climbDelay = System.currentTimeMillis(); - client.getActionSender().sendMessage("You climb up."); - client.startAnimation(CLIMB_UP); - client.getPlayerAssistant().closeAllWindows(); - break; - case 1: - client.getPlayerAssistant().movePlayer(client.absX, client.absY, 2); - client.climbDelay = System.currentTimeMillis(); - client.getActionSender().sendMessage("You climb up."); - client.startAnimation(CLIMB_UP); - client.getPlayerAssistant().closeAllWindows(); - break; - case 2: - client.getPlayerAssistant().movePlayer(client.absX, client.absY, 3); - client.climbDelay = System.currentTimeMillis(); - client.getActionSender().sendMessage("You climb up."); - client.startAnimation(CLIMB_UP); - client.getPlayerAssistant().closeAllWindows(); - break; - default: - if (client.heightLevel > 3) { - climbDown(client); - } - client.getActionSender().sendMessage("This object is currently not supported."); - System.out.println("Bug detected with climbing up object " + client.objectId + " objectX " + client.objectX + " objectY " + client.objectY + "."); - break; - } - } - - public static void climbDown(Client client) { - if (System.currentTimeMillis() - client.climbDelay < 1200) { - return; - } - if (client.heightLevel > 3) { - client.getPlayerAssistant().movePlayer(client.absX, client.absY, 3); - client.climbDelay = System.currentTimeMillis(); - client.getActionSender().sendMessage("You climb down."); - client.startAnimation(CLIMB_DOWN); - client.getPlayerAssistant().closeAllWindows(); - } - switch (client.heightLevel) { - case 1: - client.getPlayerAssistant().movePlayer(client.absX, client.absY, 0); - client.climbDelay = System.currentTimeMillis(); - client.getActionSender().sendMessage("You climb down."); - client.startAnimation(CLIMB_DOWN); - client.getPlayerAssistant().closeAllWindows(); - break; - case 2: - client.getPlayerAssistant().movePlayer(client.absX, client.absY, 1); - client.climbDelay = System.currentTimeMillis(); - client.getActionSender().sendMessage("You climb down."); - client.startAnimation(CLIMB_DOWN); - client.getPlayerAssistant().closeAllWindows(); - break; - case 3: - client.getPlayerAssistant().movePlayer(client.absX, client.absY, 2); - client.climbDelay = System.currentTimeMillis(); - client.getActionSender().sendMessage("You climb down."); - client.startAnimation(CLIMB_DOWN); - client.getPlayerAssistant().closeAllWindows(); - break; - default: - if (client.heightLevel < 0) { - climbUp(client); - } - client.getActionSender().sendMessage("This object is currently not supported."); - System.out.println("Bug detected with climbing down object " + client.objectId + " objectX " + client.objectX + " objectY " + client.objectY + "."); - break; - } - } - - public static void handleLadder(Client client) { - client.getDialogueHandler().sendOption2("Climb Up.", "Climb Down."); - client.dialogueAction = 147; - } - - private static void close(Client client, int actionButtonId) { - if (actionButtonId == 9157) { - client.getActionSender().sendMessage("You climb up."); - client.startAnimation(CLIMB_UP); - } else if (actionButtonId == 9158) { - client.getActionSender().sendMessage("You climb down."); - client.startAnimation(827); - } - client.getPlayerAssistant().closeAllWindows(); - client.nextChat = 0; - } - - public static void handleLadderButtons(Client client, int actionButtonId) { - if (client.dialogueAction != 147) { - return; - } - switch (actionButtonId) { - case 9157: - if (client.heightLevel == 1) { - client.getPlayerAssistant().movePlayer(client.absX, client.absY, 2); - close(client, actionButtonId); - } else if (client.heightLevel == 2) { - client.getPlayerAssistant().movePlayer(client.absX, client.absY, 3); - close(client, actionButtonId); - } - break; - case 9158: - if (client.heightLevel == 2) { - client.getPlayerAssistant().movePlayer(client.absX, client.absY, 1); - close(client, actionButtonId); - } else if (client.heightLevel == 1) { - client.getPlayerAssistant().movePlayer(client.absX, client.absY, 0); - close(client, actionButtonId); - } - break; - } - } +package com.rebotted.game.objects.impl; + +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.content.quests.QuestAssistant; +import com.rebotted.game.items.impl.LightSources; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +/** + * Climbing handles stairs, ladders + * @author Andrew (Mr Extremez) + */ + +public class Climbing { + + private static final int CLIMB_UP = 828, CLIMB_DOWN = CLIMB_UP; + + public static void handleClimbing(final Player client) { + if (System.currentTimeMillis() - client.climbDelay < 1200) { + return; + } + client.stopPlayer = true; + CycleEventHandler.getSingleton().addEvent(client, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + client.resetWalkingQueue(); + processClimbing(client); + client.getPlayerAssistant().requestUpdates(); + container.stop(); + } + + @Override + public void stop() { + client.climbDelay = System.currentTimeMillis(); + client.stopPlayer = false; + } + }, 1); + } + + public static void processClimbing(Player client) { + int chapionsGuildRequiredQP = Math.min(32, QuestAssistant.MAXIMUM_QUESTPOINTS); + switch (client.objectId) { + case 9584: + if (client.objectX == 2932 && client.objectY == 3282) { + client.getPlayerAssistant().movePlayer(2933, 3282, 0); + } + break; + + case 272: + client.getPlayerAssistant().movePlayer(client.absX, client.absY, 1); + break; + + + case 273: + client.getPlayerAssistant().movePlayer(client.absX, client.absY, 0); + break; + + case 245: + if (client.objectY == 3224) { + client.getPlayerAssistant().movePlayer(client.absX, client.absY+2, 2); + } else if (client.objectY == 3139 || client.objectX == 2835 || client.objectX == 2963) { + client.getPlayerAssistant().movePlayer(client.absX+2, client.absY, 2); + } else { + client.getPlayerAssistant().movePlayer(client.absX-2, client.absY, 2); + } + break; + case 246: + if (client.objectY == 3224) { + client.getPlayerAssistant().movePlayer(client.absX, client.absY-2, 1); + } else if (client.objectY == 3139 || client.objectX == 2835 || client.objectX == 2963) { + client.getPlayerAssistant().movePlayer(client.absX-2, client.absY, 1);; + } else { + client.getPlayerAssistant().movePlayer(client.absX+2, client.absY, 1); + } + break; + + case 11888: + if (client.absX == 2908 && client.absY == 3336) { + climbUp(client); + } + break; + + case 4568: + if (client.objectX == 2506 && client.objectY == 3640) { + climbUp(client); + } + break; + + case 4569: + if (client.objectX == 2506 && client.objectY == 3640) { + handleLadder(client); + } + break; + + case 4570: + if (client.objectX == 2506 && client.objectY == 3641) { + climbDown(client); + } + break; + + case 11889: + if (client.absX == 2908 && client.absY == 3336) { + handleLadder(client); + } + break; + + case 11890: + if (client.absX == 2908 && client.absY == 3336) { + climbDown(client); + } + break; + + case 9582: + if (client.objectX == 2931 && client.objectY == 3282) { + client.getPlayerAssistant().movePlayer(2933, 3282, 1); + } + break; + case 1722: + if (client.objectX == 2590 && client.objectY == 3089 && client.heightLevel == 0 && client.absY == 3088) { + client.getPlayerAssistant().movePlayer(client.absX, 3092, 1); + } else if (client.objectX == 2590 && client.objectY == 3089 && client.heightLevel == 0 && client.absY != 3088) { + return; + } + if (client.objectX == 3175 && client.objectY == 3420 && client.heightLevel == 0 && client.absX == 3177 && client.absX > 3418 && client.absX < 3425) { + return; + } else if (client.absY == 3423) { + client.getPlayerAssistant().movePlayer(client.absX, 3419, 1); + } + if (client.absX == 3098) { + client.getPlayerAssistant().movePlayer(3102, 3266, 1); + } else if (client.absY == 3445) { + client.getPlayerAssistant().movePlayer(3260, 3449, 1); + } else if (client.absY == 3358 + && client.questPoints >= chapionsGuildRequiredQP) { + client.getPlayerAssistant().movePlayer(client.absX, 3354, 1); + } else if (client.absY == 3358 + && client.questPoints < chapionsGuildRequiredQP) { + client.getPacketSender().sendMessage( + "You need " + chapionsGuildRequiredQP + " quest points to use these stairs."); + } else if (client.absX == 3180) { + client.getPlayerAssistant().movePlayer(3176, client.absY, 1); + } else if (client.absX == 3159) { + client.getPlayerAssistant().movePlayer(3155, 3435, 1); + } else if (client.absX == 2661) { + client.getPlayerAssistant().movePlayer(2665, client.absY, 1); + } else if (client.absY == 3083) { + client.getPlayerAssistant().movePlayer(client.absX, 3087, 2); + } else if (client.absY == 3298) { + client.getPlayerAssistant().movePlayer(client.absX, 3294, 1); + } else if (client.absY == 3472) { + client.getPlayerAssistant().movePlayer(client.absX, 3476, 1); + } + break; + + case 1723: + if (client.absX == 3102) { + client.getPlayerAssistant().movePlayer(3098, 3266, 0); + } else if (client.absY == 3354 + && client.questPoints >= chapionsGuildRequiredQP) { + client.getPlayerAssistant().movePlayer(client.absX, 3358, 0); + } else if (client.absY == 3358 + && client.questPoints < chapionsGuildRequiredQP) { + client.getPacketSender().sendMessage( + "You need " + chapionsGuildRequiredQP + " quest points to use these stairs"); + } else if (client.absY == 3449) { + client.getPlayerAssistant().movePlayer(3259, 3445, 0); + } else if (client.absX == 3155) { + client.getPlayerAssistant().movePlayer(3159, 3435, 0); + } else if (client.absX == 2665) { + client.getPlayerAssistant().movePlayer(2661, client.absY, 0); + } else if (client.absY == 3092) { + client.getPlayerAssistant().movePlayer(client.absX, 3088, 0); + } else if (client.absY == 3087) { + client.getPlayerAssistant().movePlayer(client.absX, 3083, 1); + } else if (client.absY == 3419) { + client.getPlayerAssistant().movePlayer(client.absX, 3423, 0); + } else if (client.absX == 3176) { + client.getPlayerAssistant().movePlayer(3180, client.absY, 0); + } else if (client.absY == 3321) { + client.getPlayerAssistant().movePlayer(client.absX, 3325, 0); + } else if (client.absY == 3294) { + client.getPlayerAssistant().movePlayer(client.absX, 3298, 0); + } else if (client.absY == 3476) { + client.getPlayerAssistant().movePlayer(client.absX, 3472, 0); + } + break; + + case 1733: + if (client.objectX == 2569 && client.objectY == 3122) { + client.getPlayerAssistant().movePlayer(2569, 9525, 0); + } else if (client.absX == 3186) { + client.getPlayerAssistant().movePlayer(3190, 9834, 0); + } else if (client.objectX == 2603 && client.objectY == 3078) { + client.getPlayerAssistant().feature("using this staircase"); + } else if (client.absX != 3186) { + client.getPlayerAssistant().movePlayer(client.absX, + client.absY + 6393, 0); + } + break; + + case 1734: + if (client.objectX == 2569 && client.objectY == 9522) { + client.getPlayerAssistant().movePlayer(2569, 3121, 0); + } else if (client.absX == 3190) { + client.getPlayerAssistant().movePlayer(3186, 3434, 0); + } else if (client.objectX == 3059 && client.objectY == 9776) { + client.getPlayerAssistant().movePlayer(3061, + client.absY - 6400, 0); + } else if (client.absX != 3190) { + client.getPlayerAssistant().movePlayer(client.absX, + client.absY - 6396, 0); + } + break; + + case 1737: + if (client.absY == 3294) { + client.getPlayerAssistant().movePlayer(2661, 3291, 1); + } else if (client.absY == 3302) { + client.getPlayerAssistant().movePlayer(2648, 3301, 1); + } else if (client.absY == 3293) { + client.getPlayerAssistant().movePlayer(2649, 3296, 1); + } + break; + + case 1736: + if (client.absY == 3291) { + client.getPlayerAssistant().movePlayer(2662, 3294, 0); + } else if (client.absY == 3301) { + client.getPlayerAssistant().movePlayer(2645, 3302, 0); + } else if (client.absX == 2649) { + client.getPlayerAssistant().movePlayer(2648, 3293, 0); + } + break; + + case 1742: + if (client.objectX == 2445 && client.objectY == 3434) { + client.getPlayerAssistant().movePlayer(2445, 3433, 1); + client.startAnimation(CLIMB_UP); + } else if (client.objectX == 2444 && client.objectY == 3414) { + client.getPlayerAssistant().movePlayer(2445, 3416, 1); + client.startAnimation(CLIMB_UP); + } else if (client.objectX == 2455 && client.objectY == 3417) { + client.getPlayerAssistant().movePlayer(2457, 3417, 1); + client.startAnimation(CLIMB_UP); + } else if (client.objectX == 2461 && client.objectY == 3416) { + client.getPlayerAssistant().movePlayer(2460, 3417, 1); + client.startAnimation(CLIMB_UP); + } else if (client.objectX == 2440 && client.objectY == 3404) { + client.getPlayerAssistant().movePlayer(2440, 3403, 1); + client.startAnimation(CLIMB_UP); + } + break; + + case 1744: + if (client.objectX == 2445 && client.objectY == 3434) { + client.getPlayerAssistant().movePlayer(2445, 3433, 0); + client.startAnimation(CLIMB_DOWN); + } else if (client.objectX == 2444 || client.objectX == 2445 + && client.objectY == 3415) { + client.getPlayerAssistant().movePlayer(2444, 3413, 0); + client.startAnimation(CLIMB_DOWN); + } else if (client.objectX == 2456 && client.objectY == 3417) { + client.getPlayerAssistant().movePlayer(2457, 3417, 0); + client.startAnimation(CLIMB_DOWN); + } else if (client.objectX == 2461 && client.objectY == 3417) { + client.getPlayerAssistant().movePlayer(2460, 3417, 0); + client.startAnimation(CLIMB_DOWN); + } else if (client.objectX == 2440 && client.objectY == 3404) { + client.getPlayerAssistant().movePlayer(2440, 3403, 0); + client.startAnimation(CLIMB_DOWN); + } + break; + case 7257: + client.getPlayerAssistant().movePlayer(3044, 4973, 1); + client.startAnimation(827); + client.getPacketSender().sendMessage("You climb down."); + break; + case 6279: + if (client.getItemAssistant().playerHasItem(954, 1)) { + client.getPlayerAssistant().movePlayer(3206, 9379, 0); + client.startAnimation(827); + client.getPacketSender().sendMessage("You climb down."); + } else { + client.getPacketSender().sendMessage( + "You need a rope to enter."); + return; + } + break; + + case 6436: + UseOther.useUp(client, client.objectId); + break; + + case 6434: + case 5167: + UseOther.useDown(client, client.objectId); + break; + case 1767: + if (client.objectX == 3069 && client.objectY == 3856) { + UseOther.useDown(client, client.objectId); + } + break; + case 6439: + client.getPlayerAssistant().movePlayer(3309, 2963, 0); + client.getPacketSender().sendMessage("You climb up."); + break; + + case 2408: + if (client.playerLevel[5] > 0) { + client.playerLevel[5] = 0; + } + client.getPlayerAssistant().refreshSkill(5); + client.getPacketSender().sendMessage( + "Your prayer is drained as you enter the dungeon."); + client.getPlayerAssistant().movePlayer(2823, 9771, 0); + client.startAnimation(827); + client.getPacketSender().sendMessage("You climb down."); + + break; + case 2147: + client.getPlayerAssistant().movePlayer(3104, 9576, 0); + client.startAnimation(827); + client.getPacketSender().sendMessage("You climb down."); + break; + case 2148: + client.getPlayerAssistant().movePlayer(3103, 3162, 0); + client.startAnimation(828); + client.getPacketSender().sendMessage("You climb up."); + break; + case 4383: + client.getPlayerAssistant().movePlayer(2515, 10007, 0); + client.startAnimation(827); + client.getPacketSender().sendMessage("You climb down."); + break; + case 5131: + client.getPlayerAssistant().movePlayer(3549, 9865, 0); + client.getPacketSender().sendMessage("You climb down."); + break; + case 5130: + client.getPlayerAssistant().movePlayer(3543, 3463, 0); + client.getPacketSender().sendMessage("You climb up."); + break; + case 4413: + client.getPlayerAssistant().movePlayer(2510, 3644, 0); + client.startAnimation(828); + client.getPacketSender().sendMessage("You climb up."); + break; + case 3432: + client.getPlayerAssistant().movePlayer(3440, 9887, 0); + break; + case 1738: + if (client.objectX == 2728 && client.objectY == 3460 + && client.heightLevel == 0) { + client.getPlayerAssistant().movePlayer(2749, 3462, 1); + } else if (client.objectX == 2746 && client.objectY == 3460 + && client.heightLevel == 0) { + client.getPlayerAssistant().movePlayer(2745, 3461, 1); + } else if (client.objectX == 2648 && client.objectY == 3310) { + Climbing.climbUp(client); + } else if (client.objectX == 2673 && client.objectY == 3300) { + client.getPlayerAssistant().movePlayer(2675, 3300, 1); + } else if (client.objectX == 3204 && client.objectY == 3207) { + client.getPlayerAssistant().movePlayer(3205, 3209, 1); + } else if (client.objectX == 3204 && client.objectY == 3229) { + client.getPlayerAssistant().movePlayer(3205, 3228, 1); + } else if (client.objectX == 3258 && client.objectY == 3487) { + client.getPlayerAssistant().movePlayer(3257, 3487, 1); + } else if (client.objectX == 3144 && client.objectY == 3447 && client.playerLevel[client.playerCooking] > 31 && client.playerEquipment[client.playerHat] == 1949) { + client.getPlayerAssistant().movePlayer(3143, 3448, 1); + } else if (client.objectX == 3010 && client.objectY == 3515) { + client.getPlayerAssistant().movePlayer(3012, 3515, 1); + } else if (client.objectX == 2895 && client.objectY == 3513) { + client.getPlayerAssistant().movePlayer(2897, 3513, 1); + } + break; + case 3443: + client.getPlayerAssistant().movePlayer(3423, 3485, 0); + break; + case 1755: + if (client.objectX == 3116 && client.objectY == 9852) { + client.getPlayerAssistant().movePlayer(3116, 3451, 0); + client.startAnimation(CLIMB_UP); + } else if (client.objectX == 3097 && client.objectY == 9867) { + client.getPlayerAssistant().movePlayer(3096, 3468, 0); + client.startAnimation(CLIMB_UP); + } else if (client.objectX == 3237 && client.objectY == 9858) { + client.getPlayerAssistant().movePlayer(3238, 3458, 0); + client.startAnimation(CLIMB_UP); + } else if (client.objectX == 3088 && client.objectY == 9971) { + UseOther.useUp(client, client.objectId); + // client.startAnimation(CLIMB_UP); + } else if (client.objectX == 3209 && client.objectY == 9616) { + // OtherObjects.useUp(client, client.objectId); + client.getPlayerAssistant().movePlayer(3209, 3215, 0); + client.startAnimation(CLIMB_UP); + client.getPacketSender().sendMessage("You climb up."); + } else if (client.objectX == 3019 && client.objectY == 9740) {// noord + client.getPlayerAssistant().movePlayer(3019, 3341, 0); + client.startAnimation(CLIMB_UP); + } else if (client.objectX == 3020 && client.objectY == 9739) {// oost + client.getPlayerAssistant().movePlayer(3021, 3339, 0); + client.startAnimation(CLIMB_UP); + } else if (client.objectX == 3018 && client.objectY == 9739) {// wst + client.getPlayerAssistant().movePlayer(3017, 3339, 0); + client.startAnimation(CLIMB_UP); + } else if (client.objectX == 3019 && client.objectY == 9738) {// zuid + client.getPlayerAssistant().movePlayer(3019, 3337, 0); + client.startAnimation(CLIMB_UP); + } else { + UseOther.useUp(client, client.objectId); + } + break; + + case 2405: + UseOther.useUp(client, client.objectId); + break; + + case 98: + if (client.inWild()) { + return; + } + if (!LightSources.playerHasLightSource(client)) { + client.getPlayerAssistant().movePlayer(2641, 9740, 0); + return; + } else if (LightSources.playerHasLightSource(client)) { + client.getPlayerAssistant().movePlayer(2641, 9764, 0); + return; + } + break; + + case 96: + if (client.inWild()) { + return; + } + LightSources.brightness3(client); + client.getPlayerAssistant().movePlayer(2649, 9804, 0); + break; + + case 2711: + if (client.absY == 3325) { + client.getPlayerAssistant().movePlayer(client.absX, 3321, 1); + } + break; + + case 4755: + if (client.absY == 2797) { + client.getPlayerAssistant().movePlayer(client.absX, 2793, 0); + } + break; + + case 4756: + if (client.absY == 2793) { + client.getPlayerAssistant().movePlayer(client.absX, 2797, 1); + } + break; + + case 4879: + client.getPlayerAssistant().movePlayer(2807, 9200, 0); + client.getPacketSender().sendMessage( + "You go down the trapdoor."); + client.startAnimation(827); + client.getPacketSender().closeAllWindows(); + break; + + case 5492: + if (client.getItemAssistant().playerHasItem(1523, 1) + && Misc.random(4) < 3) { + client.getPlayerAssistant().movePlayer(3149, 9652, 0); + client.getPacketSender().sendMessage( + "You go down the trapdoor."); + client.startAnimation(827); + client.getPlayerAssistant().addSkillXP(.5, + client.playerThieving); + client.getPacketSender().closeAllWindows(); + } else if (!client.getItemAssistant().playerHasItem(1523, 1) + && Misc.random(5) < 2) { + client.getPlayerAssistant().movePlayer(3149, 9652, 0); + client.getPacketSender().sendMessage( + "You go down the trapdoor."); + client.startAnimation(827); + client.getPlayerAssistant().addSkillXP(.5, + client.playerThieving); + client.getPacketSender().closeAllWindows(); + } else if (client.getItemAssistant().playerHasItem(1523, 1) + && Misc.random(4) > 3) { + client.getPacketSender().sendMessage( + "You fail to pick the lock."); + client.getPacketSender() + .sendMessage( + "Your thieving has been drained, your fingers feel numb."); + client.playerLevel[17] = client.getPlayerAssistant() + .getLevelForXP(client.playerXP[17]) - 1; + client.getPlayerAssistant().refreshSkill(17); + client.getItemAssistant().deleteItem(1523, 1); + } else if (!client.getItemAssistant().playerHasItem(1523, 1) + && Misc.random(5) > 2) { + client.getPacketSender().sendMessage( + "You fail to pick the lock."); + client.getPacketSender() + .sendMessage( + "Your thieving has been drained, your fingers feel numb."); + client.playerLevel[17] = client.getPlayerAssistant() + .getLevelForXP(client.playerXP[17]) - 1; + client.getPlayerAssistant().refreshSkill(17); + } + break; + + case 6278: + if (client.objectX == 2637 && client.objectY == 3408) { + UseOther.useDown(client, 6278); + } + break; + + case 11724: + if (client.absX == 2971) { + client.getPlayerAssistant().movePlayer(2968, 3348, 1); + } + break; + + case 11725: + if (client.absY == 3348) { + client.getPlayerAssistant().movePlayer(2971, 3347, 0); + } + break; + + case 1725: + if (client.absX == 3285 || client.absX == 3286 + && client.heightLevel == 0) { + client.getPlayerAssistant().movePlayer(client.absX, 3492, 1); + } else if (client.absY == 3509) { + client.getPlayerAssistant().movePlayer(2751, 3513, 1); + } else if (client.absX == 3226) { + client.getPlayerAssistant().movePlayer(3230, 3394, 1); + } + break; + + case 5096: + client.getPlayerAssistant().movePlayer(2649, 9591, 0); + break; + + case 1726: + if (client.absY == 3513) { + client.getPlayerAssistant().movePlayer(2751, 3509, 0); + } else if (client.absX == 3230) { + client.getPlayerAssistant().movePlayer(3226, 3394, 0); + } else if (client.absX == 3285 || client.absX == 3286 + && client.heightLevel == 1) { + client.getPlayerAssistant().movePlayer(client.absX, 3496, 0); + } + break; + + case 11727: + if (client.absY == 3350 || client.absY == 3351 + || client.absY == 3340 || client.absY == 3341 + || client.absY == 3342) { + climbUp(client); + } + break; + + case 11728: + if (client.absY == 3350 || client.absY == 3351 + || client.absY == 3340 || client.absY == 3341 + || client.absY == 3342) { + climbDown(client); + } + break; + + case 11729: + if (client.objectX == 2954 && client.objectY == 3338) { + client.getPlayerAssistant().movePlayer(2956, 3338, 1); + } else if (client.objectX == 2960 && client.objectY == 3338) { + client.getPlayerAssistant().movePlayer(2959, 3339, 2); + } else if (client.objectX == 2957 && client.objectY == 3338) { + client.getPlayerAssistant().movePlayer(2959, 3338, 3); + } + break; + + case 11731: + if (client.objectX == 2955 && client.objectY == 3338) { + client.getPlayerAssistant().movePlayer(2956, 3338, 0); + } else if (client.objectX == 2960 && client.objectY == 3339) { + client.getPlayerAssistant().movePlayer(2959, 3338, 1); + } else if (client.objectX == 2958 && client.objectY == 3338) { + client.getPlayerAssistant().movePlayer(2957, 3337, 2); + } + break; + + case 11732: + if (client.objectX == 3034 && client.objectY == 3363) { + client.getPlayerAssistant().movePlayer(3036, 3363, 1); + } else if (client.objectX == 3048 && client.objectY == 3352) { + client.getPlayerAssistant().movePlayer(3049, 3354, 1); + } + break; + + case 11733: + if (client.objectX == 3035 && client.objectY == 3363) { + client.getPlayerAssistant().movePlayer(3036, 3362, 0); + } else if (client.objectX == 3049 && client.objectY == 3353) { + client.getPlayerAssistant().movePlayer(3049, 3354, 0); + } + break; + + case 11734: + if (client.absY == 3336) { + client.getPlayerAssistant().movePlayer(2984, 3340, 2); + } else if (client.absY == 3380) { + client.getPlayerAssistant().movePlayer(client.absX, 3384, 1); + } + break; + + case 11735: + if (client.absY == 3340) { + client.getPlayerAssistant().movePlayer(2984, 3336, 1); + } else if (client.absY == 3384) { + client.getPlayerAssistant().movePlayer(client.absX, 3380, 0); + } + break; + + case 11736: + if (client.absY == 3368) { + client.getPlayerAssistant().movePlayer(client.absX, 3372, 1); + } else if (client.absY == 3362) { + client.getPlayerAssistant().movePlayer(client.absX, 3366, 1); + } + break; + + case 11737: + if (client.absY == 3366) { + client.getPlayerAssistant().movePlayer(client.absX, 3362, 0); + } else { + client.getPlayerAssistant().movePlayer(client.absX, 3368, 0); + } + break; + + case 12266: + if (client.objectX == 3077 && client.objectY == 3493) { + client.getPlayerAssistant().movePlayer(3077, 9893, 0); + client.startAnimation(827); + client.getPacketSender().sendMessage("You climb down."); + } + break; + + case 12265: + if (client.objectX == 3076 && client.objectY == 9893) { + client.getPlayerAssistant().movePlayer(3078, 3493, 0); + client.startAnimation(828); + client.getPacketSender().sendMessage("You climb up."); + } + break; + } + } + + public static void climbUp(Player player) { + if (System.currentTimeMillis() - player.climbDelay < 1200) { + return; + } + + switch (player.heightLevel) { + case -1: + player.getPlayerAssistant().movePlayer(player.absX, player.absY, 0); + player.climbDelay = System.currentTimeMillis(); + player.getPacketSender().sendMessage("You climb up."); + player.startAnimation(CLIMB_UP); + player.getPacketSender().closeAllWindows(); + break; + case 0: + player.getPlayerAssistant().movePlayer(player.absX, player.absY, 1); + player.climbDelay = System.currentTimeMillis(); + player.getPacketSender().sendMessage("You climb up."); + player.startAnimation(CLIMB_UP); + player.getPacketSender().closeAllWindows(); + break; + case 1: + player.getPlayerAssistant().movePlayer(player.absX, player.absY, 2); + player.climbDelay = System.currentTimeMillis(); + player.getPacketSender().sendMessage("You climb up."); + player.startAnimation(CLIMB_UP); + player.getPacketSender().closeAllWindows(); + break; + case 2: + player.getPlayerAssistant().movePlayer(player.absX, player.absY, 3); + player.climbDelay = System.currentTimeMillis(); + player.getPacketSender().sendMessage("You climb up."); + player.startAnimation(CLIMB_UP); + player.getPacketSender().closeAllWindows(); + break; + default: + if (player.heightLevel > 3) { + climbDown(player); + } + player.getPacketSender().sendMessage("This object is currently not supported."); + System.out.println("Bug detected with climbing up object " + player.objectId + " objectX " + player.objectX + " objectY " + player.objectY + "."); + break; + } + } + + public static void climbDown(Player player) { + if (System.currentTimeMillis() - player.climbDelay < 1200) { + return; + } + if (player.heightLevel > 3) { + player.getPlayerAssistant().movePlayer(player.absX, player.absY, 3); + player.climbDelay = System.currentTimeMillis(); + player.getPacketSender().sendMessage("You climb down."); + player.startAnimation(CLIMB_DOWN); + player.getPacketSender().closeAllWindows(); + } + switch (player.heightLevel) { + case 1: + player.getPlayerAssistant().movePlayer(player.absX, player.absY, 0); + player.climbDelay = System.currentTimeMillis(); + player.getPacketSender().sendMessage("You climb down."); + player.startAnimation(CLIMB_DOWN); + player.getPacketSender().closeAllWindows(); + break; + case 2: + player.getPlayerAssistant().movePlayer(player.absX, player.absY, 1); + player.climbDelay = System.currentTimeMillis(); + player.getPacketSender().sendMessage("You climb down."); + player.startAnimation(CLIMB_DOWN); + player.getPacketSender().closeAllWindows(); + break; + case 3: + player.getPlayerAssistant().movePlayer(player.absX, player.absY, 2); + player.climbDelay = System.currentTimeMillis(); + player.getPacketSender().sendMessage("You climb down."); + player.startAnimation(CLIMB_DOWN); + player.getPacketSender().closeAllWindows(); + break; + default: + if (player.heightLevel < 0) { + climbUp(player); + } + player.getPacketSender().sendMessage("This object is currently not supported."); + System.out.println("Bug detected with climbing down object " + player.objectId + " objectX " + player.objectX + " objectY " + player.objectY + "."); + break; + } + } + + public static void handleLadder(Player player) { + player.getDialogueHandler().sendOption2("Climb Up.", "Climb Down."); + player.dialogueAction = 147; + } + + private static void close(Player client, int actionButtonId) { + if (actionButtonId == 9157) { + client.getPacketSender().sendMessage("You climb up."); + client.startAnimation(CLIMB_UP); + } else if (actionButtonId == 9158) { + client.getPacketSender().sendMessage("You climb down."); + client.startAnimation(827); + } + client.getPacketSender().closeAllWindows(); + client.nextChat = 0; + } + + public static void handleLadderButtons(Player client, int actionButtonId) { + if (client.dialogueAction != 147) { + return; + } + switch (actionButtonId) { + case 9157: + if (client.heightLevel == 1) { + client.getPlayerAssistant().movePlayer(client.absX, client.absY, 2); + close(client, actionButtonId); + } else if (client.heightLevel == 2) { + client.getPlayerAssistant().movePlayer(client.absX, client.absY, 3); + close(client, actionButtonId); + } + break; + case 9158: + if (client.heightLevel == 2) { + client.getPlayerAssistant().movePlayer(client.absX, client.absY, 1); + close(client, actionButtonId); + } else if (client.heightLevel == 1) { + client.getPlayerAssistant().movePlayer(client.absX, client.absY, 0); + close(client, actionButtonId); + } + break; + } + } } \ No newline at end of file diff --git a/2006Redone Server/src/redone/game/objects/impl/CrystalChest.java b/2006Redone Server/src/com/rebotted/game/objects/impl/CrystalChest.java similarity index 69% rename from 2006Redone Server/src/redone/game/objects/impl/CrystalChest.java rename to 2006Redone Server/src/com/rebotted/game/objects/impl/CrystalChest.java index 1982f22a..20d8ffd2 100644 --- a/2006Redone Server/src/redone/game/objects/impl/CrystalChest.java +++ b/2006Redone Server/src/com/rebotted/game/objects/impl/CrystalChest.java @@ -1,75 +1,75 @@ -package redone.game.objects.impl; - -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.players.Client; -import redone.util.Misc; - -public class CrystalChest { - - private static final int[] CHEST_REWARDS = { 1079, 1093, 526, 1969, 371, - 2363, 451 }; - public static final int[] KEY_HALVES = { 985, 987 }; - public static final int KEY = 989; - private static final int DRAGONSTONE = 1631; - private static final int OPEN_ANIMATION = 881; - - public static void makeKey(Client c) { - if (c.getItemAssistant().playerHasItem(toothHalf(), 1) - && c.getItemAssistant().playerHasItem(loopHalf(), 1)) { - c.getItemAssistant().deleteItem(toothHalf(), 1); - c.getItemAssistant().deleteItem(loopHalf(), 1); - c.getItemAssistant().addItem(KEY, 1); - } - } - - public static boolean canOpen(Client c) { - if (c.getItemAssistant().playerHasItem(KEY)) { - return true; - } else { - c.getActionSender().sendMessage("The chest is locked"); - return false; - } - } - - public static void searchChest(final Client c, final int id, final int x, - final int y) { - if (canOpen(c)) { - c.getActionSender().sendMessage( - "You unlock the chest with your key."); - c.getItemAssistant().deleteItem(KEY, 1); - c.startAnimation(OPEN_ANIMATION); - c.getActionSender().checkObjectSpawn(id + 1, x, y, 2, 10); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - c.getItemAssistant().addItem(DRAGONSTONE, 1); - c.getItemAssistant().addItem(995, Misc.random(8230)); - c.getItemAssistant().addItem( - CHEST_REWARDS[Misc.random(getLength() - 1)], 1); - c.getActionSender().sendMessage( - "You find some treasure in the chest."); - c.getActionSender().checkObjectSpawn(id, x, y, 2, 10); - container.stop(); - } - @Override - public void stop() { - - } - }, 3); - } - } - - public static int getLength() { - return CHEST_REWARDS.length; - } - - public static int toothHalf() { - return KEY_HALVES[0]; - } - - public static int loopHalf() { - return KEY_HALVES[1]; - } -} +package com.rebotted.game.objects.impl; + +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +public class CrystalChest { + + private static final int[] CHEST_REWARDS = { 1079, 1093, 526, 1969, 371, + 2363, 451 }; + public static final int[] KEY_HALVES = { 985, 987 }; + public static final int KEY = 989; + private static final int DRAGONSTONE = 1631; + private static final int OPEN_ANIMATION = 881; + + public static void makeKey(Player c) { + if (c.getItemAssistant().playerHasItem(toothHalf(), 1) + && c.getItemAssistant().playerHasItem(loopHalf(), 1)) { + c.getItemAssistant().deleteItem(toothHalf(), 1); + c.getItemAssistant().deleteItem(loopHalf(), 1); + c.getItemAssistant().addItem(KEY, 1); + } + } + + public static boolean canOpen(Player c) { + if (c.getItemAssistant().playerHasItem(KEY)) { + return true; + } else { + c.getPacketSender().sendMessage("The chest is locked"); + return false; + } + } + + public static void searchChest(final Player c, final int id, final int x, + final int y) { + if (canOpen(c)) { + c.getPacketSender().sendMessage( + "You unlock the chest with your key."); + c.getItemAssistant().deleteItem(KEY, 1); + c.startAnimation(OPEN_ANIMATION); + c.getPacketSender().checkObjectSpawn(id + 1, x, y, 2, 10); + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + c.getItemAssistant().addItem(DRAGONSTONE, 1); + c.getItemAssistant().addItem(995, Misc.random(8230)); + c.getItemAssistant().addItem( + CHEST_REWARDS[Misc.random(getLength() - 1)], 1); + c.getPacketSender().sendMessage( + "You find some treasure in the chest."); + c.getPacketSender().checkObjectSpawn(id, x, y, 2, 10); + container.stop(); + } + @Override + public void stop() { + + } + }, 3); + } + } + + public static int getLength() { + return CHEST_REWARDS.length; + } + + public static int toothHalf() { + return KEY_HALVES[0]; + } + + public static int loopHalf() { + return KEY_HALVES[1]; + } +} diff --git a/2006Redone Server/src/redone/game/objects/impl/FlourMill.java b/2006Redone Server/src/com/rebotted/game/objects/impl/FlourMill.java similarity index 60% rename from 2006Redone Server/src/redone/game/objects/impl/FlourMill.java rename to 2006Redone Server/src/com/rebotted/game/objects/impl/FlourMill.java index 989ead66..0bf7ecc2 100644 --- a/2006Redone Server/src/redone/game/objects/impl/FlourMill.java +++ b/2006Redone Server/src/com/rebotted/game/objects/impl/FlourMill.java @@ -1,116 +1,116 @@ -package redone.game.objects.impl; - -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.players.Client; -import redone.world.clip.Region; - -/** - * @author darkside1222 - */ - -public class FlourMill { - - public final static int EMPTY_POT = 1931, POT_OF_FLOUR = 1933, - GRAIN = 1947, EMPTY_FLOUR_BIN = 1781, FULL_FLOUR_BIN = 1782; - /** - * Limits the amount of flour. (RS-Limit = 30) - */ - public static int LIMIT = 30; - - /** - * Item on object.(Use grain on hopper) - * - * @param c - */ - public static void grainOnHopper(Client c, int objectID, int itemId) { - if (itemId == GRAIN) { - // Grain amount - flour amount. Prevents putting more than 30 - if (c.grain == LIMIT - c.flourAmount || c.flourAmount == LIMIT) { - c.getActionSender().sendMessage( - "You can't put anymore grain into the hopper."); - return; - } - c.startAnimation(832); - c.getItemAssistant().deleteItem(GRAIN, 1); - c.grain++;// + 1 - c.getActionSender().sendMessage( - "You put the grain in the hopper."); - } else { - c.getActionSender().sendMessage("Nothing interesting happens."); - } - } - - /** - * When player operates the lever. - * - * @param c - */ - public static void hopperControl(final Client c) { - if (c.grain > 0) { - if (c.flourAmount == LIMIT) { - c.getActionSender().sendMessage( - "There is currently too much grain in the hopper."); - return; - } - c.getActionSender().sendMessage( - "You operate the hopper. The grain slides down the chute."); - c.startAnimation(832); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (c.heightLevel == 2) { - return; - } - if (c.heightLevel == 0) { - c.getActionSender().object(FULL_FLOUR_BIN, 3166, 3306, 0, 10); - Region.addObject(FULL_FLOUR_BIN, 3166, 3306, 0, 10, 0, false); - container.stop(); - } - } - @Override - public void stop() { - - } - }, 1); - c.flourAmount += c.grain; - if (c.flourAmount > LIMIT) { - c.flourAmount = LIMIT;// Flour amount returns to limit. - } - c.grain = 0; - } else { - c.startAnimation(832); - c.getActionSender().sendMessage( - "You operate the hopper. Nothing interesting happens."); - } - } - - /** - * Emptys the flour bin... - * - * @param c - */ - public static void emptyFlourBin(Client c) { - if (c.getItemAssistant().playerHasItem(EMPTY_POT, 1) - && c.flourAmount > 0) { - c.getItemAssistant().deleteItem(EMPTY_POT, 1); - c.getItemAssistant().addItem(POT_OF_FLOUR, 1); - c.getActionSender().sendMessage( - "You fill a pot with flour from the bin."); - c.flourAmount--; - if (c.flourAmount < 0) { - c.flourAmount = 0; - } - if (c.flourAmount == 0) { - c.getActionSender().object(EMPTY_FLOUR_BIN, 3166, 3306, 0, 10); - Region.addObject(EMPTY_FLOUR_BIN, 3166, 3306, 0, 10, 0, false); - c.getActionSender().sendMessage( - "The flour bin is now empty."); - } - } else { - c.getActionSender().sendMessage( - "You don't have an empty pot to fill flour with."); - } - } -} +package com.rebotted.game.objects.impl; + +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.players.Player; +import com.rebotted.world.clip.Region; + +/** + * @author darkside1222 + */ + +public class FlourMill { + + public final static int EMPTY_POT = 1931, POT_OF_FLOUR = 1933, + GRAIN = 1947, EMPTY_FLOUR_BIN = 1781, FULL_FLOUR_BIN = 1782; + /** + * Limits the amount of flour. (RS-Limit = 30) + */ + public static int LIMIT = 30; + + /** + * Item on object.(Use grain on hopper) + * + * @param c + */ + public static void grainOnHopper(Player c, int objectID, int itemId) { + if (itemId == GRAIN) { + // Grain amount - flour amount. Prevents putting more than 30 + if (c.grain == LIMIT - c.flourAmount || c.flourAmount == LIMIT) { + c.getPacketSender().sendMessage( + "You can't put anymore grain into the hopper."); + return; + } + c.startAnimation(832); + c.getItemAssistant().deleteItem(GRAIN, 1); + c.grain++;// + 1 + c.getPacketSender().sendMessage( + "You put the grain in the hopper."); + } else { + c.getPacketSender().sendMessage("Nothing interesting happens."); + } + } + + /** + * When player operates the lever. + * + * @param c + */ + public static void hopperControl(final Player c) { + if (c.grain > 0) { + if (c.flourAmount == LIMIT) { + c.getPacketSender().sendMessage( + "There is currently too much grain in the hopper."); + return; + } + c.getPacketSender().sendMessage( + "You operate the hopper. The grain slides down the chute."); + c.startAnimation(832); + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (c.heightLevel == 2) { + return; + } + if (c.heightLevel == 0) { + c.getPacketSender().object(FULL_FLOUR_BIN, 3166, 3306, 0, 10); + Region.addObject(FULL_FLOUR_BIN, 3166, 3306, 0, 10, 0, false); + container.stop(); + } + } + @Override + public void stop() { + + } + }, 1); + c.flourAmount += c.grain; + if (c.flourAmount > LIMIT) { + c.flourAmount = LIMIT;// Flour amount returns to limit. + } + c.grain = 0; + } else { + c.startAnimation(832); + c.getPacketSender().sendMessage( + "You operate the hopper. Nothing interesting happens."); + } + } + + /** + * Emptys the flour bin... + * + * @param player + */ + public static void emptyFlourBin(Player player) { + if (player.getItemAssistant().playerHasItem(EMPTY_POT, 1) + && player.flourAmount > 0) { + player.getItemAssistant().deleteItem(EMPTY_POT, 1); + player.getItemAssistant().addItem(POT_OF_FLOUR, 1); + player.getPacketSender().sendMessage( + "You fill a pot with flour from the bin."); + player.flourAmount--; + if (player.flourAmount < 0) { + player.flourAmount = 0; + } + if (player.flourAmount == 0) { + player.getPacketSender().object(EMPTY_FLOUR_BIN, 3166, 3306, 0, 10); + Region.addObject(EMPTY_FLOUR_BIN, 3166, 3306, 0, 10, 0, false); + player.getPacketSender().sendMessage( + "The flour bin is now empty."); + } + } else { + player.getPacketSender().sendMessage( + "You don't have an empty pot to fill flour with."); + } + } +} diff --git a/2006Redone Server/src/redone/game/objects/impl/Levers.java b/2006Redone Server/src/com/rebotted/game/objects/impl/Levers.java similarity index 72% rename from 2006Redone Server/src/redone/game/objects/impl/Levers.java rename to 2006Redone Server/src/com/rebotted/game/objects/impl/Levers.java index 01809321..0ed794a6 100644 --- a/2006Redone Server/src/redone/game/objects/impl/Levers.java +++ b/2006Redone Server/src/com/rebotted/game/objects/impl/Levers.java @@ -1,53 +1,53 @@ -package redone.game.objects.impl; - -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.players.Client; -import redone.world.clip.ObjectDef; - -/** - * Levers - * @author Andrew (I'm A Boss on Rune-Server and Mr Extremez on Mopar & Runelocus) - */ - -public class Levers { - - /** - * ObjectX, ObjectY, PlayerX, PlayerY - */ - private final static int[][] LEVERS = { - {3090, 3956, 2539, 4712}, {2539, 4712, 3090, 3956}, {2271, 4680, 3067, 10253}, - {3067, 10253, 2271, 4680}, {3153, 3923, 2561, 3311}, {2561, 3311, 3153, 3923} - }; - - public static void pullLever(final Client player, int objectType) { - String objectName = ObjectDef.getObjectDef(objectType).name; - for (final int[] element : LEVERS) { - if (player.objectX == element[0] && player.objectY == element[1] && objectName.equalsIgnoreCase("Lever")) { - if (System.currentTimeMillis() - player.leverDelay > 3750) { - player.leverDelay = System.currentTimeMillis(); - player.stopPlayerPacket = true; - player.getActionSender().sendMessage("You pull the lever..."); - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (player.wildLevel > 20) { - player.getPlayerAssistant().startTeleport2(element[2], element[3], 0); - container.stop(); - } else { - player.getPlayerAssistant().startTeleport(element[2], element[3], 0, "modern"); - container.stop(); - } - } - @Override - public void stop() { - player.stopPlayerPacket = false; - } - }, 1); - } - } - } - } - -} +package com.rebotted.game.objects.impl; + +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.players.Player; +import com.rebotted.world.clip.ObjectDef; + +/** + * Levers + * @author Andrew (Mr Extremez) + */ + +public class Levers { + + /** + * ObjectX, ObjectY, PlayerX, PlayerY + */ + private final static int[][] LEVERS = { + {3090, 3956, 2539, 4712}, {2539, 4712, 3090, 3956}, {2271, 4680, 3067, 10253}, + {3067, 10253, 2271, 4680}, {3153, 3923, 2561, 3311}, {2561, 3311, 3153, 3923} + }; + + public static void pullLever(final Player player, int objectType) { + String objectName = ObjectDef.getObjectDef(objectType).name; + for (final int[] element : LEVERS) { + if (player.objectX == element[0] && player.objectY == element[1] && objectName.equalsIgnoreCase("Lever")) { + if (System.currentTimeMillis() - player.leverDelay > 3750) { + player.leverDelay = System.currentTimeMillis(); + player.stopPlayerPacket = true; + player.getPacketSender().sendMessage("You pull the lever..."); + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (player.wildLevel > 20) { + player.getPlayerAssistant().startTeleport2(element[2], element[3], 0); + container.stop(); + } else { + player.getPlayerAssistant().startTeleport(element[2], element[3], 0, "modern"); + container.stop(); + } + } + @Override + public void stop() { + player.stopPlayerPacket = false; + } + }, 1); + } + } + } + } + +} diff --git a/2006Redone Server/src/redone/game/objects/impl/OtherObjects.java b/2006Redone Server/src/com/rebotted/game/objects/impl/OtherObjects.java similarity index 84% rename from 2006Redone Server/src/redone/game/objects/impl/OtherObjects.java rename to 2006Redone Server/src/com/rebotted/game/objects/impl/OtherObjects.java index 0c9a1afc..3d137655 100644 --- a/2006Redone Server/src/redone/game/objects/impl/OtherObjects.java +++ b/2006Redone Server/src/com/rebotted/game/objects/impl/OtherObjects.java @@ -1,150 +1,150 @@ -package redone.game.objects.impl; - -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.objects.ObjectDefaults; -import redone.game.players.Client; -import redone.util.Misc; -import redone.world.clip.ObjectDef; - -public class OtherObjects { - - private final static int[] SPECIAL_OBJECTS = {160, 155, 156, 298, 299, 300, 304, 1181, 5253, 5254, 5255, 5256, 5257, 5258}; - - public static void searchSpecialObject(Client player, int objectType) { - for (int i = 0; i < SPECIAL_OBJECTS.length; i++) { - if (objectType == SPECIAL_OBJECTS[i]) { - if (System.currentTimeMillis() - player.searchObjectDelay < 1200 || objectType == 160 && player.absX != 3096 || objectType > 154 && objectType < 157 && player.absX != 3098 || player.absY == 3301) { - return; - } - player.stopPlayerPacket = true; - player.searchObjectDelay = System.currentTimeMillis(); - handleSpecialObject(player, objectType); - } - } - } - - private static void object(Client player, int id, int x, int y) { - player.getActionSender().object(id, x, y, 0, ObjectDefaults.getObjectFace(player, id), 10); - } - - private static void handleSpecialObject(final Client player, final int objectType) { - String objectName = ObjectDef.getObjectDef(objectType).name; - if (objectType == 160 && player.absX == 3096) { - player.getPlayerAssistant().walkTo(0, 1); - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - player.getPlayerAssistant().movePlayer(3098, player.absY, 0); - container.stop(); - } - @Override - public void stop() { - - } - }, 2); - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - object(player, -1, 3097, 3358); - object(player, -1, 3097, 3359); - container.stop(); - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - object(player, -1, 3097, 3357); - object(player, -1, 3097, 3360); - container.stop(); - } - @Override - public void stop() { - object(player, 155, 3097, 3358); - object(player, 156, 3097, 3359); - player.stopPlayerPacket = false; - } - }, 2); - } - @Override - public void stop() { - object(player, 155, 3097, 3357); - object(player, 156, 3097, 3360); - } - }, 1); - } else if (objectType > 154 && objectType < 157 && player.absX == 3098) { - player.getPlayerAssistant().walkTo(-2, 0); - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - object(player, -1, 3097, 3358); - object(player, -1, 3097, 3359); - container.stop(); - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - object(player, -1, 3097, 3357); - object(player, -1, 3097, 3360); - container.stop(); - } - @Override - public void stop() { - object(player, 155, 3097, 3358); - object(player, 156, 3097, 3359); - player.stopPlayerPacket = false; - } - }, 2); - } - @Override - public void stop() { - object(player, 155, 3097, 3357); - object(player, 156, 3097, 3360); - } - }, 1); - } else if (objectName.contains("Nettles")) { - int nettlesDamage = 1 + Misc.random(1); - if (player.playerEquipment[player.playerHands] > 0) { - player.startAnimation(827); - player.getItemAssistant().addItem(4241, 1); - player.stopPlayerPacket = false; - } else { - player.setHitUpdateRequired2(true); - player.setHitDiff2(nettlesDamage); - player.updateRequired = true; - player.poisonMask = 2; - player.dealDamage(nettlesDamage); - player.getPlayerAssistant().refreshSkill(3); - player.getActionSender().sendMessage("You have been stung by the nettles."); - player.stopPlayerPacket = false; - } - } else if (objectName.startsWith("Hay") || objectName.startsWith("hay")) { - final int damage = 1, random = Misc.random(15); - player.startAnimation(832); - player.getActionSender().sendMessage("You search the " + objectName.toLowerCase() + "..."); - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (random == 1) { - player.getDialogueHandler().sendStatement2("Wow! A needle!", "Now what are the chances of finding that?"); - player.nextChat = 0; - player.getItemAssistant().addItem(1733, 1); - container.stop(); - } else if (random == 9) { - player.handleHitMask(damage); - player.dealDamage(damage); - player.getPlayerAssistant().refreshSkill(3); - container.stop(); - } else { - player.getActionSender().sendMessage("You find nothing of interest."); - container.stop(); - } - } - - @Override - public void stop() { - player.stopPlayerPacket = false; - } - }, 2); - } - } - -} +package com.rebotted.game.objects.impl; + +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.objects.ObjectDefaults; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; +import com.rebotted.world.clip.ObjectDef; + +public class OtherObjects { + + private final static int[] SPECIAL_OBJECTS = {160, 155, 156, 298, 299, 300, 304, 1181, 5253, 5254, 5255, 5256, 5257, 5258}; + + public static void searchSpecialObject(Player player, int objectType) { + for (int i = 0; i < SPECIAL_OBJECTS.length; i++) { + if (objectType == SPECIAL_OBJECTS[i]) { + if (System.currentTimeMillis() - player.searchObjectDelay < 1200 || objectType == 160 && player.absX != 3096 || objectType > 154 && objectType < 157 && player.absX != 3098 || player.absY == 3301) { + return; + } + player.stopPlayerPacket = true; + player.searchObjectDelay = System.currentTimeMillis(); + handleSpecialObject(player, objectType); + } + } + } + + private static void object(Player player, int id, int x, int y) { + player.getPacketSender().object(id, x, y, 0, ObjectDefaults.getObjectFace(player, id), 10); + } + + private static void handleSpecialObject(final Player player, final int objectType) { + String objectName = ObjectDef.getObjectDef(objectType).name; + if (objectType == 160 && player.absX == 3096) { + player.getPlayerAssistant().walkTo(0, 1); + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + player.getPlayerAssistant().movePlayer(3098, player.absY, 0); + container.stop(); + } + @Override + public void stop() { + + } + }, 2); + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + object(player, -1, 3097, 3358); + object(player, -1, 3097, 3359); + container.stop(); + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + object(player, -1, 3097, 3357); + object(player, -1, 3097, 3360); + container.stop(); + } + @Override + public void stop() { + object(player, 155, 3097, 3358); + object(player, 156, 3097, 3359); + player.stopPlayerPacket = false; + } + }, 2); + } + @Override + public void stop() { + object(player, 155, 3097, 3357); + object(player, 156, 3097, 3360); + } + }, 1); + } else if (objectType > 154 && objectType < 157 && player.absX == 3098) { + player.getPlayerAssistant().walkTo(-2, 0); + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + object(player, -1, 3097, 3358); + object(player, -1, 3097, 3359); + container.stop(); + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + object(player, -1, 3097, 3357); + object(player, -1, 3097, 3360); + container.stop(); + } + @Override + public void stop() { + object(player, 155, 3097, 3358); + object(player, 156, 3097, 3359); + player.stopPlayerPacket = false; + } + }, 2); + } + @Override + public void stop() { + object(player, 155, 3097, 3357); + object(player, 156, 3097, 3360); + } + }, 1); + } else if (objectName.contains("Nettles")) { + int nettlesDamage = 1 + Misc.random(1); + if (player.playerEquipment[player.playerHands] > 0) { + player.startAnimation(827); + player.getItemAssistant().addItem(4241, 1); + player.stopPlayerPacket = false; + } else { + player.setHitUpdateRequired2(true); + player.setHitDiff2(nettlesDamage); + player.updateRequired = true; + player.poisonMask = 2; + player.dealDamage(nettlesDamage); + player.getPlayerAssistant().refreshSkill(3); + player.getPacketSender().sendMessage("You have been stung by the nettles."); + player.stopPlayerPacket = false; + } + } else if (objectName.startsWith("Hay") || objectName.startsWith("hay")) { + final int damage = 1, random = Misc.random(15); + player.startAnimation(832); + player.getPacketSender().sendMessage("You search the " + objectName.toLowerCase() + "..."); + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (random == 1) { + player.getDialogueHandler().sendStatement2("Wow! A needle!", "Now what are the chances of finding that?"); + player.nextChat = 0; + player.getItemAssistant().addItem(1733, 1); + container.stop(); + } else if (random == 9) { + player.handleHitMask(damage); + player.dealDamage(damage); + player.getPlayerAssistant().refreshSkill(3); + container.stop(); + } else { + player.getPacketSender().sendMessage("You find nothing of interest."); + container.stop(); + } + } + + @Override + public void stop() { + player.stopPlayerPacket = false; + } + }, 2); + } + } + +} diff --git a/2006Redone Server/src/redone/game/objects/impl/Pickable.java b/2006Redone Server/src/com/rebotted/game/objects/impl/Pickable.java similarity index 64% rename from 2006Redone Server/src/redone/game/objects/impl/Pickable.java rename to 2006Redone Server/src/com/rebotted/game/objects/impl/Pickable.java index ed8686db..74a3cde8 100644 --- a/2006Redone Server/src/redone/game/objects/impl/Pickable.java +++ b/2006Redone Server/src/com/rebotted/game/objects/impl/Pickable.java @@ -1,67 +1,67 @@ -package redone.game.objects.impl; - -import redone.Server; -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.content.music.sound.SoundList; -import redone.game.players.Client; - -/** - * Pickables - * @author Andrew (I'm A Boss on Rune-Server and Mr Extremez on Mopar & Runelocus) - */ - -public class Pickable { - - private final static int[][] PICKABLE_ITEMS = { - { 1161, 1965 }, // Cabbage - { 2646, 1779 }, // Flax - { 313, 1947 }, // Wheat - { 5585, 1947 }, { 5584, 1947 }, { 5585, 1947 }, { 312, 1942 }, // Potato - { 3366, 1957 }, // Onion - }; - - public static void pickObject(final Client player, final int objectType, final int objectX, final int objectY) { - if (player.miscTimer + 1800 > System.currentTimeMillis()) { - return; - } - for (int[] data : PICKABLE_ITEMS) { - final int objectId = data[0]; - int itemId = data[1]; - if (objectType == objectId) { - player.getItemAssistant().addItem(itemId, 1); - break; - } - } - if (player.getItemAssistant().freeSlots() > 0) { - player.turnPlayerTo(objectX, objectY); - player.startAnimation(827); - if (objectType == 2646 && random(3) == 0 || objectType != 2646) { - if (player.outStream != null) { - Server.objectHandler.createAnObject(player, -1, objectX, objectY); - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - container.stop(); - } - @Override - public void stop() { - if (player.outStream != null) { - Server.objectHandler.createAnObject(player,objectType, objectX, objectY); - } - } - }, 5); - } - } - player.getActionSender().sendSound(SoundList.PICKABLE, 100, 1); - player.miscTimer = System.currentTimeMillis(); - } else { - player.getActionSender().sendMessage("Your inventory is too full to hold any more items!"); - } - } - - private static int random(int range) { - return (int) (java.lang.Math.random() * (range + 1)); - } -} +package com.rebotted.game.objects.impl; + +import com.rebotted.GameEngine; +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.content.music.sound.SoundList; +import com.rebotted.game.players.Player; + +/** + * Pickables + * @author Andrew (Mr Extremez) + */ + +public class Pickable { + + private final static int[][] PICKABLE_ITEMS = { + { 1161, 1965 }, // Cabbage + { 2646, 1779 }, // Flax + { 313, 1947 }, // Wheat + { 5585, 1947 }, { 5584, 1947 }, { 5585, 1947 }, { 312, 1942 }, // Potato + { 3366, 1957 }, // Onion + }; + + public static void pickObject(final Player player, final int objectType, final int objectX, final int objectY) { + if (player.miscTimer + 1800 > System.currentTimeMillis()) { + return; + } + for (int[] data : PICKABLE_ITEMS) { + final int objectId = data[0]; + int itemId = data[1]; + if (objectType == objectId) { + player.getItemAssistant().addItem(itemId, 1); + break; + } + } + if (player.getItemAssistant().freeSlots() > 0) { + player.turnPlayerTo(objectX, objectY); + player.startAnimation(827); + if (objectType == 2646 && random(3) == 0 || objectType != 2646) { + if (player.outStream != null) { + GameEngine.objectHandler.createAnObject(-1, objectX, objectY); + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + container.stop(); + } + @Override + public void stop() { + if (player.outStream != null) { + GameEngine.objectHandler.createAnObject(objectType, objectX, objectY); + } + } + }, 5); + } + } + player.getPacketSender().sendSound(SoundList.PICKABLE, 100, 1); + player.miscTimer = System.currentTimeMillis(); + } else { + player.getPacketSender().sendMessage("Your inventory is too full to hold any more items!"); + } + } + + private static int random(int range) { + return (int) (java.lang.Math.random() * (range + 1)); + } +} diff --git a/2006Redone Server/src/redone/game/objects/impl/Searching.java b/2006Redone Server/src/com/rebotted/game/objects/impl/Searching.java similarity index 83% rename from 2006Redone Server/src/redone/game/objects/impl/Searching.java rename to 2006Redone Server/src/com/rebotted/game/objects/impl/Searching.java index e03e8a21..57d4c217 100644 --- a/2006Redone Server/src/redone/game/objects/impl/Searching.java +++ b/2006Redone Server/src/com/rebotted/game/objects/impl/Searching.java @@ -1,42 +1,42 @@ -package redone.game.objects.impl; - -import redone.game.players.Client; - -public class Searching { - - private enum SearchData { - BOXES(new int[] {359, 361, 9536, 12545}, "There is nothing interesting in these boxes."), - CRATES(new int[] {354, 355, 356, 357, 358, 366, 4714, 4715, 4716, 4717, 4718, 4719, 4721, 4722, 4723, 9533, 9534, 9535, 11485, 11486, 12548, 12547}, "You search the crate but find nothing."), - SACKS(new int[] {365}, "There is nothing interesting in these sacks."), - BOOKCASE(new int[] {380, 381, 4617, 4671, 9611}, "The bookcase is empty."), - WARDROBE(new int[] {389}, "The wardrobe is empty."), - DRAWER(new int[] {348, 350, 5618}, "The drawer is empty."), - CHEST(new int[] {378}, "The chest is empty."); - - private final int[] objectId; - private final String searchText; - - private SearchData(int[] objectId, String searchText) { - this.objectId = objectId; - this.searchText = searchText; - } - - private int[] getObjectId() { - return objectId; - } - private String getObjectText() { - return searchText; - } - } - - public static void searchObject(final Client player, int objectType) { - for (SearchData s: SearchData.values()) { - for (int i = 0; i < s.getObjectId().length; i++) { - if (objectType == s.getObjectId()[i]) { - player.searchObjectDelay = System.currentTimeMillis(); - player.getActionSender().sendMessage(s.getObjectText()); - } - } - } - } -} +package com.rebotted.game.objects.impl; + +import com.rebotted.game.players.Player; + +public class Searching { + + private enum SearchData { + BOXES(new int[] {359, 361, 9536, 12545}, "There is nothing interesting in these boxes."), + CRATES(new int[] {354, 355, 356, 357, 358, 366, 4714, 4715, 4716, 4717, 4718, 4719, 4721, 4722, 4723, 9533, 9534, 9535, 11485, 11486, 12548, 12547}, "You search the crate but find nothing."), + SACKS(new int[] {365}, "There is nothing interesting in these sacks."), + BOOKCASE(new int[] {380, 381, 4617, 4671, 9611}, "The bookcase is empty."), + WARDROBE(new int[] {389}, "The wardrobe is empty."), + DRAWER(new int[] {348, 350, 5618}, "The drawer is empty."), + CHEST(new int[] {378}, "The chest is empty."); + + private final int[] objectId; + private final String searchText; + + private SearchData(int[] objectId, String searchText) { + this.objectId = objectId; + this.searchText = searchText; + } + + private int[] getObjectId() { + return objectId; + } + private String getObjectText() { + return searchText; + } + } + + public static void searchObject(final Player player, int objectType) { + for (SearchData s: SearchData.values()) { + for (int i = 0; i < s.getObjectId().length; i++) { + if (objectType == s.getObjectId()[i]) { + player.searchObjectDelay = System.currentTimeMillis(); + player.getPacketSender().sendMessage(s.getObjectText()); + } + } + } + } +} diff --git a/2006Redone Server/src/redone/game/objects/impl/SpecialObjects.java b/2006Redone Server/src/com/rebotted/game/objects/impl/SpecialObjects.java similarity index 56% rename from 2006Redone Server/src/redone/game/objects/impl/SpecialObjects.java rename to 2006Redone Server/src/com/rebotted/game/objects/impl/SpecialObjects.java index d643a6b7..77fae252 100644 --- a/2006Redone Server/src/redone/game/objects/impl/SpecialObjects.java +++ b/2006Redone Server/src/com/rebotted/game/objects/impl/SpecialObjects.java @@ -1,119 +1,119 @@ -package redone.game.objects.impl; - -import redone.Server; -import redone.game.content.traveling.Desert; -import redone.game.players.Client; -import redone.world.clip.Region; - -public class SpecialObjects { - - private final static int[] AL_KHARID_GATES = { 2882, 2883 }; - private final static int[] SHANTAY_GATES = { 4031, 4033 }; - - public static void openLumbridgePipe(Client c, int objectType) { - c.isRunning = false; - c.getPlayerAssistant().sendConfig(173, 0); - c.playerWalkIndex = 819; - c.getPlayerAssistant().requestUpdates(); - c.getPlayerAssistant().walkTo(0, -1); - } - - public static boolean openKharid(Client c, int objectId) { - for (int element : AL_KHARID_GATES) { - if (objectId == element) { - return true; - } - } - return false; - } - - public static boolean openShantay(Client c, int objectId) { - for (int element : SHANTAY_GATES) { - if (objectId == element) { - return true; - } - } - return false; - } - - public static void movePlayer(Client c) { - if (Region.getClipping(c.getX() - 1, c.getY(), c.heightLevel, -1, 0)) { - c.getPlayerAssistant().movePlayer(c.absX + 1, c.absY, 0); - } else if (Region.getClipping(c.getX() + 1, c.getY(), c.heightLevel, 1, - 0)) { - c.getPlayerAssistant().movePlayer(c.absX - 1, c.absY, 0); - } else if (Region.getClipping(c.getX(), c.getY() - 1, c.heightLevel, 0, - -1)) { - c.getPlayerAssistant().movePlayer(c.absX, c.absY + 1, 0); - } else if (Region.getClipping(c.getX(), c.getY() + 1, c.heightLevel, 0, - 1)) { - c.getPlayerAssistant().movePlayer(c.absX, c.absY - 1, 0); - } - } - - public static void openShantayChest(Client c, int objectId, int obX, - int obY, String type) { - if (type == "open") { - Server.objectHandler.createAnObject(c, 104, obX, obY, -1); - } else if (type == "shut") { - Server.objectHandler.createAnObject(c, 2693, obX, obY, -1); - } - } - - public static void initKharid(Client c, int objectId) { - if (!c.getItemAssistant().playerHasItem(995, 10)) { - c.getDialogueHandler().itemMessage(c, - "You need 10 coins to pass through this gate.", 995, 200); - c.nextChat = 0; - return; - } - Server.objectHandler.createAnObject(c, -1, c.objectX, c.objectY, -1); - final int[] coords = new int[2]; - openKharid(c, objectId); - if (c.absX == 3267) { - c.getPlayerAssistant().movePlayer(c.absX + 1, c.absY, 0); - } else if (c.absX == 3268) { - c.getPlayerAssistant().movePlayer(c.absX - 1, c.absY, 0); - } - c.turnPlayerTo(c.objectX, c.objectY); - coords[0] = c.objectX; - coords[1] = c.objectY; - c.getItemAssistant().deleteItem(995, - c.getItemAssistant().getItemSlot(995), 10); - } - - private static boolean movePlayer2(Client c) { - if (c.absY == 3117) { - c.getPlayerAssistant().movePlayer(c.absX, c.absY - 2, 0); - return true; - } else if (c.absY == 3115) { - c.getPlayerAssistant().movePlayer(c.absX, c.absY + 2, 0); - return true; - } - c.getActionSender().sendMessage( - "Move closer so you can use the gate."); - return false; - } - - public static void initShantay(Client c, int objectId) { - if (!c.getItemAssistant().playerHasItem(1854, 1) && c.absY == 3117) { - c.getDialogueHandler().sendStatement("You need a Shantay pass to go through."); - return; - } - final int[] coords = new int[2]; - openShantay(c, objectId); - c.getActionSender().sendMessage("You pass through the gate."); - movePlayer2(c); - c.turnPlayerTo(c.objectX, c.objectY); - coords[0] = c.objectX; - coords[1] = c.objectY; - if (c.desertWarning == false && c.absY == 3117) { - Desert.showWarning(c); - c.desertWarning = true; - } - if (c.absY == 3117) { - c.getItemAssistant().deleteItem(1854, c.getItemAssistant().getItemSlot(1854), 1); - } - } - -} +package com.rebotted.game.objects.impl; + +import com.rebotted.GameEngine; +import com.rebotted.game.content.traveling.Desert; +import com.rebotted.game.players.Player; +import com.rebotted.world.clip.Region; + +public class SpecialObjects { + + private final static int[] AL_KHARID_GATES = { 2882, 2883 }; + private final static int[] SHANTAY_GATES = { 4031, 4033 }; + + public static void openLumbridgePipe(Player c, int objectType) { + c.isRunning = false; + c.getPacketSender().sendConfig(173, 0); + c.playerWalkIndex = 819; + c.getPlayerAssistant().requestUpdates(); + c.getPlayerAssistant().walkTo(0, -1); + } + + public static boolean openKharid(Player player, int objectId) { + for (int element : AL_KHARID_GATES) { + if (objectId == element) { + return true; + } + } + return false; + } + + public static boolean openShantay(Player c, int objectId) { + for (int element : SHANTAY_GATES) { + if (objectId == element) { + return true; + } + } + return false; + } + + public static void movePlayer(Player c) { + if (Region.getClipping(c.getX() - 1, c.getY(), c.heightLevel, -1, 0)) { + c.getPlayerAssistant().movePlayer(c.absX + 1, c.absY, 0); + } else if (Region.getClipping(c.getX() + 1, c.getY(), c.heightLevel, 1, + 0)) { + c.getPlayerAssistant().movePlayer(c.absX - 1, c.absY, 0); + } else if (Region.getClipping(c.getX(), c.getY() - 1, c.heightLevel, 0, + -1)) { + c.getPlayerAssistant().movePlayer(c.absX, c.absY + 1, 0); + } else if (Region.getClipping(c.getX(), c.getY() + 1, c.heightLevel, 0, + 1)) { + c.getPlayerAssistant().movePlayer(c.absX, c.absY - 1, 0); + } + } + + public static void openShantayChest(Player player, int objectId, int obX, + int obY, String type) { + if (type == "open") { + GameEngine.objectHandler.createAnObject(player, 104, obX, obY, -1); + } else if (type == "shut") { + GameEngine.objectHandler.createAnObject(player, 2693, obX, obY, -1); + } + } + + public static void initKharid(Player player, int objectId) { + if (!player.getItemAssistant().playerHasItem(995, 10)) { + player.getDialogueHandler().itemMessage(player, + "You need 10 coins to pass through this gate.", 995, 200); + player.nextChat = 0; + return; + } + GameEngine.objectHandler.createAnObject(player, -1, player.objectX, player.objectY, -1); + final int[] coords = new int[2]; + openKharid(player, objectId); + if (player.absX == 3267) { + player.getPlayerAssistant().movePlayer(player.absX + 1, player.absY, 0); + } else if (player.absX == 3268) { + player.getPlayerAssistant().movePlayer(player.absX - 1, player.absY, 0); + } + player.turnPlayerTo(player.objectX, player.objectY); + coords[0] = player.objectX; + coords[1] = player.objectY; + player.getItemAssistant().deleteItem(995, + player.getItemAssistant().getItemSlot(995), 10); + } + + private static boolean movePlayer2(Player c) { + if (c.absY == 3117) { + c.getPlayerAssistant().movePlayer(c.absX, c.absY - 2, 0); + return true; + } else if (c.absY == 3115) { + c.getPlayerAssistant().movePlayer(c.absX, c.absY + 2, 0); + return true; + } + c.getPacketSender().sendMessage( + "Move closer so you can use the gate."); + return false; + } + + public static void initShantay(Player c, int objectId) { + if (!c.getItemAssistant().playerHasItem(1854, 1) && c.absY == 3117) { + c.getDialogueHandler().sendStatement("You need a Shantay pass to go through."); + return; + } + final int[] coords = new int[2]; + openShantay(c, objectId); + c.getPacketSender().sendMessage("You pass through the gate."); + movePlayer2(c); + c.turnPlayerTo(c.objectX, c.objectY); + coords[0] = c.objectX; + coords[1] = c.objectY; + if (c.desertWarning == false && c.absY == 3117) { + Desert.showWarning(c); + c.desertWarning = true; + } + if (c.absY == 3117) { + c.getItemAssistant().deleteItem(1854, c.getItemAssistant().getItemSlot(1854), 1); + } + } + +} diff --git a/2006Redone Server/src/com/rebotted/game/objects/impl/UseOther.java b/2006Redone Server/src/com/rebotted/game/objects/impl/UseOther.java new file mode 100644 index 00000000..f0b762e6 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/objects/impl/UseOther.java @@ -0,0 +1,30 @@ +package com.rebotted.game.objects.impl; + +import com.rebotted.game.players.Player; + +public class UseOther { + + + public static void useUp(final Player player, final int objectId) { + player.stopPlayerPacket = true; + player.startAnimation(828); + player.getPacketSender().closeAllWindows(); + player.teleportToX = player.absX; + player.teleportToY = player.absY - 6400; + player.getPacketSender().sendMessage("You climb up."); + player.stopPlayerPacket = false; + } + + public static void useDown(final Player player, final int objectId) { + if (player.objectX == 2647 && player.objectY == 3657 || player.objectX == 2650 && player.objectY == 3661) { + player.getPacketSender().sendMessage("This trapdoor is currently disabled."); + return; + } + player.stopMovement(); + player.startAnimation(827); + player.getPacketSender().closeAllWindows(); + player.teleportToX = player.absX; + player.teleportToY = player.absY + 6400; + player.getPacketSender().sendMessage("You climb down."); + } +} diff --git a/2006Redone Server/src/com/rebotted/game/objects/impl/Webs.java b/2006Redone Server/src/com/rebotted/game/objects/impl/Webs.java new file mode 100644 index 00000000..9d739b84 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/objects/impl/Webs.java @@ -0,0 +1,40 @@ +package com.rebotted.game.objects.impl; + +import com.rebotted.GameEngine; +import com.rebotted.game.content.music.sound.SoundList; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +/** + * @author Andrew (Mr Extremez) + */ + +public class Webs { + + public static int[] CLICKING_OBJECTS = { 733 }; + + public static boolean webs(Player player, int object) { + for (int element : CLICKING_OBJECTS) { + if (object == element) { + return true; + } + } + return false; + } + + public static void slashWeb(Player player, final int objectClickId, final int objectX, final int objectY) { + if (System.currentTimeMillis() - player.webSlashDelay > 1800) { + if (Misc.random(3) > 0) { + GameEngine.objectHandler.createAnObject(-1, objectX, objectY); + // c.startAnimation(451); + player.startAnimation(player.getCombatAssistant().getWepAnim()); + player.webSlashDelay = System.currentTimeMillis(); + player.getPacketSender().sendSound(SoundList.SLASH_WEB, 100, 0); + player.getPacketSender().sendMessage("You successfully slash open the web."); + } else { + player.getPacketSender().sendMessage("You fail to slash through the web."); + return; + } + } + } +} diff --git a/2006Redone Server/src/com/rebotted/game/players/Client.java b/2006Redone Server/src/com/rebotted/game/players/Client.java new file mode 100644 index 00000000..f8a8164f --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/players/Client.java @@ -0,0 +1,30 @@ +package com.rebotted.game.players; + +import org.apache.mina.common.IoSession; + +import com.rebotted.GameConstants; +import com.rebotted.util.Stream; + +public class Client extends Player { + + public Client(IoSession s, int _playerId) { + super(_playerId); + session = s; + outStream = new Stream(new byte[GameConstants.BUFFER_SIZE]); + outStream.currentOffset = 0; + inStream = new Stream(new byte[GameConstants.BUFFER_SIZE]); + inStream.currentOffset = 0; + buffer = new byte[GameConstants.BUFFER_SIZE]; + } + + //bots + public Client(IoSession s) { + super(-1); + isBot = true; + session = null; + inStream = new Stream(new byte[GameConstants.BUFFER_SIZE]); + inStream.currentOffset = 0; + buffer = new byte[GameConstants.BUFFER_SIZE]; + } + +} diff --git a/2006Redone Server/src/redone/game/players/HighscoresHandler.java b/2006Redone Server/src/com/rebotted/game/players/HighscoresHandler.java similarity index 91% rename from 2006Redone Server/src/redone/game/players/HighscoresHandler.java rename to 2006Redone Server/src/com/rebotted/game/players/HighscoresHandler.java index 23204b6f..3bc6d20c 100644 --- a/2006Redone Server/src/redone/game/players/HighscoresHandler.java +++ b/2006Redone Server/src/com/rebotted/game/players/HighscoresHandler.java @@ -1,67 +1,67 @@ -package redone.game.players; - -import java.io.File; -import java.util.ArrayList; -import java.util.Comparator; - -import static redone.game.players.PlayerSave.loadPlayerInfo; - -public class HighscoresHandler { - public ArrayList players = new ArrayList<>(); - - public HighscoresHandler() { - File dir = new File("./data/characters"); - File[] directoryListing = dir.listFiles(); - for (File child : directoryListing) { - Client player = new Client(null, -1); - player.playerName = child.getName().split("\\.")[0]; - loadPlayerInfo(player, child.getName().split("\\.")[0], "", false); - if (player.playerRights >= 2 || // admin or dev - player.isBot || player.playerName.startsWith("♥")) { // ignore bots - continue; - } - players.add(player); - } - } - - public String getRank(Client player, int i, String sortBy) { - if (players.size() <= i) { - return "-----"; - } - - switch (sortBy) { - case "level": - players.sort(new totalLevelComparator()); - return players.get(i).playerName + ": " + players.get(i).getPlayerAssistant().getTotalLevel(); - case "gold": - players.sort(new totalGoldComparator()); - return players.get(i).playerName + ": " + players.get(i).getPlayerAssistant().totalGold() + "gp"; - case "damage": - default: - players.sort(new globalDmgComparator()); - return players.get(i).playerName + ": " + players.get(i).globalDamageDealt; - } - } - - private class totalLevelComparator implements Comparator { - @Override - public int compare(Client client, Client t1) { - return - client.getPlayerAssistant().getTotalLevel() + t1.getPlayerAssistant().getTotalLevel(); - } - } - - private class totalGoldComparator implements Comparator { - @Override - public int compare(Client client, Client t1) { - return - client.getPlayerAssistant().totalGold() + t1.getPlayerAssistant().totalGold(); - } - } - - private class globalDmgComparator implements Comparator { - @Override - public int compare(Client client, Client t1) { - return - client.globalDamageDealt + t1.globalDamageDealt; - } - } - -} +package com.rebotted.game.players; + +import static com.rebotted.game.players.PlayerSave.loadPlayerInfo; + +import java.io.File; +import java.util.ArrayList; +import java.util.Comparator; + +public class HighscoresHandler { + public ArrayList players = new ArrayList<>(); + + public HighscoresHandler() { + File dir = new File("./data/characters"); + File[] directoryListing = dir.listFiles(); + for (File child : directoryListing) { + Client player = new Client(null, -1); + player.playerName = child.getName().split("\\.")[0]; + loadPlayerInfo(player, child.getName().split("\\.")[0], "", false); + if (player.playerRights >= 2 || // admin or dev + player.isBot || player.playerName.startsWith("♥")) { // ignore bots + continue; + } + players.add(player); + } + } + + public String getRank(Player player, int i, String sortBy) { + if (players.size() <= i) { + return "-----"; + } + + switch (sortBy) { + case "level": + players.sort(new totalLevelComparator()); + return players.get(i).playerName + ": " + players.get(i).getPlayerAssistant().getTotalLevel(); + case "gold": + players.sort(new totalGoldComparator()); + return players.get(i).playerName + ": " + players.get(i).getPlayerAssistant().totalGold() + "gp"; + case "damage": + default: + players.sort(new globalDmgComparator()); + return players.get(i).playerName + ": " + players.get(i).globalDamageDealt; + } + } + + private class totalLevelComparator implements Comparator { + @Override + public int compare(Client client, Client t1) { + return - client.getPlayerAssistant().getTotalLevel() + t1.getPlayerAssistant().getTotalLevel(); + } + } + + private class totalGoldComparator implements Comparator { + @Override + public int compare(Client client, Client t1) { + return - client.getPlayerAssistant().totalGold() + t1.getPlayerAssistant().totalGold(); + } + } + + private class globalDmgComparator implements Comparator { + @Override + public int compare(Client client, Client t1) { + return - client.globalDamageDealt + t1.globalDamageDealt; + } + } + +} diff --git a/2006Redone Server/src/redone/game/players/Location.java b/2006Redone Server/src/com/rebotted/game/players/Location.java similarity index 90% rename from 2006Redone Server/src/redone/game/players/Location.java rename to 2006Redone Server/src/com/rebotted/game/players/Location.java index d2640483..45419608 100644 --- a/2006Redone Server/src/redone/game/players/Location.java +++ b/2006Redone Server/src/com/rebotted/game/players/Location.java @@ -1,21 +1,21 @@ -package redone.game.players; - -public class Location { - - private int x1, x2, y1, y2; - - public Location(int x1, int x2, int y1, int y2) { - this.x1 = x1; - this.x2 = x2; - this.y1 = y1; - this.y2 = y2; - } - - public boolean playerInArea(Player p) { - if(p.inArea(x1, y1, x2, y2)) { - return true; - } - return false; - } - +package com.rebotted.game.players; + +public class Location { + + private int x1, x2, y1, y2; + + public Location(int x1, int x2, int y1, int y2) { + this.x1 = x1; + this.x2 = x2; + this.y1 = y1; + this.y2 = y2; + } + + public boolean playerInArea(Player p) { + if(p.inArea(x1, y1, x2, y2)) { + return true; + } + return false; + } + } \ No newline at end of file diff --git a/2006Redone Server/src/redone/game/players/Player.java b/2006Redone Server/src/com/rebotted/game/players/Player.java similarity index 58% rename from 2006Redone Server/src/redone/game/players/Player.java rename to 2006Redone Server/src/com/rebotted/game/players/Player.java index d08e8c10..2dc2d26a 100644 --- a/2006Redone Server/src/redone/game/players/Player.java +++ b/2006Redone Server/src/com/rebotted/game/players/Player.java @@ -1,2047 +1,3290 @@ -package redone.game.players; - -import java.util.ArrayList; - -import redone.Constants; -import redone.Server; -import redone.game.content.combat.prayer.PrayerDrain; -import redone.game.content.minigames.castlewars.CastleWars; -import redone.game.items.Item; -import redone.game.items.ItemAssistant; -import redone.game.npcs.Npc; -import redone.game.npcs.NpcHandler; -import redone.game.npcs.impl.Pets; -import redone.util.ISAACRandomGen; -import redone.util.Misc; -import redone.util.Stream; - -public abstract class Player { - - public String currentTime, date, creationAddress = "", slayerMaster; - - public boolean lostCannon = false, refresh = false, isBot = false; - - public ArrayList killedPlayers = new ArrayList(); - public ArrayList attackedPlayers = new ArrayList(); - public ArrayList lastKilledPlayers = new ArrayList(); - - public int CraftInt, Dcolor, FletchInt, clanId = -1; - - public int[][] barrowCrypt = { - {4921, 0}, - {2035, 0} - }; - - public long homeTele, lastDesert, eventTimer, lastRunRecovery, - lastButton, lastFire, lastLight, muteTime, waitTime, miscTimer, - ladderTimer, webSlashDelay, climbDelay, lastReport = 0, - lastPlayerMove, lastPoison, lastPoisonSip, poisonImmune, lastSpear, - lastProtItem, dfsDelay, lastVeng, lastYell, teleGrabDelay, - protMageDelay, protMeleeDelay, protRangeDelay, lastAction, - lastThieve, lastLockPick, alchDelay, specDelay = System.currentTimeMillis(), duelDelay, teleBlockDelay, - godSpellDelay, singleCombatDelay, singleCombatDelay2, reduceStat, - restoreStatsDelay, logoutDelay, buryDelay, foodDelay, potDelay, - doorDelay, doubleDoorDelay, buySlayerTimer, lastIncrease, - boneDelay, botAttempts, leverDelay = 0, farmTime, searchObjectDelay = 0, clickDelay = 0; - - - private Npc specialTarget = null; - public void setSpecialTarget(Npc target) { - this.specialTarget = target; - } - public Npc getSpecialTarget() { - return specialTarget; - } - - public boolean initialized = false, musicOn = true, luthas, - playerIsCooking, disconnected = false, ruleAgreeButton = false, - RebuildNPCList = false, isActive = false, isKicked = false, - isSkulled = false, friendUpdate = false, newPlayer = false, - hasMultiSign = false, saveCharacter = false, mouseButton = false, - chatEffects = true, acceptAid = false, recievedMask, - nextDialogue = false, autocasting = false, usedSpecial = false, - mageFollow = false, dbowSpec = false, craftingLeather = false, - properLogout = false, secDbow = false, maxNextHit = false, - ssSpec = false, vengOn = false, addStarter = false, - accountFlagged = false, inPartyRoom = false, msbSpec = false, - hasBankPin, enterdBankpin, firstPinEnter, requestPinDelete, - secondPinEnter, thirdPinEnter, fourthPinEnter, hasBankpin, - isBanking, isTeleporting = false, desertWarning, - isPotionMaking = false, isGrinding = false, hasStarter, isSpinning, - clickedSpinning, hasPaidBrim, isHerblore, herbloreI, secondHerb, - playerStun, playerFletch, isWoodcutting, playerIsFiremaking, - hasNpc = false, playerIsFishing = false, isOperate, below459 = true, - splitChat, strongHold, village, needsNewTask = false, - canSpeak = true, ignoreFrog, ratdied2 = false, - fishingWhirlPool, lostDuel, diedOnTut = false, storing = false, rope, rope2, - canWalkTutorial, closeTutorialInterface, isCrafting, showedUnfire, - showedFire, isPotCrafting, isFiremaking, playerIsFletching, milking, - stopPlayerPacket, spiritTree = false, isSmelting, - hasPaifAnTeleport = false, isSmithing, doingAgility = false, - hasPaid, canTeleport, magicCharge, isBanned = false, fletchNerfed, - clickedVamp = false, allowFading, isBotting = false, otherBank = false, - recievedReward = false, poison, golemSpawned = false, zombieSpawned = false, shadeSpawned = false, - treeSpiritSpawned = false, chickenSpawned = false, clickedTree = false, filter = true, - stopPlayer = false, npcCanAttack = true, gliderOpen = false, hasSandwhichLady = false, - isHarvesting, openDuel = false, killedJad = false, canHealersRespawn = true, playerIsBusy = false, miningRock, - randomEventsEnabled = false, debugMode = false, clickToTele = false; - - public int votePoints, thankedForDonation, saveDelay, playerKilled, gertCat, restGhost, - romeojuliet, runeMist, vampSlayer, cookAss, doricQuest, blackKnight, shieldArrav, - dragonSlayerQuestStage, sheepShear, impsC, randomActions, pkPoints, - totalPlayerDamageDealt, killedBy, lastChatId = 1, privateChat, - friendSlot = 0, dialogueId, randomCoffin, newLocation, specEffect, - specBarId, attackLevelReq, defenceLevelReq, strengthLevelReq, - rangeLevelReq, magicLevelReq, slayerLevelReq, agilityLevelReq, - followId, skullTimer, nextChat = 0, talkingNpc = -1, - dialogueAction = 0, autocastId, followDistance, followId2, - barrageCount = 0, delayedDamage = 0, delayedDamage2 = 0, - pcPoints = 0, magePoints = 0, desertTreasure = 0, - lastArrowUsed = -1, autoRet = 1, pcDamage = 0, xInterfaceId = 0, - xRemoveId = 0, xRemoveSlot = 0, tzhaarToKill = 0, tzhaarKilled = 0, - waveId, frozenBy = 0, poisonDamage = 0, teleAction = 0, - bonusAttack = 0, lastNpcAttacked = 0, killCount = 0, witchspot, - pirateTreasure, ptjob, cwKills, cwDeaths, cwGames, tzKekSpawn = 0, - playerBankPin, recoveryDelay = 3, attemptsRemaining = 3, - lastPinSettings = -1, setPinDate = -1, changePinDate = -1, - deletePinDate = -1, firstPin, secondPin, thirdPin, fourthPin, - bankPin1, bankPin2, bankPin3, bankPin4, pinDeleteDateRequested, - rememberNpcIndex, lastLoginDate, selectedSkill, log = -1, newHerb, - newItem, newXp, doingHerb, herbAmount, treeX, treeY, lastH, - cookingItem, cookingObject, summonId, npcId2 = 0, leatherType = -1, - weightCarried, teleotherType, rockX, rockY, itemUsing, tzKekTimer, - bananas, flourAmount, grain, questPoints, questStages, - teleGrabItem, teleGrabX, teleGrabY, duelCount, underAttackBy, - underAttackBy2, wildLevel, teleTimer, respawnTimer, saveTimer = 0, - teleBlockLength, poisonDelay, slayerPoints, blackMarks, - SlayerMaster, teleOtherTimer = 0, - teleOtherSlot = -1, tutorialProgress, Cookstage1 = 1, - woodcuttingTree, smeltAmount, knightS, otherDirection, - brightness = 3, recoilHits, droppedItem = -1, - spawnedHealers, cannonX = 0, cannonY = 0, - playerShopId; - - public double playerEnergy = 100; - - public Pets getSummon() { - return pets; - } - - private final Pets pets = new Pets(); - - public int removedTasks[] = { -1, -1, -1, -1 }; - - public boolean isRunning() { - return isNewWalkCmdIsRunning() || isRunning2 && isMoving; - } - - public void faceNpc(int npc) { - face = npc; - faceUpdateRequired = true; - updateRequired = true; - } - - public void faceNPC(int index) { - faceNPC = index; - faceNPCupdate = true; - updateRequired = true; - } - - protected boolean faceNPCupdate = false; - public int faceNPC = -1; - - public void appendFaceNPCUpdate(Stream str) { - str.writeWordBigEndian(faceNPC); - } - - public int getLocalX() { - return getX() - 8 * getMapRegionX(); - } - - public int getLocalY() { - return getY() - 8 * getMapRegionY(); - } - - public int getKillCount() { - return barrowsKillCount; - } - - /** - * @param randomGrave - * the randomGrave to set - */ - public void setRandomGrave(int randomGrave) { - this.randomGrave = randomGrave; - } - - /** - * @return the randomGrave - */ - public int getRandomGrave() { - return randomGrave; - } - - private int randomGrave; - - public void setBarrowsNpcDead(int index, boolean dead) { - barrowsNpcDead[index] = dead; - } - - /** - * @return the barrowsNpcDead - */ - public boolean[] getBarrowsNpcDead() { - return barrowsNpcDead; - } - - /** - * @return the barrowsNpcDead - */ - public boolean getBarrowsNpcDead(int id) { - return barrowsNpcDead[id]; - } - - private final boolean barrowsNpcDead[] = new boolean[6]; - - public abstract void updateWalkEntities(); - - public boolean membership = false, awardedmembership = false; - public Client teleporter = null; - public int[] miningSettings = new int[10]; - public int[] fishingProp = new int[13]; - public int[] party = new int[8]; - public int[] partyN = new int[8]; - public int[] cookingProp = new int[7]; - public int[] cookingCoords = new int[2]; - public String lastReported = ""; - public String bankPin = ""; - public int attempts = 3; - public boolean setPin = false; - public int[][] playerSkillProp = new int[20][15]; - public boolean[] playerSkilling = new boolean[20]; - public boolean stopPlayerSkill; - public int doAmount, addAmount; - public int lastNpcClickIndex; - public boolean[] killedPheasant = new boolean[5]; - public boolean playerHasRandomEvent; - public boolean canLeaveArea; - public int pieSelect = 0, getPheasent, kebabSelect = 0, breadID, - chocSelect = 0, bagelSelect = 0, triangleSandwich = 0, - squareSandwich = 0, breadSelect = 0; - public String clanName, properName; - public int lastX, lastY; - public int[] voidStatus = new int[5]; - public int[] itemKeptId = new int[4]; - public int[] pouches = new int[4]; - public final int[] POUCH_SIZE = { 3, 6, 9, 12 }; - public boolean[] invSlot = new boolean[28], equipSlot = new boolean[14]; - public long friends[] = new long[200], ignores[] = new long[200]; - public double specAmount = 0; - public double specAccuracy = 1; - public double specDamage = 1; - public boolean isFletching; - public double weight = 0.0; - - public boolean canChangeAppearance = false; - public boolean mageAllowed; - public int poisonMask; - - public Npc getCloseRandomNpc(int distance) { - ArrayList npcs = new ArrayList(); - for (Npc npc : NpcHandler.npcs) { - if (npc != null) { - Npc n = npc; - if (distanceToPoint(n.getX(), n.getY()) <= distance) { - if (!n.underAttack) { - if (n.heightLevel == heightLevel) { - npcs.add(n); - } - } - } - } - } - if (npcs.size() > 0) { - return npcs.get(Misc.random(npcs.size() - 1)); - } else { - return null; // No near npcs :C - } - } - - public boolean isAutoButton(int button) { - for (int j = 0; j < autocastIds.length; j += 2) { - if (autocastIds[j] == button) { - return true; - } - } - return false; - } - - public int[] autocastIds = { 51133, 32, 51185, 33, 51091, 34, 24018, 35, - 51159, 36, 51211, 37, 51111, 38, 51069, 39, 51146, 40, 51198, 41, - 51102, 42, 51058, 43, 51172, 44, 51224, 45, 51122, 46, 51080, 47, - 7038, 0, 7039, 1, 7040, 2, 7041, 3, 7042, 4, 7043, 5, 7044, 6, - 7045, 7, 7046, 8, 7047, 9, 7048, 10, 7049, 11, 7050, 12, 7051, 13, - 7052, 14, 7053, 15, 47019, 27, 47020, 25, 47021, 12, 47022, 13, - 47023, 14, 47024, 15 }; - - // public String spellName = "Select Spell"; - public void assignAutocast(int button) { - for (int j = 0; j < autocastIds.length; j++) { - if (autocastIds[j] == button) { - Client c = (Client) PlayerHandler.players[playerId]; - autocasting = true; - autocastId = autocastIds[j + 1]; - c.getPlayerAssistant().sendConfig(108, 1); - c.getActionSender().setSidebarInterface(0, 328); - // spellName = getSpellName(autocastId); - // spellName = spellName; - // c.getPA().sendString(spellName, 354); - c = null; - break; - } - } - } - - public boolean inCWsaraBase() { - if (absX > 2422 && absX < 2432 && absY > 3071 && absY < 3081 - && heightLevel == 1) { - return true; - } - return false; - } - - public boolean inCWzammyBase() { - if (absX > 2367 && absX < 2377 && absY > 3126 && absY < 3136 - && heightLevel == 1) { - return true; - } - return false; - } - - public boolean saraTeam() { - return playerEquipment[Constants.CAPE] == 4041; - } - - public boolean zammyTeam() { - return playerEquipment[Constants.CAPE] == 4042; - } - - public boolean inCwSafe() { - return (isInAreaxxyy(2423, 2431, 3072, 3080) || isInAreaxxyy(2368, 2376, 3127, 3135)) - && heightLevel == 1; - } - - public boolean inZammyWait() { - return isInAreaxxyy(2409, 2431, 9511, 9535); - } - - public boolean inSaraWait() { - return isInAreaxxyy(2368, 2392, 9479, 9498); - } - - public boolean inCwGame() { - return isInAreaxxyy(2368, 2431, 9479, 9535) || isInAreaxxyy(2368, 2431, 3072, 3135) - && !inSaraWait() && !inZammyWait(); - } - - public boolean inCwUnderground() { - return isInAreaxxyy(2368, 2431, 9479, 9535) && !inSaraWait() && !inZammyWait(); - } - - public boolean inZammyBase() { - return isInAreaxxyy(2368, 2384, 3118, 3135); - } - - public boolean inSaraBase() { - return isInAreaxxyy(2414, 2431, 3072, 3088); - } - - public void gameInterface(int id) { - if (gameInterface != id) { - gameInterface = id; - } - } - - public int gameInterface; - public int lastGame; - - - public int[][] barrowsNpcs = { { 2030, 0 }, // verac - { 2029, 0 }, // toarg - { 2028, 0 }, // karil - { 2027, 0 }, // guthan - { 2026, 0 }, // dharok - { 2025, 0 } // ahrim - }; - - public int barrowsKillCount; - - public int reduceSpellId; - public final int[] REDUCE_SPELL_TIME = { 250000, 250000, 250000, 500000, - 500000, 500000 }; // how long does the other player stay immune to - // the spell - public long[] reduceSpellDelay = new long[6]; - public final int[] REDUCE_SPELLS = { 1153, 1157, 1161, 1542, 1543, 1562 }; - public boolean[] canUseReducingSpell = { true, true, true, true, true, true }; - - public int slayerTask, taskAmount; - - public int duelTimer, duelTeleX, duelTeleY, duelSlot, duelSpaceReq, - duelOption, duelingWith, duelStatus; - public int headIconPk = -1, headIconHints; - public boolean duelRequested; - public boolean[] duelRule = new boolean[22]; - public final int[] DUEL_RULE_ID = { 1, 2, 16, 32, 64, 128, 256, 512, 1024, - 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 2097152, - 8388608, 16777216, 67108864, 134217728 }; - - public boolean doubleHit, usingSpecial, npcDroppingItems, usingRangeWeapon, - usingBow, usingMagic, castingMagic; - public int npcIndex, npcClickIndex, npcType, castingSpellId, oldSpellId, - spellId, hitDelay; - public int specMaxHitIncrease, freezeDelay, freezeTimer = -6, killerId, - playerIndex, oldPlayerIndex, lastWeaponUsed, projectileStage, - crystalBowArrowCount, playerMagicBook, teleGfx, teleEndAnimation, - teleHeight, teleX, teleY, rangeItemUsed, killingNpcIndex, - totalDamageDealt, globalDamageDealt, oldNpcIndex, fightMode, attackTimer; - public boolean magicFailed, oldMagicFailed; - public int bowSpecShot, clickNpcType, clickObjectType, objectId, objectX, - objectY; - public int pItemX, pItemY, pItemId; - public boolean isMoving, walkingToItem; - public boolean isShopping, updateShop; - public int myShopId; - public int tradeStatus, tradeWith; - public boolean forcedChatUpdateRequired, inDuel, tradeAccepted, goodTrade, - inTrade, tradeRequested, tradeResetNeeded, tradeConfirmed, - tradeConfirmed2, acceptTrade, acceptedTrade; - public int attackAnim, animationRequest = -1, animationWaitCycles; - public int[] playerBonus = new int[12]; - public boolean isRunning2 = true; - public boolean takeAsNote; - public int combatLevel; - public boolean saveFile = false; - public int playerAppearance[] = new int[13]; - public int apset; - public int actionID; - public int wearItemTimer, wearId, wearSlot, interfaceId; - public int XremoveSlot, XinterfaceID, XremoveID, Xamount; - - // public int tutorial; - public boolean usingGlory = false; - public int[] woodcut = new int[7]; - public int wcTimer = 0; - public int miningTick = 0; - public int miningAnimTick = 0; - public int miningRockId = -1; - public int miningX = -1; - public int miningY = -1; - public boolean fishing = false; - public int fishTimer = 0; - public boolean isMining; - public int smeltType; // 1 = bronze, 2 = iron, 3 = steel, 4 = gold, 5 = - // mith, 6 = addy, 7 = rune - public int smeltTimer = 0; - public boolean smeltInterface; - public boolean patchCleared; - public int[] farmData = new int[2]; - - public boolean antiFirePot = false; - - public boolean underWater = false; - public boolean prevRunning2; - public int prevPrevPlayerRunIndex; - public int prevPlayerStandIndex; - public int prevplayerWalkIndex; - public int prevPlayerTurnIndex; - public int prevPlayerTurn90CWIndex; - public int prevPlayerTurn90CCWIndex; - public int prevPlayerTurn180Index; - - public Client asClient() { - return (Client) this; - } - - private Player player; - public Player asPlayer() { - return (Player) player; - } - - public boolean inTrawlerBoat() { - if(inArea(2808, 2811,3415,3425)) { - return true; - } - return false; - } - - public boolean inTrawlerGame() { - if(inArea(2808, 2811,3415,3425)) { - return true; - } - return false; - } - - public long lastFishingTrawlerInteraction; - public boolean inFishingTrawlerRewardsInterface; - - /** - * Castle Wars - */ - public int castleWarsTeam; - public boolean inCwGame; - public boolean inCwWait; - - /** - * Fight Pits - */ - public boolean inPits = false; - public int pitsStatus = 0; - - /** - * SouthWest, NorthEast, SouthWest, NorthEast - */ - - public boolean inCw() { - Client c = (Client) this; - if (CastleWars.isInCwWait(c)) { - return true; - } - if (CastleWars.isInCw(c)) { - return true; - } - return false; - } - - public boolean isInTut() { - if (absX >= 2625 && absX <= 2687 && absY >= 4670 && absY <= 4735) { - return true; - } - return false; - } - - public boolean FightPitsArea() { - return absX >= 2378 && absX <= 2415 && absY >= 5133 && absY <= 5167 - || absX >= 2394 && absX <= 2404 && absY >= 5169 && absY <= 5174; - } - - public boolean fightPitsArea() { - return absX >= 2378 && absX <= 2415 && absY >= 5133 && absY <= 5167; - } - - public boolean inBarrows() { - if (absX > 3520 && absX < 3598 && absY > 9653 && absY < 9750) { - return true; - } - return false; - } - - public boolean inArea(int x, int y, int x1, int y1) { - if (absX > x && absX < x1 && absY < y && absY > y1) { - return true; - } - return false; - } - - public boolean inMulti() { - if (absX >= 3136 - && absX <= 3327 - && absY >= 3519 - && absY <= 3607// duel? - || absX >= 2360 - && absX <= 2445 - && absY >= 5045 - && absY <= 5125 - || absX >= 3190 - && absX <= 3327 - && absY >= 3648 - && absY <= 3839// duel? - || absX >= 3200 && absX <= 3390 && absY >= 3840 && absY <= 3967 - || absX >= 2992 && absX <= 3007 && absY >= 3912 && absY <= 3967 - || absX >= 2946 && absX <= 2959 && absY >= 3816 && absY <= 3831 - || absX >= 3008 && absX <= 3199 && absY >= 3856 && absY <= 3903 - || absX >= 3008 && absX <= 3071 && absY >= 3600 && absY <= 3711 - || absX >= 3072 && absX <= 3327 && absY >= 3608 && absY <= 3647 - || absX >= 2624 - && absX <= 2690 - && absY >= 2550 - && absY <= 2619 - || absX >= 2667 - && absX <= 2685 - && absY >= 3712 - && absY <= 3730 // rock - // crabs - || absX >= 2371 && absX <= 2422 && absY >= 5062 && absY <= 5117 - || absX >= 2896 && absX <= 2927 && absY >= 3595 && absY <= 3630 - || absX >= 2892 && absX <= 2932 && absY >= 4435 && absY <= 4464 - || absX >= 2256 && absX <= 2287 && absY >= 4680 && absY <= 4711) { - return true; - } - return false; - } - - public boolean inWild() { - if (inCw()) { - return true; - } - if (absX > 2941 && absX < 3392 && absY > 3518 && absY < 3966 - || absX > 2941 && absX < 3392 && absY > 9918 && absY < 10366) { - return true; - } - return false; - } - - public boolean inBankArea() { - return isInArea(3205,3226,3214,3211) && heightLevel == 2|| //Lumbridge Bank - isInArea(3266,3171,3272,3162) || //Al Kharid Bank - isInArea(2436,5186,2453,5174) || //Tzhaar area - isInArea(2842,2957,2860,2950) || //Shilo Bank - isInArea(3492,3215,3456,3200) || //Burgh d rott - isInArea(3377,3275,3386,3266) || //Clan Wars - isInArea(3087,3248,3098,3239) || //Draynor - isInArea(3248,3423,3260,3414) || //Varrock East - isInArea(3183,3446,3193,3432) || //Varrock West - isInArea(3088,3501,3100,3486) || //Edgeville - isInArea(3009,3358,3020,3352) || //Falador East - isInArea(2942,3374,2950,3365) || //Falador West - isInArea(2839,3547,2844,3540) || //Warriors guild - isInArea(2804,3447,2815,3438) || //Catherby - isInArea(2718,3500,2733,3485) || //Seer's village - isInArea(2610,3338,2622,3326) || //North ardy - isInArea(2645,3288,2660,3281) || //South ardy - isInArea(2658,3165,2670,3158) || //Khazard - isInArea(2607,3098,2618,3087) || //Yanille - isInArea(2442,3084,2444,3081) || //Castle Wars - isInArea(2348,3168,2358,3159) || //Lleyta - isInArea(2324,3694,2334,3685) || //Piscatoris - isInArea(2527,3581,2539,3563) || //Barbarian Assault - isInArea(2448,3420,2442,3430) || //Tree Gnome Stronghold - isInArea(2453,3491,2440,3478) && heightLevel == 1 || //Grand Tree Area - isInArea(2843,2958,2816,2944) || //Shilo Village - isInArea(3113,3131,3131,3118) || //Tutorial Island - isInArea(3422,2895,3433,2885) || //Nardah - isInArea(3685,3473,3694,3461) || //Phasmatys - isInArea(2530,4725,2550,4705) || //Phasmatys - isInArea(2834, 10215, 2841, 10204) || // Keldagrim - isInArea(2379, 4453, 2386, 4462) || // Zanaris - false; - } - - public boolean inPlayerShopArea() { - return isInArea(2938, 3389, 3059, 3329) || // Falador - isInArea(3172, 3449, 3270, 3384) || // Varrock - isInArea(3200, 3256, 3237, 3201) || // Lumbridge - isInArea(2716, 3498, 2735, 3480) || - isInArea(3075, 3513, 3106, 3466) || - isInArea(3074, 3262, 3102, 3239) || - isInArea(2435, 3101, 2459, 3080) || - isInArea(2618, 3075, 2598, 3108) || - isInArea(2678, 3267, 2601, 3341) || - isInArea(3265, 3157, 3324, 3215) || - isInArea(3386, 3264, 3348, 3286) || - isInArea(2797, 3454, 2838, 3430) || - isInArea(2546, 3157, 2512, 3176) || - isInArea(2451, 3408, 2425, 3437) || - false; - } - - public boolean inDesert() { - return absX >= 3137 && absX <= 3321 && absY >= 2880 && absY <= 3115; - } - - public boolean duelingArena() { - if (absX > 3331 && absX < 3391 && absY > 3242 && absY < 3260) { - return true; - } - return false; - } - - - public boolean playerIsBusy() { - if(isShopping || inTrade || openDuel || isBanking || duelStatus == 1) { - return true; - } - return false; - } - - public boolean isInBarrows() { - if(absX > 3543 && absX < 3584 && absY > 3265 && absY < 3311) { - return true; - } - return false; - } - - public boolean isInBarrows2() { - if(absX > 3529 && absX < 3581 && absY > 9673 && absY < 9722) { - return true; - } - return false; - } - - public boolean inPcBoat() { - return absX >= 2660 && absX <= 2663 && absY >= 2638 && absY <= 2643; - } - - public boolean inPcGame() { - return absX >= 2624 && absX <= 2690 && absY >= 2550 && absY <= 2619; - } - - public boolean inDuelArena() { - if (absX > 3322 && absX < 3394 && absY > 3195 && absY < 3291 || absX > 3311 && absX < 3323 && absY > 3223 && absY < 3248) { - return true; - } - return false; - } - - public boolean inBank() { // Area(top left X, bottom right X, bottom right Y, top left Y) - return isInAreaxxyy(3090, 3099, 3487, 3500) || isInAreaxxyy(3089, 3090, 3492, 3498) || isInAreaxxyy(3249, 3258, 3413, 3428) || isInAreaxxyy(3180, 3191, 3432, 3448) || isInAreaxxyy(2945, 2948, 3365, 3374) || - isInAreaxxyy(2943, 2948, 3367, 3374) || isInAreaxxyy(2945, 2950, 3365, 3370) || isInAreaxxyy(3009, 3018, 3352, 3359) || isInAreaxxyy(3017, 3022, 3353, 3357); - } - - public boolean inLumbBuilding() { - return isInAreaxxyy(3205, 3216, 3209, 3228) || isInAreaxxyy(3229, 3233, 3206, 3208) || isInAreaxxyy(3228, 3233, 3201, 3205) || isInAreaxxyy(3230, 3237, 3195, 3198) || isInAreaxxyy(3238, 3229, 3209, 3211) || - isInAreaxxyy(3240, 3247, 3204, 3215) || isInAreaxxyy(3247, 3252, 3190, 3195) || isInAreaxxyy(3227, 3230, 3212, 3216) || isInAreaxxyy(3227, 3230, 3221, 3225) || isInAreaxxyy(3229, 3232, 3236, 3241) || - isInAreaxxyy(3209, 3213, 3243, 3250) || isInAreaxxyy(3222, 3229, 3252, 3257) || isInAreaxxyy(3184, 3192, 3270, 3275) || isInAreaxxyy(3222, 3224, 3292, 3294) || isInAreaxxyy(3225, 3230, 3287, 3228) || - isInAreaxxyy(3243, 3248, 3244, 3248) || isInAreaxxyy(3202, 3205, 3167, 3170) || isInAreaxxyy(3231, 3238, 3151, 3155) || isInAreaxxyy(3233, 3234, 3156, 3156) || isInAreaxxyy(3163, 3170, 3305, 3308) || - isInAreaxxyy(3165, 3168, 3303, 3310); - } - - public boolean inDraynorBuilding() { - return isInAreaxxyy(3097, 3102, 3277, 3281) || isInAreaxxyy(3088, 3092, 3273, 3276) || isInAreaxxyy(3096, 3102, 3266, 3270) || isInAreaxxyy(3089, 3095, 3265, 3268) || isInAreaxxyy(3083, 3088, 3256, 3261) || - isInAreaxxyy(3087, 3094, 3251, 3255) || isInAreaxxyy(3121, 3130, 3240, 3246) || isInAreaxxyy(3102, 3112, 3162, 3165) || isInAreaxxyy(3107, 3111, 3166, 3166) || isInAreaxxyy(3103, 3115, 3157, 3161) || - isInAreaxxyy(3105, 3114, 3156, 3156) || isInAreaxxyy(3105, 3113, 3155, 3155) || isInAreaxxyy(3106, 3112, 3154, 3154) || isInAreaxxyy(3092, 3097, 3240, 3246); - } - - public boolean isInArea(final int x1, final int y1, final int x2, final int y2) { - return (absX >= x1 && absX <= x2 || absX <= x1 && absX >= x2) && (absY >= y1 && absY <= y2 || absY <= y1 && absY >= y2); - } - - public boolean isInAreaxxyy(final int x1, final int x2, final int y1, final int y2) { - return absX >= x1 && absX <= x2 && absY >= y1 && absY <= y2; - } - - public boolean altars() { - return safeAreas(3090, 3506, 3097, 3506); - } - - public boolean safeAreas(int x, int y, int x1, int y1) { - return absX >= x && absX <= x1 && absY >= y && absY <= y1; - } - - public boolean inFightCaves() { - return absX >= 2360 && absX <= 2445 && absY >= 5045 && absY <= 5125; - } - - public boolean inPirateHouse() { - return absX >= 3038 && absX <= 3044 && absY >= 3949 && absY <= 3959; - } - - public String connectedFrom = ""; - public String globalMessage = ""; - - public abstract void initialize(); - - public abstract void update(); - - public int playerId = -1; - public String playerName = null; - public String playerName2 = null; - public String playerPass = null; - public int playerRights; - public PlayerHandler handler = null; - public int playerItems[] = new int[28]; - public int playerItemsN[] = new int[28]; - public int bankItems[] = new int[Constants.BANK_SIZE]; - public int bankItemsN[] = new int[Constants.BANK_SIZE]; - // used for player owned shops - public int bankItemsV[] = new int[Constants.BANK_SIZE]; - public boolean bankNotes = false; - public boolean shouldSave = false; - - public int playerStandIndex = 0x328; - public int playerTurnIndex = 0x337; - public int playerWalkIndex = 0x333; - public int playerTurn180Index = 0x334; - public int playerTurn90CWIndex = 0x335; - public int playerTurn90CCWIndex = 0x336; - public int playerRunIndex = 0x338; - - public int playerHat = 0; - public int playerCape = 1; - public int playerAmulet = 2; - public int playerWeapon = 3; - public int playerChest = 4; - public int playerShield = 5; - public int playerLegs = 7; - public int playerHands = 9; - public int playerFeet = 10; - public int playerRing = 12; - public int playerArrows = 13; - - public int playerAttack = 0; - public int playerDefence = 1; - public int playerStrength = 2; - public int playerHitpoints = 3; - public int playerRanged = 4; - public int playerPrayer = 5; - public int playerMagic = 6; - public int playerCooking = 7; - public int playerWoodcutting = 8; - public int playerFletching = 9; - public int playerFishing = 10; - public int playerFiremaking = 11; - public int playerCrafting = 12; - public int playerSmithing = 13; - public int playerMining = 14; - public int playerHerblore = 15; - public int playerAgility = 16; - public int playerThieving = 17; - public int playerSlayer = 18; - public int playerFarming = 19; - public int playerRunecrafting = 20; - - public int[] playerEquipment = new int[14]; - public int[] playerEquipmentN = new int[14]; - public int[] playerLevel = new int[25]; - public int[] playerXP = new int[25]; - - public void updateshop(int i) { - Client p = (Client) PlayerHandler.players[playerId]; - p.getShopAssistant().resetShop(i); - } - - public void println_debug(String str) { - System.out.println("[player-" + playerId + "]: " + str); - } - - public void println(String str) { - System.out.println("[player-" + playerId + "]: " + str); - } - - public Player(int _playerId) { - playerId = _playerId; - playerRights = 0; - - for (int i = 0; i < playerItems.length; i++) { - playerItems[i] = 0; - } - for (int i = 0; i < playerItemsN.length; i++) { - playerItemsN[i] = 0; - } - - for (int i = 0; i < playerLevel.length; i++) { - if (i == 3) { - playerLevel[i] = 10; - } else { - playerLevel[i] = 1; - } - } - - for (int i = 0; i < playerXP.length; i++) { - if (i == 3) { - playerXP[i] = 1300; - } else { - playerXP[i] = 0; - } - } - for (int i = 0; i < Constants.BANK_SIZE; i++) { - bankItems[i] = 0; - } - - for (int i = 0; i < Constants.BANK_SIZE; i++) { - bankItemsN[i] = 0; - } - - playerAppearance[0] = 0; // gender - playerAppearance[1] = 7; // head - playerAppearance[2] = 25;// Torso - playerAppearance[3] = 29; // arms - playerAppearance[4] = 35; // hands - playerAppearance[5] = 39; // legs - playerAppearance[6] = 44; // feet - playerAppearance[7] = 14; // beard - playerAppearance[8] = 7; // hair colour - playerAppearance[9] = 8; // torso colour - playerAppearance[10] = 9; // legs colour - playerAppearance[11] = 5; // feet colour - playerAppearance[12] = 0; // skin colour - - apset = 0; - actionID = 0; - - playerEquipment[playerHat] = -1; - playerEquipment[playerCape] = -1; - playerEquipment[playerAmulet] = -1; - playerEquipment[playerChest] = -1; - playerEquipment[playerShield] = -1; - playerEquipment[playerLegs] = -1; - playerEquipment[playerHands] = -1; - playerEquipment[playerFeet] = -1; - playerEquipment[playerRing] = -1; - playerEquipment[playerArrows] = -1; - playerEquipment[playerWeapon] = -1; - - heightLevel = 0; - - if (Constants.TUTORIAL_ISLAND) { - teleportToX = 3094; - teleportToY = 3107; - } else { - teleportToX = 3233; - teleportToY = 3229; - } - - absX = absY = -1; - mapRegionX = mapRegionY = -1; - currentX = currentY = 0; - resetWalkingQueue(); - } - - void destruct() { - playerListSize = 0; - for (int i = 0; i < maxPlayerListSize; i++) { - playerList[i] = null; - } - absX = absY = -1; - mapRegionX = mapRegionY = -1; - currentX = currentY = 0; - resetWalkingQueue(); - } - - public static final int maxPlayerListSize = Constants.MAX_PLAYERS; - public Player playerList[] = new Player[maxPlayerListSize]; - public int playerListSize = 0; - - public byte playerInListBitmap[] = new byte[Constants.MAX_PLAYERS + 7 >> 3]; - - public static final int maxNPCListSize = NpcHandler.MAX_NPCS; - public Npc npcList[] = new Npc[maxNPCListSize]; - public int npcListSize = 0; - - public byte npcInListBitmap[] = new byte[NpcHandler.MAX_NPCS + 7 >> 3]; - - public boolean withinDistance(Player otherPlr) { - if (heightLevel != otherPlr.heightLevel) { - return false; - } - int deltaX = otherPlr.absX - absX, deltaY = otherPlr.absY - absY; - return deltaX <= 15 && deltaX >= -16 && deltaY <= 15 && deltaY >= -16; - } - - public boolean withinDistance(Npc npc) { - if (heightLevel != npc.heightLevel) { - return false; - } - if (npc.needRespawn == true) { - return false; - } - int deltaX = npc.absX - absX, deltaY = npc.absY - absY; - return deltaX <= 15 && deltaX >= -16 && deltaY <= 15 && deltaY >= -16; - } - - public boolean withinDistance(int absX, int getY, int getHeightLevel) { - if (heightLevel != getHeightLevel) { - return false; - } - if (objectId == 2242) { - System.out.println("not within distance"); - return false; - } - int deltaX = getX() - absX, deltaY = getY() - getY; - return deltaX <= 15 && deltaX >= -16 && deltaY <= 15 && deltaY >= -16; - } - - public int distanceToPoint(int pointX, int pointY) { - return (int) Math.sqrt(Math.pow(absX - pointX, 2) - + Math.pow(absY - pointY, 2)); - } - - public int mapRegionX, mapRegionY; - public int absX; - - public int absY; - public int currentX, currentY; - - public int heightLevel; - public int playerSE = 0x328; - public int playerSEW = 0x333; - public int playerSER = 0x334; - - public boolean updateRequired = true; - - public final int walkingQueueSize = 50; - public int walkingQueueX[] = new int[walkingQueueSize], - walkingQueueY[] = new int[walkingQueueSize]; - public int wQueueReadPtr = 0; - public int wQueueWritePtr = 0; - public boolean isRunning = true; - public int teleportToX = -1, teleportToY = -1; - - public void resetWalkingQueue() { - wQueueReadPtr = wQueueWritePtr = 0; - for (int i = 0; i < walkingQueueSize; i++) { - walkingQueueX[i] = currentX; - walkingQueueY[i] = currentY; - } - } - - public void addToWalkingQueue(int x, int y) { - // if (VirtualWorld.I(heightLevel, absX, absY, x, y, 0)) { - int next = (wQueueWritePtr + 1) % walkingQueueSize; - if (next == wQueueWritePtr) { - return; - } - walkingQueueX[wQueueWritePtr] = x; - walkingQueueY[wQueueWritePtr] = y; - wQueueWritePtr = next; - // } - } -public boolean goodDistance(int objectX, int objectY, int playerX, int playerY, int distance) { - return ((objectX-playerX <= distance && objectX-playerX >= -distance) && (objectY-playerY <= distance && objectY-playerY >= -distance)); -} - - public int getNextWalkingDirection() { - if (wQueueReadPtr == wQueueWritePtr) { - return -1; - } - int dir; - do { - dir = Misc.direction(currentX, currentY, - walkingQueueX[wQueueReadPtr], walkingQueueY[wQueueReadPtr]); - if (dir == -1) { - wQueueReadPtr = (wQueueReadPtr + 1) % walkingQueueSize; - } else if ((dir & 1) != 0) { - println_debug("Invalid waypoint in walking queue!"); - resetWalkingQueue(); - return -1; - } - } while (dir == -1 && wQueueReadPtr != wQueueWritePtr); - if (dir == -1) { - return -1; - } - dir >>= 1; - currentX += Misc.directionDeltaX[dir]; - currentY += Misc.directionDeltaY[dir]; - /*if (!Region.canMove(absX, absY, (absX + Misc.directionDeltaX[dir]), (absY + Misc.directionDeltaY[dir]), heightLevel, 1, 1)) - return -1;*/ - absX += Misc.directionDeltaX[dir]; - absY += Misc.directionDeltaY[dir]; - updateWalkEntities(); - return dir; - } - - public boolean didTeleport = false; - public boolean mapRegionDidChange = false; - public int dir1 = -1, dir2 = -1; - public boolean createItems = false; - public int poimiX = 0, poimiY = 0; - - public synchronized void getNextPlayerMovement() { - mapRegionDidChange = false; - didTeleport = false; - dir1 = dir2 = -1; - - if (teleportToX != -1 && teleportToY != -1) { - mapRegionDidChange = true; - if (mapRegionX != -1 && mapRegionY != -1) { - int relX = teleportToX - mapRegionX * 8, relY = teleportToY - - mapRegionY * 8; - if (relX >= 2 * 8 && relX < 11 * 8 && relY >= 2 * 8 - && relY < 11 * 8) { - mapRegionDidChange = false; - } - } - if (mapRegionDidChange) { - mapRegionX = (teleportToX >> 3) - 6; - mapRegionY = (teleportToY >> 3) - 6; - } - currentX = teleportToX - 8 * mapRegionX; - currentY = teleportToY - 8 * mapRegionY; - absX = teleportToX; - absY = teleportToY; - resetWalkingQueue(); - - teleportToX = teleportToY = -1; - didTeleport = true; - updateWalkEntities(); - } else { - dir1 = getNextWalkingDirection(); - if (dir1 == -1) { - return; - } - if (isRunning) { - dir2 = getNextWalkingDirection(); - } - // c.sendMessage("Cycle Ended"); - int deltaX = 0, deltaY = 0; - if (currentX < 2 * 8) { - deltaX = 4 * 8; - mapRegionX -= 4; - mapRegionDidChange = true; - } else if (currentX >= 11 * 8) { - deltaX = -4 * 8; - mapRegionX += 4; - mapRegionDidChange = true; - } - if (currentY < 2 * 8) { - deltaY = 4 * 8; - mapRegionY -= 4; - mapRegionDidChange = true; - } else if (currentY >= 11 * 8) { - deltaY = -4 * 8; - mapRegionY += 4; - mapRegionDidChange = true; - } - - if (mapRegionDidChange) { - currentX += deltaX; - currentY += deltaY; - for (int i = 0; i < walkingQueueSize; i++) { - walkingQueueX[i] += deltaX; - walkingQueueY[i] += deltaY; - } - } - } - } - - public void updateThisPlayerMovement(Stream str) { - - if (str != null) { - if (mapRegionDidChange) { - str.createFrame(73); - str.writeWordA(mapRegionX + 6); - str.writeWord(mapRegionY + 6); - } - - if (didTeleport) { - str.createFrameVarSizeWord(81); - str.initBitAccess(); - str.writeBits(1, 1); - str.writeBits(2, 3); - str.writeBits(2, heightLevel); - str.writeBits(1, 1); - str.writeBits(1, updateRequired ? 1 : 0); - str.writeBits(7, currentY); - str.writeBits(7, currentX); - return; - } - } - if (dir1 == -1) { - // don't have to update the character position, because we're - // just standing - if (str != null){ - str.createFrameVarSizeWord(81); - str.initBitAccess(); - isMoving = false; - if (updateRequired) { - // tell client there's an update block appended at the end - str.writeBits(1, 1); - str.writeBits(2, 0); - } else { - str.writeBits(1, 0); - } - } - if (DirectionCount < 50) { - DirectionCount++; - } - } else { - DirectionCount = 0; - if (str != null) { - str.createFrameVarSizeWord(81); - str.initBitAccess(); - str.writeBits(1, 1); - } - - if (dir2 == -1) { - isMoving = true; - if (str != null) { - str.writeBits(2, 1); - str.writeBits(3, Misc.xlateDirectionToClient[dir1]); - if (updateRequired) { - str.writeBits(1, 1); - } else { - str.writeBits(1, 0); - } - } - } else { - isMoving = true; - if (str != null) { - str.writeBits(2, 2); - str.writeBits(3, Misc.xlateDirectionToClient[dir1]); - str.writeBits(3, Misc.xlateDirectionToClient[dir2]); - if (updateRequired) { - str.writeBits(1, 1); - } else { - str.writeBits(1, 0); - } - } - if (playerEnergy > 0 && playerRights < 2) { - // calculations from https://oldschool.runescape.wiki/w/Energy - playerEnergy -= 0.64; - if (weight > 0.0) - playerEnergy -= Math.min(weight, 64) / 100; - } else if (playerRights >= 2) { - playerEnergy = 100; - isRunning2 = true; - } else if (playerEnergy <= 0) { - playerEnergy = 0; - isRunning2 = false; - } - } - } - } - - public void updatePlayerMovement(Stream str) { - if (str == null) - return; - - if (dir1 == -1) { - if (updateRequired || isChatTextUpdateRequired()) { - str.writeBits(1, 1); - str.writeBits(2, 0); - } else { - str.writeBits(1, 0); - } - } else if (dir2 == -1) { - - str.writeBits(1, 1); - str.writeBits(2, 1); - str.writeBits(3, Misc.xlateDirectionToClient[dir1]); - str.writeBits(1, updateRequired || isChatTextUpdateRequired() ? 1 : 0); - } else { - - str.writeBits(1, 1); - str.writeBits(2, 2); - str.writeBits(3, Misc.xlateDirectionToClient[dir1]); - str.writeBits(3, Misc.xlateDirectionToClient[dir2]); - str.writeBits(1, updateRequired || isChatTextUpdateRequired() ? 1 : 0); - } - } - - public byte cachedPropertiesBitmap[] = new byte[Constants.MAX_PLAYERS + 7 >> 3]; - - public void addNewNPC(Npc npc, Stream str, Stream updateBlock) { - int id = npc.npcId; - npcInListBitmap[id >> 3] |= 1 << (id & 7); - npcList[npcListSize++] = npc; - - if (str != null) { - str.writeBits(14, id); - } - - int z = npc.absY - absY; - if (z < 0) { - z += 32; - } - - if (str != null) { - str.writeBits(5, z); - } - - z = npc.absX - absX; - if (z < 0) { - z += 32; - } - - if (str != null) { - str.writeBits(5, z); - - str.writeBits(1, 0); - str.writeBits(12, npc.npcType); - } - - boolean savedUpdateRequired = npc.updateRequired; - npc.updateRequired = true; - npc.appendNPCUpdateBlock(updateBlock); - npc.updateRequired = savedUpdateRequired; - - if (str != null) { - str.writeBits(1, 1); - } - } - - public void addNewPlayer(Player plr, Stream str, Stream updateBlock) { - int id = plr.playerId; - playerInListBitmap[id >> 3] |= 1 << (id & 7); - playerList[playerListSize++] = plr; - - if (str != null) { - str.writeBits(11, id); - str.writeBits(1, 1); - } - boolean savedFlag = plr.isAppearanceUpdateRequired(); - boolean savedUpdateRequired = plr.updateRequired; - plr.setAppearanceUpdateRequired(true); - plr.updateRequired = true; - plr.appendPlayerUpdateBlock(updateBlock); - plr.setAppearanceUpdateRequired(savedFlag); - plr.updateRequired = savedUpdateRequired; - if (str != null) { - str.writeBits(1, 1); - } - int z = plr.absY - absY; - if (z < 0) { - z += 32; - } - - if (str != null) { - str.writeBits(5, z); - } - - z = plr.absX - absX; - if (z < 0) { - z += 32; - } - - if (str != null) { - str.writeBits(5, z); - } - } - - public int headIcon = -1, bountyIcon = 0; - - public int DirectionCount = 0; - public boolean appearanceUpdateRequired = true; - public int hitDiff2; - public int hitDiff = 0; - public boolean hitUpdateRequired2; - public boolean hitUpdateRequired = false; - public boolean isDead = false; - - protected static Stream playerProps; - static { - playerProps = new Stream(new byte[100]); - } - - protected void appendPlayerAppearance(Stream str) { - playerProps.currentOffset = 0; - - playerProps.writeByte(playerAppearance[0]); - - playerProps.writeByte(headIcon); - playerProps.writeByte(headIconPk); - // playerProps.writeByte(headIconHints); - // playerProps.writeByte(bountyIcon); - - if (playerEquipment[playerHat] > 1) { - playerProps.writeWord(0x200 + playerEquipment[playerHat]); - } else { - playerProps.writeByte(0); - } - - if (playerEquipment[playerCape] > 1) { - playerProps.writeWord(0x200 + playerEquipment[playerCape]); - } else { - playerProps.writeByte(0); - } - - if (playerEquipment[playerAmulet] > 1) { - playerProps.writeWord(0x200 + playerEquipment[playerAmulet]); - } else { - playerProps.writeByte(0); - } - - if (playerEquipment[playerWeapon] > 1) { - playerProps.writeWord(0x200 + playerEquipment[playerWeapon]); - } else { - playerProps.writeByte(0); - } - - if (playerEquipment[playerChest] > 1) { - playerProps.writeWord(0x200 + playerEquipment[playerChest]); - } else { - playerProps.writeWord(0x100 + playerAppearance[2]); - } - - if (playerEquipment[playerShield] > 1) { - playerProps.writeWord(0x200 + playerEquipment[playerShield]); - } else { - playerProps.writeByte(0); - } - - if (!Item.isFullBody(playerEquipment[playerChest])) { - playerProps.writeWord(0x100 + playerAppearance[3]); - } else { - playerProps.writeByte(0); - } - - if (playerEquipment[playerLegs] > 1) { - playerProps.writeWord(0x200 + playerEquipment[playerLegs]); - } else { - playerProps.writeWord(0x100 + playerAppearance[5]); - } - - if (!Item.isFullHelm(playerEquipment[playerHat]) - && !Item.isFullMask(playerEquipment[playerHat])) { - playerProps.writeWord(0x100 + playerAppearance[1]); - } else { - playerProps.writeByte(0); - } - - if (playerEquipment[playerHands] > 1) { - playerProps.writeWord(0x200 + playerEquipment[playerHands]); - } else { - playerProps.writeWord(0x100 + playerAppearance[4]); - } - - if (playerEquipment[playerFeet] > 1) { - playerProps.writeWord(0x200 + playerEquipment[playerFeet]); - } else { - playerProps.writeWord(0x100 + playerAppearance[6]); - } - - if (playerAppearance[0] != 1 - && !Item.isFullMask(playerEquipment[playerHat])) { - playerProps.writeWord(0x100 + playerAppearance[7]); - } else { - playerProps.writeByte(0); - } - - playerProps.writeByte(playerAppearance[8]); - playerProps.writeByte(playerAppearance[9]); - playerProps.writeByte(playerAppearance[10]); - playerProps.writeByte(playerAppearance[11]); - playerProps.writeByte(playerAppearance[12]); - playerProps.writeWord(playerStandIndex); // standAnimIndex - playerProps.writeWord(playerTurnIndex); // standTurnAnimIndex - playerProps.writeWord(playerWalkIndex); // walkAnimIndex - playerProps.writeWord(playerTurn180Index); // turn180AnimIndex - playerProps.writeWord(playerTurn90CWIndex); // turn90CWAnimIndex - playerProps.writeWord(playerTurn90CCWIndex); // turn90CCWAnimIndex - playerProps.writeWord(playerRunIndex); // runAnimIndex - playerProps.writeQWord(Misc.playerNameToInt64(playerName)); - combatLevel = calculateCombatLevel(); - playerProps.writeByte(combatLevel); // combat level - playerProps.writeWord(0); - str.writeByteC(playerProps.currentOffset); - str.writeBytes(playerProps.buffer, playerProps.currentOffset, 0); - } - - public int calculateCombatLevel() { - int j = getLevelForXP(playerXP[playerAttack]); - int k = getLevelForXP(playerXP[playerDefence]); - int l = getLevelForXP(playerXP[playerStrength]); - int i1 = getLevelForXP(playerXP[playerHitpoints]); - int j1 = getLevelForXP(playerXP[playerPrayer]); - int k1 = getLevelForXP(playerXP[playerRanged]); - int l1 = getLevelForXP(playerXP[playerMagic]); - int combatLevel = (int) ((k + i1 + Math.floor(j1 / 2)) * 0.25D) + 1; - double d = (j + l) * 0.32500000000000001D; - double d1 = Math.floor(k1 * 1.5D) * 0.32500000000000001D; - double d2 = Math.floor(l1 * 1.5D) * 0.32500000000000001D; - if (d >= d1 && d >= d2) { - combatLevel += d; - } else if (d1 >= d && d1 >= d2) { - combatLevel += d1; - } else if (d2 >= d && d2 >= d1) { - combatLevel += d2; - } - return combatLevel; - } - - public int getLevelForXP(int exp) { - if (exp > 13034430) { - return 99; - } else { - int points = 0; - for (int lvl = 1; lvl <= 99; ++lvl) { - points = (int) (points + Math.floor(lvl + 300.0D - * Math.pow(2.0D, lvl / 7.0D))); - int var5 = (int) Math.floor(points / 4); - if (var5 >= exp) { - return lvl; - } - } - - return 99; - } - } - - private boolean chatTextUpdateRequired = false; - private byte chatText[] = new byte[4096]; - private byte chatTextSize = 0; - private int chatTextColor = 0; - private int chatTextEffects = 0; - - protected void appendPlayerChatText(Stream str) { - if (str == null) return; - str.writeWordBigEndian(((getChatTextColor() & 0xFF) << 8) + (getChatTextEffects() & 0xFF)); - str.writeByte(playerRights); - str.writeByteC(getChatTextSize()); - str.writeBytes_reverse(getChatText(), getChatTextSize(), 0); - } - - public void forcedChat(String text) { - forcedText = text; - forcedChatUpdateRequired = true; - updateRequired = true; - setAppearanceUpdateRequired(true); - } - - public String forcedText = "null"; - - public void appendForcedChat(Stream str) { - if (str != null) - str.writeString(forcedText); - } - - /** - * Graphics - **/ - - public int mask100var1 = 0; - public int mask100var2 = 0; - protected boolean mask100update = false; - - public void appendMask100Update(Stream str) { - str.writeWordBigEndian(mask100var1); - str.writeDWord(mask100var2); - } - - public void gfx100(int gfx) { - mask100var1 = gfx; - mask100var2 = 6553600; - mask100update = true; - updateRequired = true; - } - - public void gfx0(int gfx) { - mask100var1 = gfx; - mask100var2 = 65536; - mask100update = true; - updateRequired = true; - } - - public boolean wearing2h() { - Client c = (Client) this; - String s = ItemAssistant.getItemName(c.playerEquipment[c.playerWeapon]); - if (s.contains("2h")) { - return true; - } else if (s.contains("godsword")) { - return true; - } - return false; - } - - /** - * Animations - **/ - public void startAnimation(int animId) { - if (wearing2h() && animId == 829) { - return; - } - if (animId == -1) { - animId = 65535; - } - if (isBotting == true) { - animId = 65535; - } - animationRequest = animId; - animationWaitCycles = 0; - updateRequired = true; - } - - public void startAnimation(int animId, int time) { - animationRequest = animId; - animationWaitCycles = time; - updateRequired = true; - } - - public void appendAnimationRequest(Stream str) { - str.writeWordBigEndian(animationRequest == -1 ? 65535 - : animationRequest); - str.writeByteC(animationWaitCycles); - } - - /** - * Face Update - **/ - - protected boolean faceUpdateRequired = false; - public int face = -1; - public int FocusPointX = -1, FocusPointY = -1; - - public void faceUpdate(int index) { - face = index; - faceUpdateRequired = true; - updateRequired = true; - } - - public void appendFaceUpdate(Stream str) { - str.writeWordBigEndian(face); - } - - public void turnPlayerTo(int pointX, int pointY) { - FocusPointX = 2 * pointX + 1; - FocusPointY = 2 * pointY + 1; - updateRequired = true; - } - - private void appendSetFocusDestination(Stream str) { - str.writeWordBigEndianA(FocusPointX); - str.writeWordBigEndian(FocusPointY); - } - - /** - * Hit Update - **/ - - protected void appendHitUpdate(Stream str) { - str.writeByte(getHitDiff()); // What the person got 'hit' for - if (poisonMask == 1) { - str.writeByteA(2); - } else if (getHitDiff() > 0) { - str.writeByteA(1); // 0: red hitting - 1: blue hitting - } else { - str.writeByteA(0); // 0: red hitting - 1: blue hitting - } - if (playerLevel[3] <= 0) { - playerLevel[3] = 0; - isDead = true; - } - str.writeByteC(playerLevel[3]); // Their current hp, for HP bar - str.writeByte(getLevelForXP(playerXP[3])); - } - - protected void appendHitUpdate2(Stream str) { - str.writeByte(hitDiff2); // What the perseon got 'hit' for - if (poisonMask == 2) { - str.writeByteS(2); - poisonMask = -1; - } else if (hitDiff2 > 0) { - str.writeByteS(1); // 0: red hitting - 1: blue hitting - } else { - str.writeByteS(0); // 0: red hitting - 1: blue hitting - } - if (playerLevel[3] <= 0) { - playerLevel[3] = 0; - isDead = true; - } - str.writeByte(playerLevel[3]); // Their current hp, for HP bar - str.writeByteC(getLevelForXP(playerXP[3])); // Their max hp, for HP - } - - public void appendPlayerUpdateBlock(Stream str) { - if (!updateRequired && !isChatTextUpdateRequired()) { - return; // nothing required - } - int updateMask = 0; - if (mask100update) { - updateMask |= 0x100; - } - if (animationRequest != -1) { - updateMask |= 8; - } - if (forcedChatUpdateRequired) { - updateMask |= 4; - } - if (isChatTextUpdateRequired()) { - updateMask |= 0x80; - } - if (isAppearanceUpdateRequired()) { - updateMask |= 0x10; - } - if (faceUpdateRequired) { - updateMask |= 1; - } - if (FocusPointX != -1) { - updateMask |= 2; - } - if (isHitUpdateRequired()) { - updateMask |= 0x20; - } - - if (hitUpdateRequired2) { - updateMask |= 0x200; - } - - if (updateMask >= 0x100) { - updateMask |= 0x40; - str.writeByte(updateMask & 0xFF); - str.writeByte(updateMask >> 8); - } else { - str.writeByte(updateMask); - } - - // now writing the various update blocks itself - note that their - // order crucial - if (mask100update) { - appendMask100Update(str); - } - if (animationRequest != -1) { - appendAnimationRequest(str); - } - if (forcedChatUpdateRequired) { - appendForcedChat(str); - } - if (isChatTextUpdateRequired()) { - appendPlayerChatText(str); - } - if (faceUpdateRequired) { - appendFaceUpdate(str); - } - if (isAppearanceUpdateRequired()) { - appendPlayerAppearance(str); - } - if (FocusPointX != -1) { - appendSetFocusDestination(str); - } - if (isHitUpdateRequired()) { - appendHitUpdate(str); - } - if (hitUpdateRequired2) { - appendHitUpdate2(str); - } - } - - public void clearUpdateFlags() { - updateRequired = false; - setChatTextUpdateRequired(false); - setAppearanceUpdateRequired(false); - setHitUpdateRequired(false); - hitUpdateRequired2 = false; - forcedChatUpdateRequired = false; - mask100update = false; - animationRequest = -1; - FocusPointX = -1; - FocusPointY = -1; - poisonMask = -1; - faceUpdateRequired = false; - face = 65535; - } - - public void stopMovement() { - if (teleportToX <= 0 && teleportToY <= 0) { - teleportToX = absX; - teleportToY = absY; - } - newWalkCmdSteps = 0; - getNewWalkCmdX()[0] = getNewWalkCmdY()[0] = travelBackX[0] = travelBackY[0] = 0; - getNextPlayerMovement(); - } - - private int newWalkCmdX[] = new int[walkingQueueSize]; - private int newWalkCmdY[] = new int[walkingQueueSize]; - public int newWalkCmdSteps = 0; - private boolean newWalkCmdIsRunning = false; - protected int travelBackX[] = new int[walkingQueueSize]; - protected int travelBackY[] = new int[walkingQueueSize]; - protected int numTravelBackSteps = 0; - - public void preProcessing() { - newWalkCmdSteps = 0; - } - - public abstract void process(); - - public abstract boolean processQueuedPackets(); - - public void postProcessing() { - if (newWalkCmdSteps > 0) { - int firstX = getNewWalkCmdX()[0]; - int firstY = getNewWalkCmdY()[0]; - boolean found = false; - numTravelBackSteps = 0; - int ptr = wQueueReadPtr; - int dir = Misc.direction(currentX, currentY, firstX, firstY); - if (dir != -1 && (dir & 1) != 0) { - do { - int var13 = dir; - --ptr; - if (ptr < 0) { - ptr = 49; - } - - travelBackX[numTravelBackSteps] = walkingQueueX[ptr]; - travelBackY[numTravelBackSteps++] = walkingQueueY[ptr]; - dir = Misc.direction(walkingQueueX[ptr], - walkingQueueY[ptr], firstX, firstY); - if (var13 != dir) { - found = true; - break; - } - } while (ptr != wQueueWritePtr); - } else { - found = true; - } - - if (found) { - wQueueWritePtr = wQueueReadPtr; - addToWalkingQueue(currentX, currentY); - int i; - if (dir != -1 && (dir & 1) != 0) { - for (i = 0; i < numTravelBackSteps - 1; ++i) { - addToWalkingQueue(travelBackX[i], travelBackY[i]); - } - - i = travelBackX[numTravelBackSteps - 1]; - int wayPointY2 = travelBackY[numTravelBackSteps - 1]; - int wayPointX1; - int wayPointY1; - if (numTravelBackSteps == 1) { - wayPointX1 = currentX; - wayPointY1 = currentY; - } else { - wayPointX1 = travelBackX[numTravelBackSteps - 2]; - wayPointY1 = travelBackY[numTravelBackSteps - 2]; - } - - dir = Misc.direction(wayPointX1, wayPointY1, i, wayPointY2); - if (dir != -1 && (dir & 1) == 0) { - dir >>= 1; - found = false; - int x = wayPointX1; - int y = wayPointY1; - - while (x != i || y != wayPointY2) { - x += Misc.directionDeltaX[dir]; - y += Misc.directionDeltaY[dir]; - if ((Misc.direction(x, y, firstX, firstY) & 1) == 0) { - found = true; - break; - } - } - - if (!found) { - println_debug("Fatal: Internal error: unable to determine connection vertex! wp1=(" - + wayPointX1 - + ", " - + wayPointY1 - + "), wp2=(" - + i - + ", " - + wayPointY2 - + "), " - + "first=(" - + firstX - + ", " - + firstY + ")"); - } else { - addToWalkingQueue(wayPointX1, wayPointY1); - } - } else { - println_debug("Fatal: The walking queue is corrupt! wp1=(" - + wayPointX1 - + ", " - + wayPointY1 - + "), " - + "wp2=(" + i + ", " + wayPointY2 + ")"); - } - } else { - for (i = 0; i < numTravelBackSteps; ++i) { - addToWalkingQueue(travelBackX[i], travelBackY[i]); - } - } - - for (i = 0; i < newWalkCmdSteps; ++i) { - addToWalkingQueue(getNewWalkCmdX()[i], getNewWalkCmdY()[i]); - } - } - - isRunning = isNewWalkCmdIsRunning() || isRunning2; - } - } - - public int getMapRegionX() { - return mapRegionX; - } - - public int getMapRegionY() { - return mapRegionY; - } - - public int getX() { - return absX; - } - - public int getY() { - return absY; - } - - public int getH() { - return heightLevel; - } - - public int getId() { - return playerId; - } - - public void setHitDiff(int hitDiff) { - this.hitDiff = hitDiff; - } - - public void setHitDiff2(int hitDiff2) { - this.hitDiff2 = hitDiff2; - } - - public int getHitDiff() { - return hitDiff; - } - - public void setHitUpdateRequired(boolean hitUpdateRequired) { - this.hitUpdateRequired = hitUpdateRequired; - } - - public void setHitUpdateRequired2(boolean hitUpdateRequired2) { - this.hitUpdateRequired2 = hitUpdateRequired2; - } - - public boolean isHitUpdateRequired() { - return hitUpdateRequired; - } - - public boolean getHitUpdateRequired() { - return hitUpdateRequired; - } - - public boolean getHitUpdateRequired2() { - return hitUpdateRequired2; - } - - public void setAppearanceUpdateRequired(boolean appearanceUpdateRequired) { - this.appearanceUpdateRequired = appearanceUpdateRequired; - } - - public boolean isAppearanceUpdateRequired() { - return appearanceUpdateRequired; - } - - public void setChatTextEffects(int chatTextEffects) { - this.chatTextEffects = chatTextEffects; - } - - public int getChatTextEffects() { - return chatTextEffects; - } - - public void setChatTextSize(byte chatTextSize) { - this.chatTextSize = chatTextSize; - } - - public byte getChatTextSize() { - return chatTextSize; - } - - public void setChatTextUpdateRequired(boolean chatTextUpdateRequired) { - this.chatTextUpdateRequired = chatTextUpdateRequired; - } - - public boolean isChatTextUpdateRequired() { - return chatTextUpdateRequired; - } - - public void setChatText(byte chatText[]) { - this.chatText = chatText; - } - - public byte[] getChatText() { - return chatText; - } - - public void setChatTextColor(int chatTextColor) { - this.chatTextColor = chatTextColor; - } - - public int getChatTextColor() { - return chatTextColor; - } - - public void setNewWalkCmdX(int newWalkCmdX[]) { - this.newWalkCmdX = newWalkCmdX; - } - - public int[] getNewWalkCmdX() { - return newWalkCmdX; - } - - public void setNewWalkCmdY(int newWalkCmdY[]) { - this.newWalkCmdY = newWalkCmdY; - } - - public int[] getNewWalkCmdY() { - return newWalkCmdY; - } - - public void setNewWalkCmdIsRunning(boolean newWalkCmdIsRunning) { - this.newWalkCmdIsRunning = newWalkCmdIsRunning; - } - - public boolean isNewWalkCmdIsRunning() { - return newWalkCmdIsRunning; - } - - public void setInStreamDecryption(ISAACRandomGen inStreamDecryption) { - } - - public void setOutStreamDecryption(ISAACRandomGen outStreamDecryption) { - } - - public boolean samePlayer() { - for (int j = 0; j < PlayerHandler.players.length; j++) { - if (j == playerId) { - continue; - } - if (PlayerHandler.players[j] != null) { - if (PlayerHandler.players[j].playerName.equalsIgnoreCase(playerName)) { - disconnected = true; - return true; - } - } - } - return false; - } - - public void putInCombat(int attacker) { - underAttackBy = attacker; - logoutDelay = System.currentTimeMillis(); - singleCombatDelay = System.currentTimeMillis(); - } - - - public void dealDamage(int damage) { - if (teleTimer <= 0) { - playerLevel[3] -= damage; - int difference = playerLevel[3] - damage; - if (difference <= getLevelForXP(playerXP[3]) / 10 && difference > 0) - appendRedemption(); - } else { - if (hitUpdateRequired) { - hitUpdateRequired = false; - } - if (hitUpdateRequired2) { - hitUpdateRequired2 = false; - } - } - } - - public void appendRedemption() { - Client c = (Client) PlayerHandler.players[playerId]; - if (c.getPrayer().prayerActive[22]) { - int added = c.playerLevel[3] += (int)(c.getLevelForXP(c.playerXP[5]) * .25); - if (added > c.getLevelForXP(c.playerXP[3])) { - c.playerLevel[3] = c.getLevelForXP(c.playerXP[3]); - } else { - c.playerLevel[3] += (int)(getLevelForXP(c.playerXP[5]) * .25); - } - c.playerLevel[5] = 0; - c.getPlayerAssistant().refreshSkill(3); - c.getPlayerAssistant().refreshSkill(5); - c.gfx0(436); - PrayerDrain.resetPrayers(c); - } - } - - - public int[] damageTaken = new int[PlayerHandler.players.length]; - - public void handleHitMask(int damage) { - if (!hitUpdateRequired) { - hitUpdateRequired = true; - hitDiff = damage; - } else if (!hitUpdateRequired2) { - hitUpdateRequired2 = true; - hitDiff2 = damage; - } - updateRequired = true; - } - -} +package com.rebotted.game.players; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.GregorianCalendar; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.Map; +import java.util.Queue; +import org.apache.mina.common.IoSession; +import com.rebotted.Connection; +import com.rebotted.GameConstants; +import com.rebotted.GameEngine; +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.content.BankPin; +import com.rebotted.game.content.EmoteHandler; +import com.rebotted.game.content.combat.CombatAssistant; +import com.rebotted.game.content.combat.Specials; +import com.rebotted.game.content.combat.magic.Enchanting; +import com.rebotted.game.content.combat.magic.MagicTeleports; +import com.rebotted.game.content.combat.prayer.PrayerData; +import com.rebotted.game.content.combat.prayer.PrayerDrain; +import com.rebotted.game.content.combat.range.DwarfCannon; +import com.rebotted.game.content.consumables.Food; +import com.rebotted.game.content.consumables.Potions; +import com.rebotted.game.content.guilds.impl.RangersGuild; +import com.rebotted.game.content.minigames.Barrows; +import com.rebotted.game.content.minigames.Dueling; +import com.rebotted.game.content.minigames.FightPits; +import com.rebotted.game.content.minigames.PestControl; +import com.rebotted.game.content.minigames.castlewars.CastleWars; +import com.rebotted.game.content.music.PlayList; +import com.rebotted.game.content.music.sound.SoundList; +import com.rebotted.game.content.quests.QuestAssistant; +import com.rebotted.game.content.skills.SkillInterfaces; +import com.rebotted.game.content.skills.agility.Agility; +import com.rebotted.game.content.skills.agility.ApeAtollAgility; +import com.rebotted.game.content.skills.agility.BarbarianAgility; +import com.rebotted.game.content.skills.agility.GnomeAgility; +import com.rebotted.game.content.skills.agility.PyramidAgility; +import com.rebotted.game.content.skills.agility.WerewolfAgility; +import com.rebotted.game.content.skills.agility.WildernessAgility; +import com.rebotted.game.content.skills.cooking.Potatoes; +import com.rebotted.game.content.skills.core.Mining; +import com.rebotted.game.content.skills.crafting.GlassBlowing; +import com.rebotted.game.content.skills.runecrafting.Runecrafting; +import com.rebotted.game.content.skills.slayer.Slayer; +import com.rebotted.game.content.skills.smithing.Smithing; +import com.rebotted.game.content.skills.smithing.SmithingInterface; +import com.rebotted.game.content.traveling.Desert; +import com.rebotted.game.dialogues.DialogueHandler; +import com.rebotted.game.items.GameItem; +import com.rebotted.game.items.Item; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.items.Weight; +import com.rebotted.game.items.impl.LightSources; +import com.rebotted.game.items.impl.PotionMixing; +import com.rebotted.game.items.impl.Teles; +import com.rebotted.game.npcs.Npc; +import com.rebotted.game.npcs.NpcActions; +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.game.npcs.impl.Pets; +import com.rebotted.game.objects.ObjectsActions; +import com.rebotted.game.shops.ShopAssistant; +import com.rebotted.net.HostList; +import com.rebotted.net.Packet; +import com.rebotted.net.PacketSender; +import com.rebotted.net.StaticPacketBuilder; +import com.rebotted.net.packets.PacketHandler; +import com.rebotted.net.packets.impl.ChallengePlayer; +import com.rebotted.util.ISAACRandomGen; +import com.rebotted.util.Misc; +import com.rebotted.util.Stream; +import com.rebotted.world.ObjectManager; + +public abstract class Player { + + public byte buffer[] = null; + public Stream inStream = null, outStream = null; + public IoSession session; + private final ItemAssistant itemAssistant = new ItemAssistant(this); + private final ShopAssistant shopAssistant = new ShopAssistant(this); + private final Trading trading = new Trading(this); + private final Dueling duel = new Dueling(this); + private final PlayerAssistant playerAssistant = new PlayerAssistant(this); + private final CombatAssistant combatAssistant = new CombatAssistant(this); + private final ObjectsActions actionHandler = new ObjectsActions(this); + private final NpcActions npcs = new NpcActions(this); + private final Queue queuedPackets = new LinkedList(); + private final Potions potions = new Potions(this); + private final PotionMixing potionMixing = new PotionMixing(this); + private final Food food = new Food(this); + private final EmoteHandler emoteHandler = new EmoteHandler(this); + private final SkillInterfaces skillInterfaces = new SkillInterfaces(this); + private final Enchanting enchanting = new Enchanting(this); + private final Potatoes potatoes = new Potatoes(this); + private final PlayerAction playeraction = new PlayerAction(this); + private final Desert desert = new Desert(); + private final Specials specials = new Specials(this); + private final SoundList sound = new SoundList(this); + public String creationAddress = ""; + private final HashMap temporary = new HashMap(); + private final PlayList playList = new PlayList(this); + private final Agility agility = new Agility(this); + private final Runecrafting runecrafting = new Runecrafting(this); + private final Teles teles = new Teles(); + private final BankPin bankPin = new BankPin(this); + private final Slayer slayer = new Slayer(this); + private final PacketSender packetSender = new PacketSender(this); + private final DialogueHandler dialogues = new DialogueHandler(this); + private final GnomeAgility gnomeStrongHold = new GnomeAgility(this); + private final WildernessAgility wildernessAgility = new WildernessAgility(this); + private final BarbarianAgility barbarianAgility = new BarbarianAgility(this); + private final PyramidAgility pyramidAgility = new PyramidAgility(this); + private final WerewolfAgility werewolfAgility = new WerewolfAgility(this); + private final ApeAtollAgility apeAtollAgility = new ApeAtollAgility(this); + private final Smithing smithing = new Smithing(); + private final SmithingInterface smithingInterface = new SmithingInterface(this); + private final PrayerData prayer = new PrayerData(); + private final ObjectManager objectManager = new ObjectManager(); + public ArrayList fishingTrawlerReward = new ArrayList(); + private final RangersGuild rangersGuild = new RangersGuild(this); + private GlassBlowing glassBlowing = new GlassBlowing(this); + private Barrows barrows = new Barrows(this); + private Mining mining = new Mining(); + private ChallengePlayer challengePlayer = new ChallengePlayer(); + private DwarfCannon dwarfCannon = new DwarfCannon(this); + private CycleEventContainer currentTask; + + public DwarfCannon getCannon() { + return dwarfCannon; + } + + public ChallengePlayer getChallengePlayer() { + return challengePlayer; + } + + public Mining getMining() { + return mining; + } + + public Barrows getBarrows() { + return barrows; + } + + public GlassBlowing getGlassBlowing() { + return glassBlowing; + } + + public RangersGuild getRangersGuild() { + return rangersGuild; + } + + public ObjectManager getObjectManager() { + return objectManager; + } + + public SmithingInterface getSmithingInt() { + return smithingInterface; + } + + public Smithing getSmithing() { + return smithing; + } + + public ApeAtollAgility getApeAtollAgility() { + return apeAtollAgility; + } + + public WerewolfAgility getWerewolfAgility() { + return werewolfAgility; + } + + public PyramidAgility getPyramidAgility() { + return pyramidAgility; + } + + public BarbarianAgility getBarbarianAgility() { + return barbarianAgility; + } + + public WildernessAgility getWildernessAgility() { + return wildernessAgility; + } + + public GnomeAgility getGnomeStrongHold() { + return gnomeStrongHold; + } + + public DialogueHandler getDialogueHandler() { + return dialogues; + } + + public PacketSender getPacketSender() { + return packetSender; + } + + public SoundList getSound() { + return sound; + } + + public Object getTemporary(String name) { + return temporary.get(name); + } + + public void addTemporary(String name, Object value) { + temporary.put(name, value); + } + + public PlayList getPlayList() { + return playList; + } + + public Specials getSpecials() { + return specials; + } + + public Potatoes getPTS() { + return potatoes; + } + + public EmoteHandler getEmoteHandler() { + return emoteHandler; + } + + public SkillInterfaces getSkillInterfaces() { + return skillInterfaces; + } + + public Enchanting getEnchanting() { + return enchanting; + } + + public PlayerAction getPlayerAction() { + return playeraction; + } + + public Desert getDesert() { + return desert; + } + + public Agility getAgility() { + return agility; + } + + public Runecrafting getRC() { + return runecrafting; + } + + public Slayer getSlayer() { + return slayer; + } + + public Teles getTeles() { + return teles; + } + + public BankPin getBankPin() { + return bankPin; + } + + public synchronized Stream getInStream() { + return inStream; + } + + public synchronized int getPacketType() { + return packetType; + } + + public synchronized int getPacketSize() { + return packetSize; + } + + public synchronized Stream getOutStream() { + return outStream; + } + + public ItemAssistant getItemAssistant() { + return itemAssistant; + } + + public PlayerAssistant getPlayerAssistant() { + return playerAssistant; + } + + public ShopAssistant getShopAssistant() { + return shopAssistant; + } + + public Trading getTrading() { + return trading; + } + + public Dueling getDueling() { + return duel; + } + + public CombatAssistant getCombatAssistant() { + return combatAssistant; + } + + public PrayerData getPrayer() { + return prayer; + } + + public ObjectsActions getObjects() { + return actionHandler; + } + + public NpcActions getNpcs() { + return npcs; + } + + public IoSession getSession() { + return session; + } + + public Potions getPotions() { + return potions; + } + + public PotionMixing getPotMixing() { + return potionMixing; + } + + public Food getFood() { + return food; + } + + public int totalShopItems; + + public void startCurrentTask(int ticksBetweenExecution, CycleEvent event) { + endCurrentTask(); + currentTask = CycleEventHandler.getSingleton().addEvent(this, event, ticksBetweenExecution); + } + + public CycleEventContainer getCurrentTask() { + return currentTask; + } + + public void endCurrentTask() { + if (currentTask != null && currentTask.isRunning()) { + currentTask.stop(); + currentTask = null; + } + } + + private Map interfaceText = new HashMap(); + + public class TinterfaceText { + public int id; + public String currentState; + + public TinterfaceText(String s, int id) { + this.currentState = s; + this.id = id; + } + + } + + public boolean checkPacket126Update(String text, int id) { + if(!interfaceText.containsKey(id)) { + interfaceText.put(id, new TinterfaceText(text, id)); + } else { + TinterfaceText t = interfaceText.get(id); + if(text.equals(t.currentState)) { + return false; + } + t.currentState = text; + } + return true; + } + + public int lowMemoryVersion = 0; + public int timeOutCounter = 0; + public int returnCode = 2; + + + /** + * Resets the shaking of the player's screen. + */ + public void resetShaking() { + getPacketSender().shakeScreen(1, 0, 0, 0); + } + + public final String disabled() { + return "Skill is disabled for testing period."; + } + + public void puzzleBarrow() { + getPacketSender().sendFrame246(4545, 250, 6833); + getPacketSender().sendFrame126("1.", 4553); + getPacketSender().sendFrame246(4546, 250, 6832); + getPacketSender().sendFrame126("2.", 4554); + getPacketSender().sendFrame246(4547, 250, 6830); + getPacketSender().sendFrame126("3.", 4555); + getPacketSender().sendFrame246(4548, 250, 6829); + getPacketSender().sendFrame126("4.", 4556); + getPacketSender().sendFrame246(4550, 250, 3454); + getPacketSender().sendFrame246(4551, 250, 8746); + getPacketSender().sendFrame246(4552, 250, 6830); + getPacketSender().showInterface(4543); + } + + public void flushOutStream() { + if (disconnected || outStream == null || outStream.currentOffset == 0) { + return; + } + synchronized (this) { + StaticPacketBuilder out = new StaticPacketBuilder().setBare(true); + byte[] temp = new byte[outStream.currentOffset]; + System.arraycopy(outStream.buffer, 0, temp, 0, temp.length); + out.addBytes(temp); + session.write(out.toPacket()); + outStream.currentOffset = 0; + } + } + + public void sendClan(String name, String message, String clan, int rights) { + if (outStream != null) { + outStream.createFrameVarSizeWord(217); + outStream.writeString(name); + outStream.writeString(message); + outStream.writeString(clan); + outStream.writeWord(rights); + outStream.endFrameVarSize(); + } + } + + public static final int PACKET_SIZES[] = { 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, // 0 + 0, 0, 0, 0, 8, 0, 6, 2, 2, 0, // 10 + 0, 2, 0, 6, 0, 12, 0, 0, 0, 0, // 20 + 0, 0, 0, 0, 0, 8, 4, 0, 0, 2, // 30 + 2, 6, 0, 6, 0, -1, 0, 0, 0, 0, // 40 + 0, 0, 0, 12, 0, 0, 0, 8, 8, 12, // 50 + 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, // 60 + 6, 0, 2, 2, 8, 6, 0, -1, 0, 6, // 70 + 0, 0, 0, 0, 0, 1, 4, 6, 0, 0, // 80 + 0, 0, 0, 0, 0, 3, 0, 0, -1, 0, // 90 + 0, 13, 0, -1, 0, 0, 0, 0, 0, 0,// 100 + 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, // 110 + 1, 0, 6, 0, 0, 0, -1, 0, 2, 6, // 120 + 0, 4, 6, 8, 0, 6, 0, 0, 0, 2, // 130 + 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, // 140 + 0, 0, 1, 2, 0, 2, 6, 0, 0, 0, // 150 + 0, 0, 0, 0, -1, -1, 0, 0, 0, 0,// 160 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 170 + 0, 8, 0, 3, 0, 2, 0, 0, 8, 1, // 180 + 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, // 190 + 2, 0, 0, 0, 0, 0, 0, 0, 4, 0, // 200 + 4, 0, 0, 0, 7, 8, 0, 0, 10, 0, // 210 + 0, 0, 0, 0, 0, 0, -1, 0, 6, 0, // 220 + 1, 0, 0, 0, 6, 0, 6, 8, 1, 0, // 230 + 0, 4, 0, 0, 0, 0, -1, 0, -1, 4,// 240 + 0, 0, 6, 6, 0, 0, 0 // 250 + }; + + public void destruct() { + if (session == null) { + return; + } + if (getCannon().hasCannon()) { + getCannon().removeObject(cannonX, cannonY); + for(int i = 0; i < GameEngine.cannonsX.length; i++) { + if (GameEngine.cannonsX[i] == cannonX && GameEngine.cannonsY[i] == cannonY) { + GameEngine.cannonsX[i] = 0; + GameEngine.cannonsY[i] = 0; + GameEngine.cannonsO[i] = null; + } + lostCannon = true; + cannonX = -1; + cannonY = -1; + } + } + if(GameEngine.trawler.players.contains(this)) { + GameEngine.trawler.players.remove(this); + } + if (CastleWars.isInCwWait(this)) { + CastleWars.leaveWaitingRoom(this); + } + if (CastleWars.isInCw(this)) { + CastleWars.removePlayerFromCw(this); + } + if (FightPits.getState(this) != null) { + FightPits.removePlayer(this, true); + } + if (PestControl.isInGame(this)) { + PestControl.removePlayerGame(this); + getPlayerAssistant().movePlayer(2657, 2639, 0); + } + if (PestControl.isInPcBoat(this)) { + PestControl.leaveWaitingBoat(this); + getPlayerAssistant().movePlayer(2657, 2639, 0); + } + if (hasNpc == true) { + getSummon().pickUpClean(this, summonId); + } + + if(GameEngine.ersSecret != null && !GameEngine.ersSecret.equals("") && this.playerRights < 2) { + boolean debugMessage = false; + System.out.println("Updating highscores for " + this.playerName + "!"); + com.everythingrs.hiscores.Hiscores.update(GameEngine.ersSecret, "Normal Mode", this.playerName, this.playerRights, this.playerXP, debugMessage); + } else { + System.out.println("EverythingRS API Disabled, highscores not saved!"); + } + + Misc.println("[DEREGISTERED]: " + playerName + ""); + HostList.getHostList().remove(session); + CycleEventHandler.getSingleton().stopEvents(this); + disconnected = true; + session.close(); + session = null; + inStream = null; + outStream = null; + isActive = false; + buffer = null; + playerListSize = 0; + for (int i = 0; i < maxPlayerListSize; i++) { + playerList[i] = null; + } + absX = absY = -1; + mapRegionX = mapRegionY = -1; + currentX = currentY = 0; + resetWalkingQueue(); + } + + public void loginPlayer() { + getPlayerAssistant().loginScreen(); + if (Connection.isNamedBanned(playerName)) { + logout(); + return; + } + synchronized (this) { + if (getOutStream() != null) { + outStream.createFrame(249); + outStream.writeByteA(membership ? 1 : 0); + outStream.writeWordBigEndianA(playerId); + for (int j = 0; j < PlayerHandler.players.length; j++) { + if (j == playerId) { + continue; + } + if (PlayerHandler.players[j] != null) { + if (PlayerHandler.players[j].playerName.equalsIgnoreCase(playerName)) { + disconnected = true; + } + } + } + } + lastLoginDate = getLastLogin(); + QuestAssistant.sendStages(this); + if (hasNpc == true) { + if (summonId > 0) { + GameEngine.npcHandler.spawnNpc3(this, summonId, absX, absY - 1, + heightLevel, 0, 120, 25, 200, 200, true, false, + true); + } + } + if (questPoints > QuestAssistant.MAXIMUM_QUESTPOINTS || playerRights > 2) { + questPoints = QuestAssistant.MAXIMUM_QUESTPOINTS;// check for abusers + } + if (playerHitpoints < 0) { + isDead = true; + } + if (playerLevel[playerHitpoints] > 99) { + playerLevel[playerHitpoints] = 99;// check for abusers + getPlayerAssistant().refreshSkill(3); + } + if (playerLevel[playerFarming] > 1 && playerRights < 3) { + playerLevel[playerFarming] = 1; + getPlayerAssistant().refreshSkill(playerFarming); + } + if (tutorialProgress > 0 && tutorialProgress < 36 && GameConstants.TUTORIAL_ISLAND) { + getPacketSender().sendMessage("@blu@Continue the tutorial from the last step you were on.@bla@"); + } + if (tutorialProgress > 35) { + getPlayerAssistant().sendSidebars(); + Weight.updateWeight(this); + getPacketSender().sendMessage("Welcome to @blu@" + GameConstants.SERVER_NAME + "@bla@ - we are currently in Server Stage v@blu@" + GameConstants.TEST_VERSION + "@bla@."); + getPacketSender().sendMessage("@red@Did you know?@bla@ We're open source! Pull requests are welcome"); + getPacketSender().sendMessage("Source code at github.com/dginovker/2006rebotted"); + getPacketSender().sendMessage("Join our Discord: discord.gg/4zrA2Wy"); + /*if (!hasBankpin) { //Kind of annoying. Maybe add Random % 10 or something. + getActionSender().sendMessage("You do not have a bank pin it is highly recommended you set one."); + }*/ + } + getPlayerAssistant().firstTimeTutorial(); + getItemAssistant().sendWeapon(playerEquipment[playerWeapon], ItemAssistant.getItemName(playerEquipment[playerWeapon])); + for (int i = 0; i < 25; i++) { + getPacketSender().setSkillLevel(i, playerLevel[i], playerXP[i]); + getPlayerAssistant().refreshSkill(i); + } + for (int p = 0; p < getPrayer().PRAYER.length; p++) { // reset + // prayer + // glows + getPrayer().prayerActive[p] = false; + getPacketSender().sendConfig(getPrayer().PRAYER_GLOW[p], 0); + } + lastX = absX; + lastY = absY; + lastH = heightLevel; + if (inWild()) { + WildernessWarning = true; + } + if (splitChat == true) { + getPacketSender().sendConfig(502, 1); + getPacketSender().sendConfig(287, 1); + } else { + getPacketSender().sendConfig(502, 0); + getPacketSender().sendConfig(287, 0); + } + if (isRunning2) { + getPacketSender().sendConfig(504, 1); + getPacketSender().sendConfig(173, 1); + } else { + getPacketSender().sendConfig(504, 0); + getPacketSender().sendConfig(173, 0); + } + + getPlayList().fixAllColors(); + getPlayerAction().setAction(false); + getPlayerAction().canWalk(true); + getPlayerAssistant().handleWeaponStyle(); + MagicTeleports.handleLoginText(this); + accountFlagged = getPlayerAssistant().checkForFlags(); + getPacketSender().sendConfig(108, 0);// resets autocast button + getPacketSender().sendFrame107(); // reset screen + getPacketSender().setChatOptions(0, 0, 0); // reset private + // messaging options + correctCoordinates(); + getPacketSender().showOption(4, 0, "Trade With", 3); + getPacketSender().showOption(5, 0, "Follow", 4); + getItemAssistant().resetItems(3214); + getItemAssistant().resetBonus(); + getItemAssistant().getBonus(); + getItemAssistant().writeBonus(); + getItemAssistant().setEquipment(playerEquipment[playerHat], 1, + playerHat); + getItemAssistant().setEquipment(playerEquipment[playerCape], 1, + playerCape); + getItemAssistant().setEquipment(playerEquipment[playerAmulet], 1, + playerAmulet); + getItemAssistant().setEquipment(playerEquipment[playerArrows], + playerEquipmentN[playerArrows], playerArrows); + getItemAssistant().setEquipment(playerEquipment[playerChest], 1, + playerChest); + getItemAssistant().setEquipment(playerEquipment[playerShield], 1, + playerShield); + getItemAssistant().setEquipment(playerEquipment[playerLegs], 1, + playerLegs); + getItemAssistant().setEquipment(playerEquipment[playerHands], 1, + playerHands); + getItemAssistant().setEquipment(playerEquipment[playerFeet], 1, + playerFeet); + getItemAssistant().setEquipment(playerEquipment[playerRing], 1, + playerRing); + getItemAssistant().setEquipment(playerEquipment[playerWeapon], + playerEquipmentN[playerWeapon], playerWeapon); + getCombatAssistant().getPlayerAnimIndex(); + getPlayerAssistant().logIntoPM(); + getItemAssistant().addSpecialBar(playerEquipment[playerWeapon]); + saveTimer = GameConstants.SAVE_TIMER; + saveCharacter = true; + Misc.println("[REGISTERED]: " + playerName + ""); + handler.updatePlayer(this, outStream); + handler.updateNPC(this, outStream); + flushOutStream(); + getPlayerAssistant().resetFollow(); + LightSources.saveBrightness(this); + getPlayerAssistant().sendAutoRetalitate(); + getCannon().loginCheck(); + } + } + + public void update() { + synchronized (this) { + handler.updatePlayer(this, outStream); + handler.updateNPC(this, outStream); + flushOutStream(); + } + } + + public void logout() { + logout(false); + } + + public void logout(boolean forceLogout) { + synchronized (this) { + if(GameEngine.trawler.players.contains(this)) { + GameEngine.trawler.players.remove(this); + } + if (getCannon().hasCannon()) { + getCannon().removeObject(cannonX, cannonY); + for(int i = 0; i < GameEngine.cannonsX.length; i++) { + if (GameEngine.cannonsX[i] == cannonX && GameEngine.cannonsY[i] == cannonY) { + GameEngine.cannonsX[i] = 0; + GameEngine.cannonsY[i] = 0; + GameEngine.cannonsO[i] = null; + } + lostCannon = true; + cannonX = -1; + cannonY = -1; + } + } + if (CastleWars.isInCw(this)) { + CastleWars.removePlayerFromCw(this); + } + if (CastleWars.isInCwWait(this)) { + CastleWars.leaveWaitingRoom(this); + } + if (FightPits.getState(this) != null) { + FightPits.removePlayer(this, true); + } + if (PestControl.isInGame(this)) { + PestControl.removePlayerGame(this); + getPlayerAssistant().movePlayer(2657, 2639, 0); + } + if (PestControl.isInPcBoat(this)) { + PestControl.leaveWaitingBoat(this); + getPlayerAssistant().movePlayer(2657, 2639, 0); + } + if(!forceLogout && (underAttackBy > 0 || underAttackBy2 > 0)) { + getPacketSender().sendMessage("You can't logout during combat!"); + return; + } + lastLoginDate = getLastLogin(); + lastX = absX; + lastY = absY; + lastH = heightLevel; + CycleEventHandler.getSingleton().stopEvents(this); + if (hasNpc == true) { + getSummon().pickUpClean(this, summonId); + } + if (forceLogout || System.currentTimeMillis() - logoutDelay > 2500) { + if (!isBot) + outStream.createFrame(109); + properLogout = true; + } else { + getPacketSender().sendMessage("You must wait a few seconds from being out of combat to logout."); + } + } + } + + + public int packetSize = 0, packetType = -1; + public boolean WildernessWarning = false; + + public void antiFirePotion() { + CycleEventHandler.getSingleton().addEvent(this, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + antiFirePot = false; + getPacketSender().sendMessage("Your resistance to dragon fire has worn off."); + container.stop(); + } + @Override + public void stop() { + + } + }, 200); + } + + public boolean isBusy = false; + + public boolean checkBusy() { + return isBusy; + } + + public void setBusy(boolean isBusy) { + this.isBusy = isBusy; + } + + public boolean isBusy() { + return isBusy; + } + + public int getLastLogin() { + Calendar cal = new GregorianCalendar(); + int day = cal.get(Calendar.DAY_OF_MONTH); + int month = cal.get(Calendar.MONTH); + int year = cal.get(Calendar.YEAR); + return (year * 10000) + (month * 100) + day; + } + + public void updateWalkEntities() { + if (inWild() && !inCw()) { + int modY = absY > 6400 ? absY - 6400 : absY; + wildLevel = (modY - 3520) / 8 + 1; + getPacketSender().walkableInterface(197); + if (GameConstants.SINGLE_AND_MULTI_ZONES) { + if (inMulti()) { + getPacketSender().sendFrame126("@yel@Level: " + wildLevel, + 199); + } else { + getPacketSender().sendFrame126("@yel@Level: " + wildLevel, + 199); + } + } else { + getPacketSender().multiWay(-1); + getPacketSender().sendFrame126("@yel@Level: " + wildLevel, 199); + } + getPacketSender().showOption(3, 0, "Attack", 1); + } else if (inDuelArena()) { + getPacketSender().walkableInterface(201); + if (duelStatus == 5) { + getPacketSender().showOption(3, 0, "Attack", 1); + } else { + getPacketSender().showOption(3, 0, "Challenge", 1); + } + } else if (getPlayerAssistant().inPitsWait()) { + getPacketSender().showOption(3, 0, "Null", 1); + } else if(GameEngine.trawler.players.contains(this)) { + getPacketSender().walkableInterface(11908); + } else if (isInBarrows() || isInBarrows2()) { + getPacketSender().sendFrame126("Kill Count: " + barrowsKillCount, 4536); + getPacketSender().walkableInterface(4535); + } else if (inCw() || inPits) { + getPacketSender().showOption(3, 0, "Attack", 1); + } else { + getPacketSender().sendMapState(0); + getPacketSender().walkableInterface(-1); + getPacketSender().showOption(3, 0, "Null", 1); + } + } + + public Client getClient(String name) { + name = name.toLowerCase(); + for (int i = 0; i < GameConstants.MAX_PLAYERS; i++) { + if (validClient(i)) { + Client client = getClient(i); + if (client.playerName.toLowerCase().equalsIgnoreCase(name)) { + return client; + } + } + } + return null; + } + + public Client getClient(int id) { + return (Client) PlayerHandler.players[id]; + } + + public boolean validClient(int id) { + if (id < 0 || id > GameConstants.MAX_PLAYERS) { + return false; + } + return validClient(getClient(id)); + } + + public boolean validClient(String name) { + return validClient(getClient(name)); + } + + public boolean validClient(Client client) { + return client != null && !client.disconnected; + } + + public void process() { + + if (playerEnergy < 100 && System.currentTimeMillis() - lastIncrease >= getPlayerAssistant().raiseTimer()) { + playerEnergy += 1; + lastIncrease = System.currentTimeMillis(); + } + if (playerEnergy <= 0 && isRunning2) { + isRunning2 = false; + getPacketSender().sendConfig(504, 0); + getPacketSender().sendConfig(173, 0); + } + getPlayerAssistant().writeEnergy(); + + if (System.currentTimeMillis() - specDelay > GameConstants.INCREASE_SPECIAL_AMOUNT) { + specDelay = System.currentTimeMillis(); + if (specAmount < 10) { + specAmount += .5; + if (specAmount > 10) { + specAmount = 10; + } + getItemAssistant().addSpecialBar(playerEquipment[playerWeapon]); + } + } + + if (followId > 0) { + getPlayerAssistant().followPlayer(); + } else if (followId2 > 0) { + getPlayerAssistant().followNpc(); + } + + if (System.currentTimeMillis() - duelDelay > 800 && duelCount > 0) { + if (duelCount != 1) { + forcedChat("" + --duelCount); + duelDelay = System.currentTimeMillis(); + } else { + damageTaken = new int[GameConstants.MAX_PLAYERS]; + forcedChat("FIGHT!"); + duelCount = 0; + } + } + + PrayerDrain.handlePrayerDrain(this); + + if (System.currentTimeMillis() - singleCombatDelay > 3300) { + underAttackBy = 0; + } + if (System.currentTimeMillis() - singleCombatDelay2 > 3300) { + underAttackBy2 = 0; + } + + if (System.currentTimeMillis() - restoreStatsDelay > 60000) { + restoreStatsDelay = System.currentTimeMillis(); + for (int level = 0; level < playerLevel.length; level++) { + if (playerLevel[level] < getLevelForXP(playerXP[level])) { + if (level != 5) { // prayer doesn't restore + playerLevel[level] += 1; + getPacketSender().setSkillLevel(level, + playerLevel[level], playerXP[level]); + getPlayerAssistant().refreshSkill(level); + } + } else if (playerLevel[level] > getLevelForXP(playerXP[level])) { + playerLevel[level] -= 1; + getPacketSender().setSkillLevel(level, + playerLevel[level], playerXP[level]); + getPlayerAssistant().refreshSkill(level); + } + } + } + + if (!hasMultiSign && inMulti()) { + hasMultiSign = true; + getPacketSender().multiWay(1); + } + + if (hasMultiSign && !inMulti()) { + hasMultiSign = false; + getPacketSender().multiWay(-1); + } + + if (skullTimer > 0) { + skullTimer--; + if (skullTimer == 1) { + isSkulled = false; + attackedPlayers.clear(); + headIconPk = -1; + skullTimer = -1; + getPlayerAssistant().requestUpdates(); + } + } + + if (isDead && respawnTimer == -6) { + getPlayerAssistant().applyDead(); + } + + if (respawnTimer == 7) { + respawnTimer = -6; + getPlayerAssistant().giveLife(); + } else if (respawnTimer == 12) { + respawnTimer--; + startAnimation(0x900); + poisonDamage = -1; + } + + if (respawnTimer > -6) { + respawnTimer--; + } + + if (freezeTimer > -6) { + freezeTimer--; + if (frozenBy > 0) { + if (PlayerHandler.players[frozenBy] == null) { + freezeTimer = -1; + frozenBy = -1; + } else if (!goodDistance(absX, absY, + PlayerHandler.players[frozenBy].absX, + PlayerHandler.players[frozenBy].absY, 20)) { + freezeTimer = -1; + frozenBy = -1; + } + } + } + + if (hitDelay > 0) { + hitDelay--; + } + + if (teleTimer > 0) { + teleTimer--; + if (!isDead) { + if (teleTimer == 1 && newLocation > 0) { + teleTimer = 0; + getPlayerAssistant().changeLocation(); + } + if (teleTimer == 4) { + teleTimer--; + getPlayerAssistant().processTeleport(); + } + if (teleTimer == 7 && teleGfx > 0) { + teleTimer--; + gfx100(teleGfx); + } + } else { + teleTimer = 0; + } + } + + if (hitDelay == 1) { + if (oldNpcIndex > 0) { + getCombatAssistant().delayedHit(oldNpcIndex); + } + if (oldPlayerIndex > 0) { + getCombatAssistant().playerDelayedHit(oldPlayerIndex); + } + } + + combatAssistant.attackingNpcTick(); + combatAssistant.attackingPlayerTick(); + + if (attackTimer > 0) { + attackTimer--; + } + + if (attackTimer == 1) { + if (npcIndex > 0 && clickNpcType == 0) { + getCombatAssistant().attackNpc(npcIndex); + } + if (playerIndex > 0) { + getCombatAssistant().attackPlayer(playerIndex); + } + } else if (attackTimer <= 0 && (npcIndex > 0 || playerIndex > 0)) { + if (npcIndex > 0) { + attackTimer = 0; + getCombatAssistant().attackNpc(npcIndex); + } else if (playerIndex > 0) { + attackTimer = 0; + getCombatAssistant().attackPlayer(playerIndex); + } + } + + if (timeOutCounter > GameConstants.TIMEOUT) { + if (!isBot) + logout(true); + } + + timeOutCounter++; + } + + public void queueMessage(Packet arg1) { + // synchronized(queuedPackets) { + // if (arg1.getId() != 41) + queuedPackets.add(arg1); + // else + // processPacket(arg1); + // } + } + + public synchronized boolean processQueuedPackets() { + Packet p = null; + synchronized (queuedPackets) { + p = queuedPackets.poll(); + } + if (p == null) { + return false; + } + inStream.currentOffset = 0; + packetType = p.getId(); + packetSize = p.getLength(); + inStream.buffer = p.getData(); + if (packetType > 0) { + // getPacketDispatcher().sendMessage("PacketType: " + packetType); + PacketHandler.processPacket(this, packetType, packetSize); + } + timeOutCounter = 0; + return true; + } + + public synchronized boolean processPacket(Packet p) { + synchronized (this) { + if (p == null) { + return false; + } + inStream.currentOffset = 0; + packetType = p.getId(); + packetSize = p.getLength(); + inStream.buffer = p.getData(); + if (packetType > 0) { + // getPacketDispatcher().sendMessage("PacketType: " + + // packetType); + PacketHandler.processPacket(this, packetType, packetSize); + } + timeOutCounter = 0; + return true; + } + } + + public int soundVolume = 10; + + /** + * Outputs a send packet which is built from the data params provided + * towards a connected user client channel. + * + * @param id + * The identification number of the sound. + * @param volume + * The volume amount of the sound (1-100) + * @param delay + * The delay (0 = immediately 30 = 1/2cycle 60=full cycle) before + * the sound plays. + */ + public void sendSound(int id, int volume, int delay) { + try { + outStream.createFrameVarSize(174); + outStream.writeWord(id); + outStream.writeByte(volume); + outStream.writeWord(delay); + updateRequired = true; + appearanceUpdateRequired = true; + outStream.endFrameVarSize(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * Outputs a send packet which is built from the data params provided + * towards a connected user client channel. + * + * @param id + * The identification number of the sound. + * @param volume + * The volume amount of the sound (1-100) + */ + public void sendSound(int id, int volume) { + sendSound(id, volume, 0); + } + + /** + * Outputs a send packet which is built from the data params provided + * towards a connected user client channel. + * + * @param id + * The identification number of the sound. + */ + public void sendSound(int id) { + sendSound(id, 100);// pretty sure it's 100 just double check + } + + /** + * Play sounds + * + * @param SOUNDID + * : ID + * @param delay + * : SOUND DELAY + */ + public void playSound(Client c, int SOUNDID, int delay) { + if (GameConstants.SOUND) { + if (soundVolume <= -1) { + return; + } + /** + * Deal with regions We dont need to play this again because you are + * in the current region + */ + if (c != null) { + if (c.soundVolume >= 0) { + if (c.goodDistance(c.absX, c.absY, absX, absY, 2)) { + System.out.println("Playing sound " + c.playerName + + ", Id: " + SOUNDID + ", Vol: " + + c.soundVolume); + if (c.getOutStream() != null) { + c.getOutStream().createFrame(174); + c.getOutStream().writeWord(SOUNDID); + c.getOutStream().writeByte(c.soundVolume); + c.getOutStream().writeWord( /* delay */0); + } + } + } + } + + } + } + + public void correctCoordinates() { + if (inPcGame()) { + getPlayerAssistant().movePlayer(2657, 2639, 0); + if (FightPitsArea()) { + getPlayerAssistant().movePlayer(2399, 5178, 0); + if (inFightCaves()) { + getDialogueHandler().sendDialogues(101, 2617); + getPlayerAssistant().movePlayer(absX, absY, playerId * 4); + getPacketSender().sendMessage("Your wave will start in 10 seconds."); + CycleEventHandler.getSingleton().addEvent(this, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + GameEngine.fightCaves.spawnNextWave((Client) PlayerHandler.players[playerId]); + container.stop(); + } + @Override + public void stop() { + + } + }, 16); + } + } + } + } + + public void trawlerFade(final int x, final int y, final int height) { + if (System.currentTimeMillis() - lastAction > 5000) { + lastAction = System.currentTimeMillis(); + resetWalkingQueue(); + CycleEventHandler.getSingleton().addEvent(this, new CycleEvent() { + int tStage = 5; + public void execute(CycleEventContainer container) { + if (tStage == 5) { + getPacketSender().showInterface(18460); + } + if (tStage == 4) { + getPlayerAssistant().movePlayer(x, y, height); + getPlayerAssistant().resetAnimationsToPrevious(); + appearanceUpdateRequired = true; + } + if (tStage == 3) { + getPacketSender().showInterface(18452); + } + if (tStage == 1) { + container.stop(); + return; + } + if (tStage > 0) { + tStage--; + } + } + public void stop() { + getPacketSender().closeAllWindows(); + tStage = 0; + } + }, 1); + } + } + + public void fade(final int x, final int y, final int height) { + if (System.currentTimeMillis() - lastAction > 5000) { + lastAction = System.currentTimeMillis(); + resetWalkingQueue(); + CycleEventHandler.getSingleton().addEvent(this, new CycleEvent() { + int tStage = 6; + public void execute(CycleEventContainer container) { + if (tStage == 6) { + getPacketSender().showInterface(18460); + } + if (tStage == 5) { + getPlayerAssistant().movePlayer(x, y, height); + updateRequired = true; + appearanceUpdateRequired = true; + } + if (tStage == 4) { + getPacketSender().showInterface(18452); + } + if (tStage == 1) { + container.stop(); + return; + } + if (tStage > 0) { + tStage--; + } + } + public void stop() { + getPacketSender().closeAllWindows(); + tStage = 0; + } + }, 1); + } + } + + /** + * The option the player clicked + */ + + private int optionClicked = -1; + + /** + * @return the option clicked + */ + + public int getOptionClicked() { + return optionClicked; + } + + /** + * Sets the option clicked + * + * @param i + * the option clicked + */ + + public void setOptionClicked(int i) { + optionClicked = i; + } + + public String statedInterface = ""; + + public String getStatedInterface() { + return statedInterface; + } + + public void setStatedInterface(String statedInterface) { + this.statedInterface = statedInterface; + } + + + public String currentTime, date, slayerMaster; + + public boolean lostCannon = false, refresh = false, isBot = false; + + public ArrayList killedPlayers = new ArrayList(); + public ArrayList attackedPlayers = new ArrayList(); + public ArrayList lastKilledPlayers = new ArrayList(); + + public int[][] barrowCrypt = { + {4921, 0}, + {2035, 0} + }; + + public long homeTele, lastDesert, eventTimer, lastRunRecovery, + lastButton, lastFire, lastLight, muteTime, waitTime, miscTimer, + ladderTimer, webSlashDelay, climbDelay, lastReport = 0, + lastPlayerMove, lastPoison, lastPoisonSip, poisonImmune, lastSpear, + lastProtItem, dfsDelay, lastVeng, lastYell, teleGrabDelay, + protMageDelay, protMeleeDelay, protRangeDelay, lastAction, + lastThieve, lastLockPick, alchDelay, specDelay = System.currentTimeMillis(), duelDelay, teleBlockDelay, + godSpellDelay, singleCombatDelay, singleCombatDelay2, reduceStat, + restoreStatsDelay, logoutDelay, buryDelay, foodDelay, potDelay, + doorDelay, doubleDoorDelay, buySlayerTimer, lastIncrease, + boneDelay, botAttempts, leverDelay = 0, farmTime, searchObjectDelay = 0, clickDelay = 0; + + + private Npc specialTarget = null; + public void setSpecialTarget(Npc target) { + this.specialTarget = target; + } + public Npc getSpecialTarget() { + return specialTarget; + } + + public boolean initialized = false, musicOn = true, luthas, + playerIsCooking, disconnected = false, ruleAgreeButton = false, + RebuildNPCList = false, isActive = false, isKicked = false, + isSkulled = false, friendUpdate = false, newPlayer = false, + hasMultiSign = false, saveCharacter = false, mouseButton = false, + chatEffects = true, acceptAid = false, recievedMask, + nextDialogue = false, autocasting = false, usedSpecial = false, + mageFollow = false, dbowSpec = false, craftingLeather = false, + properLogout = false, secDbow = false, maxNextHit = false, + ssSpec = false, vengOn = false, addStarter = false, + accountFlagged = false, inPartyRoom = false, msbSpec = false, + hasBankPin, enterdBankpin, firstPinEnter, requestPinDelete, + secondPinEnter, thirdPinEnter, fourthPinEnter, hasBankpin, + isBanking, isTeleporting = false, desertWarning, + isPotionMaking = false, isGrinding = false, hasStarter, isSpinning, + clickedSpinning, hasPaidBrim, isHerblore, herbloreI, secondHerb, + playerStun, playerFletch, isWoodcutting, playerIsFiremaking, + hasNpc = false, playerIsFishing = false, isOperate, below459 = true, + splitChat, strongHold, village, needsNewTask = false, + canSpeak = true, ignoreFrog, ratdied2 = false, + fishingWhirlPool, lostDuel, diedOnTut = false, storing = false, rope, rope2, + canWalkTutorial, closeTutorialInterface, isCrafting, showedUnfire, + showedFire, isPotCrafting, isFiremaking, playerIsFletching, milking, + stopPlayerPacket, spiritTree = false, isSmelting, + hasPaifAnTeleport = false, isSmithing, doingAgility = false, + hasPaid, canTeleport, magicCharge, + clickedVamp = false, allowFading, otherBank = false, + recievedReward = false, poison, golemSpawned = false, zombieSpawned = false, shadeSpawned = false, + treeSpiritSpawned = false, chickenSpawned = false, clickedTree = false, filter = true, + stopPlayer = false, npcCanAttack = true, gliderOpen = false, hasSandwhichLady = false, + isHarvesting, openDuel = false, killedJad = false, canHealersRespawn = true, playerIsBusy = false, miningRock, + randomEventsEnabled = false, debugMode = false, clickToTele = false; + + public int votePoints, saveDelay, playerKilled, gertCat, restGhost, + romeojuliet, runeMist, vampSlayer, cookAss, doricQuest, blackKnight, shieldArrav, + sheepShear, impsC, randomActions, + totalPlayerDamageDealt, killedBy, lastChatId = 1, privateChat, + dialogueId, randomCoffin, newLocation, specEffect, + specBarId, attackLevelReq, defenceLevelReq, strengthLevelReq, + rangeLevelReq, magicLevelReq, slayerLevelReq, agilityLevelReq, + followId, skullTimer, nextChat = 0, talkingNpc = -1, + dialogueAction = 0, autocastId, followDistance, followId2, + barrageCount = 0, delayedDamage = 0, delayedDamage2 = 0, + pcPoints = 0, magePoints = 0, desertTreasure = 0, + lastArrowUsed = -1, autoRet = 1, pcDamage = 0, xInterfaceId = 0, + xRemoveId = 0, xRemoveSlot = 0, tzhaarToKill = 0, tzhaarKilled = 0, + waveId, frozenBy = 0, poisonDamage = 0, teleAction = 0, + bonusAttack = 0, lastNpcAttacked = 0, killCount = 0, witchspot, + pirateTreasure, ptjob, cwKills, cwDeaths, cwGames, tzKekSpawn = 0, + playerBankPin, recoveryDelay = 3, attemptsRemaining = 3, + lastPinSettings = -1, setPinDate = -1, changePinDate = -1, + deletePinDate = -1, firstPin, secondPin, thirdPin, fourthPin, + bankPin1, bankPin2, bankPin3, bankPin4, pinDeleteDateRequested, + rememberNpcIndex, lastLoginDate, selectedSkill, log = -1, newHerb, + newItem, newXp, doingHerb, herbAmount, treeX, treeY, lastH, + cookingItem, cookingObject, summonId, npcId2 = 0, leatherType = -1, + weightCarried, teleotherType, rockX, rockY, itemUsing, tzKekTimer, + bananas, flourAmount, grain, questPoints, questStages, + teleGrabItem, teleGrabX, teleGrabY, duelCount, underAttackBy, + underAttackBy2, wildLevel, teleTimer, respawnTimer, saveTimer = 0, + teleBlockLength, poisonDelay, slayerPoints, blackMarks, + SlayerMaster, teleOtherTimer = 0, + teleOtherSlot = -1, tutorialProgress, cookStage1 = 1, + woodcuttingTree, smeltAmount, knightS, otherDirection, + brightness = 3, recoilHits, droppedItem = -1, + spawnedHealers, cannonX = 0, cannonY = 0, + playerShopId; + + public double playerEnergy = 100; + + public Pets getSummon() { + return pets; + } + + private final Pets pets = new Pets(); + + public int removedTasks[] = { -1, -1, -1, -1 }; + + public boolean isRunning() { + return isNewWalkCmdIsRunning() || isRunning2 && isMoving; + } + + public void faceNpc(int npc) { + face = npc; + faceUpdateRequired = true; + updateRequired = true; + } + + public void faceNPC(int index) { + faceNPC = index; + faceNPCupdate = true; + updateRequired = true; + } + + protected boolean faceNPCupdate = false; + public int faceNPC = -1; + + public void appendFaceNPCUpdate(Stream str) { + str.writeWordBigEndian(faceNPC); + } + + public int getLocalX() { + return getX() - 8 * getMapRegionX(); + } + + public int getLocalY() { + return getY() - 8 * getMapRegionY(); + } + + public int getKillCount() { + return barrowsKillCount; + } + + /** + * @param randomGrave + * the randomGrave to set + */ + public void setRandomGrave(int randomGrave) { + this.randomGrave = randomGrave; + } + + /** + * @return the randomGrave + */ + public int getRandomGrave() { + return randomGrave; + } + + private int randomGrave; + + public void setBarrowsNpcDead(int index, boolean dead) { + barrowsNpcDead[index] = dead; + } + + /** + * @return the barrowsNpcDead + */ + public boolean[] getBarrowsNpcDead() { + return barrowsNpcDead; + } + + /** + * @return the barrowsNpcDead + */ + public boolean getBarrowsNpcDead(int id) { + return barrowsNpcDead[id]; + } + + private final boolean barrowsNpcDead[] = new boolean[6]; + + public boolean membership = false, awardedmembership = false; + public Client teleporter = null; + public int[] party = new int[8]; + public int[] partyN = new int[8]; + public String lastReported = ""; + public String pinBank = ""; + public int attempts = 3; + public boolean setPin = false; + public int[][] playerSkillProp = new int[20][15]; + public boolean[] playerSkilling = new boolean[20]; + public boolean stopPlayerSkill; + public int doAmount, addAmount; + public int lastNpcClickIndex; + public boolean[] killedPheasant = new boolean[5]; + public boolean playerHasRandomEvent; + public boolean canLeaveArea; + + public int pieSelect = 0, getPheasent, kebabSelect = 0, breadID, + chocSelect = 0, bagelSelect = 0, triangleSandwich = 0, + squareSandwich = 0, breadSelect = 0; + + public String clanName, properName; + public int lastX, lastY; + public int[] voidStatus = new int[5]; + public int[] itemKeptId = new int[4]; + public int[] pouches = new int[4]; + public final int[] POUCH_SIZE = { 3, 6, 9, 12 }; + public boolean[] invSlot = new boolean[28], equipSlot = new boolean[14]; + public long friends[] = new long[200], ignores[] = new long[200]; + public double specAmount = 0; + public double specAccuracy = 1; + public double specDamage = 1; + public boolean isFletching; + public double weight = 0.0; + + public boolean canChangeAppearance = false; + public boolean mageAllowed; + public int poisonMask; + + public Npc getCloseRandomNpc(int distance) { + ArrayList npcs = new ArrayList(); + for (Npc npc : NpcHandler.npcs) { + if (npc != null) { + Npc n = npc; + if (distanceToPoint(n.getX(), n.getY()) <= distance) { + if (!n.underAttack) { + if (n.heightLevel == heightLevel) { + npcs.add(n); + } + } + } + } + } + if (npcs.size() > 0) { + return npcs.get(Misc.random(npcs.size() - 1)); + } else { + return null; // No near npcs :C + } + } + + public boolean isAutoButton(int button) { + for (int j = 0; j < autocastIds.length; j += 2) { + if (autocastIds[j] == button) { + return true; + } + } + return false; + } + + public int[] autocastIds = { 51133, 32, 51185, 33, 51091, 34, 24018, 35, + 51159, 36, 51211, 37, 51111, 38, 51069, 39, 51146, 40, 51198, 41, + 51102, 42, 51058, 43, 51172, 44, 51224, 45, 51122, 46, 51080, 47, + 7038, 0, 7039, 1, 7040, 2, 7041, 3, 7042, 4, 7043, 5, 7044, 6, + 7045, 7, 7046, 8, 7047, 9, 7048, 10, 7049, 11, 7050, 12, 7051, 13, + 7052, 14, 7053, 15, 47019, 27, 47020, 25, 47021, 12, 47022, 13, + 47023, 14, 47024, 15 }; + + // public String spellName = "Select Spell"; + public void assignAutocast(int button) { + for (int j = 0; j < autocastIds.length; j++) { + if (autocastIds[j] == button) { + Client c = (Client) PlayerHandler.players[playerId]; + autocasting = true; + autocastId = autocastIds[j + 1]; + c.getPacketSender().sendConfig(108, 1); + c.getPacketSender().setSidebarInterface(0, 328); + c = null; + break; + } + } + } + + public boolean inCWsaraBase() { + if (absX > 2422 && absX < 2432 && absY > 3071 && absY < 3081 + && heightLevel == 1) { + return true; + } + return false; + } + + public boolean inCWzammyBase() { + if (absX > 2367 && absX < 2377 && absY > 3126 && absY < 3136 + && heightLevel == 1) { + return true; + } + return false; + } + + public boolean saraTeam() { + return playerEquipment[GameConstants.CAPE] == 4041; + } + + public boolean zammyTeam() { + return playerEquipment[GameConstants.CAPE] == 4042; + } + + public boolean inCwSafe() { + return (isInAreaxxyy(2423, 2431, 3072, 3080) || isInAreaxxyy(2368, 2376, 3127, 3135)) + && heightLevel == 1; + } + + public boolean inZammyWait() { + return isInAreaxxyy(2409, 2431, 9511, 9535); + } + + public boolean inSaraWait() { + return isInAreaxxyy(2368, 2392, 9479, 9498); + } + + public boolean inCwGame() { + return isInAreaxxyy(2368, 2431, 9479, 9535) || isInAreaxxyy(2368, 2431, 3072, 3135) + && !inSaraWait() && !inZammyWait(); + } + + public boolean inCwUnderground() { + return isInAreaxxyy(2368, 2431, 9479, 9535) && !inSaraWait() && !inZammyWait(); + } + + public boolean inZammyBase() { + return isInAreaxxyy(2368, 2384, 3118, 3135); + } + + public boolean inSaraBase() { + return isInAreaxxyy(2414, 2431, 3072, 3088); + } + + public void gameInterface(int id) { + if (gameInterface != id) { + gameInterface = id; + } + } + + public int gameInterface; + public int lastGame; + + + public int[][] barrowsNpcs = { { 2030, 0 }, // verac + { 2029, 0 }, // toarg + { 2028, 0 }, // karil + { 2027, 0 }, // guthan + { 2026, 0 }, // dharok + { 2025, 0 } // ahrim + }; + + public int barrowsKillCount; + + public int reduceSpellId; + public final int[] REDUCE_SPELL_TIME = { 250000, 250000, 250000, 500000, + 500000, 500000 }; // how long does the other player stay immune to + // the spell + public long[] reduceSpellDelay = new long[6]; + public final int[] REDUCE_SPELLS = { 1153, 1157, 1161, 1542, 1543, 1562 }; + public boolean[] canUseReducingSpell = { true, true, true, true, true, true }; + + public int slayerTask, taskAmount; + + public int duelTimer, duelTeleX, duelTeleY, duelSlot, duelSpaceReq, + duelOption, duelingWith, duelStatus; + public int headIconPk = -1, headIconHints; + public boolean duelRequested; + public boolean[] duelRule = new boolean[22]; + public final int[] DUEL_RULE_ID = { 1, 2, 16, 32, 64, 128, 256, 512, 1024, + 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 2097152, + 8388608, 16777216, 67108864, 134217728 }; + + public boolean doubleHit, usingSpecial, npcDroppingItems, usingRangeWeapon, + usingBow, usingMagic, castingMagic; + public int npcIndex, npcClickIndex, npcType, castingSpellId, oldSpellId, + spellId, hitDelay; + public int specMaxHitIncrease, freezeDelay, freezeTimer = -6, killerId, + playerIndex, oldPlayerIndex, lastWeaponUsed, projectileStage, + crystalBowArrowCount, playerMagicBook, teleGfx, teleEndAnimation, + teleHeight, teleX, teleY, rangeItemUsed, killingNpcIndex, + totalDamageDealt, globalDamageDealt, oldNpcIndex, fightMode, attackTimer; + public boolean magicFailed, oldMagicFailed; + public int bowSpecShot, clickNpcType, clickObjectType, objectId, objectX, + objectY; + public int pItemX, pItemY, pItemId; + public boolean isMoving, walkingToItem; + public boolean isShopping, updateShop; + public int shopId; + public int tradeStatus, tradeWith; + public boolean forcedChatUpdateRequired, inDuel, tradeAccepted, goodTrade, + inTrade, tradeRequested, tradeResetNeeded, tradeConfirmed, + tradeConfirmed2, acceptTrade, acceptedTrade; + public int attackAnim, animationRequest = -1, animationWaitCycles; + public int[] playerBonus = new int[12]; + public boolean isRunning2 = true; + public boolean takeAsNote; + public int combatLevel; + public boolean saveFile = false; + public int playerAppearance[] = new int[13]; + public int apset; + public int actionID; + public int wearItemTimer, wearId, wearSlot, interfaceId; + public int XremoveSlot, XinterfaceID, XremoveID, Xamount; + + public boolean usingGlory = false; + public boolean isMining; + public boolean antiFirePot = false; + + public boolean underWater = false; + public boolean prevRunning2; + public int prevPrevPlayerRunIndex; + public int prevPlayerStandIndex; + public int prevplayerWalkIndex; + public int prevPlayerTurnIndex; + public int prevPlayerTurn90CWIndex; + public int prevPlayerTurn90CCWIndex; + public int prevPlayerTurn180Index; + + public Client asClient() { + return (Client) this; + } + + private Player player; + public Player asPlayer() { + return (Player) player; + } + + public boolean inTrawlerBoat() { + if(inArea(2808, 2811,3415,3425)) { + return true; + } + return false; + } + + public boolean inTrawlerGame() { + if(inArea(2808, 2811,3415,3425)) { + return true; + } + return false; + } + + public long lastFishingTrawlerInteraction; + public boolean inFishingTrawlerRewardsInterface; + + /** + * Castle Wars + */ + public int castleWarsTeam; + public boolean inCwGame; + public boolean inCwWait; + + /** + * Fight Pits + */ + public boolean inPits = false; + public int pitsStatus = 0; + + /** + * SouthWest, NorthEast, SouthWest, NorthEast + */ + + public boolean inCw() { + Client c = (Client) this; + if (CastleWars.isInCwWait(c)) { + return true; + } + if (CastleWars.isInCw(c)) { + return true; + } + return false; + } + + public boolean isInTut() { + if (absX >= 2625 && absX <= 2687 && absY >= 4670 && absY <= 4735) { + return true; + } + return false; + } + + public boolean FightPitsArea() { + return absX >= 2378 && absX <= 2415 && absY >= 5133 && absY <= 5167 + || absX >= 2394 && absX <= 2404 && absY >= 5169 && absY <= 5174; + } + + public boolean fightPitsArea() { + return absX >= 2378 && absX <= 2415 && absY >= 5133 && absY <= 5167; + } + + public boolean inBarrows() { + if (absX > 3520 && absX < 3598 && absY > 9653 && absY < 9750) { + return true; + } + return false; + } + + public boolean inArea(int x, int y, int x1, int y1) { + if (absX > x && absX < x1 && absY < y && absY > y1) { + return true; + } + return false; + } + + public boolean inMulti() { + if (absX >= 3136 + && absX <= 3327 + && absY >= 3519 + && absY <= 3607// duel? + || absX >= 2360 + && absX <= 2445 + && absY >= 5045 + && absY <= 5125 + || absX >= 3190 + && absX <= 3327 + && absY >= 3648 + && absY <= 3839// duel? + || absX >= 3200 && absX <= 3390 && absY >= 3840 && absY <= 3967 + || absX >= 2992 && absX <= 3007 && absY >= 3912 && absY <= 3967 + || absX >= 2946 && absX <= 2959 && absY >= 3816 && absY <= 3831 + || absX >= 3008 && absX <= 3199 && absY >= 3856 && absY <= 3903 + || absX >= 3008 && absX <= 3071 && absY >= 3600 && absY <= 3711 + || absX >= 3072 && absX <= 3327 && absY >= 3608 && absY <= 3647 + || absX >= 2624 + && absX <= 2690 + && absY >= 2550 + && absY <= 2619 + || absX >= 2667 + && absX <= 2685 + && absY >= 3712 + && absY <= 3730 // rock + // crabs + || absX >= 2371 && absX <= 2422 && absY >= 5062 && absY <= 5117 + || absX >= 2896 && absX <= 2927 && absY >= 3595 && absY <= 3630 + || absX >= 2892 && absX <= 2932 && absY >= 4435 && absY <= 4464 + || absX >= 2256 && absX <= 2287 && absY >= 4680 && absY <= 4711) { + return true; + } + return false; + } + + public boolean inWild() { + if (inCw()) { + return true; + } + if (absX > 2941 && absX < 3392 && absY > 3518 && absY < 3966 + || absX > 2941 && absX < 3392 && absY > 9918 && absY < 10366) { + return true; + } + return false; + } + + public boolean inBankArea() { + return isInArea(3205,3226,3214,3211) && heightLevel == 2|| //Lumbridge Bank + isInArea(3266,3171,3272,3162) || //Al Kharid Bank + isInArea(2436,5186,2453,5174) || //Tzhaar area + isInArea(2842,2957,2860,2950) || //Shilo Bank + isInArea(3492,3215,3456,3200) || //Burgh d rott + isInArea(3377,3275,3386,3266) || //Clan Wars + isInArea(3087,3248,3098,3239) || //Draynor + isInArea(3248,3423,3260,3414) || //Varrock East + isInArea(3183,3446,3193,3432) || //Varrock West + isInArea(3088,3501,3100,3486) || //Edgeville + isInArea(3009,3358,3020,3352) || //Falador East + isInArea(2942,3374,2950,3365) || //Falador West + isInArea(2839,3547,2844,3540) || //Warriors guild + isInArea(2804,3447,2815,3438) || //Catherby + isInArea(2718,3500,2733,3485) || //Seer's village + isInArea(2610,3338,2622,3326) || //North ardy + isInArea(2645,3288,2660,3281) || //South ardy + isInArea(2658,3165,2670,3158) || //Khazard + isInArea(2607,3098,2618,3087) || //Yanille + isInArea(2442,3084,2444,3081) || //Castle Wars + isInArea(2348,3168,2358,3159) || //Lleyta + isInArea(2324,3694,2334,3685) || //Piscatoris + isInArea(2527,3581,2539,3563) || //Barbarian Assault + isInArea(2448,3420,2442,3430) || //Tree Gnome Stronghold + isInArea(2453,3491,2440,3478) && heightLevel == 1 || //Grand Tree Area + isInArea(2843,2958,2816,2944) || //Shilo Village + isInArea(3113,3131,3131,3118) || //Tutorial Island + isInArea(3422,2895,3433,2885) || //Nardah + isInArea(3685,3473,3694,3461) || //Phasmatys + isInArea(2530,4725,2550,4705) || //Phasmatys + isInArea(2834, 10215, 2841, 10204) || // Keldagrim + isInArea(2379, 4453, 2386, 4462) || // Zanaris + false; + } + + public boolean inPlayerShopArea() { + return isInArea(2938, 3389, 3059, 3329) || // Falador + isInArea(3172, 3449, 3270, 3384) || // Varrock + isInArea(3200, 3256, 3237, 3201) || // Lumbridge + isInArea(2716, 3498, 2735, 3480) || + isInArea(3075, 3513, 3106, 3466) || + isInArea(3074, 3262, 3102, 3239) || + isInArea(2435, 3101, 2459, 3080) || + isInArea(2618, 3075, 2598, 3108) || + isInArea(2678, 3267, 2601, 3341) || + isInArea(3265, 3157, 3324, 3215) || + isInArea(3386, 3264, 3348, 3286) || + isInArea(2797, 3454, 2838, 3430) || + isInArea(2546, 3157, 2512, 3176) || + isInArea(2451, 3408, 2425, 3437) || + false; + } + + public boolean inDesert() { + return absX >= 3137 && absX <= 3321 && absY >= 2880 && absY <= 3115; + } + + public boolean duelingArena() { + if (absX > 3331 && absX < 3391 && absY > 3242 && absY < 3260) { + return true; + } + return false; + } + + + public boolean playerIsBusy() { + if(isShopping || inTrade || openDuel || isBanking || duelStatus == 1) { + return true; + } + return false; + } + + public boolean isInBarrows() { + if(absX > 3543 && absX < 3584 && absY > 3265 && absY < 3311) { + return true; + } + return false; + } + + public boolean isInBarrows2() { + if(absX > 3529 && absX < 3581 && absY > 9673 && absY < 9722) { + return true; + } + return false; + } + + public boolean inPcBoat() { + return absX >= 2660 && absX <= 2663 && absY >= 2638 && absY <= 2643; + } + + public boolean inPcGame() { + return absX >= 2624 && absX <= 2690 && absY >= 2550 && absY <= 2619; + } + + public boolean inDuelArena() { + if (absX > 3322 && absX < 3394 && absY > 3195 && absY < 3291 || absX > 3311 && absX < 3323 && absY > 3223 && absY < 3248) { + return true; + } + return false; + } + + public boolean inBank() { // Area(top left X, bottom right X, bottom right Y, top left Y) + return isInAreaxxyy(3090, 3099, 3487, 3500) || isInAreaxxyy(3089, 3090, 3492, 3498) || isInAreaxxyy(3249, 3258, 3413, 3428) || isInAreaxxyy(3180, 3191, 3432, 3448) || isInAreaxxyy(2945, 2948, 3365, 3374) || + isInAreaxxyy(2943, 2948, 3367, 3374) || isInAreaxxyy(2945, 2950, 3365, 3370) || isInAreaxxyy(3009, 3018, 3352, 3359) || isInAreaxxyy(3017, 3022, 3353, 3357); + } + + public boolean inLumbBuilding() { + return isInAreaxxyy(3205, 3216, 3209, 3228) || isInAreaxxyy(3229, 3233, 3206, 3208) || isInAreaxxyy(3228, 3233, 3201, 3205) || isInAreaxxyy(3230, 3237, 3195, 3198) || isInAreaxxyy(3238, 3229, 3209, 3211) || + isInAreaxxyy(3240, 3247, 3204, 3215) || isInAreaxxyy(3247, 3252, 3190, 3195) || isInAreaxxyy(3227, 3230, 3212, 3216) || isInAreaxxyy(3227, 3230, 3221, 3225) || isInAreaxxyy(3229, 3232, 3236, 3241) || + isInAreaxxyy(3209, 3213, 3243, 3250) || isInAreaxxyy(3222, 3229, 3252, 3257) || isInAreaxxyy(3184, 3192, 3270, 3275) || isInAreaxxyy(3222, 3224, 3292, 3294) || isInAreaxxyy(3225, 3230, 3287, 3228) || + isInAreaxxyy(3243, 3248, 3244, 3248) || isInAreaxxyy(3202, 3205, 3167, 3170) || isInAreaxxyy(3231, 3238, 3151, 3155) || isInAreaxxyy(3233, 3234, 3156, 3156) || isInAreaxxyy(3163, 3170, 3305, 3308) || + isInAreaxxyy(3165, 3168, 3303, 3310); + } + + public boolean inDraynorBuilding() { + return isInAreaxxyy(3097, 3102, 3277, 3281) || isInAreaxxyy(3088, 3092, 3273, 3276) || isInAreaxxyy(3096, 3102, 3266, 3270) || isInAreaxxyy(3089, 3095, 3265, 3268) || isInAreaxxyy(3083, 3088, 3256, 3261) || + isInAreaxxyy(3087, 3094, 3251, 3255) || isInAreaxxyy(3121, 3130, 3240, 3246) || isInAreaxxyy(3102, 3112, 3162, 3165) || isInAreaxxyy(3107, 3111, 3166, 3166) || isInAreaxxyy(3103, 3115, 3157, 3161) || + isInAreaxxyy(3105, 3114, 3156, 3156) || isInAreaxxyy(3105, 3113, 3155, 3155) || isInAreaxxyy(3106, 3112, 3154, 3154) || isInAreaxxyy(3092, 3097, 3240, 3246); + } + + public boolean isInArea(final int x1, final int y1, final int x2, final int y2) { + return (absX >= x1 && absX <= x2 || absX <= x1 && absX >= x2) && (absY >= y1 && absY <= y2 || absY <= y1 && absY >= y2); + } + + public boolean isInAreaxxyy(final int x1, final int x2, final int y1, final int y2) { + return absX >= x1 && absX <= x2 && absY >= y1 && absY <= y2; + } + + public boolean altars() { + return safeAreas(3090, 3506, 3097, 3506); + } + + public boolean safeAreas(int x, int y, int x1, int y1) { + return absX >= x && absX <= x1 && absY >= y && absY <= y1; + } + + public boolean inFightCaves() { + return absX >= 2360 && absX <= 2445 && absY >= 5045 && absY <= 5125; + } + + public boolean inPirateHouse() { + return absX >= 3038 && absX <= 3044 && absY >= 3949 && absY <= 3959; + } + + public String connectedFrom = ""; + public String globalMessage = ""; + + public int playerId = -1; + public String playerName = null; + public String playerName2 = null; + public String playerPass = null; + public int playerRights; + public PlayerHandler handler = null; + public int playerItems[] = new int[28]; + public int playerItemsN[] = new int[28]; + public int bankItems[] = new int[GameConstants.BANK_SIZE]; + public int bankItemsN[] = new int[GameConstants.BANK_SIZE]; + // used for player owned shops + public int bankItemsV[] = new int[GameConstants.BANK_SIZE]; + public boolean bankNotes = false; + public boolean shouldSave = false; + + public int playerStandIndex = 0x328; + public int playerTurnIndex = 0x337; + public int playerWalkIndex = 0x333; + public int playerTurn180Index = 0x334; + public int playerTurn90CWIndex = 0x335; + public int playerTurn90CCWIndex = 0x336; + public int playerRunIndex = 0x338; + + public int playerHat = 0; + public int playerCape = 1; + public int playerAmulet = 2; + public int playerWeapon = 3; + public int playerChest = 4; + public int playerShield = 5; + public int playerLegs = 7; + public int playerHands = 9; + public int playerFeet = 10; + public int playerRing = 12; + public int playerArrows = 13; + + public int playerAttack = 0; + public int playerDefence = 1; + public int playerStrength = 2; + public int playerHitpoints = 3; + public int playerRanged = 4; + public int playerPrayer = 5; + public int playerMagic = 6; + public int playerCooking = 7; + public int playerWoodcutting = 8; + public int playerFletching = 9; + public int playerFishing = 10; + public int playerFiremaking = 11; + public int playerCrafting = 12; + public int playerSmithing = 13; + public int playerMining = 14; + public int playerHerblore = 15; + public int playerAgility = 16; + public int playerThieving = 17; + public int playerSlayer = 18; + public int playerFarming = 19; + public int playerRunecrafting = 20; + + public int[] playerEquipment = new int[14]; + public int[] playerEquipmentN = new int[14]; + public int[] playerLevel = new int[25]; + public int[] playerXP = new int[25]; + + public void updateshop(int i) { + Client p = (Client) PlayerHandler.players[playerId]; + p.getShopAssistant().resetShop(i); + } + + public void println_debug(String str) { + System.out.println("[player-" + playerId + "]: " + str); + } + + public void println(String str) { + System.out.println("[player-" + playerId + "]: " + str); + } + + public Player(int _playerId) { + playerId = _playerId; + playerRights = 0; + + for (int i = 0; i < playerItems.length; i++) { + playerItems[i] = 0; + } + for (int i = 0; i < playerItemsN.length; i++) { + playerItemsN[i] = 0; + } + + for (int i = 0; i < playerLevel.length; i++) { + if (i == 3) { + playerLevel[i] = 10; + } else { + playerLevel[i] = 1; + } + } + + for (int i = 0; i < playerXP.length; i++) { + if (i == 3) { + playerXP[i] = 1300; + } else { + playerXP[i] = 0; + } + } + for (int i = 0; i < GameConstants.BANK_SIZE; i++) { + bankItems[i] = 0; + } + + for (int i = 0; i < GameConstants.BANK_SIZE; i++) { + bankItemsN[i] = 0; + } + + playerAppearance[0] = 0; // gender + playerAppearance[1] = 7; // head + playerAppearance[2] = 25;// Torso + playerAppearance[3] = 29; // arms + playerAppearance[4] = 35; // hands + playerAppearance[5] = 39; // legs + playerAppearance[6] = 44; // feet + playerAppearance[7] = 14; // beard + playerAppearance[8] = 7; // hair colour + playerAppearance[9] = 8; // torso colour + playerAppearance[10] = 9; // legs colour + playerAppearance[11] = 5; // feet colour + playerAppearance[12] = 0; // skin colour + + apset = 0; + actionID = 0; + + playerEquipment[playerHat] = -1; + playerEquipment[playerCape] = -1; + playerEquipment[playerAmulet] = -1; + playerEquipment[playerChest] = -1; + playerEquipment[playerShield] = -1; + playerEquipment[playerLegs] = -1; + playerEquipment[playerHands] = -1; + playerEquipment[playerFeet] = -1; + playerEquipment[playerRing] = -1; + playerEquipment[playerArrows] = -1; + playerEquipment[playerWeapon] = -1; + + heightLevel = 0; + + if (GameConstants.TUTORIAL_ISLAND) { + teleportToX = 3094; + teleportToY = 3107; + } else { + teleportToX = 3233; + teleportToY = 3229; + } + + absX = absY = -1; + mapRegionX = mapRegionY = -1; + currentX = currentY = 0; + resetWalkingQueue(); + } + + public static final int maxPlayerListSize = GameConstants.MAX_PLAYERS; + public Player playerList[] = new Player[maxPlayerListSize]; + public int playerListSize = 0; + + public byte playerInListBitmap[] = new byte[GameConstants.MAX_PLAYERS + 7 >> 3]; + + public static final int maxNPCListSize = NpcHandler.MAX_NPCS; + public Npc npcList[] = new Npc[maxNPCListSize]; + public int npcListSize = 0; + + public byte npcInListBitmap[] = new byte[NpcHandler.MAX_NPCS + 7 >> 3]; + + public boolean withinDistance(Player otherPlr) { + if (heightLevel != otherPlr.heightLevel) { + return false; + } + int deltaX = otherPlr.absX - absX, deltaY = otherPlr.absY - absY; + return deltaX <= 15 && deltaX >= -16 && deltaY <= 15 && deltaY >= -16; + } + + public boolean withinDistance(Npc npc) { + if (heightLevel != npc.heightLevel) { + return false; + } + if (npc.needRespawn == true) { + return false; + } + int deltaX = npc.absX - absX, deltaY = npc.absY - absY; + return deltaX <= 15 && deltaX >= -16 && deltaY <= 15 && deltaY >= -16; + } + + public boolean withinDistance(int absX, int getY, int getHeightLevel) { + if (heightLevel != getHeightLevel) { + return false; + } + if (objectId == 2242) { + System.out.println("not within distance"); + return false; + } + int deltaX = getX() - absX, deltaY = getY() - getY; + return deltaX <= 15 && deltaX >= -16 && deltaY <= 15 && deltaY >= -16; + } + + public int distanceToPoint(int pointX, int pointY) { + return (int) Math.sqrt(Math.pow(absX - pointX, 2) + + Math.pow(absY - pointY, 2)); + } + + public int mapRegionX, mapRegionY; + public int absX; + + public int absY; + public int currentX, currentY; + + public int heightLevel; + public int playerSE = 0x328; + public int playerSEW = 0x333; + public int playerSER = 0x334; + + public boolean updateRequired = true; + + public final int walkingQueueSize = 50; + public int walkingQueueX[] = new int[walkingQueueSize], + walkingQueueY[] = new int[walkingQueueSize]; + public int wQueueReadPtr = 0; + public int wQueueWritePtr = 0; + public boolean isRunning = true; + public int teleportToX = -1, teleportToY = -1; + + public void resetWalkingQueue() { + wQueueReadPtr = wQueueWritePtr = 0; + for (int i = 0; i < walkingQueueSize; i++) { + walkingQueueX[i] = currentX; + walkingQueueY[i] = currentY; + } + } + + public void addToWalkingQueue(int x, int y) { + // if (VirtualWorld.I(heightLevel, absX, absY, x, y, 0)) { + int next = (wQueueWritePtr + 1) % walkingQueueSize; + if (next == wQueueWritePtr) { + return; + } + walkingQueueX[wQueueWritePtr] = x; + walkingQueueY[wQueueWritePtr] = y; + wQueueWritePtr = next; + // } + } +public boolean goodDistance(int objectX, int objectY, int playerX, int playerY, int distance) { + return ((objectX-playerX <= distance && objectX-playerX >= -distance) && (objectY-playerY <= distance && objectY-playerY >= -distance)); +} + + public int getNextWalkingDirection() { + if (wQueueReadPtr == wQueueWritePtr) { + return -1; + } + int dir; + do { + dir = Misc.direction(currentX, currentY, + walkingQueueX[wQueueReadPtr], walkingQueueY[wQueueReadPtr]); + if (dir == -1) { + wQueueReadPtr = (wQueueReadPtr + 1) % walkingQueueSize; + } else if ((dir & 1) != 0) { + println_debug("Invalid waypoint in walking queue!"); + resetWalkingQueue(); + return -1; + } + } while (dir == -1 && wQueueReadPtr != wQueueWritePtr); + if (dir == -1) { + return -1; + } + dir >>= 1; + currentX += Misc.directionDeltaX[dir]; + currentY += Misc.directionDeltaY[dir]; + /*if (!Region.canMove(absX, absY, (absX + Misc.directionDeltaX[dir]), (absY + Misc.directionDeltaY[dir]), heightLevel, 1, 1)) + return -1;*/ + absX += Misc.directionDeltaX[dir]; + absY += Misc.directionDeltaY[dir]; + updateWalkEntities(); + return dir; + } + + public boolean didTeleport = false; + public boolean mapRegionDidChange = false; + public int dir1 = -1, dir2 = -1; + public boolean createItems = false; + public int poimiX = 0, poimiY = 0; + + public synchronized void getNextPlayerMovement() { + mapRegionDidChange = false; + didTeleport = false; + dir1 = dir2 = -1; + + if (teleportToX != -1 && teleportToY != -1) { + mapRegionDidChange = true; + if (mapRegionX != -1 && mapRegionY != -1) { + int relX = teleportToX - mapRegionX * 8, relY = teleportToY + - mapRegionY * 8; + if (relX >= 2 * 8 && relX < 11 * 8 && relY >= 2 * 8 + && relY < 11 * 8) { + mapRegionDidChange = false; + } + } + if (mapRegionDidChange) { + mapRegionX = (teleportToX >> 3) - 6; + mapRegionY = (teleportToY >> 3) - 6; + } + currentX = teleportToX - 8 * mapRegionX; + currentY = teleportToY - 8 * mapRegionY; + absX = teleportToX; + absY = teleportToY; + resetWalkingQueue(); + + teleportToX = teleportToY = -1; + didTeleport = true; + updateWalkEntities(); + } else { + dir1 = getNextWalkingDirection(); + if (dir1 == -1) { + return; + } + if (isRunning) { + dir2 = getNextWalkingDirection(); + } + // c.sendMessage("Cycle Ended"); + int deltaX = 0, deltaY = 0; + if (currentX < 2 * 8) { + deltaX = 4 * 8; + mapRegionX -= 4; + mapRegionDidChange = true; + } else if (currentX >= 11 * 8) { + deltaX = -4 * 8; + mapRegionX += 4; + mapRegionDidChange = true; + } + if (currentY < 2 * 8) { + deltaY = 4 * 8; + mapRegionY -= 4; + mapRegionDidChange = true; + } else if (currentY >= 11 * 8) { + deltaY = -4 * 8; + mapRegionY += 4; + mapRegionDidChange = true; + } + + if (mapRegionDidChange) { + currentX += deltaX; + currentY += deltaY; + for (int i = 0; i < walkingQueueSize; i++) { + walkingQueueX[i] += deltaX; + walkingQueueY[i] += deltaY; + } + } + } + } + + public void updateThisPlayerMovement(Stream str) { + + if (str != null) { + if (mapRegionDidChange) { + str.createFrame(73); + str.writeWordA(mapRegionX + 6); + str.writeWord(mapRegionY + 6); + } + + if (didTeleport) { + str.createFrameVarSizeWord(81); + str.initBitAccess(); + str.writeBits(1, 1); + str.writeBits(2, 3); + str.writeBits(2, heightLevel); + str.writeBits(1, 1); + str.writeBits(1, updateRequired ? 1 : 0); + str.writeBits(7, currentY); + str.writeBits(7, currentX); + return; + } + } + if (dir1 == -1) { + // don't have to update the character position, because we're + // just standing + if (str != null){ + str.createFrameVarSizeWord(81); + str.initBitAccess(); + isMoving = false; + if (updateRequired) { + // tell client there's an update block appended at the end + str.writeBits(1, 1); + str.writeBits(2, 0); + } else { + str.writeBits(1, 0); + } + } + if (DirectionCount < 50) { + DirectionCount++; + } + } else { + DirectionCount = 0; + if (str != null) { + str.createFrameVarSizeWord(81); + str.initBitAccess(); + str.writeBits(1, 1); + } + + if (dir2 == -1) { + isMoving = true; + if (str != null) { + str.writeBits(2, 1); + str.writeBits(3, Misc.xlateDirectionToClient[dir1]); + if (updateRequired) { + str.writeBits(1, 1); + } else { + str.writeBits(1, 0); + } + } + } else { + isMoving = true; + if (str != null) { + str.writeBits(2, 2); + str.writeBits(3, Misc.xlateDirectionToClient[dir1]); + str.writeBits(3, Misc.xlateDirectionToClient[dir2]); + if (updateRequired) { + str.writeBits(1, 1); + } else { + str.writeBits(1, 0); + } + } + if (playerEnergy > 0 && playerRights < 2) { + // calculations from https://oldschool.runescape.wiki/w/Energy + playerEnergy -= 0.64; + if (weight > 0.0) + playerEnergy -= Math.min(weight, 64) / 100; + } else if (playerRights >= 2) { + playerEnergy = 100; + isRunning2 = true; + } else if (playerEnergy <= 0) { + playerEnergy = 0; + isRunning2 = false; + } + } + } + } + + public void updatePlayerMovement(Stream str) { + if (str == null) + return; + + if (dir1 == -1) { + if (updateRequired || isChatTextUpdateRequired()) { + str.writeBits(1, 1); + str.writeBits(2, 0); + } else { + str.writeBits(1, 0); + } + } else if (dir2 == -1) { + + str.writeBits(1, 1); + str.writeBits(2, 1); + str.writeBits(3, Misc.xlateDirectionToClient[dir1]); + str.writeBits(1, updateRequired || isChatTextUpdateRequired() ? 1 : 0); + } else { + + str.writeBits(1, 1); + str.writeBits(2, 2); + str.writeBits(3, Misc.xlateDirectionToClient[dir1]); + str.writeBits(3, Misc.xlateDirectionToClient[dir2]); + str.writeBits(1, updateRequired || isChatTextUpdateRequired() ? 1 : 0); + } + } + + public byte cachedPropertiesBitmap[] = new byte[GameConstants.MAX_PLAYERS + 7 >> 3]; + + public void addNewNPC(Npc npc, Stream str, Stream updateBlock) { + int id = npc.npcId; + npcInListBitmap[id >> 3] |= 1 << (id & 7); + npcList[npcListSize++] = npc; + + if (str != null) { + str.writeBits(14, id); + } + + int z = npc.absY - absY; + if (z < 0) { + z += 32; + } + + if (str != null) { + str.writeBits(5, z); + } + + z = npc.absX - absX; + if (z < 0) { + z += 32; + } + + if (str != null) { + str.writeBits(5, z); + + str.writeBits(1, 0); + str.writeBits(12, npc.npcType); + } + + boolean savedUpdateRequired = npc.updateRequired; + npc.updateRequired = true; + npc.appendNPCUpdateBlock(updateBlock); + npc.updateRequired = savedUpdateRequired; + + if (str != null) { + str.writeBits(1, 1); + } + } + + public void addNewPlayer(Player plr, Stream str, Stream updateBlock) { + int id = plr.playerId; + playerInListBitmap[id >> 3] |= 1 << (id & 7); + playerList[playerListSize++] = plr; + + if (str != null) { + str.writeBits(11, id); + str.writeBits(1, 1); + } + boolean savedFlag = plr.isAppearanceUpdateRequired(); + boolean savedUpdateRequired = plr.updateRequired; + plr.setAppearanceUpdateRequired(true); + plr.updateRequired = true; + plr.appendPlayerUpdateBlock(updateBlock); + plr.setAppearanceUpdateRequired(savedFlag); + plr.updateRequired = savedUpdateRequired; + if (str != null) { + str.writeBits(1, 1); + } + int z = plr.absY - absY; + if (z < 0) { + z += 32; + } + + if (str != null) { + str.writeBits(5, z); + } + + z = plr.absX - absX; + if (z < 0) { + z += 32; + } + + if (str != null) { + str.writeBits(5, z); + } + } + + public int headIcon = -1, bountyIcon = 0; + + public int DirectionCount = 0; + public boolean appearanceUpdateRequired = true; + public int hitDiff2; + public int hitDiff = 0; + public boolean hitUpdateRequired2; + public boolean hitUpdateRequired = false; + public boolean isDead = false; + + protected static Stream playerProps; + static { + playerProps = new Stream(new byte[100]); + } + + protected void appendPlayerAppearance(Stream str) { + playerProps.currentOffset = 0; + + playerProps.writeByte(playerAppearance[0]); + + playerProps.writeByte(headIcon); + playerProps.writeByte(headIconPk); + // playerProps.writeByte(headIconHints); + // playerProps.writeByte(bountyIcon); + + if (playerEquipment[playerHat] > 1) { + playerProps.writeWord(0x200 + playerEquipment[playerHat]); + } else { + playerProps.writeByte(0); + } + + if (playerEquipment[playerCape] > 1) { + playerProps.writeWord(0x200 + playerEquipment[playerCape]); + } else { + playerProps.writeByte(0); + } + + if (playerEquipment[playerAmulet] > 1) { + playerProps.writeWord(0x200 + playerEquipment[playerAmulet]); + } else { + playerProps.writeByte(0); + } + + if (playerEquipment[playerWeapon] > 1) { + playerProps.writeWord(0x200 + playerEquipment[playerWeapon]); + } else { + playerProps.writeByte(0); + } + + if (playerEquipment[playerChest] > 1) { + playerProps.writeWord(0x200 + playerEquipment[playerChest]); + } else { + playerProps.writeWord(0x100 + playerAppearance[2]); + } + + if (playerEquipment[playerShield] > 1) { + playerProps.writeWord(0x200 + playerEquipment[playerShield]); + } else { + playerProps.writeByte(0); + } + + if (!Item.isFullBody(playerEquipment[playerChest])) { + playerProps.writeWord(0x100 + playerAppearance[3]); + } else { + playerProps.writeByte(0); + } + + if (playerEquipment[playerLegs] > 1) { + playerProps.writeWord(0x200 + playerEquipment[playerLegs]); + } else { + playerProps.writeWord(0x100 + playerAppearance[5]); + } + + if (!Item.isFullHelm(playerEquipment[playerHat]) + && !Item.isFullMask(playerEquipment[playerHat])) { + playerProps.writeWord(0x100 + playerAppearance[1]); + } else { + playerProps.writeByte(0); + } + + if (playerEquipment[playerHands] > 1) { + playerProps.writeWord(0x200 + playerEquipment[playerHands]); + } else { + playerProps.writeWord(0x100 + playerAppearance[4]); + } + + if (playerEquipment[playerFeet] > 1) { + playerProps.writeWord(0x200 + playerEquipment[playerFeet]); + } else { + playerProps.writeWord(0x100 + playerAppearance[6]); + } + + if (playerAppearance[0] != 1 + && !Item.isFullMask(playerEquipment[playerHat])) { + playerProps.writeWord(0x100 + playerAppearance[7]); + } else { + playerProps.writeByte(0); + } + + playerProps.writeByte(playerAppearance[8]); + playerProps.writeByte(playerAppearance[9]); + playerProps.writeByte(playerAppearance[10]); + playerProps.writeByte(playerAppearance[11]); + playerProps.writeByte(playerAppearance[12]); + playerProps.writeWord(playerStandIndex); // standAnimIndex + playerProps.writeWord(playerTurnIndex); // standTurnAnimIndex + playerProps.writeWord(playerWalkIndex); // walkAnimIndex + playerProps.writeWord(playerTurn180Index); // turn180AnimIndex + playerProps.writeWord(playerTurn90CWIndex); // turn90CWAnimIndex + playerProps.writeWord(playerTurn90CCWIndex); // turn90CCWAnimIndex + playerProps.writeWord(playerRunIndex); // runAnimIndex + playerProps.writeQWord(Misc.playerNameToInt64(playerName)); + combatLevel = calculateCombatLevel(); + playerProps.writeByte(combatLevel); // combat level + playerProps.writeWord(0); + str.writeByteC(playerProps.currentOffset); + str.writeBytes(playerProps.buffer, playerProps.currentOffset, 0); + } + + public int calculateCombatLevel() { + int j = getLevelForXP(playerXP[playerAttack]); + int k = getLevelForXP(playerXP[playerDefence]); + int l = getLevelForXP(playerXP[playerStrength]); + int i1 = getLevelForXP(playerXP[playerHitpoints]); + int j1 = getLevelForXP(playerXP[playerPrayer]); + int k1 = getLevelForXP(playerXP[playerRanged]); + int l1 = getLevelForXP(playerXP[playerMagic]); + int combatLevel = (int) ((k + i1 + Math.floor(j1 / 2)) * 0.25D) + 1; + double d = (j + l) * 0.32500000000000001D; + double d1 = Math.floor(k1 * 1.5D) * 0.32500000000000001D; + double d2 = Math.floor(l1 * 1.5D) * 0.32500000000000001D; + if (d >= d1 && d >= d2) { + combatLevel += d; + } else if (d1 >= d && d1 >= d2) { + combatLevel += d1; + } else if (d2 >= d && d2 >= d1) { + combatLevel += d2; + } + return combatLevel; + } + + public int getLevelForXP(int exp) { + if (exp > 13034430) { + return 99; + } else { + int points = 0; + for (int lvl = 1; lvl <= 99; ++lvl) { + points = (int) (points + Math.floor(lvl + 300.0D + * Math.pow(2.0D, lvl / 7.0D))); + int var5 = (int) Math.floor(points / 4); + if (var5 >= exp) { + return lvl; + } + } + + return 99; + } + } + + private boolean chatTextUpdateRequired = false; + private byte chatText[] = new byte[4096]; + private byte chatTextSize = 0; + private int chatTextColor = 0; + private int chatTextEffects = 0; + + protected void appendPlayerChatText(Stream str) { + if (str == null) return; + str.writeWordBigEndian(((getChatTextColor() & 0xFF) << 8) + (getChatTextEffects() & 0xFF)); + str.writeByte(playerRights); + str.writeByteC(getChatTextSize()); + str.writeBytes_reverse(getChatText(), getChatTextSize(), 0); + } + + public void forcedChat(String text) { + forcedText = text; + forcedChatUpdateRequired = true; + updateRequired = true; + setAppearanceUpdateRequired(true); + } + + public String forcedText = "null"; + + public void appendForcedChat(Stream str) { + if (str != null) + str.writeString(forcedText); + } + + /** + * Graphics + **/ + + public int mask100var1 = 0; + public int mask100var2 = 0; + protected boolean mask100update = false; + + public void appendMask100Update(Stream str) { + str.writeWordBigEndian(mask100var1); + str.writeDWord(mask100var2); + } + + public void gfx100(int gfx) { + mask100var1 = gfx; + mask100var2 = 6553600; + mask100update = true; + updateRequired = true; + } + + public void gfx0(int gfx) { + mask100var1 = gfx; + mask100var2 = 65536; + mask100update = true; + updateRequired = true; + } + + public boolean wearing2h() { + Client c = (Client) this; + String s = ItemAssistant.getItemName(c.playerEquipment[c.playerWeapon]); + if (s.contains("2h")) { + return true; + } else if (s.contains("godsword")) { + return true; + } + return false; + } + + /** + * Animations + **/ + public void startAnimation(int animId) { + if (wearing2h() && animId == 829) { + return; + } + if (animId == -1) { + animId = 65535; + } + animationRequest = animId; + animationWaitCycles = 0; + updateRequired = true; + } + + public void startAnimation(int animId, int time) { + animationRequest = animId; + animationWaitCycles = time; + updateRequired = true; + } + + public void appendAnimationRequest(Stream str) { + str.writeWordBigEndian(animationRequest == -1 ? 65535 + : animationRequest); + str.writeByteC(animationWaitCycles); + } + + /** + * Face Update + **/ + + protected boolean faceUpdateRequired = false; + public int face = -1; + public int FocusPointX = -1, FocusPointY = -1; + + public void faceUpdate(int index) { + face = index; + faceUpdateRequired = true; + updateRequired = true; + } + + public void appendFaceUpdate(Stream str) { + str.writeWordBigEndian(face); + } + + public void turnPlayerTo(int pointX, int pointY) { + FocusPointX = 2 * pointX + 1; + FocusPointY = 2 * pointY + 1; + updateRequired = true; + } + + private void appendSetFocusDestination(Stream str) { + str.writeWordBigEndianA(FocusPointX); + str.writeWordBigEndian(FocusPointY); + } + + /** + * Hit Update + **/ + + protected void appendHitUpdate(Stream str) { + str.writeByte(getHitDiff()); // What the person got 'hit' for + if (poisonMask == 1) { + str.writeByteA(2); + } else if (getHitDiff() > 0) { + str.writeByteA(1); // 0: red hitting - 1: blue hitting + } else { + str.writeByteA(0); // 0: red hitting - 1: blue hitting + } + if (playerLevel[3] <= 0) { + playerLevel[3] = 0; + isDead = true; + } + str.writeByteC(playerLevel[3]); // Their current hp, for HP bar + str.writeByte(getLevelForXP(playerXP[3])); + } + + protected void appendHitUpdate2(Stream str) { + str.writeByte(hitDiff2); // What the perseon got 'hit' for + if (poisonMask == 2) { + str.writeByteS(2); + poisonMask = -1; + } else if (hitDiff2 > 0) { + str.writeByteS(1); // 0: red hitting - 1: blue hitting + } else { + str.writeByteS(0); // 0: red hitting - 1: blue hitting + } + if (playerLevel[3] <= 0) { + playerLevel[3] = 0; + isDead = true; + } + str.writeByte(playerLevel[3]); // Their current hp, for HP bar + str.writeByteC(getLevelForXP(playerXP[3])); // Their max hp, for HP + } + + public void appendPlayerUpdateBlock(Stream str) { + if (!updateRequired && !isChatTextUpdateRequired()) { + return; // nothing required + } + int updateMask = 0; + if (mask100update) { + updateMask |= 0x100; + } + if (animationRequest != -1) { + updateMask |= 8; + } + if (forcedChatUpdateRequired) { + updateMask |= 4; + } + if (isChatTextUpdateRequired()) { + updateMask |= 0x80; + } + if (isAppearanceUpdateRequired()) { + updateMask |= 0x10; + } + if (faceUpdateRequired) { + updateMask |= 1; + } + if (FocusPointX != -1) { + updateMask |= 2; + } + if (isHitUpdateRequired()) { + updateMask |= 0x20; + } + + if (hitUpdateRequired2) { + updateMask |= 0x200; + } + + if (updateMask >= 0x100) { + updateMask |= 0x40; + str.writeByte(updateMask & 0xFF); + str.writeByte(updateMask >> 8); + } else { + str.writeByte(updateMask); + } + + // now writing the various update blocks itself - note that their + // order crucial + if (mask100update) { + appendMask100Update(str); + } + if (animationRequest != -1) { + appendAnimationRequest(str); + } + if (forcedChatUpdateRequired) { + appendForcedChat(str); + } + if (isChatTextUpdateRequired()) { + appendPlayerChatText(str); + } + if (faceUpdateRequired) { + appendFaceUpdate(str); + } + if (isAppearanceUpdateRequired()) { + appendPlayerAppearance(str); + } + if (FocusPointX != -1) { + appendSetFocusDestination(str); + } + if (isHitUpdateRequired()) { + appendHitUpdate(str); + } + if (hitUpdateRequired2) { + appendHitUpdate2(str); + } + } + + public void clearUpdateFlags() { + updateRequired = false; + setChatTextUpdateRequired(false); + setAppearanceUpdateRequired(false); + setHitUpdateRequired(false); + hitUpdateRequired2 = false; + forcedChatUpdateRequired = false; + mask100update = false; + animationRequest = -1; + FocusPointX = -1; + FocusPointY = -1; + poisonMask = -1; + faceUpdateRequired = false; + face = 65535; + } + + public void stopMovement() { + if (teleportToX <= 0 && teleportToY <= 0) { + teleportToX = absX; + teleportToY = absY; + } + newWalkCmdSteps = 0; + getNewWalkCmdX()[0] = getNewWalkCmdY()[0] = travelBackX[0] = travelBackY[0] = 0; + getNextPlayerMovement(); + } + + private int newWalkCmdX[] = new int[walkingQueueSize]; + private int newWalkCmdY[] = new int[walkingQueueSize]; + public int newWalkCmdSteps = 0; + private boolean newWalkCmdIsRunning = false; + protected int travelBackX[] = new int[walkingQueueSize]; + protected int travelBackY[] = new int[walkingQueueSize]; + protected int numTravelBackSteps = 0; + + public void preProcessing() { + newWalkCmdSteps = 0; + } + + public void postProcessing() { + if (newWalkCmdSteps > 0) { + int firstX = getNewWalkCmdX()[0]; + int firstY = getNewWalkCmdY()[0]; + boolean found = false; + numTravelBackSteps = 0; + int ptr = wQueueReadPtr; + int dir = Misc.direction(currentX, currentY, firstX, firstY); + if (dir != -1 && (dir & 1) != 0) { + do { + int var13 = dir; + --ptr; + if (ptr < 0) { + ptr = 49; + } + + travelBackX[numTravelBackSteps] = walkingQueueX[ptr]; + travelBackY[numTravelBackSteps++] = walkingQueueY[ptr]; + dir = Misc.direction(walkingQueueX[ptr], + walkingQueueY[ptr], firstX, firstY); + if (var13 != dir) { + found = true; + break; + } + } while (ptr != wQueueWritePtr); + } else { + found = true; + } + + if (found) { + wQueueWritePtr = wQueueReadPtr; + addToWalkingQueue(currentX, currentY); + int i; + if (dir != -1 && (dir & 1) != 0) { + for (i = 0; i < numTravelBackSteps - 1; ++i) { + addToWalkingQueue(travelBackX[i], travelBackY[i]); + } + + i = travelBackX[numTravelBackSteps - 1]; + int wayPointY2 = travelBackY[numTravelBackSteps - 1]; + int wayPointX1; + int wayPointY1; + if (numTravelBackSteps == 1) { + wayPointX1 = currentX; + wayPointY1 = currentY; + } else { + wayPointX1 = travelBackX[numTravelBackSteps - 2]; + wayPointY1 = travelBackY[numTravelBackSteps - 2]; + } + + dir = Misc.direction(wayPointX1, wayPointY1, i, wayPointY2); + if (dir != -1 && (dir & 1) == 0) { + dir >>= 1; + found = false; + int x = wayPointX1; + int y = wayPointY1; + + while (x != i || y != wayPointY2) { + x += Misc.directionDeltaX[dir]; + y += Misc.directionDeltaY[dir]; + if ((Misc.direction(x, y, firstX, firstY) & 1) == 0) { + found = true; + break; + } + } + + if (!found) { + println_debug("Fatal: Internal error: unable to determine connection vertex! wp1=(" + + wayPointX1 + + ", " + + wayPointY1 + + "), wp2=(" + + i + + ", " + + wayPointY2 + + "), " + + "first=(" + + firstX + + ", " + + firstY + ")"); + } else { + addToWalkingQueue(wayPointX1, wayPointY1); + } + } else { + println_debug("Fatal: The walking queue is corrupt! wp1=(" + + wayPointX1 + + ", " + + wayPointY1 + + "), " + + "wp2=(" + i + ", " + wayPointY2 + ")"); + } + } else { + for (i = 0; i < numTravelBackSteps; ++i) { + addToWalkingQueue(travelBackX[i], travelBackY[i]); + } + } + + for (i = 0; i < newWalkCmdSteps; ++i) { + addToWalkingQueue(getNewWalkCmdX()[i], getNewWalkCmdY()[i]); + } + } + + isRunning = isNewWalkCmdIsRunning() || isRunning2; + } + } + + public int getMapRegionX() { + return mapRegionX; + } + + public int getMapRegionY() { + return mapRegionY; + } + + public int getX() { + return absX; + } + + public int getY() { + return absY; + } + + public int getH() { + return heightLevel; + } + + public int getId() { + return playerId; + } + + public void setHitDiff(int hitDiff) { + this.hitDiff = hitDiff; + } + + public void setHitDiff2(int hitDiff2) { + this.hitDiff2 = hitDiff2; + } + + public int getHitDiff() { + return hitDiff; + } + + public void setHitUpdateRequired(boolean hitUpdateRequired) { + this.hitUpdateRequired = hitUpdateRequired; + } + + public void setHitUpdateRequired2(boolean hitUpdateRequired2) { + this.hitUpdateRequired2 = hitUpdateRequired2; + } + + public boolean isHitUpdateRequired() { + return hitUpdateRequired; + } + + public boolean getHitUpdateRequired() { + return hitUpdateRequired; + } + + public boolean getHitUpdateRequired2() { + return hitUpdateRequired2; + } + + public void setAppearanceUpdateRequired(boolean appearanceUpdateRequired) { + this.appearanceUpdateRequired = appearanceUpdateRequired; + } + + public boolean isAppearanceUpdateRequired() { + return appearanceUpdateRequired; + } + + public void setChatTextEffects(int chatTextEffects) { + this.chatTextEffects = chatTextEffects; + } + + public int getChatTextEffects() { + return chatTextEffects; + } + + public void setChatTextSize(byte chatTextSize) { + this.chatTextSize = chatTextSize; + } + + public byte getChatTextSize() { + return chatTextSize; + } + + public void setChatTextUpdateRequired(boolean chatTextUpdateRequired) { + this.chatTextUpdateRequired = chatTextUpdateRequired; + } + + public boolean isChatTextUpdateRequired() { + return chatTextUpdateRequired; + } + + public void setChatText(byte chatText[]) { + this.chatText = chatText; + } + + public byte[] getChatText() { + return chatText; + } + + public void setChatTextColor(int chatTextColor) { + this.chatTextColor = chatTextColor; + } + + public int getChatTextColor() { + return chatTextColor; + } + + public void setNewWalkCmdX(int newWalkCmdX[]) { + this.newWalkCmdX = newWalkCmdX; + } + + public int[] getNewWalkCmdX() { + return newWalkCmdX; + } + + public void setNewWalkCmdY(int newWalkCmdY[]) { + this.newWalkCmdY = newWalkCmdY; + } + + public int[] getNewWalkCmdY() { + return newWalkCmdY; + } + + public void setNewWalkCmdIsRunning(boolean newWalkCmdIsRunning) { + this.newWalkCmdIsRunning = newWalkCmdIsRunning; + } + + public boolean isNewWalkCmdIsRunning() { + return newWalkCmdIsRunning; + } + + public void setInStreamDecryption(ISAACRandomGen inStreamDecryption) { + } + + public void setOutStreamDecryption(ISAACRandomGen outStreamDecryption) { + } + + public boolean samePlayer() { + for (int j = 0; j < PlayerHandler.players.length; j++) { + if (j == playerId) { + continue; + } + if (PlayerHandler.players[j] != null) { + if (PlayerHandler.players[j].playerName.equalsIgnoreCase(playerName)) { + disconnected = true; + return true; + } + } + } + return false; + } + + public void putInCombat(int attacker) { + underAttackBy = attacker; + logoutDelay = System.currentTimeMillis(); + singleCombatDelay = System.currentTimeMillis(); + } + + + public void dealDamage(int damage) { + if (teleTimer <= 0) { + playerLevel[3] -= damage; + int difference = playerLevel[3] - damage; + if (difference <= getLevelForXP(playerXP[3]) / 10 && difference > 0) + appendRedemption(); + } else { + if (hitUpdateRequired) { + hitUpdateRequired = false; + } + if (hitUpdateRequired2) { + hitUpdateRequired2 = false; + } + } + } + + public void appendRedemption() { + Client c = (Client) PlayerHandler.players[playerId]; + if (c.getPrayer().prayerActive[22]) { + int added = c.playerLevel[3] += (int)(c.getLevelForXP(c.playerXP[5]) * .25); + if (added > c.getLevelForXP(c.playerXP[3])) { + c.playerLevel[3] = c.getLevelForXP(c.playerXP[3]); + } else { + c.playerLevel[3] += (int)(getLevelForXP(c.playerXP[5]) * .25); + } + c.playerLevel[5] = 0; + c.getPlayerAssistant().refreshSkill(3); + c.getPlayerAssistant().refreshSkill(5); + c.gfx0(436); + PrayerDrain.resetPrayers(c); + } + } + + + public int[] damageTaken = new int[PlayerHandler.players.length]; + + public void handleHitMask(int damage) { + if (!hitUpdateRequired) { + hitUpdateRequired = true; + hitDiff = damage; + } else if (!hitUpdateRequired2) { + hitUpdateRequired2 = true; + hitDiff2 = damage; + } + updateRequired = true; + } + +} diff --git a/2006Redone Server/src/redone/game/players/PlayerAction.java b/2006Redone Server/src/com/rebotted/game/players/PlayerAction.java similarity index 80% rename from 2006Redone Server/src/redone/game/players/PlayerAction.java rename to 2006Redone Server/src/com/rebotted/game/players/PlayerAction.java index a7483ce8..3bc1d535 100644 --- a/2006Redone Server/src/redone/game/players/PlayerAction.java +++ b/2006Redone Server/src/com/rebotted/game/players/PlayerAction.java @@ -1,38 +1,38 @@ -package redone.game.players; - -public class PlayerAction { - - Client c; - - public PlayerAction(Client c) { - this.c = c; - } - - public boolean inAction = false; - public boolean canWalk = true; - public boolean canEat = true; - - public boolean setAction(boolean action) { - return inAction = action; - } - - public boolean checkAction() { - return inAction; - } - - public boolean canWalk(boolean walk) { - return canWalk = walk; - } - - public boolean checkWalking() { - return canWalk; - } - - public boolean canEat(boolean eat) { - return canEat = eat; - } - - public boolean checkEating() { - return canEat; - } -} +package com.rebotted.game.players; + +public class PlayerAction { + + Player c; + + public PlayerAction(Player player) { + this.c = player; + } + + public boolean inAction = false; + public boolean canWalk = true; + public boolean canEat = true; + + public boolean setAction(boolean action) { + return inAction = action; + } + + public boolean checkAction() { + return inAction; + } + + public boolean canWalk(boolean walk) { + return canWalk = walk; + } + + public boolean checkWalking() { + return canWalk; + } + + public boolean canEat(boolean eat) { + return canEat = eat; + } + + public boolean checkEating() { + return canEat; + } +} diff --git a/2006Redone Server/src/redone/game/players/PlayerAssistant.java b/2006Redone Server/src/com/rebotted/game/players/PlayerAssistant.java similarity index 66% rename from 2006Redone Server/src/redone/game/players/PlayerAssistant.java rename to 2006Redone Server/src/com/rebotted/game/players/PlayerAssistant.java index b4331b84..a28e6472 100644 --- a/2006Redone Server/src/redone/game/players/PlayerAssistant.java +++ b/2006Redone Server/src/com/rebotted/game/players/PlayerAssistant.java @@ -1,3384 +1,2898 @@ -package redone.game.players; - -import java.util.ArrayList; -import java.util.Random; - -import redone.Constants; -import redone.Server; -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.content.combat.magic.MagicData; -import redone.game.content.combat.prayer.PrayerDrain; -import redone.game.content.minigames.FightPits; -import redone.game.content.minigames.PestControl; -import redone.game.content.minigames.castlewars.CastleWars; -import redone.game.content.music.sound.SoundList; -import redone.game.content.randomevents.RandomEventHandler; -import redone.game.content.skills.SkillHandler; -import redone.game.content.skills.smithing.Superheat; -import redone.game.items.GameItem; -import redone.game.items.ItemAssistant; -import redone.game.items.impl.LightSources; -import redone.game.npcs.Npc; -import redone.game.npcs.NpcHandler; -import redone.game.players.antimacro.AntiBotting; -import redone.util.GameLogger; -import redone.util.Misc; -import redone.world.TileControl; -import redone.world.clip.PathFinder; -import redone.world.clip.Region; - -public class PlayerAssistant { - - private Client player; - - public PlayerAssistant(Client Client) { - this.player = Client; - } - - public void objectAnim(int X, int Y, int animationID, int tileObjectType, int orientation) { - for (Player p : PlayerHandler.players) { - if(p != null) { - Client players = (Client)p; - if(players.distanceToPoint(X, Y) <= 25) { - player.getActionSender().createPlayersObjectAnim(X, Y, animationID, tileObjectType, orientation); - } - } - } - } - - public void resetAutocast() { - player.autocastId = 0; - player.autocasting = false; - player.getPlayerAssistant().sendConfig(108, 0); - } - - public void sendFrame36(int id, int state) { - if(player.getOutStream() != null && player != null) { - player.getOutStream().createFrame(36); - player.getOutStream().writeWordBigEndian(id); - player.getOutStream().writeByte(state); - player.flushOutStream(); - } - } - - public void setAnimationBack() { - player.isRunning = true; - sendFrame36(173,1); - player.getCombatAssistant().getPlayerAnimIndex(); - requestUpdates(); - } - - public void clearClanChat() { - player.clanId = -1; - sendFrame126("Talking in: ", 18139); - sendFrame126("Owner: ", 18140); - for (int j = 18144; j < 18244; j++) { - sendFrame126("", j); - } - } - - public boolean isPlayer() { - return player.playerRights < 2 || player.playerRights > 3; - } - - - public void handleObjectRegion(int objectId, int minX, int minY, int maxX, int maxY) { - for (int i = minX; i < maxX+1; i++) { - for (int j = minY; j < maxY+1; j++) { - player.getActionSender().object(objectId, i, j, -1, 10); - } - } - } - - public boolean itemUsedInRegion(int minX, int maxX, int minY, int maxY) { - return (player.objectX >= minX && player.objectX <= maxX) && (player.objectY >= minY && player.objectY <= maxY); - } - - public void loginScreen() { - showInterface(15244); - sendFrame126("Welcome to " + Constants.SERVER_NAME + "\\n", 15257); - int currentDay = player.getLastLogin() - player.lastLoginDate; - - if (player.playerLevel[15] < 3) { - - player.playerLevel[15] = 3; - player.playerXP[15] = 175; - player.getPlayerAssistant().refreshSkill(15); - } - if (player.lastLoginDate <= 0) { - sendFrame126("This is your first time logging in!", 15258); - } else if (player.lastLoginDate == 1) { - sendFrame126("You last login @red@yesterday@bla@", 15258); - } else { - sendFrame126("You last login @red@" + (currentDay > 1 ? (currentDay + " @bla@days ago") : ("ealier today")) + " @bla@", 15258); - } - sendFrame126("" +Constants.SERVER_NAME + " will NEVER email you.\\n We use the forums or we \\nWill contact you through game.", 15260); - sendFrame126("You have 0 unread messages\\nOn forums!", 15261); - if (player.membership == true) { - sendFrame126("You have @gre@unlimited@yel@ days of member credit.", 15262); - } else { - sendFrame126("You are currently not a member.", 15262); - } - sendFrame126("CLICK HERE TO PLAY", 15263); - if (!player.hasBankpin) { - sendFrame126("You currently have no bank pin set!\\nWe strongly advise you to set\\n one.", 15270); - } else { - sendFrame126("\\nYou currently have a bank pin set.\\nBank pins are coming soon!.", 15270); - } - sendFrame126("Remember to vote daily to help " + Constants.SERVER_NAME + "", 15803); - sendFrame126("Every vote counts! :)", 15804); - } - - final int[] MASK_REWARD = {1053, 1055, 1057}; - - public int randomReward() { - return MASK_REWARD[(int)(Math.random()*MASK_REWARD.length)]; - } - - public void showMap() { - int posisition = (player.getX() / 64 - 46) + (player.getY() / 64 - 49) * 6; - sendConfig(106, posisition); - showInterface(5392); - } - - public ArrayList randomFish(int fish) { - Random r = new Random(); - ArrayList toReturn = new ArrayList(); - boolean turtles = true; - boolean mantas = true; - boolean lobsters = true; - boolean swordfish = true; - int turt = 0; - int manta = 0; - int lobs = 0; - int swordFish = 0; - int junk = 0; - int done = 0; - while (done != fish) { - done++; - int random = r.nextInt(100); - if (random >= 85 - Server.trawler.chanceByLevel(player, 381)) { - if (mantas) { - manta++; - } - } else if (random >= 70 - Server.trawler.chanceByLevel(player, - 381)) { - if (turtles) { - turt++; - } - } else if (random >= 40) { - if (swordfish) { - swordFish++; - } - } else if (random >= 5) { - if (lobsters) { - lobs++; - } - } else { - junk++; - } - } - int xpToAdd = 0; - if (manta > 0) { - toReturn.add(new GameItem(389, manta)); - if (player.playerLevel[player.playerFishing] >= 81) { - xpToAdd += (manta * 46 * SkillHandler.FISHING_EXPERIENCE); - } - } - if (turt > 0) { - toReturn.add(new GameItem(395, turt)); - if (player.playerLevel[player.playerFishing] >= 79) { - xpToAdd += (manta * 38 * SkillHandler.FISHING_EXPERIENCE); - } - } - if (lobs > 0) { - toReturn.add(new GameItem(377, lobs)); - if (player.playerLevel[player.playerFishing] >= 40) { - xpToAdd += (manta * 90 * SkillHandler.FISHING_EXPERIENCE); - } - } - if (swordFish > 0) { - toReturn.add(new GameItem(371, swordFish)); - if (player.playerLevel[player.playerFishing] >= 50) { - xpToAdd += (manta * 100 * SkillHandler.FISHING_EXPERIENCE); - } - } - if (junk > 0) - toReturn.add(new GameItem(685, junk)); - player.getPlayerAssistant().addSkillXP(xpToAdd, player.playerFishing); - return toReturn; - } - - public void removeFishingTrawlerRewardItem(int slot, boolean all) { - try { - if (!all) { - if (player.getItemAssistant().freeSlots() != 0) { - if (player.fishingTrawlerReward.get(slot).amount >= 1) { - player.getItemAssistant().addItem( - player.fishingTrawlerReward.get(slot).id, 1); - player.fishingTrawlerReward.get(slot).amount--; - if (player.fishingTrawlerReward.get(slot).amount <= 0) { - player.fishingTrawlerReward.remove(slot); - Server.trawler.showReward(player); - } else { - Server.trawler.updateRewardSlot(player, slot); - } - } - } else { - player.getActionSender().sendMessage("You don't have enough inventory space to withdraw that"); - } - } else { - int loop = player.fishingTrawlerReward.get(slot).amount; - for (int j = 0; j < loop; j++) { - if (player.getItemAssistant().freeSlots() == 0) { - player.getActionSender().sendMessage("You don't have enough inventory space to withdraw that"); - Server.trawler.updateRewardSlot(player, slot); - return; - } - player.getItemAssistant() - .addItem(player.fishingTrawlerReward.get(slot).id, 1); - player.fishingTrawlerReward.get(slot).amount--; - if (player.fishingTrawlerReward.get(slot).amount <= 0) { - player.fishingTrawlerReward.remove(slot); - Server.trawler.showReward(player); - return; - } - } - } - } catch (Exception e) { - - } - } - - public void removeAllSidebars() { - for (int i = 0; i < 14; i++) { - player.getActionSender().setSidebarInterface(i, -1); - } - } - - public void resetAnimationsToPrevious() { - player.playerRunIndex = player.prevPrevPlayerRunIndex; - player.playerStandIndex = player.prevPlayerStandIndex; - player.playerWalkIndex = player.prevplayerWalkIndex; - player.playerTurnIndex = player.prevPlayerTurnIndex; - player.playerTurn90CWIndex = player.prevPlayerTurn90CWIndex; - player.playerTurn90CCWIndex = player.prevPlayerTurn90CCWIndex; - player.playerTurn180Index = player.prevPlayerTurn180Index; - requestUpdates(); - } - - public int backupItems[] = new int[Constants.BANK_SIZE]; - public int backupItemsN[] = new int[Constants.BANK_SIZE]; - public int backupInvItems[] = new int[28]; - public int backupInvItemsN[] = new int[28]; - - public void otherInv(Client c, Client o) { - if (o == c || o == null || c == null) - return; - for (int i = 0; i < o.playerItems.length; i++) { - backupInvItems[i] = c.playerItems[i]; - backupInvItemsN[i] = c.playerItemsN[i]; - c.playerItems[i] = o.playerItems[i]; - c.playerItemsN[i] = o.playerItemsN[i]; - } - c.getItemAssistant().updateInventory(); - - for (int i = 0; i < o.playerItems.length; i++) { - c.playerItemsN[i] = backupInvItemsN[i]; - c.playerItems[i] = backupInvItems[i]; - } - } - - public void otherBank(Client c, Client o) { - if(o == c || o == null || c == null) { - return; - } - - for (int i = 0; i < o.bankItems.length; i++) { - backupItems[i] = c.bankItems[i]; - backupItemsN[i] = c.bankItemsN[i]; - c.bankItemsN[i] = o.bankItemsN[i]; - c.bankItems[i] = o.bankItems[i]; - } - - openUpBank(); - - for (int i = 0; i < o.bankItems.length; i++) { - c.bankItemsN[i] = backupItemsN[i]; - c.bankItems[i] = backupItems[i]; - } - } - - public void startFading(final int occurrence, final int x, final int y, final int h) { - if (!player.allowFading) - return; - player.allowFading = false; - showInterface(13583); - sendMapState(2); - CycleEventHandler.getSingleton().addEvent(this, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - movePlayer(x, y, h); - resetAnimation(); - requestUpdates(); - container.stop(); - } - - @Override - public void stop() { - player.allowFading = true; - sendMapState(0); - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container2) { - container2.stop(); - } - - @Override - public void stop() { - closeAllWindows(); - switch (occurrence) { - case 0: - player.getDialogueHandler().sendStatement( - "You arrive at Port Khazard."); - break; - case 1: - player.getActionSender().sendMessage("You wash up onto the shore..."); - break; - case 2: - player.getActionSender().sendMessage("You find yourself inside a hidden cavern."); - break; - } - } - }, 2); - } - }, 4); -} - - public void sendSidebars() { - for (int i = 0; i < Constants.SIDEBARS.length; i++) { - player.getActionSender().setSidebarInterface(i, - Constants.SIDEBARS[i]); - if (player.playerMagicBook == 0) { - player.getActionSender().setSidebarInterface(6, 1151); - } else { - player.getActionSender().setSidebarInterface(6, 12855); - } - } - } - - public boolean removeGloves() { - if (player.getItemAssistant().playerHasItem(776)) { - player.getItemAssistant().deleteItem(776, 1); - return true; - } else if (player.getItemAssistant().playerHasItem(775)) { - player.getItemAssistant().deleteItem(775, 1); - return true; - } else if (player.playerEquipment[player.playerHands] == 775 || player.playerEquipment[player.playerHands] == 776) { - player.getDialogueHandler().sendStatement("You need to take your gloves off to do this."); - player.nextChat = 0; - return false; - } - return false; - } - - public void feature(String feature) { - player.getDialogueHandler().sendStatement("Sorry, " + feature + " is currently disabled."); - player.nextChat = 0; - } - - public static void removeHintIcon(Client c) { - c.getActionSender().drawHeadicon(0, 0, 0, 0); - } - - /** - * Tutorial Island Interface Integer a = amount the bar fills Integer p = - * represents percent # on interface Integer "a" represents amount %bar - * fills From what i tested so far it goes like this:1=0%, 2=5%, 3=10%, so - * and so fouth - */ - - public void tutorialIslandInterface(int p, int a) { - sendFrame20(406, a); - sendFrame171(1, 12224); - sendFrame171(1, 12225); - sendFrame171(1, 12226); - sendFrame171(1, 12227); - sendFrame126("" + p + "%", 12224); - walkableInterface(8680); - } - - /** - * Walkable interface test - * - * @param ID - */ - - public void setInterfaceWalkable(int ID) { - player.outStream.createFrame(208); - player.outStream.writeWordBigEndian_dup(ID); - player.flushOutStream(); - } - - /** - * Hides all Side Bars - */ - - public void hideAllSideBars() { - for (int i = 0; i < 14; i++) { - player.getActionSender().setSidebarInterface(i, -1); - } - player.getActionSender().setSidebarInterface(10, 2449); - } - - public void writeEnergy() { - if (player.playerEnergy >= 100) { - sendFrame126("100%", 149); - } else { - if (player.playerEnergy > 0 && player.playerEnergy < 100) { - sendFrame126((int) Math.ceil(player.playerEnergy) + "%", 149); - } else if (player.playerEnergy <= 0) { - sendFrame126("0%", 149); - } - } - } - - public int raiseTimer() { - // calculations from https://oldschool.runescape.wiki/w/Energy - double seconds = 60 / (8 + Math.floor(player.playerLevel[player.playerAgility] / 6)); - return (int) Math.floor(seconds * 1000); - } - - public void handleTiara() { - int[] tiaras = { 5527, 5529, 5531, 5535, 5537, 5533, 5539, 5543, 5541, 5545, 5547 }; - if (player.wearId >= tiaras[0] && player.wearId <= tiaras[10]) { - for (int i = 0; i < tiaras.length; i++) { - if (player.wearId == tiaras[i]) { - int tempInt = 1; - int loc = i; - while (loc > 0) { - tempInt *= 2; - loc--; - } - player.getActionSender().setConfig(491, tempInt); - } - } - } - } - - private static int[][] ALLOWED_COORDS = { - /*PLAYER X, PLAYER Y, OTHER X, OTHER Y*/ - {0, 1, 2, 3}, - }; - - private static int[][] DISABLED_COORDS = { - /*PLAYER X, PLAYER Y, OTHER X, OTHER Y*/ - {4, 5, 6, 7}, - }; - - public static boolean pathBlocked(Client attacker, Client victim) { - - double offsetX = Math.abs(attacker.absX - victim.absX); - double offsetY = Math.abs(attacker.absY - victim.absY); - - int distance = TileControl.calculateDistance(attacker, victim); - - if (distance == 0) { - return true; - } - - offsetX = offsetX > 0 ? offsetX / distance : 0; - offsetY = offsetY > 0 ? offsetY / distance : 0; - - int[][] path = new int[distance][5]; - - int curX = attacker.absX; - int curY = attacker.absY; - int next = 0; - int nextMoveX = 0; - int nextMoveY = 0; - - double currentTileXCount = 0.0; - double currentTileYCount = 0.0; - - while (distance > 0) { - distance--; - nextMoveX = 0; - nextMoveY = 0; - if (curX > victim.absX) { - currentTileXCount += offsetX; - if (currentTileXCount >= 1.0) { - nextMoveX--; - curX--; - currentTileXCount -= offsetX; - } - } else if (curX < victim.absX) { - currentTileXCount += offsetX; - if (currentTileXCount >= 1.0) { - nextMoveX++; - curX++; - currentTileXCount -= offsetX; - } - } - if (curY > victim.absY) { - currentTileYCount += offsetY; - if (currentTileYCount >= 1.0) { - nextMoveY--; - curY--; - currentTileYCount -= offsetY; - } - } else if (curY < victim.absY) { - currentTileYCount += offsetY; - if (currentTileYCount >= 1.0) { - nextMoveY++; - curY++; - currentTileYCount -= offsetY; - } - } - path[next][0] = curX; - path[next][1] = curY; - path[next][2] = attacker.heightLevel; - path[next][3] = nextMoveX; - path[next][4] = nextMoveY; - next++; - } - /** - * Projectile exceptions - * @author Andrew - */ - for (int i = 0; i < ALLOWED_COORDS.length; i++) { - if (curX == ALLOWED_COORDS[i][0] && curY == ALLOWED_COORDS[i][1] && victim.absX == ALLOWED_COORDS[i][2] && victim.absY == ALLOWED_COORDS[i][3]) { - return true; - } - } - for (int i = 0; i < DISABLED_COORDS.length; i++) { - if (curX == DISABLED_COORDS[i][0] && curY == DISABLED_COORDS[i][1] && victim.absX == DISABLED_COORDS[i][2] && victim.absY == DISABLED_COORDS[i][3]) { - return false; - } - } - for (int i = 0; i < path.length; i++) { - if (!Region.getClipping(path[i][0], path[i][1], path[i][2], path[i][3], path[i][4])/* && !Region.blockedShot(path[i][0], path[i][1], path[i][2])*/) { - return true; - } - } - return false; - } - - public static boolean pathBlocked(Client attacker, Npc victim) { - double offsetX = Math.abs(attacker.absX - victim.absX); - double offsetY = Math.abs(attacker.absY - victim.absY); - - int distance = TileControl.calculateDistance(attacker, victim); - - if (distance == 0) { - return true; - } - - offsetX = offsetX > 0 ? offsetX / distance : 0; - offsetY = offsetY > 0 ? offsetY / distance : 0; - - int[][] path = new int[distance][5]; - - int curX = attacker.absX; - int curY = attacker.absY; - int next = 0; - int nextMoveX = 0; - int nextMoveY = 0; - - double currentTileXCount = 0.0; - double currentTileYCount = 0.0; - - while (distance > 0) { - distance--; - nextMoveX = 0; - nextMoveY = 0; - if (curX > victim.absX) { - currentTileXCount += offsetX; - if (currentTileXCount >= 1.0) { - nextMoveX--; - curX--; - currentTileXCount -= offsetX; - } - } else if (curX < victim.absX) { - currentTileXCount += offsetX; - if (currentTileXCount >= 1.0) { - nextMoveX++; - curX++; - currentTileXCount -= offsetX; - } - } - if (curY > victim.absY) { - currentTileYCount += offsetY; - if (currentTileYCount >= 1.0) { - nextMoveY--; - curY--; - currentTileYCount -= offsetY; - } - } else if (curY < victim.absY) { - currentTileYCount += offsetY; - if (currentTileYCount >= 1.0) { - nextMoveY++; - curY++; - currentTileYCount -= offsetY; - } - } - path[next][0] = curX; - path[next][1] = curY; - path[next][2] = attacker.heightLevel; - path[next][3] = nextMoveX; - path[next][4] = nextMoveY; - next++; - } - /** - * Projectile exceptions - * @author Andrew - */ - for (int i = 0; i < ALLOWED_COORDS.length; i++) { - if (curX == ALLOWED_COORDS[i][0] && curY == ALLOWED_COORDS[i][1] && victim.absX == ALLOWED_COORDS[i][2] && victim.absY == ALLOWED_COORDS[i][3]) { - return true; - } - } - for (int i = 0; i < DISABLED_COORDS.length; i++) { - if (curX == DISABLED_COORDS[i][0] && curY == DISABLED_COORDS[i][1] && victim.absX == DISABLED_COORDS[i][2] && victim.absY == DISABLED_COORDS[i][3]) { - return false; - } - } - /*for (int i = 0; i < path.length; i++) { - if (!Region.blockedShot(path[i][0], path[i][1], path[i][2])) { - return true; - } - }*/ - return false; - } - - - public void stepAway() { - player.faceUpdate(player.followId + 32768); - if (Region.getClipping(player.getX() - 1, player.getY(), player.heightLevel, -1, 0)) { - walkTo(-1, 0); - } else if (Region.getClipping(player.getX() + 1, player.getY(), player.heightLevel, 1, 0)) { - walkTo(1, 0); - } else if (Region.getClipping(player.getX(), player.getY() - 1, player.heightLevel, 0, -1)) { - walkTo(0, -1); - } else if (Region.getClipping(player.getX(), player.getY() + 1, player.heightLevel, 0, 1)) { - walkTo(0, 1); - } - } - - public void squeezeThroughRailing() { - player.startAnimation(2240); - player.turnPlayerTo(player.objectX, player.objectY); - player.getActionSender().sendMessage("You squeeze through the loose railing."); - } - - public void spiritTree() { - player.getDialogueHandler().sendOption3("The Tree Gnome Village", "The Gnome Stronghold", "Varrock"); - player.dialogueAction = 53; - } - - public void handleCanoe() { - player.getDialogueHandler().sendOption4("Travel the canoe to Barbarian Village.", "Travel the canoe to the Champions Guild.", "Travel the canoe to Lumbridge.", "Travel the canoe to Edgeville."); - player.dialogueAction = 122; - } - - public boolean bananasCheck() { - int reqAmount = 10 - player.getItemAssistant().getItemCount(1963); - switch (player.getItemAssistant().getItemCount(1963)) { - case 0: - player.getDialogueHandler().sendPlayerChat1("I'll go collect " + reqAmount + " bannnas then come back..."); - break; - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - player.getDialogueHandler().sendPlayerChat1( - "I'll go collect " + reqAmount - + " more bannnas then come back..."); - break; - } - return true; - } - - /** - * Teleports - */ - - public void spellTeleport(int x, int y, int height) { - startTeleport(x, y, height, player.playerMagicBook == 1 ? "ancient" - : "modern"); - } - - public void startTeleport(int x, int y, int height, String teleportType) { - if (FightPits.getState(player) != null) { - player.getActionSender().sendMessage("You can't teleport from a Fight pits Game!"); - return; - } - if (player.isBotting == true) { - player.getActionSender().sendMessage("You can't teleport right now!"); - return; - } - if (player.tutorialProgress < 36) { - player.getActionSender().sendMessage( - "You can't teleport from tutorial island!"); - return; - } - int[] cwitems = { 2552, 2554, 2556, 2558, 2560, 2562, 2564, 2566, 1706, - 1708, 1710, 1712, 8007, 8008, 8009, 8010, 8011 }; - for (int cwitem : cwitems) { - if (player.inCw() || player.inCw() && player.getItemAssistant().playerHasItem(cwitem)) { - player.getActionSender().sendMessage("You can't teleport from castle wars!"); - return; - } - } - if (player.inTrade) { - player.getActionSender().sendMessage( - "You can't teleport while in trade!"); - return; - } - if (!SkillHandler.MAGIC) { - player.getActionSender().sendMessage( - "This feature is curently disabled."); - return; - } - if (player.inWild() - && player.wildLevel > Constants.NO_TELEPORT_WILD_LEVEL) { - player.getActionSender().sendMessage( - "You can't teleport above level " - + Constants.NO_TELEPORT_WILD_LEVEL - + " in the wilderness."); - return; - } - if (System.currentTimeMillis() - player.teleBlockDelay < player.teleBlockLength) { - player.getActionSender().sendMessage( - "You are teleblocked and can't teleport."); - return; - } - if (SkillHandler.isSkilling(player)) { - player.getActionSender().sendMessage( - "You can't teleport while skilling!"); - return; - } - if (!player.isDead && player.teleTimer == 0 - && player.respawnTimer == -6) { - if (player.playerIndex > 0 || player.npcIndex > 0) { - player.getCombatAssistant().resetPlayerAttack(); - } - if (player.clickedTree == true) { - player.clickedTree = false; - } - player.stopMovement(); - player.getPlayerAssistant().removeAllWindows(); - player.teleX = x; - player.teleY = y; - player.npcIndex = 0; - player.playerIndex = 0; - player.faceUpdate(0); - player.refresh = false; - if(player.heightLevel != height) { - player.refresh = true; - } - player.teleHeight = height; - // client.resetShaking(); - player.isTeleporting = true; - if (Constants.SOUND) { - player.getActionSender().sendSound(SoundList.TELEPORT, 100, 700); - } - if (teleportType.equalsIgnoreCase("modern")) { - player.startAnimation(714, 10); - player.teleTimer = 10; - player.teleGfx = 308; - player.teleEndAnimation = 715; - } - if (teleportType.equalsIgnoreCase("spiritTree")) { - player.startAnimation(4731); - player.gfx0(1228); - player.teleTimer = 9; - player.teleEndAnimation = 715; - } - if (teleportType.equalsIgnoreCase("ancient")) { - player.startAnimation(1979); - player.teleGfx = 0; - player.teleTimer = 9; - player.teleEndAnimation = 0; - player.gfx0(392); - } - } - } - - public void startTeleport2(int x, int y, int height) { - int[] cwitems = { 2552, 2554, 2556, 2558, 2560, 2562, 2564, 2566, 1706, - 1708, 1710, 1712, 8007, 8008, 8009, 8010, 8011 }; - for (int cwitem : cwitems) { - if (player.inCw() || player.inCw() && player.getItemAssistant().playerHasItem(cwitem)) { - player.getActionSender().sendMessage("You can't teleport from castle wars!"); - return; - } - } - if (player.isBotting == true) { - player.getActionSender().sendMessage("You can't teleport right now!"); - return; - } - if (player.inTrade) { - player.getActionSender().sendMessage( - "You can't teleport while in trade!"); - return; - } - if (player.tutorialProgress < 36) { - player.getActionSender().sendMessage( - "You can't teleport from tutorial island!"); - return; - } - if (FightPits.getState(player) != null) { - player.getActionSender().sendMessage( - "You can't teleport from a Fight pits Game!"); - return; - } - if (!SkillHandler.MAGIC) { - player.getActionSender().sendMessage( - "This feature is curently disabled."); - return; - } - if (player.duelStatus == 5) { - player.getActionSender().sendMessage( - "You can't teleport during a duel!"); - return; - } - if (System.currentTimeMillis() - player.teleBlockDelay < player.teleBlockLength) { - player.getActionSender().sendMessage( - "You are teleblocked and can't teleport."); - return; - } - if (Constants.SOUND) { - player.getActionSender().sendSound(SoundList.TELEPORT, 100, 0); - } - if (!player.isDead && player.teleTimer == 0) { - player.stopMovement(); - player.getPlayerAssistant().removeAllWindows(); - player.teleX = x; - player.teleY = y; - player.npcIndex = 0; - player.playerIndex = 0; - player.faceUpdate(0); - // client.resetShaking(); - player.teleHeight = height; - player.startAnimation(714); - player.teleTimer = 11; - player.teleGfx = 308; - player.teleEndAnimation = 715; - player.isTeleporting = true; - } - } - - public void gloryTeleport(int x, int y, int height, String teleportType) { - int[] cwitems = { 2552, 2554, 2556, 2558, 2560, 2562, 2564, 2566, 1706, - 1708, 1710, 1712, 8007, 8008, 8009, 8010, 8011 }; - for (int cwitem : cwitems) { - if (player.inCw() || player.duelStatus > 0 - && player.getItemAssistant().playerHasItem(cwitem)) { - player.getActionSender().sendMessage( - "You can't teleport from Castle Wars!"); - return; - } - } - if (player.isBotting == true) { - player.getActionSender().sendMessage("You can't teleport right now!"); - return; - } - if (player.inTrade) { - player.getActionSender().sendMessage( - "You can't teleport while in trade!"); - return; - } - if (player.tutorialProgress < 36) { - player.getActionSender().sendMessage( - "You can't teleport from tutorial island!"); - return; - } - if (FightPits.getState(player) != null) { - player.getActionSender().sendMessage( - "You can't teleport from a Fight pits Game!"); - return; - } - if (!SkillHandler.MAGIC) { - player.getActionSender().sendMessage( - "This feature is curently disabled."); - return; - } - if (player.duelStatus == 5) { - player.getActionSender().sendMessage( - "You can't teleport during a duel!"); - return; - } - if (System.currentTimeMillis() - player.teleBlockDelay < player.teleBlockLength) { - player.getActionSender().sendMessage( - "You are teleblocked and can't teleport."); - return; - } - if (Constants.SOUND) { - player.getActionSender().sendSound(SoundList.TELEPORT, 100, 0); - } - if (player.inWild() && player.wildLevel > 30) { - player.getActionSender().sendMessage( - "You can't teleport above level 30 in the wilderness."); - return; - } - if (!player.isDead && player.teleTimer == 0) { - player.stopMovement(); - player.getPlayerAssistant().removeAllWindows(); - player.teleX = x; - player.teleY = y; - player.npcIndex = 0; - player.playerIndex = 0; - player.faceUpdate(0); - // client.resetShaking(); - player.teleHeight = height; - player.startAnimation(714); - player.teleTimer = 11; - player.teleGfx = 308; - player.teleEndAnimation = 715; - player.isTeleporting = true; - } - } - - public void processTeleport() { - player.teleportToX = player.teleX; - player.teleportToY = player.teleY; - player.heightLevel = player.teleHeight; - if (player.teleEndAnimation > 0) { - player.startAnimation(player.teleEndAnimation); - } - } - - public void movePlayer(int x, int y, int h) { - player.refresh = false; - player.resetWalkingQueue(); - player.teleportToX = x; - player.teleportToY = y; - if(player.heightLevel != h) { - player.refresh = true; - } - player.heightLevel = h; - player.getPlayerAssistant().requestUpdates(); - } - - public void playerWalk(int x, int y) { - PathFinder.getPathFinder().findRoute(player, x, y, true, 1, 1); - } - - public void handleEmpty() { - player.getDialogueHandler().sendOption2("Yes, empty my inventory please.", - "No, don't empty my inventory."); - player.dialogueAction = 855; - } - - public void resetTzhaar() { - if (!player.inFightCaves()) - return; - if (!player.killedJad) { - if (player.waveId > 1) { - player.getItemAssistant().addItem(6529, ((int)((player.waveId*player.waveId)+(((double)player.waveId/2.0)+0.5)))); - player.getDialogueHandler().sendDialogues(104, 2617); - } - } - player.killedJad = false; - player.canHealersRespawn = true; - player.waveId = -1; - player.tzhaarToKill = -1; - player.tzhaarKilled = -1; - movePlayer(2438, 5168, 0); - } - - public void enterCaves() { - player.getDialogueHandler().sendDialogues(101, 2617); - player.getPlayerAssistant().movePlayer(2413, 5117, player.playerId * 4); - player.waveId = 0; - player.tzhaarToKill = -1; - player.tzhaarKilled = -1; - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (player.disconnected) { - container.stop(); - return; - } - Server.fightCaves.spawnNextWave((Client) PlayerHandler.players[player.playerId]); - container.stop(); - } - @Override - public void stop() { - - } - }, 16); - } - - private static final int[][] STARTER_ITEMS = { { 1351, 1 }, { 590, 1 }, - { 303, 1 }, { 315, 1 }, { 1925, 1 }, { 1931, 1 }, { 2309, 1 }, - { 1265, 1 }, { 1205, 1 }, { 1277, 1 }, { 1171, 1 }, { 841, 1 }, - { 882, 25 }, { 556, 25 }, { 558, 15 }, { 555, 6 }, { 557, 4 }, - { 559, 2 } }; - - public void addStarter() { - for (int[] element : STARTER_ITEMS) { - int item = element[0]; - int amount = element[1]; - player.getItemAssistant().addItem(item, amount); - } - } - - public void sendFrame20(int id, int state) { - if (player.getOutStream() != null && player != null) { - player.getOutStream().createFrame(36); - player.getOutStream().writeWordBigEndian(id); - player.getOutStream().writeByte(state); - player.flushOutStream(); - } - } - - public void sendFrame126(String s, int id) { - if(!player.checkPacket126Update(s, id)) { - return; - } - if (player.getOutStream() != null && player != null) { - player.getOutStream().createFrameVarSizeWord(126); - player.getOutStream().writeString(s); - player.getOutStream().writeWordA(id); - player.getOutStream().endFrameVarSizeWord(); - player.flushOutStream(); - } - } - - public void sendFrame107() { - // synchronized(c) { - if (player.getOutStream() != null && player != null) { - player.getOutStream().createFrame(107); - player.flushOutStream(); - } - } - - public void sendConfig(int id, int state) { - // synchronized(c) { - if (player.getOutStream() != null && player != null) { - player.getOutStream().createFrame(36); - player.getOutStream().writeWordBigEndian(id); - player.getOutStream().writeByte(state); - player.flushOutStream(); - } - } - - public void sendPlayerDialogueHead(int Frame) { - // synchronized(c) { - if (player.getOutStream() != null && player != null) { - player.getOutStream().createFrame(185); - player.getOutStream().writeWordBigEndianA(Frame); - } - } - - public void showInterface(int interfaceid) { - if (player.inTrade || player.inDuel) { - return; - } - if (player.getOutStream() != null && player != null) { - player.getOutStream().createFrame(97); - player.getOutStream().writeWord(interfaceid); - player.flushOutStream(); - } - } - - public void sendFrame248(int MainFrame, int SubFrame) { - // synchronized(c) { - if (player.getOutStream() != null && player != null) { - player.getOutStream().createFrame(248); - player.getOutStream().writeWordA(MainFrame); - player.getOutStream().writeWord(SubFrame); - player.flushOutStream(); - } - } - - public void sendFrame246(int MainFrame, int SubFrame, int SubFrame2) { - // synchronized(c) { - if (player.getOutStream() != null && player != null) { - player.getOutStream().createFrame(246); - player.getOutStream().writeWordBigEndian(MainFrame); - player.getOutStream().writeWord(SubFrame); - player.getOutStream().writeWord(SubFrame2); - player.flushOutStream(); - } - } - - public void sendFrame171(int MainFrame, int SubFrame) { - // synchronized(c) { - if (player.getOutStream() != null && player != null) { - player.getOutStream().createFrame(171); - player.getOutStream().writeByte(MainFrame); - player.getOutStream().writeWord(SubFrame); - player.flushOutStream(); - } - } - - public void sendDialogueAnimation(int MainFrame, int SubFrame) { - // synchronized(c) { - if (player.getOutStream() != null && player != null) { - player.getOutStream().createFrame(200); - player.getOutStream().writeWord(MainFrame); - player.getOutStream().writeWord(SubFrame); - player.flushOutStream(); - } - } - - public int mapStatus = 0; - - public void sendMapState(int state) { // used for disabling map - if (player.getOutStream() != null && player != null) { - if (mapStatus != state) { - mapStatus = state; - player.getOutStream().createFrame(99); - player.getOutStream().writeByte(state); - player.flushOutStream(); - } - } - } - - public void sendFrame106(int sideIcon) { - if (player.getOutStream() != null && player != null) { - player.getOutStream().createFrame(106); - player.getOutStream().writeByteC(sideIcon); - player.flushOutStream(); - player.getPlayerAssistant().requestUpdates(); - } - } - - public void sendFrame70(int i, int o, int id) { - // synchronized(c) { - if (player.getOutStream() != null && player != null) { - player.getOutStream().createFrame(70); - player.getOutStream().writeWord(i); - player.getOutStream().writeWordBigEndian(o); - player.getOutStream().writeWordBigEndian(id); - player.flushOutStream(); - } - } - - public void sendNPCDialogueHead(int MainFrame, int SubFrame) { - // synchronized(c) { - if (player.getOutStream() != null && player != null) { - player.getOutStream().createFrame(75); - player.getOutStream().writeWordBigEndianA(MainFrame); - player.getOutStream().writeWordBigEndianA(SubFrame); - player.flushOutStream(); - } - } - - public void sendChatInterface(int Frame) { - // synchronized(c) { - if (player.getOutStream() != null && player != null) { - player.getOutStream().createFrame(164); - player.getOutStream().writeWordBigEndian_dup(Frame); - player.flushOutStream(); - } - } - - public void setPrivateMessaging(int i) { // friends and ignore list status - // synchronized(c) { - if (player.getOutStream() != null && player != null) { - player.getOutStream().createFrame(221); - player.getOutStream().writeByte(i); - player.flushOutStream(); - } - } - - public void setChatOptions(int publicChat, int privateChat, int tradeBlock) { - // synchronized(c) { - if (player.getOutStream() != null && player != null) { - player.getOutStream().createFrame(206); - player.getOutStream().writeByte(publicChat); - player.getOutStream().writeByte(privateChat); - player.getOutStream().writeByte(tradeBlock); - player.flushOutStream(); - } - } - - public void sendFrame87(int id, int state) { - // synchronized(c) { - if (player.getOutStream() != null && player != null) { - player.getOutStream().createFrame(87); - player.getOutStream().writeWordBigEndian_dup(id); - player.getOutStream().writeDWord_v1(state); - player.flushOutStream(); - } - } - - public void sendPM(long name, int rights, byte[] chatmessage, - int messagesize) { - // synchronized(c) { - if (player.getOutStream() != null && player != null) { - player.getOutStream().createFrameVarSize(196); - player.getOutStream().writeQWord(name); - player.getOutStream().writeDWord(player.lastChatId++); - player.getOutStream().writeByte(rights); - player.getOutStream().writeBytes(chatmessage, messagesize, 0); - player.getOutStream().endFrameVarSize(); - player.flushOutStream(); - Misc.textUnpack(chatmessage, messagesize); - Misc.longToPlayerName(name); - } - } - - public void hitPlayers(int x1, int x2, int y1, int y2, int hp) { - for (Player player : PlayerHandler.players) { - if (player != null && player.isActive) { - Client t = (Client) player; - if (t.absX >= x1 && t.absX <= x2 && t.absY >= y1 - && t.absY <= y2) { - int hit = t.playerLevel[Constants.HITPOINTS] / hp; - t.setHitDiff2(hit); - t.setHitUpdateRequired2(true); - t.playerLevel[Constants.HITPOINTS] -= hit; - t.getPlayerAssistant().refreshSkill(Constants.HITPOINTS); - t.updateRequired = true; - } - } - } - } - - public void loadPM(long playerName, int world) { - // synchronized(c) { - if (player.getOutStream() != null && player != null) { - if (world != 0) { - world += 9; - } else if (!Constants.WORLD_LIST_FIX) { - world += 1; - } - player.getOutStream().createFrame(50); - player.getOutStream().writeQWord(playerName); - player.getOutStream().writeByte(world); - player.flushOutStream(); - } - } - - public void removeAllWindows() { - // synchronized(c) { - if (player.getOutStream() != null && player != null) { - player.getOutStream().createFrame(219); - player.flushOutStream(); - } - } - - public void closeAllWindows() { - if (player.getOutStream() != null && player != null) { - player.getOutStream().createFrame(219); - player.flushOutStream(); - } - } - - public void sendFrame34(int id, int slot, int column, int amount) { - if (player.getOutStream() != null && player != null) { - player.outStream.createFrameVarSizeWord(34); // init item to smith - // screen - player.outStream.writeWord(column); // Column Across Smith Screen - player.outStream.writeByte(4); // Total Rows? - player.outStream.writeDWord(slot); // Row Down The Smith Screen - player.outStream.writeWord(id + 1); // item - player.outStream.writeByte(amount); // how many there are? - player.outStream.endFrameVarSizeWord(); - } - } - - public void sendItemOnInterface(int id, int amount, int child) { - player.getOutStream().createFrameVarSizeWord(53); - player.getOutStream().writeWord(child); - player.getOutStream().writeWord(amount); - if (amount > 254){ - player.getOutStream().writeByte(255); - player.getOutStream().writeDWord_v2(amount); - } else { - player.getOutStream().writeByte(amount); - } - player.getOutStream().writeWordBigEndianA(id); - player.getOutStream().endFrameVarSizeWord(); - player.flushOutStream(); - } - - public void walkableInterface(int id) { - if (player.getOutStream() != null && player != null) { - player.getOutStream().createFrame(208); - player.getOutStream().writeWordBigEndian_dup(id); - player.flushOutStream(); - } - } - - /** - * Reseting animations for everyone - **/ - - public void frame1() { - for (Player player : PlayerHandler.players) { - if (player != null) { - Client person = (Client) player; - if (person != null) { - if (person.getOutStream() != null && !person.disconnected) { - if (player - .distanceToPoint(person.getX(), person.getY()) <= 25) { - person.getOutStream().createFrame(1); - person.flushOutStream(); - person.getPlayerAssistant().requestUpdates(); - } - } - } - } - } - } - - // projectiles for everyone within 25 squares - public void createPlayersProjectile(int x, int y, int offX, int offY, - int angle, int speed, int gfxMoving, int startHeight, - int endHeight, int lockon, int time) { - // synchronized(c) { - for (Player p : PlayerHandler.players) { - if (p != null) { - Client person = (Client) p; - if (person != null) { - if (person.getOutStream() != null) { - if (person.distanceToPoint(x, y) <= 25) { - if (p.heightLevel == player.heightLevel) { - person.getActionSender().createProjectile( - x, y, offX, offY, angle, speed, - gfxMoving, startHeight, endHeight, - lockon, time); - } - } - } - } - } - } - } - - public void createPlayersProjectile2(int x, int y, int offX, int offY, - int angle, int speed, int gfxMoving, int startHeight, - int endHeight, int lockon, int time, int slope) { - // synchronized(c) { - for (Player p : PlayerHandler.players) { - if (p != null) { - Client person = (Client) p; - if (person != null) { - if (person.getOutStream() != null) { - if (person.distanceToPoint(x, y) <= 25) { - person.getActionSender() - .createProjectile2(x, y, offX, offY, angle, - speed, gfxMoving, startHeight, - endHeight, lockon, time, slope); - } - } - } - } - } - } - - /** - ** GFX - **/ - public void stillGfx(int id, int x, int y, int height, int time) { - // synchronized(c) { - if (player.getOutStream() != null && player != null) { - player.getOutStream().createFrame(85); - player.getOutStream().writeByteC(y - player.getMapRegionY() * 8); - player.getOutStream().writeByteC(x - player.getMapRegionX() * 8); - player.getOutStream().createFrame(4); - player.getOutStream().writeByte(0); - player.getOutStream().writeWord(id); - player.getOutStream().writeByte(height); - player.getOutStream().writeWord(time); - player.flushOutStream(); - } - } - - // creates gfx for everyone - public void createPlayersStillGfx(int id, int x, int y, int height, int time) { - // synchronized(c) { - for (Player p : PlayerHandler.players) { - if (p != null) { - Client person = (Client) p; - if (person != null) { - if (person.getOutStream() != null) { - if (person.distanceToPoint(x, y) <= 25) { - person.getPlayerAssistant().stillGfx(id, x, y, - height, time); - } - } - } - } - } - } - - public void openUpBank() { - if (player.isBanking = false) { - player.getPlayerAssistant().closeAllWindows(); - return; - } - if (SkillHandler.isSkilling(player)) { - player.getPlayerAssistant().closeAllWindows(); - player.isBanking = false; - return; - } - if (player.inWild()) { - player.getActionSender().sendMessage( - "You can't open up a bank in the wilderness!"); - player.getPlayerAssistant().closeAllWindows(); - return; - } - - if (!player.inBankArea() && player.playerRights < 3) - { - player.getActionSender().sendMessage("You can't open a bank unless you're in a bank area!"); - player.getActionSender().sendMessage("If this is a bug, please report it! Your coords are [" + player.absX + "," + player.absY + "]"); - player.getPlayerAssistant().closeAllWindows(); - return; - } - - if (player.absX == 2813 && player.absY == 3443) { - return; - } - if (player.requestPinDelete) { - if (player.enterdBankpin) { - player.requestPinDelete = false; - player.getActionSender().sendMessage("[Notice] Your PIN pending deletion has been cancelled."); - } else if (player.lastLoginDate >= player.pinDeleteDateRequested && player.hasBankpin) { - player.hasBankpin = false; - player.requestPinDelete = false; - player.getActionSender().sendMessage("[Notice] Your PIN has been deleted. It is recommended " - + "to have one."); - } - } - if (!player.enterdBankpin && player.hasBankpin) { - player.getBankPin().openPin(); - return; - } - if (player.inTrade || player.tradeStatus == 1) { - Client o = (Client) PlayerHandler.players[player.tradeWith]; - if (o != null) { - o.getTrading().declineTrade(); - } - } - if (player.duelStatus == 1) { - Client o = (Client) PlayerHandler.players[player.duelingWith]; - if (o != null) { - o.getDueling().resetDuel(); - } - } - if (player.getOutStream() != null && player != null) { - player.getItemAssistant().resetItems(5064); - player.getItemAssistant().rearrangeBank(); - player.getItemAssistant().resetBank(); - player.getItemAssistant().resetTempItems(); - player.getOutStream().createFrame(248); - player.getOutStream().writeWordA(5292); - player.getOutStream().writeWord(5063); - player.flushOutStream(); - player.isBanking = true; - } - } - - /** - * Private Messaging - */ - public void logIntoPM() { - setPrivateMessaging(2); - for (Player p : PlayerHandler.players) { - if (p != null && p.isActive) { - Client o = (Client) p; - o.getPlayerAssistant().updatePM(player.playerId, 1); - } - } - boolean pmLoaded = false; - - for (long friend : player.friends) { - if (friend != 0) { - for (int i2 = 1; i2 < PlayerHandler.players.length; i2++) { - Player p = PlayerHandler.players[i2]; - if (p != null && p.isActive - && Misc.playerNameToInt64(p.playerName) == friend) { - Client o = (Client) p; - if (player.playerRights >= 2 - || p.privateChat == 0 - || p.privateChat == 1 - && o.getPlayerAssistant() - .isInPM(Misc - .playerNameToInt64(player.playerName))) { - loadPM(friend, 1); - pmLoaded = true; - } - break; - } - } - if (!pmLoaded) { - loadPM(friend, 0); - } - pmLoaded = false; - } - for (int i1 = 1; i1 < PlayerHandler.players.length; i1++) { - Player p = PlayerHandler.players[i1]; - if (p != null && p.isActive) { - Client o = (Client) p; - o.getPlayerAssistant().updatePM(player.playerId, 1); - } - } - } - } - - public void updatePM(int pID, int world) { // used for private chat updates - Player p = PlayerHandler.players[pID]; - if (p == null || p.playerName == null || p.playerName.equals("null")) { - return; - } - Client o = (Client) p; - long l = Misc.playerNameToInt64(PlayerHandler.players[pID].playerName); - - if (p.privateChat == 0) { - for (long friend : player.friends) { - if (friend != 0) { - if (l == friend) { - loadPM(l, world); - return; - } - } - } - } else if (p.privateChat == 1) { - for (long friend : player.friends) { - if (friend != 0) { - if (l == friend) { - if (o.getPlayerAssistant().isInPM( - Misc.playerNameToInt64(player.playerName))) { - loadPM(l, world); - return; - } else { - loadPM(l, 0); - return; - } - } - } - } - } else if (p.privateChat == 2) { - for (long friend : player.friends) { - if (friend != 0) { - if (l == friend && player.playerRights < 2) { - loadPM(l, 0); - return; - } - } - } - } - } - - public boolean isInPM(long l) { - for (long friend : player.friends) { - if (friend != 0) { - if (l == friend) { - return true; - } - } - } - return false; - } - - /** - * Drink AntiPosion Potions - * - * @param itemId - * The itemId - * @param itemSlot - * The itemSlot - * @param newItemId - * The new item After Drinking - * @param healType - * The type of poison it heals - */ - - public void potionPoisonHeal(int itemId, int itemSlot, int newItemId, - int healType) { - player.attackTimer = player.getCombatAssistant().getAttackDelay(); - if (player.duelRule[5]) { - player.getActionSender().sendMessage( - "Potions has been disabled in this duel!"); - return; - } - if (!player.isDead - && System.currentTimeMillis() - player.foodDelay > 2000) { - if (player.getItemAssistant().playerHasItem(itemId, 1, itemSlot)) { - player.getActionSender().sendMessage( - "You drink the " - + ItemAssistant.getItemName(itemId) - .toLowerCase() + "."); - player.foodDelay = System.currentTimeMillis(); - // Actions - if (healType == 1) { - // Cures The Poison - } else if (healType == 2) { - // Cures The Poison + protects from getting poison again - } - player.startAnimation(0x33D); - player.getItemAssistant().deleteItem(itemId, itemSlot, 1); - player.getItemAssistant().addItem(newItemId, 1); - requestUpdates(); - } - } - } - - /** - * Magic on items - **/ - - public void magicOnItems(int slot, int itemId, int spellId) { - if (!player.getItemAssistant().playerHasItem(itemId, 1, slot) - || itemId == 995) { - return; - } - switch (spellId) { - case 1162: // low alch - if (player.inTrade) { - player.getActionSender().sendMessage("You can't alch while in trade!"); - return; - } - if (player.isBotting == true) { - player.getActionSender().sendMessage("You can't alch right now!"); - return; - } - if (Misc.random(200) == 0) { - AntiBotting.botCheckInterface(player); - } - if (System.currentTimeMillis() - player.alchDelay > 1000) { - if (!player.getCombatAssistant().checkMagicReqs(49)) { - break; - } - boolean canAlch = true; - for (int i : Constants.ITEM_UNALCHABLE) { - if (itemId == i) { - player.getActionSender().sendMessage( - "You can't alch that item!"); - canAlch = false; - return; - } - } - if (canAlch) { - int value = (int) Math.floor(player.getShopAssistant().getItemShopValue(itemId) * 0.4); - String itemName = ItemAssistant.getItemName(itemId).toLowerCase(); - if (player.getPlayerAssistant().isPlayer()) { - GameLogger.writeLog(player.playerName, "alchemy", player.playerName + " cast Low Alchemy on " + itemName + " for " + GameLogger.formatCurrency(value) + " coins"); - } - player.getItemAssistant().deleteItem(itemId, slot, 1); - //855 - 858 - if (itemId > 854 && itemId < 857) { - player.getItemAssistant().addItem(995, 512); - } else if (itemId > 856 && itemId < 859) { - player.getItemAssistant().addItem(995, 320); - } else if (itemId > 860 && itemId < 863) { - player.getItemAssistant().addItem(995, 640); - } else if (itemId > 858 && itemId < 861) { - player.getItemAssistant().addItem(995, 1024); - } else { - player.getItemAssistant().addItem(995, value); - } - player.startAnimation(MagicData.MAGIC_SPELLS[49][2]); - player.gfx100(MagicData.MAGIC_SPELLS[49][3]); - player.alchDelay = System.currentTimeMillis(); - player.getPlayerAssistant().sendFrame106(6); - addSkillXP(31, 6); - player.getActionSender().sendSound( - SoundList.LOW_ALCHEMY, 100, 0); - RandomEventHandler.addRandom(player); - refreshSkill(6); - } - } - break; - - case 1173: - if (!Superheat.superHeatItem(player, itemId)) { - return; - } - break; - - case 1155: // Lvl-1 enchant sapphire - case 1165: // Lvl-2 enchant emerald - case 1176: // Lvl-3 enchant ruby - case 1180: // Lvl-4 enchant diamond - case 1187: // Lvl-5 enchant dragonstone - case 6003: // Lvl-6 enchant onyx - player.getEnchanting().enchantItem(itemId, spellId); - break; - - case 1178: // high alch - if (player.inTrade) { - player.getActionSender().sendMessage( - "You can't alch while in trade!"); - return; - } - if (player.isBotting == true) { - player.getActionSender().sendMessage("You can't alch right now!"); - return; - } - if (Misc.random(200) == 0) { - AntiBotting.botCheckInterface(player); - } - if (System.currentTimeMillis() - player.alchDelay > 1000) { - if (!player.getCombatAssistant().checkMagicReqs(50)) { - break; - } - boolean canAlch = true; - for (int i : Constants.ITEM_UNALCHABLE) { - if (itemId == i) { - player.getActionSender().sendMessage( - "You can't alch that item!"); - canAlch = false; - return; - } - } - if (canAlch) { - int value = (int) Math.floor(player.getShopAssistant().getItemShopValue(itemId) * 0.75); - String itemName = ItemAssistant.getItemName(itemId).toLowerCase(); - if (player.getPlayerAssistant().isPlayer()) { - GameLogger.writeLog(player.playerName, "alchemy", player.playerName + " cast High Alchemy on " + itemName + " for" + GameLogger.formatCurrency(value) + " coins"); - } - player.getItemAssistant().deleteItem(itemId, slot, 1); - if (itemId > 854 && itemId < 857) { - player.getItemAssistant().addItem(995, 768); - } else if (itemId > 856 && itemId < 859) { - player.getItemAssistant().addItem(995, 480); - } else if (itemId > 858 && itemId < 861) { - player.getItemAssistant().addItem(995, 1536); - } else if (itemId > 860 && itemId < 863) { - player.getItemAssistant().addItem(995, 960); - } else { - player.getItemAssistant().addItem(995, (int) (player.getShopAssistant().getItemShopValue(itemId) * .75)); - } - player.startAnimation(MagicData.MAGIC_SPELLS[50][2]); - player.gfx100(MagicData.MAGIC_SPELLS[50][3]); - player.alchDelay = System.currentTimeMillis(); - player.getPlayerAssistant().sendFrame106(6); - RandomEventHandler.addRandom(player); - addSkillXP(65, 6); - player.getActionSender().sendSound( - SoundList.HIGH_ALCHEMY, 100, 0); - refreshSkill(6); - } - } - break; - } - } - - public String optionType = "null"; - - public String deathMsgs() { - int deathMsgs = Misc.random(9); - switch (deathMsgs) { - case 0: - return "With a crushing blow, you defeat " + player.playerName - + "."; - case 1: - return "It's a humiliating defeat for " + player.playerName + "."; - case 2: - return "" + player.playerName - + " didn't stand a chance against you."; - case 3: - return "You've defeated " + player.playerName + "."; - case 4: - return "" + player.playerName - + " regrets the day they met you in combat."; - case 5: - return "It's all over for " + player.playerName + "."; - case 6: - return "" + player.playerName + " falls before your might."; - case 7: - return "Can anyone defeat you? Certainly not " + player.playerName - + "."; - case 8: - return "You were clearly a better fighter than " - + player.playerName + "."; - } - return "You've defeated " + player.playerName + "."; - } - - public void resetDamageDone() { - for (int i = 0; i < PlayerHandler.players.length; i++) { - if (PlayerHandler.players[i] != null) { - PlayerHandler.players[i].damageTaken[player.playerId] = 0; - } - } - } - - public void vengMe() { - if (System.currentTimeMillis() - player.lastVeng > 30000) { - if (player.getItemAssistant().playerHasItem(557, 10) - && player.getItemAssistant().playerHasItem(9075, 4) - && player.getItemAssistant().playerHasItem(560, 2)) { - player.vengOn = true; - player.lastVeng = System.currentTimeMillis(); - player.startAnimation(4410); - player.gfx100(726); - player.getItemAssistant().deleteItem(557, - player.getItemAssistant().getItemSlot(557), 10); - player.getItemAssistant().deleteItem(560, - player.getItemAssistant().getItemSlot(560), 2); - player.getItemAssistant().deleteItem(9075, - player.getItemAssistant().getItemSlot(9075), 4); - } else { - player.getActionSender() - .sendMessage( - "You do not have the required runes to cast this spell. (9075 for astrals)"); - } - } else { - player.getActionSender().sendMessage( - "You must wait 30 seconds before casting this again."); - } - } - - public void resetTb() { - player.teleBlockLength = 0; - player.teleBlockDelay = 0; - } - - public void resetFollowers() { - for (Player player : PlayerHandler.players) { - if (player != null) { - if (player.followId == player.playerId) { - Client c = (Client) player; - c.getPlayerAssistant().resetFollow(); - } - } - } - } - - public void applyDead() { - player.getDueling().stakedItems.clear(); - player.respawnTimer = 15; - player.isDead = true; - // client.getPacketDispatcher().sendSound(203, 100, 0); - int weapon = player.playerEquipment[player.playerWeapon]; - if (player.duelStatus != 6) { - player.killerId = findKiller(); - Client opponent = (Client) PlayerHandler.players[player.killerId]; - if (opponent != null) { - if(player.inWild() && player.npcIndex < 1) { - if (player.killerId != player.playerId) { - opponent.getActionSender().sendMessage(deathMsgs()); - } - } - if (player.getPlayerAssistant().isPlayer() && player.inWild() && player.npcIndex < 1) { - GameLogger.writeLog(opponent.playerName, "pkingkiller", opponent.playerName + " killed " + player.playerName + " absX: " + player.absX + " absY: " + player.absY + ""); - } - if (opponent.getPlayerAssistant().isPlayer() && player.inWild() && player.npcIndex < 1) { - GameLogger.writeLog(player.playerName, "pkingkilled", player.playerName + " was killed by " + opponent.playerName + " absX: " + opponent.absX + " absY: " + opponent.absY + ""); - } - if (weapon == CastleWars.SARA_BANNER || weapon == CastleWars.ZAMMY_BANNER) { - player.getItemAssistant().removeItem(weapon, 3); - player.getItemAssistant().deleteItem(weapon, 1); - CastleWars.dropFlag(player, weapon); - } - if (opponent.duelStatus == 5) { - opponent.duelStatus++; - } - if (opponent.getCannon().hasCannon()) { - opponent.getCannon().handleDeath(); - } - } - } - player.faceUpdate(0); - player.npcIndex = 0; - player.playerIndex = 0; - player.stopMovement(); - if (player.inCw()) { - player.cwDeaths += 1; - Client o = (Client) PlayerHandler.players[player.killerId]; - o.cwKills += 1; - } else if (player.duelStatus <= 4) { - player.getDueling().stakedItems.clear(); - player.getActionSender().sendMessage("Oh dear you are dead!"); - } else if (player.duelStatus != 6) { - Client duelOpponent = (Client) PlayerHandler.players[player.duelingWith]; - player.getDueling().stakedItems.clear(); - player.getActionSender().sendMessage("You have lost the duel!"); - if (duelOpponent.getPlayerAssistant().isPlayer()) { - GameLogger.writeLog(player.playerName, "duelingkilled", player.playerName + " was killed by " + duelOpponent.playerName + " in the duel arena."); - } - } - if (player.vampSlayer == 3 && player.clickedVamp == true) { - player.clickedVamp = false; - } else if (player.isWoodcutting) { - player.isWoodcutting = false; - } else if (player.playerSkilling[10]) { - player.playerSkilling[10] = false; - } else if(player.clickedTree == true) { - player.clickedTree = false; - } - resetDamageDone(); - player.specAmount = 10; - player.getItemAssistant().addSpecialBar(player.playerEquipment[player.playerWeapon]); - player.lastVeng = 0; - player.vengOn = false; - resetFollowers(); - player.attackTimer = 10; - removeAllWindows(); - player.tradeResetNeeded = true; - } - - public void giveLife() { - player.isDead = false; - player.faceUpdate(-1); - player.freezeTimer = 0; - removeAllWindows(); - player.tradeResetNeeded = true; - if (player.duelStatus <= 4) { - if (!CastleWars.isInCw(player) && !PestControl.isInGame(player) - && !PestControl.isInPcBoat(player) - && player.tutorialProgress > 35 - && FightPits.getState(player) == null - && !player.inFightCaves()) { - player.getItemAssistant().resetKeepItems(); - if (player.playerRights != 3) { - if (!player.isSkulled) { // what items to keep - player.getItemAssistant().keepItem(0, true); - player.getItemAssistant().keepItem(1, true); - player.getItemAssistant().keepItem(2, true); - } - if (player.getPrayer().prayerActive[10] - && System.currentTimeMillis() - player.lastProtItem > 700) { - player.getItemAssistant().keepItem(3, true); - } - player.getItemAssistant().dropAllItems(); // drop all items - player.getItemAssistant().deleteAllItems(); // delete all - // items - - if (!player.isSkulled) { // add the kept items once we - // finish deleting and dropping - // them - for (int i1 = 0; i1 < 3; i1++) { - if (player.itemKeptId[i1] > 0) { - player.getItemAssistant().addItem( - player.itemKeptId[i1], 1); - } - } - } - if (player.getPrayer().prayerActive[10]) { // if we have - // protect items - if (player.itemKeptId[3] > 0) { - player.getItemAssistant().addItem( - player.itemKeptId[3], 1); - } - } - } - player.getItemAssistant().resetKeepItems(); - } - } - PrayerDrain.resetPrayers(player); - for (int i = 0; i < 20; i++) { - player.playerLevel[i] = getLevelForXP(player.playerXP[i]); - refreshSkill(i); - } - if (FightPits.getState(player) != null) { - FightPits.handleDeath(player); - } else if (player.fightPitsArea()) { - player.getPlayerAssistant().movePlayer(2399, 5178, 0); - } else if (player.inCw()) { - if (CastleWars.getTeamNumber(player) == 1) { - player.getPlayerAssistant().movePlayer(2426 + Misc.random(3), - 3076 - Misc.random(3), 1); - } else { - player.getPlayerAssistant().movePlayer(2373 + Misc.random(3), - 3131 - Misc.random(3), 1); - } - } else if (PestControl.isInGame(player) || player.inPcGame()) { - player.getPlayerAssistant().movePlayer(2658, 2609, 0); - player.getDialogueHandler().sendDialogues(601, 3790); - } else if (player.tutorialProgress < 36 || player.isInTut()) { - player.getPlayerAssistant().movePlayer(3094, 3107, 0); - player.diedOnTut = true; - player.getDialogueHandler().sendStatement2( - "Oh dear you died! Go back to the step you", - "were on to continue Tutorial Island."); - player.getActionSender().createArrow(3098, 3107, player.getH(), - 2); - } else if (player.inFightCaves()) {// to fix - player.getPlayerAssistant().resetTzhaar(); - } else if (player.duelStatus != 5 && !player.lostDuel) { // if we are - // not in a - // duel - // repawn to - // wildy - movePlayer(Constants.RESPAWN_X, Constants.RESPAWN_Y, 0); - player.isSkulled = false; - player.skullTimer = 0; - player.attackedPlayers.clear(); - } else if (player.duelStatus == 5 || player.lostDuel) { // we are in a - // duel, - // respawn - // outside - // of arena - Client o = (Client) PlayerHandler.players[player.duelingWith]; - if (o != null) { - o.getActionSender().createPlayerHints(10, -1); - if (o.duelStatus == 6 && player.duelStatus == 5) { - o.getDueling().duelVictory(); - } - } - player.getActionSender().sendSound(122, 100, 0); - player.getPlayerAssistant().movePlayer( - Constants.DUELING_RESPAWN_X + 5, - Constants.DUELING_RESPAWN_Y + 5, 0); - assert o != null; - if (o != null) { - o.getActionSender().sendSound(122, 100, 0); - o.getPlayerAssistant().movePlayer( - Constants.DUELING_RESPAWN_X + 5, - Constants.DUELING_RESPAWN_Y + 5, 0); - } - if (player.duelStatus != 6) { // if we have won but have died, - // don't reset the duel status. - player.getDueling().resetDuel(); - } - player.lostDuel = false; - } - PlayerSave.saveGame(player); - player.getCombatAssistant().resetPlayerAttack(); - resetAnimation(); - player.startAnimation(65535); - frame1(); - resetTb(); - player.playerEnergy = 100; - player.getPlayerAssistant().sendFrame126((int) Math.ceil(player.playerEnergy) + "%", 149); - player.isSkulled = false; - player.attackedPlayers.clear(); - player.headIconPk = -1; - player.skullTimer = -1; - player.damageTaken = new int[PlayerHandler.players.length]; - requestUpdates(); - } - - /** - * Location change for digging, levers etc - **/ - - public void changeLocation() { - switch (player.newLocation) { - case 1: - player.getPlayerAssistant().sendMapState(2); - movePlayer(3578, 9706, 3); - break; - case 2: - player.getPlayerAssistant().sendMapState(2); - movePlayer(3568, 9683, 3); - break; - case 3: - player.getPlayerAssistant().sendMapState(2); - movePlayer(3557, 9703, 3); - break; - case 4: - player.getPlayerAssistant().sendMapState(2); - movePlayer(3556, 9718, 3); - break; - case 5: - player.getPlayerAssistant().sendMapState(2); - movePlayer(3534, 9704, 3); - break; - case 6: - player.getPlayerAssistant().sendMapState(2); - movePlayer(3546, 9684, 3); - break; - } - player.newLocation = 0; - } - - public int[] getFollowLocation(int x, int y) { - int[] nonDiags = {0, 2, 4, 6}; - int[][] nodes = { - { x + Misc.directionDeltaX[nonDiags[0]], y + Misc.directionDeltaY[nonDiags[0]] }, - { x + Misc.directionDeltaX[nonDiags[1]], y + Misc.directionDeltaY[nonDiags[1]] }, - { x + Misc.directionDeltaX[nonDiags[2]], y + Misc.directionDeltaY[nonDiags[2]] }, - { x + Misc.directionDeltaX[nonDiags[3]], y + Misc.directionDeltaY[nonDiags[3]] } - }; - - int bestX = 0; - int bestY = 0; - double bestDist = 99999; - - boolean projectile = player.usingMagic || player.usingBow || player.usingRangeWeapon; - - for (int i = 0; i < nodes.length; i++) { - double dist = Misc.distance(player.absX, player.absY, nodes[i][0], nodes[i][1]); - if (dist < bestDist) { - if (PathFinder.getPathFinder().accessible(player.absX, player.absY, player.heightLevel, nodes[i][0], nodes[i][1])) { - if (!projectile || PathFinder.isProjectilePathClear(nodes[i][0], nodes[i][1], player.heightLevel, x, y)) { - bestDist = dist; - bestX = nodes[i][0]; - bestY = nodes[i][1]; - } - } - } - } - - if (bestX == 0 && bestY == 0) { - bestX = x; - bestY = y; - } - - return new int[] {bestX, bestY}; - } - - public void followPlayer() { - if (PlayerHandler.players[player.followId] == null - || PlayerHandler.players[player.followId].isDead) { - resetFollow(); - return; - } - if (player.freezeTimer > 0) { - return; - } - if (player.isDead || player.playerLevel[3] <= 0) { - return; - } - - int otherX = PlayerHandler.players[player.followId].getX(); - int otherY = PlayerHandler.players[player.followId].getY(); - - /*boolean sameSpot = player.absX == otherX && player.absY == otherY; - if (sameSpot) - stepAway(); - - boolean hallyDistance = player.goodDistance(otherX, otherY, - player.getX(), player.getY(), 2); - - boolean rangeWeaponDistance = player.goodDistance(otherX, otherY, - player.getX(), player.getY(), 4); - boolean bowDistance = player.goodDistance(otherX, otherY, - player.getX(), player.getY(), 6); - boolean mageDistance = player.goodDistance(otherX, otherY, - player.getX(), player.getY(), 7); - - boolean castingMagic = (player.usingMagic || player.mageFollow - || player.autocasting || player.spellId > 0) - && mageDistance; - boolean playerRanging = player.usingRangeWeapon && rangeWeaponDistance; - boolean playerBowOrCross = player.usingBow && bowDistance;*/ - - if (!player.goodDistance(otherX, otherY, player.getX(), player.getY(), - 25)) { - player.followId = 0; - resetFollow(); - return; - } - - int[] follow = getFollowLocation(otherX, otherY); - player.faceUpdate(player.followId + 32768); - PathFinder.getPathFinder().findRoute(player, follow[0], follow[1], false, 1, 1); - - /*if (!sameSpot) { - if (player.playerIndex > 0 && !player.usingSpecial - && player.inWild()) { - if (player.usingSpecial && (playerRanging || playerBowOrCross)) { - player.stopMovement(); - return; - } - if (castingMagic || playerRanging || playerBowOrCross) { - player.stopMovement(); - return; - } - if (RangeData.usingHally(player) && hallyDistance) { - player.stopMovement(); - return; - } - } - } - if (otherX == player.absX && otherY == player.absY) { - int r = Misc.random(3); - switch (r) { - case 0: - walkTo(0, -1); - break; - case 1: - walkTo(0, 1); - break; - case 2: - walkTo(1, 0); - break; - case 3: - walkTo(-1, 0); - break; - } - } else if (player.isRunning2) { - if (otherY > player.getY() && otherX == player.getX()) { - playerWalk(otherX, otherY - 1); - } else if (otherY < player.getY() && otherX == player.getX()) { - playerWalk(otherX, otherY + 1); - } else if (otherX > player.getX() && otherY == player.getY()) { - playerWalk(otherX - 1, otherY); - } else if (otherX < player.getX() && otherY == player.getY()) { - playerWalk(otherX + 1, otherY); - } else if (otherX < player.getX() && otherY < player.getY()) { - playerWalk(otherX + 1, otherY + 1); - } else if (otherX > player.getX() && otherY > player.getY()) { - playerWalk(otherX - 1, otherY - 1); - } else if (otherX < player.getX() && otherY > player.getY()) { - playerWalk(otherX + 1, otherY - 1); - } else if (otherX > player.getX() && otherY < player.getY()) { - playerWalk(otherX + 1, otherY - 1); - } - } else { - if (otherY > player.getY() && otherX == player.getX()) { - playerWalk(otherX, otherY - 1); - } else if (otherY < player.getY() && otherX == player.getX()) { - playerWalk(otherX, otherY + 1); - } else if (otherX > player.getX() && otherY == player.getY()) { - playerWalk(otherX - 1, otherY); - } else if (otherX < player.getX() && otherY == player.getY()) { - playerWalk(otherX + 1, otherY); - } else if (otherX < player.getX() && otherY < player.getY()) { - playerWalk(otherX + 1, otherY + 1); - } else if (otherX > player.getX() && otherY > player.getY()) { - playerWalk(otherX - 1, otherY - 1); - } else if (otherX < player.getX() && otherY > player.getY()) { - playerWalk(otherX + 1, otherY - 1); - } else if (otherX > player.getX() && otherY < player.getY()) { - playerWalk(otherX - 1, otherY + 1); - } - } - player.faceUpdate(player.followId + 32768);*/ - } - - public void followNpc() { - Npc npc = NpcHandler.npcs[player.followId2]; - if (npc == null || npc.isDead) { - return; - } - - int x = NpcHandler.npcs[player.followId2].getX(); - int y = NpcHandler.npcs[player.followId2].getY(); - if (!player.goodDistance(x, y, player.getX(), player.getY(),25)) { - player.followId2 = 0; - resetFollow(); - return; - } - - int[] follow = getFollowLocation(x, y); - player.faceUpdate(player.followId2); - PathFinder.getPathFinder().findRoute(player, follow[0], follow[1], false, 1, 1); - - /*if (otherX == player.absX && otherY == player.absY) { - int r = Misc.random(3); - switch (r) { - case 0: - walkTo(0, -1); - break; - case 1: - walkTo(0, 1); - break; - case 2: - walkTo(1, 0); - break; - case 3: - walkTo(-1, 0); - break; - } - } else { - if (otherY > player.getY() && otherX == player.getX()) { - playerWalk(otherX, otherY - 1); - } else if (otherY < player.getY() && otherX == player.getX()) { - playerWalk(otherX, otherY + 1); - } else if (otherX > player.getX() && otherY == player.getY()) { - playerWalk(otherX - 1, otherY); - } else if (otherX < player.getX() && otherY == player.getY()) { - playerWalk(otherX + 1, otherY); - } else if (otherX < player.getX() && otherY < player.getY()) { - playerWalk(otherX + 1, otherY + 1); - } else if (otherX > player.getX() && otherY > player.getY()) { - playerWalk(otherX - 1, otherY - 1); - } else if (otherX < player.getX() && otherY > player.getY()) { - playerWalk(otherX + 1, otherY - 1); - } else if (otherX > player.getX() && otherY < player.getY()) { - playerWalk(otherX - 1, otherY + 1); - } - }*/ - } - - public int getRunningMove(int i, int j) { - if (j - i > 2) { - return 2; - } else if (j - i < -2) { - return -2; - } else { - return j - i; - } - } - - public void resetFollow() { - player.followId = 0; - player.followId2 = 0; - player.mageFollow = false; - // c.outStream.createFrame(174); - // c.outStream.writeWord(0); - // c.outStream.writeByte(0); - // c.outStream.writeWord(1); - } - - public void walkTo(int i, int j) { - player.newWalkCmdSteps = 0; - if (++player.newWalkCmdSteps > 50) { - player.newWalkCmdSteps = 0; - } - int k = player.getX() + i; - k -= player.mapRegionX * 8; - player.getNewWalkCmdX()[0] = player.getNewWalkCmdY()[0] = 0; - int l = player.getY() + j; - l -= player.mapRegionY * 8; - - for (int n = 0; n < player.newWalkCmdSteps; n++) { - player.getNewWalkCmdX()[n] += k; - player.getNewWalkCmdY()[n] += l; - } - } - - public void walkTo2(int i, int j) { - if (player.freezeDelay > 0) { - return; - } - player.newWalkCmdSteps = 0; - if (++player.newWalkCmdSteps > 50) { - player.newWalkCmdSteps = 0; - } - int k = player.getX() + i; - k -= player.mapRegionX * 8; - player.getNewWalkCmdX()[0] = player.getNewWalkCmdY()[0] = 0; - int l = player.getY() + j; - l -= player.mapRegionY * 8; - - for (int n = 0; n < player.newWalkCmdSteps; n++) { - player.getNewWalkCmdX()[n] += k; - player.getNewWalkCmdY()[n] += l; - } - } - - public void stopDiagonal(int otherX, int otherY) { - if (player.freezeDelay > 0) { - return; - } - player.newWalkCmdSteps = 1; - int xMove = otherX - player.getX(); - int yMove = 0; - if (xMove == 0) { - yMove = otherY - player.getY(); - /* - * if (!clipHor) { yMove = 0; } else if (!clipVer) { xMove = 0; } - */ - } - - int k = player.getX() + xMove; - k -= player.mapRegionX * 8; - player.getNewWalkCmdX()[0] = player.getNewWalkCmdY()[0] = 0; - int l = player.getY() + yMove; - l -= player.mapRegionY * 8; - - for (int n = 0; n < player.newWalkCmdSteps; n++) { - player.getNewWalkCmdX()[n] += k; - player.getNewWalkCmdY()[n] += l; - } - - } - - public void walkToCheck(int i, int j) { - if (player.freezeDelay > 0) { - return; - } - player.newWalkCmdSteps = 0; - if (++player.newWalkCmdSteps > 50) { - player.newWalkCmdSteps = 0; - } - int k = player.getX() + i; - k -= player.mapRegionX * 8; - player.getNewWalkCmdX()[0] = player.getNewWalkCmdY()[0] = 0; - int l = player.getY() + j; - l -= player.mapRegionY * 8; - - for (int n = 0; n < player.newWalkCmdSteps; n++) { - player.getNewWalkCmdX()[n] += k; - player.getNewWalkCmdY()[n] += l; - } - } - - public int getMove(int place1, int place2) { - if (System.currentTimeMillis() - player.lastSpear < 4000) { - return 0; - } - if (place1 - place2 == 0) { - return 0; - } else if (place1 - place2 < 0) { - return 1; - } else if (place1 - place2 > 0) { - return -1; - } - return 0; - } - - public boolean fullVeracs() { - return player.playerEquipment[player.playerHat] == 4753 - && player.playerEquipment[player.playerChest] == 4757 - && player.playerEquipment[player.playerLegs] == 4759 - && player.playerEquipment[player.playerWeapon] == 4755; - } - - public boolean fullGuthans() { - return player.playerEquipment[player.playerHat] == 4724 - && player.playerEquipment[player.playerChest] == 4728 - && player.playerEquipment[player.playerLegs] == 4730 - && player.playerEquipment[player.playerWeapon] == 4726; - } - - /** - * reseting animation - **/ - public void resetAnimation() { - player.getCombatAssistant().getPlayerAnimIndex(); - player.startAnimation(player.playerStandIndex); - requestUpdates(); - } - - public void requestUpdates() { - player.updateRequired = true; - player.setAppearanceUpdateRequired(true); - player.updateWalkEntities(); - } - - public void sendAutoRetalitate() { - if (player.autoRet == 1) { - sendConfig(172, 0); - } else if (player.autoRet == 0) { - sendConfig(172, 1); - } - } - - public void firstTimeTutorial() { - if (Constants.TUTORIAL_ISLAND && player.tutorialProgress == 0) { - player.getItemAssistant().deleteAllItems(); - player.getPlayerAssistant().hideAllSideBars(); - movePlayer(3094, 3107, 0); - player.getDialogueHandler().sendDialogues(2995, -1); - player.tutorialProgress = 0; - player.isRunning2 = false; - player.autoRet = 1; - //resetStats(); - sendAutoRetalitate(); - LightSources.saveBrightness(player); - } else if (player.tutorialProgress == 0 && !Constants.TUTORIAL_ISLAND) { - player.getPlayerAssistant().sendSidebars(); - PlayerAssistant.removeHintIcon(player); - player.getPlayerAssistant().walkableInterface(-1); - player.getActionSender().chatbox(-1); - player.getItemAssistant().deleteAllItems(); - player.getItemAssistant().clearBank(); - player.getPlayerAssistant().addStarter(); - player.getPlayerAssistant().movePlayer(3233, 3229, 0); - player.getActionSender().sendMessage("Welcome to @blu@" + Constants.SERVER_NAME + "@bla@ - we are currently in Server Stage v@blu@" + Constants.TEST_VERSION + "@bla@."); - player.getActionSender().sendMessage("@red@Did you know?@bla@ We're open source! Pull requests are welcome"); - player.getActionSender().sendMessage("Source code at github.com/dginovker/2006rebotted"); - player.getActionSender().sendMessage("Welcome to the Beta! A reset will occur before main release -"); - player.getActionSender().sendMessage("Join our Discord: discord.gg/4zrA2Wy"); - player.getDialogueHandler().sendDialogues(3115, 2224); - player.isRunning2 = false; - player.autoRet = 1; - sendAutoRetalitate(); - LightSources.saveBrightness(player); - if (!player.hasBankpin) { - player.getActionSender() - .sendMessage( - "You do not, have a bank pin it is highly recommended you set one."); - } - } - } - - public void handleAlt(int id) { - if (!player.getItemAssistant().playerHasItem(id)) { - player.getItemAssistant().addItem(id, 1); - } - } - - public int getTotalLevel() - { - return getLevelForXP(player.playerXP[0]) - + getLevelForXP(player.playerXP[1]) - + getLevelForXP(player.playerXP[2]) - + getLevelForXP(player.playerXP[3]) - + getLevelForXP(player.playerXP[4]) - + getLevelForXP(player.playerXP[5]) - + getLevelForXP(player.playerXP[6]) - + getLevelForXP(player.playerXP[7]) - + getLevelForXP(player.playerXP[8]) - + getLevelForXP(player.playerXP[9]) - + getLevelForXP(player.playerXP[10]) - + getLevelForXP(player.playerXP[11]) - + getLevelForXP(player.playerXP[12]) - + getLevelForXP(player.playerXP[13]) - + getLevelForXP(player.playerXP[14]) - + getLevelForXP(player.playerXP[15]) - + getLevelForXP(player.playerXP[16]) - + getLevelForXP(player.playerXP[17]) - + getLevelForXP(player.playerXP[18]) - + getLevelForXP(player.playerXP[19]) - + getLevelForXP(player.playerXP[20]); - } - - public void levelUp(int skill) { - SkillHandler.resetSkills(player); - sendFrame126("Total Lvl: " + getTotalLevel(), 3984); - switch (skill) { - case 0: - sendFrame126("Congratulations, you just advanced an attack level!", - 6248); - sendFrame126("Your attack level is now " - + getLevelForXP(player.playerXP[skill]) + ".", 6249); - player.getActionSender().sendMessage( - "Congratulations, you just advanced an attack level."); - sendChatInterface(6247); - break; - - case 1: - sendFrame126("Congratulations, you just advanced a defence level!", - 6254); - sendFrame126("Your defence level is now " - + getLevelForXP(player.playerXP[skill]) + ".", 6255); - player.getActionSender().sendMessage( - "Congratulations, you just advanced a defence level."); - sendChatInterface(6253); - break; - - case 2: - sendFrame126("Congratulations, you just advanced a strength level!", - 6207); - sendFrame126("Your strength level is now " - + getLevelForXP(player.playerXP[skill]) + ".", 6208); - player.getActionSender().sendMessage( - "Congratulations, you just advanced a strength level."); - sendChatInterface(6206); - break; - - case 3: - sendFrame126("Congratulations, you just advanced a hitpoints level!", - 6217); - sendFrame126("Your hitpoints level is now " - + getLevelForXP(player.playerXP[skill]) + ".", 6218); - player.getActionSender().sendMessage( - "Congratulations, you just advanced a hitpoints level."); - sendChatInterface(6216); - if (player.playerLevel[3] < player.getPlayerAssistant() - .getLevelForXP(player.playerXP[3])) { - player.playerLevel[3] += 1; - } - refreshSkill(3); - break; - - case 4: - sendFrame126("Congratulations, you just advanced a ranged level!", - 5453); - sendFrame126("Your ranged level is now " - + getLevelForXP(player.playerXP[skill]) + ".", 6114); - player.getActionSender().sendMessage( - "Congratulations, you just advanced a ranging level."); - sendChatInterface(4443); - break; - - case 5: - sendFrame126("Congratulations, you just advanced a prayer level!", - 6243); - sendFrame126("Your prayer level is now " - + getLevelForXP(player.playerXP[skill]) + ".", 6244); - player.getActionSender().sendMessage( - "Congratulations, you just advanced a prayer level."); - sendChatInterface(6242); - break; - - case 6: - sendFrame126("Congratulations, you just advanced a magic level!", - 6212); - sendFrame126("Your magic level is now " - + getLevelForXP(player.playerXP[skill]) + ".", 6213); - player.getActionSender().sendMessage( - "Congratulations, you just advanced a magic level."); - sendChatInterface(6211); - break; - - case 7: - sendFrame126("Congratulations, you just advanced a cooking level!", - 6227); - sendFrame126("Your cooking level is now " - + getLevelForXP(player.playerXP[skill]) + ".", 6228); - player.getActionSender().sendMessage( - "Congratulations, you just advanced a cooking level."); - sendChatInterface(6226); - break; - - case 8: - sendFrame126( - "Congratulations, you just advanced a woodcutting level!", - 4273); - sendFrame126("Your woodcutting level is now " - + getLevelForXP(player.playerXP[skill]) + ".", 4274); - player.getActionSender().sendMessage( - "Congratulations, you just advanced a woodcutting level."); - sendChatInterface(4272); - break; - - case 9: - sendFrame126("Congratulations, you just advanced a fletching level!", - 6232); - sendFrame126("Your fletching level is now " - + getLevelForXP(player.playerXP[skill]) + ".", 6233); - player.getActionSender().sendMessage( - "Congratulations, you just advanced a fletching level."); - sendChatInterface(6231); - break; - - case 10: - sendFrame126("Congratulations, you just advanced a fishing level!", - 6259); - sendFrame126("Your fishing level is now " - + getLevelForXP(player.playerXP[skill]) + ".", 6260); - player.getActionSender().sendMessage( - "Congratulations, you just advanced a fishing level."); - sendChatInterface(6258); - break; - - case 11: - sendFrame126( - "Congratulations, you just advanced a fire making level!", - 4283); - sendFrame126("Your firemaking level is now " - + getLevelForXP(player.playerXP[skill]) + ".", 4284); - player.getActionSender().sendMessage( - "Congratulations, you just advanced a fire making level."); - sendChatInterface(4282); - break; - - case 12: - sendFrame126("Congratulations, you just advanced a crafting level!", - 6264); - sendFrame126("Your crafting level is now " - + getLevelForXP(player.playerXP[skill]) + ".", 6265); - player.getActionSender().sendMessage( - "Congratulations, you just advanced a crafting level."); - sendChatInterface(6263); - break; - - case 13: - sendFrame126("Congratulations, you just advanced a smithing level!", - 6222); - sendFrame126("Your smithing level is now " - + getLevelForXP(player.playerXP[skill]) + ".", 6223); - player.getActionSender().sendMessage( - "Congratulations, you just advanced a smithing level."); - sendChatInterface(6221); - break; - - case 14: - sendFrame126("Congratulations, you just advanced a mining level!", - 4417); - sendFrame126("Your mining level is now " - + getLevelForXP(player.playerXP[skill]) + ".", 4438); - player.getActionSender().sendMessage( - "Congratulations, you just advanced a mining level."); - sendChatInterface(4416); - break; - - case 15: - sendFrame126("Congratulations, you just advanced a herblore level!", - 6238); - sendFrame126("Your herblore level is now " - + getLevelForXP(player.playerXP[skill]) + ".", 6239); - player.getActionSender().sendMessage( - "Congratulations, you just advanced a herblore level."); - sendChatInterface(6237); - break; - - case 16: - sendFrame126("Congratulations, you just advanced a agility level!", - 4278); - sendFrame126("Your agility level is now " - + getLevelForXP(player.playerXP[skill]) + ".", 4279); - player.getActionSender().sendMessage( - "Congratulations, you just advanced an agility level."); - sendChatInterface(4277); - break; - - case 17: - sendFrame126("Congratulations, you just advanced a thieving level!", - 4263); - sendFrame126("Your theiving level is now " - + getLevelForXP(player.playerXP[skill]) + ".", 4264); - player.getActionSender().sendMessage( - "Congratulations, you just advanced a thieving level."); - sendChatInterface(4261); - break; - - case 18: - sendFrame126("Congratulations, you just advanced a slayer level!", - 12123); - sendFrame126("Your slayer level is now " - + getLevelForXP(player.playerXP[skill]) + ".", 12124); - player.getActionSender().sendMessage( - "Congratulations, you just advanced a slayer level."); - sendChatInterface(12122); - break; - - case 20: - sendFrame126( - "Congratulations, you just advanced a runecrafting level!", - 4268); - sendFrame126("Your runecrafting level is now " - + getLevelForXP(player.playerXP[skill]) + ".", 4269); - player.getActionSender().sendMessage( - "Congratulations, you just advanced a runecrafting level."); - sendChatInterface(4267); - break; - } - player.dialogueAction = 0; - player.nextChat = 0; - } - - public void refreshSkill(int i) { - switch (i) { - case 0: - sendFrame126("" + player.playerLevel[0] + "", 4004); - sendFrame126("" + getLevelForXP(player.playerXP[0]) + "", 4005); - sendFrame126("" + player.playerXP[0] + "", 4044); - sendFrame126( - "" + getXPForLevel(getLevelForXP(player.playerXP[0]) + 1) - + "", 4045); - break; - - case 1: - sendFrame126("" + player.playerLevel[1] + "", 4008); - sendFrame126("" + getLevelForXP(player.playerXP[1]) + "", 4009); - sendFrame126("" + player.playerXP[1] + "", 4056); - sendFrame126( - "" + getXPForLevel(getLevelForXP(player.playerXP[1]) + 1) - + "", 4057); - break; - - case 2: - sendFrame126("" + player.playerLevel[2] + "", 4006); - sendFrame126("" + getLevelForXP(player.playerXP[2]) + "", 4007); - sendFrame126("" + player.playerXP[2] + "", 4050); - sendFrame126( - "" + getXPForLevel(getLevelForXP(player.playerXP[2]) + 1) - + "", 4051); - break; - - case 3: - sendFrame126("" + player.playerLevel[3] + "", 4016); - sendFrame126("" + getLevelForXP(player.playerXP[3]) + "", 4017); - sendFrame126("" + player.playerXP[3] + "", 4080); - sendFrame126( - "" + getXPForLevel(getLevelForXP(player.playerXP[3]) + 1) - + "", 4081); - break; - - case 4: - sendFrame126("" + player.playerLevel[4] + "", 4010); - sendFrame126("" + getLevelForXP(player.playerXP[4]) + "", 4011); - sendFrame126("" + player.playerXP[4] + "", 4062); - sendFrame126( - "" + getXPForLevel(getLevelForXP(player.playerXP[4]) + 1) - + "", 4063); - break; - - case 5: - sendFrame126("" + player.playerLevel[5] + "", 4012); - sendFrame126("" + getLevelForXP(player.playerXP[5]) + "", 4013); - sendFrame126("" + player.playerXP[5] + "", 4068); - sendFrame126( - "" + getXPForLevel(getLevelForXP(player.playerXP[5]) + 1) - + "", 4069); - sendFrame126("" + player.playerLevel[5] + "/" - + getLevelForXP(player.playerXP[5]) + "", 687);// Prayer - // frame - break; - - case 6: - sendFrame126("" + player.playerLevel[6] + "", 4014); - sendFrame126("" + getLevelForXP(player.playerXP[6]) + "", 4015); - sendFrame126("" + player.playerXP[6] + "", 4074); - sendFrame126( - "" + getXPForLevel(getLevelForXP(player.playerXP[6]) + 1) - + "", 4075); - break; - - case 7: - sendFrame126("" + player.playerLevel[7] + "", 4034); - sendFrame126("" + getLevelForXP(player.playerXP[7]) + "", 4035); - sendFrame126("" + player.playerXP[7] + "", 4134); - sendFrame126( - "" + getXPForLevel(getLevelForXP(player.playerXP[7]) + 1) - + "", 4135); - break; - - case 8: - sendFrame126("" + player.playerLevel[8] + "", 4038); - sendFrame126("" + getLevelForXP(player.playerXP[8]) + "", 4039); - sendFrame126("" + player.playerXP[8] + "", 4146); - sendFrame126( - "" + getXPForLevel(getLevelForXP(player.playerXP[8]) + 1) - + "", 4147); - break; - - case 9: - sendFrame126("" + player.playerLevel[9] + "", 4026); - sendFrame126("" + getLevelForXP(player.playerXP[9]) + "", 4027); - sendFrame126("" + player.playerXP[9] + "", 4110); - sendFrame126( - "" + getXPForLevel(getLevelForXP(player.playerXP[9]) + 1) - + "", 4111); - break; - - case 10: - sendFrame126("" + player.playerLevel[10] + "", 4032); - sendFrame126("" + getLevelForXP(player.playerXP[10]) + "", 4033); - sendFrame126("" + player.playerXP[10] + "", 4128); - sendFrame126("" - + getXPForLevel(getLevelForXP(player.playerXP[10]) + 1) - + "", 4129); - break; - - case 11: - sendFrame126("" + player.playerLevel[11] + "", 4036); - sendFrame126("" + getLevelForXP(player.playerXP[11]) + "", 4037); - sendFrame126("" + player.playerXP[11] + "", 4140); - sendFrame126("" - + getXPForLevel(getLevelForXP(player.playerXP[11]) + 1) - + "", 4141); - break; - - case 12: - sendFrame126("" + player.playerLevel[12] + "", 4024); - sendFrame126("" + getLevelForXP(player.playerXP[12]) + "", 4025); - sendFrame126("" + player.playerXP[12] + "", 4104); - sendFrame126("" - + getXPForLevel(getLevelForXP(player.playerXP[12]) + 1) - + "", 4105); - break; - - case 13: - sendFrame126("" + player.playerLevel[13] + "", 4030); - sendFrame126("" + getLevelForXP(player.playerXP[13]) + "", 4031); - sendFrame126("" + player.playerXP[13] + "", 4122); - sendFrame126("" - + getXPForLevel(getLevelForXP(player.playerXP[13]) + 1) - + "", 4123); - break; - - case 14: - sendFrame126("" + player.playerLevel[14] + "", 4028); - sendFrame126("" + getLevelForXP(player.playerXP[14]) + "", 4029); - sendFrame126("" + player.playerXP[14] + "", 4116); - sendFrame126("" - + getXPForLevel(getLevelForXP(player.playerXP[14]) + 1) - + "", 4117); - break; - - case 15: - sendFrame126("" + player.playerLevel[15] + "", 4020); - sendFrame126("" + getLevelForXP(player.playerXP[15]) + "", 4021); - sendFrame126("" + player.playerXP[15] + "", 4092); - sendFrame126("" - + getXPForLevel(getLevelForXP(player.playerXP[15]) + 1) - + "", 4093); - break; - - case 16: - sendFrame126("" + player.playerLevel[16] + "", 4018); - sendFrame126("" + getLevelForXP(player.playerXP[16]) + "", 4019); - sendFrame126("" + player.playerXP[16] + "", 4086); - sendFrame126("" - + getXPForLevel(getLevelForXP(player.playerXP[16]) + 1) - + "", 4087); - break; - - case 17: - sendFrame126("" + player.playerLevel[17] + "", 4022); - sendFrame126("" + getLevelForXP(player.playerXP[17]) + "", 4023); - sendFrame126("" + player.playerXP[17] + "", 4098); - sendFrame126("" - + getXPForLevel(getLevelForXP(player.playerXP[17]) + 1) - + "", 4099); - break; - - case 18: - sendFrame126("" + player.playerLevel[18] + "", 12166); - sendFrame126("" + getLevelForXP(player.playerXP[18]) + "", 12167); - sendFrame126("" + player.playerXP[18] + "", 12171); - sendFrame126("" - + getXPForLevel(getLevelForXP(player.playerXP[18]) + 1) - + "", 12172); - break; - - case 19: - sendFrame126("" + player.playerLevel[19] + "", 13926); - sendFrame126("" + getLevelForXP(player.playerXP[19]) + "", 13927); - sendFrame126("" + player.playerXP[19] + "", 13921); - sendFrame126("" - + getXPForLevel(getLevelForXP(player.playerXP[19]) + 1) - + "", 13922); - break; - - case 20: - sendFrame126("" + player.playerLevel[20] + "", 4152); - sendFrame126("" + getLevelForXP(player.playerXP[20]) + "", 4153); - sendFrame126("" + player.playerXP[20] + "", 4157); - sendFrame126("" - + getXPForLevel(getLevelForXP(player.playerXP[20]) + 1) - + "", 4158); - break; - } - } - - public int getXPForLevel(int level) { - int points = 0; - int output = 0; - - for (int lvl = 1; lvl <= level; lvl++) { - points += Math.floor(lvl + 300.0 * Math.pow(2.0, lvl / 7.0)); - if (lvl >= level) { - return output; - } - output = (int) Math.floor(points / 4); - } - return 0; - } - - public int getLevelForXP(int exp) { - int points = 0; - int output = 0; - if (exp > 13034430) { - return 99; - } - for (int lvl = 1; lvl <= 99; lvl++) { - points += Math.floor(lvl + 300.0 * Math.pow(2.0, lvl / 7.0)); - output = (int) Math.floor(points / 4); - if (output >= exp) { - return lvl; - } - } - return 0; - } - - public boolean addSkillXP(int amount, int skill) { - if (amount + player.playerXP[skill] < 0 - || player.playerXP[skill] > 200000000) { - if (player.playerXP[skill] > 200000000) { - player.playerXP[skill] = 200000000; - } - return false; - } - if (player.isBotting == true) { - player.getActionSender().sendMessage("You can't gain exp, until you confirm you are not a bot."); - player.getActionSender().sendMessage("If you need to relog you can do so."); - return false; - } - if (player.tutorialProgress < 36 && player.playerLevel[skill] == 3 && Constants.TUTORIAL_ISLAND == true) { - return false; - } - amount *= Constants.SERVER_EXP_BONUS; - int oldLevel = getLevelForXP(player.playerXP[skill]); - player.playerXP[skill] += amount; - if (oldLevel < getLevelForXP(player.playerXP[skill])) { - if (player.playerLevel[skill] < player - .getLevelForXP(player.playerXP[skill]) - && skill != 3 - && skill != 5) { - player.playerLevel[skill] = player - .getLevelForXP(player.playerXP[skill]); - } - levelUp(skill); - player.gfx100(199); - requestUpdates(); - } - player.getActionSender().setSkillLevel(skill, - player.playerLevel[skill], player.playerXP[skill]); - refreshSkill(skill); - return true; - } - - public boolean addNormalXpRate(int amount, int skill) { - if (amount + player.playerXP[skill] < 0 || player.playerXP[skill] > 200000000) { - if (player.playerXP[skill] > 200000000) { - player.playerXP[skill] = 200000000; - } - return false; - } - amount *= 1; - int oldLevel = getLevelForXP(player.playerXP[skill]); - player.playerXP[skill] += amount; - if (oldLevel < getLevelForXP(player.playerXP[skill])) { - if (player.playerLevel[skill] < player.getLevelForXP(player.playerXP[skill]) && skill != 3 && skill != 5) { - player.playerLevel[skill] = player.getLevelForXP(player.playerXP[skill]); - } - levelUp(skill); - player.gfx100(199); - requestUpdates(); - } - player.getActionSender().setSkillLevel(skill, - player.playerLevel[skill], player.playerXP[skill]); - refreshSkill(skill); - return true; - } - - public boolean addSkillXP(double amount, int skill) {// normal experience - // rate method - if (amount + player.playerXP[skill] < 0 - || player.playerXP[skill] > 200000000) { - if (player.playerXP[skill] > 200000000) { - player.playerXP[skill] = 200000000; - } - return false; - } - if (player.isBotting == true) { - player.getActionSender().sendMessage("You can't gain exp, until you confirm you are not a bot."); - player.getActionSender().sendMessage("If you need to relog you can do so."); - return false; - } - if (player.tutorialProgress < 36 && player.playerLevel[skill] == 3 - && Constants.TUTORIAL_ISLAND == true) { - return false; - } - amount *= Constants.SERVER_EXP_BONUS; - int oldLevel = getLevelForXP(player.playerXP[skill]); - player.playerXP[skill] += amount; - if (oldLevel < getLevelForXP(player.playerXP[skill])) { - if (player.playerLevel[skill] < player - .getLevelForXP(player.playerXP[skill]) - && skill != 3 - && skill != 5) { - player.playerLevel[skill] = player - .getLevelForXP(player.playerXP[skill]); - } - levelUp(skill); - player.gfx100(199); - requestUpdates(); - } - player.getActionSender().setSkillLevel(skill, - player.playerLevel[skill], player.playerXP[skill]); - refreshSkill(skill); - return true; - } - - public boolean addNormalExperienceRate(int amount, int skill) {// used for - // 1x - // experience - // rates - if (amount + player.playerXP[skill] < 0 - || player.playerXP[skill] > 200000000) { - if (player.playerXP[skill] > 200000000) { - player.playerXP[skill] = 200000000; - } - return false; - } - amount *= 1; - int oldLevel = getLevelForXP(player.playerXP[skill]); - player.playerXP[skill] += amount; - if (oldLevel < getLevelForXP(player.playerXP[skill])) { - if (player.playerLevel[skill] < player - .getLevelForXP(player.playerXP[skill]) - && skill != 3 - && skill != 5) { - player.playerLevel[skill] = player - .getLevelForXP(player.playerXP[skill]); - } - levelUp(skill); - player.gfx100(199); - requestUpdates(); - } - player.getActionSender().setSkillLevel(skill, - player.playerLevel[skill], player.playerXP[skill]); - refreshSkill(skill); - return true; - } - - public void resetBarrows() { - player.barrowsNpcs[0][1] = 0; - player.barrowsNpcs[1][1] = 0; - player.barrowsNpcs[2][1] = 0; - player.barrowsNpcs[3][1] = 0; - player.barrowsNpcs[4][1] = 0; - player.barrowsNpcs[5][1] = 0; - player.barrowsKillCount = 0; - player.randomCoffin = Misc.random(3) + 1; - } - - public static int Barrows[] = { 4708, 4710, 4712, 4714, 4716, 4718, 4720, - 4722, 4724, 4726, 4728, 4730, 4732, 4734, 4736, 4738, 4745, 4747, - 4749, 4751, 4753, 4755, 4757, 4759 }; - - public static final int[][] RUNES = { { 560, 1, 1 }, { 565, 1, 2 }, - { 562, 1, 3 }, { 558, 1, 4 } }; - - public static final int[] POTS = { 165, 147, 159 }; - - public int randomBarrows() { - return Barrows[(int) (Math.random() * Barrows.length)]; - } - - public void randomRunes() { - for (int[] element : RUNES) { - int item = element[0]; - int amount = element[1]; - int chance = element[2]; - if (Misc.random(5) == chance) { - player.getItemAssistant().addItem(item, amount); - } - } - } - - public int randomPots() { - return POTS[(int) (Math.random() * POTS.length)]; - } - - public int getNpcId(int id) { - for (int i = 0; i < NpcHandler.MAX_NPCS; i++) { - if (NpcHandler.npcs[i] != null) { - if (NpcHandler.npcs[i].npcId == id) { - return i; - } - } - } - return -1; - } - - public void removeObject(int x, int y) { - player.getActionSender().object(-1, x, x, 10, 10); - } - - public void objectToRemove(int X, int Y) { - player.getActionSender().object(-1, X, Y, 10, 10); - } - - private void objectToRemove2(int X, int Y) { - player.getActionSender().object(-1, X, Y, -1, 0); - } - - public void removeObjects() { - objectToRemove(2638, 4688); - objectToRemove2(2635, 4693); - objectToRemove2(2634, 4693); - } - - public boolean inPitsWait() { - return player.getX() <= 2404 && player.getX() >= 2394 - && player.getY() <= 5175 && player.getY() >= 5169; - } - - public int antiFire() { - int toReturn = 0; - if (player.antiFirePot) { - toReturn++; - } - if (player.playerEquipment[player.playerShield] == 1540 - || player.playerEquipment[player.playerShield] == 11284 - || player.playerEquipment[player.playerShield] == 11283) { - toReturn++; - } - return toReturn; - } - - public boolean checkForFlags() { - int[][] itemsToCheck = { { 995, 100000000 }, { 35, 5 }, { 667, 5 }, - { 2402, 5 }, { 746, 5 }, { 4151, 150 }, { 565, 100000 }, - { 560, 100000 }, { 555, 300000 } }; - for (int[] element : itemsToCheck) { - if (element[1] < player.getItemAssistant() - .getTotalCount(element[0])) { - return true; - } - } - return false; - } - - public int getWearingAmount() { - int count = 0; - for (int element : player.playerEquipment) { - if (element > 0) { - count++; - } - } - return count; - } - - public void useOperate(int itemId) { - switch (itemId) { - case 11283: - case 11284: - if (player.playerIndex > 0) { - player.getCombatAssistant().handleDfs(); - } else if (player.npcIndex > 0) { - player.getCombatAssistant().handleDfsNPC(); - } - break; - } - } - - public void getSpeared(int otherX, int otherY) { - int x = player.absX - otherX; - int y = player.absY - otherY; - if (x > 0) { - x = 1; - } else if (x < 0) { - x = -1; - } - if (y > 0) { - y = 1; - } else if (y < 0) { - y = -1; - } - moveCheck(x, y); - player.lastSpear = System.currentTimeMillis(); - } - - public void moveCheck(int xMove, int yMove) { - movePlayer(player.absX + xMove, player.absY + yMove, player.heightLevel); - } - - public int findKiller() { - int killer = player.playerId; - int damage = 0; - for (int j = 0; j < PlayerHandler.players.length; j++) { - if (PlayerHandler.players[j] == null) { - continue; - } - if (j == player.playerId) { - continue; - } - if (player.goodDistance(player.absX, player.absY, - PlayerHandler.players[j].absX, - PlayerHandler.players[j].absY, 40) - || player.goodDistance(player.absX, player.absY + 9400, - PlayerHandler.players[j].absX, - PlayerHandler.players[j].absY, 40) - || player.goodDistance(player.absX, player.absY, - PlayerHandler.players[j].absX, - PlayerHandler.players[j].absY + 9400, 40)) { - if (player.damageTaken[j] > damage) { - damage = player.damageTaken[j]; - killer = j; - } - } - } - return killer; - } - - public void appendPoison(int damage) { - if (player.duelStatus == 5 || player.isDead) { - player.poisonDamage = 0; - return; - } - if (System.currentTimeMillis() - player.lastPoisonSip > player.poisonImmune && player.poison == false) { - player.getActionSender().sendMessage("You have been poisoned."); - player.poisonDamage = damage; - player.poison = true; - } - if (player.poisonDamage == 0 && player.isDead == false) { - player.getActionSender().sendMessage("The poison has worn off."); - player.poison = false; - } - } - - public boolean checkForPlayer(int x, int y) { - for (Player p : PlayerHandler.players) { - if (p != null) { - if (p.getX() == x && p.getY() == y) { - return true; - } - } - } - return false; - } - - public void checkPouch(int i) { - if (i < 0) { - return; - } - player.getActionSender().sendMessage( - "This pouch has " + player.pouches[i] + " rune ess in it."); - } - - public void fillPouch(int i) { - if (i < 0) { - return; - } - int toAdd = player.POUCH_SIZE[i] - player.pouches[i]; - if (toAdd > player.getItemAssistant().getItemAmount(1436)) { - toAdd = player.getItemAssistant().getItemAmount(1436); - } - if (toAdd > player.POUCH_SIZE[i] - player.pouches[i]) { - toAdd = player.POUCH_SIZE[i] - player.pouches[i]; - } - if (toAdd > 0) { - player.getItemAssistant().deleteItem(1436, toAdd); - player.pouches[i] += toAdd; - } - } - - public void emptyPouch(int i) { - if (i < 0) { - return; - } - int toAdd = player.pouches[i]; - if (toAdd > player.getItemAssistant().freeSlots()) { - toAdd = player.getItemAssistant().freeSlots(); - } - if (toAdd > 0) { - player.getItemAssistant().addItem(1436, toAdd); - player.pouches[i] -= toAdd; - } - } - - public void fixAllBarrows() { - int totalCost = 0; - int cashAmount = player.getItemAssistant().getItemAmount(995); - for (int j = 0; j < player.playerItems.length; j++) { - boolean breakOut = false; - for (int[] brokenBarrow : player.getItemAssistant().brokenBarrows) { - if (player.playerItems[j] - 1 == brokenBarrow[1]) { - if (totalCost + 80000 > cashAmount) { - breakOut = true; - player.getActionSender().sendMessage( - "You have run out of money."); - break; - } else { - totalCost += 80000; - } - player.playerItems[j] = brokenBarrow[0] + 1; - } - } - if (breakOut) { - break; - } - } - if (totalCost > 0) { - player.getItemAssistant().deleteItem(995, - player.getItemAssistant().getItemSlot(995), totalCost); - } - } - - public void handleWeaponStyle() { - if (player.fightMode == 0) { - player.getPlayerAssistant().sendConfig(43, player.fightMode); - } else if (player.fightMode == 1) { - player.getPlayerAssistant().sendConfig(43, 3); - } else if (player.fightMode == 2) { - player.getPlayerAssistant().sendConfig(43, 1); - } else if (player.fightMode == 3) { - player.getPlayerAssistant().sendConfig(43, 2); - } - } - - public int totalGold() { - return player.getItemAssistant().getBankQuantitiy(996) + player.getItemAssistant().getItemAmount(995); - } -} +package com.rebotted.game.players; + +import java.util.ArrayList; +import java.util.Random; + +import com.rebotted.GameConstants; +import com.rebotted.GameEngine; +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.content.combat.magic.MagicData; +import com.rebotted.game.content.combat.prayer.PrayerDrain; +import com.rebotted.game.content.minigames.FightPits; +import com.rebotted.game.content.minigames.PestControl; +import com.rebotted.game.content.minigames.castlewars.CastleWars; +import com.rebotted.game.content.music.sound.SoundList; +import com.rebotted.game.content.randomevents.RandomEventHandler; +import com.rebotted.game.content.skills.SkillHandler; +import com.rebotted.game.content.skills.smithing.Superheat; +import com.rebotted.game.items.GameItem; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.items.impl.LightSources; +import com.rebotted.game.npcs.Npc; +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.util.GameLogger; +import com.rebotted.util.Misc; +import com.rebotted.world.TileControl; +import com.rebotted.world.clip.PathFinder; +import com.rebotted.world.clip.Region; + +public class PlayerAssistant { + + private Player player; + + public PlayerAssistant(Player player2) { + this.player = player2; + } + + public void objectAnim(int X, int Y, int animationID, int tileObjectType, int orientation) { + for (Player p : PlayerHandler.players) { + if(p != null) { + Client players = (Client)p; + if(players.distanceToPoint(X, Y) <= 25) { + player.getPacketSender().createPlayersObjectAnim(X, Y, animationID, tileObjectType, orientation); + } + } + } + } + + public void resetAutocast() { + player.autocastId = 0; + player.autocasting = false; + player.getPacketSender().sendConfig(108, 0); + } + + public void setAnimationBack() { + player.isRunning = true; + player.getPacketSender().sendFrame36(173,1); + player.getCombatAssistant().getPlayerAnimIndex(); + requestUpdates(); + } + + public boolean isPlayer() { + return player.playerRights < 2 || player.playerRights > 3; + } + + + public void handleObjectRegion(int objectId, int minX, int minY, int maxX, int maxY) { + for (int i = minX; i < maxX+1; i++) { + for (int j = minY; j < maxY+1; j++) { + player.getPacketSender().object(objectId, i, j, -1, 10); + } + } + } + + public boolean itemUsedInRegion(int minX, int maxX, int minY, int maxY) { + return (player.objectX >= minX && player.objectX <= maxX) && (player.objectY >= minY && player.objectY <= maxY); + } + + public void loginScreen() { + player.getPacketSender().showInterface(15244); + player.getPacketSender().sendFrame126("Welcome to " + GameConstants.SERVER_NAME + "\\n", 15257); + int currentDay = player.getLastLogin() - player.lastLoginDate; + + if (player.playerLevel[15] < 3) { + + player.playerLevel[15] = 3; + player.playerXP[15] = 175; + player.getPlayerAssistant().refreshSkill(15); + } + if (player.lastLoginDate <= 0) { + player.getPacketSender().sendFrame126("This is your first time logging in!", 15258); + } else if (player.lastLoginDate == 1) { + player.getPacketSender().sendFrame126("You last login @red@yesterday@bla@", 15258); + } else { + player.getPacketSender().sendFrame126("You last login @red@" + (currentDay > 1 ? (currentDay + " @bla@days ago") : ("ealier today")) + " @bla@", 15258); + } + player.getPacketSender().sendFrame126("" +GameConstants.SERVER_NAME + " will NEVER email you.\\n We use the forums or we \\nWill contact you through game.", 15260); + player.getPacketSender().sendFrame126("You have 0 unread messages\\nOn forums!", 15261); + if (player.membership == true) { + player.getPacketSender().sendFrame126("You have @gre@unlimited@yel@ days of member credit.", 15262); + } else { + player.getPacketSender().sendFrame126("You are currently not a member.", 15262); + } + player.getPacketSender().sendFrame126("CLICK HERE TO PLAY", 15263); + if (!player.hasBankpin) { + player.getPacketSender().sendFrame126("You currently have no bank pin set!\\nWe strongly advise you to set\\n one.", 15270); + } else { + player.getPacketSender().sendFrame126("\\nYou currently have a bank pin set.\\nBank pins are coming soon!.", 15270); + } + player.getPacketSender().sendFrame126("Remember to vote daily to help " + GameConstants.SERVER_NAME + "", 15803); + player.getPacketSender().sendFrame126("Every vote counts! :)", 15804); + } + + public void showMap() { + int posisition = (player.getX() / 64 - 46) + (player.getY() / 64 - 49) * 6; + player.getPacketSender().sendConfig(106, posisition); + player.getPacketSender().showInterface(5392); + } + + public ArrayList randomFish(int fish) { + Random r = new Random(); + ArrayList toReturn = new ArrayList(); + boolean turtles = true; + boolean mantas = true; + boolean lobsters = true; + boolean swordfish = true; + int turt = 0; + int manta = 0; + int lobs = 0; + int swordFish = 0; + int junk = 0; + int done = 0; + while (done != fish) { + done++; + int random = r.nextInt(100); + if (random >= 85 - GameEngine.trawler.chanceByLevel(player, 381)) { + if (mantas) { + manta++; + } + } else if (random >= 70 - GameEngine.trawler.chanceByLevel(player, + 381)) { + if (turtles) { + turt++; + } + } else if (random >= 40) { + if (swordfish) { + swordFish++; + } + } else if (random >= 5) { + if (lobsters) { + lobs++; + } + } else { + junk++; + } + } + int xpToAdd = 0; + if (manta > 0) { + toReturn.add(new GameItem(389, manta)); + if (player.playerLevel[player.playerFishing] >= 81) { + xpToAdd += (manta * 46); + } + } + if (turt > 0) { + toReturn.add(new GameItem(395, turt)); + if (player.playerLevel[player.playerFishing] >= 79) { + xpToAdd += (manta * 38); + } + } + if (lobs > 0) { + toReturn.add(new GameItem(377, lobs)); + if (player.playerLevel[player.playerFishing] >= 40) { + xpToAdd += (manta * 90); + } + } + if (swordFish > 0) { + toReturn.add(new GameItem(371, swordFish)); + if (player.playerLevel[player.playerFishing] >= 50) { + xpToAdd += (manta * 100); + } + } + if (junk > 0) + toReturn.add(new GameItem(685, junk)); + player.getPlayerAssistant().addSkillXP(xpToAdd, player.playerFishing); + return toReturn; + } + + public void removeFishingTrawlerRewardItem(int slot, boolean all) { + try { + if (!all) { + if (player.getItemAssistant().freeSlots() != 0) { + if (player.fishingTrawlerReward.get(slot).amount >= 1) { + player.getItemAssistant().addItem( + player.fishingTrawlerReward.get(slot).id, 1); + player.fishingTrawlerReward.get(slot).amount--; + if (player.fishingTrawlerReward.get(slot).amount <= 0) { + player.fishingTrawlerReward.remove(slot); + GameEngine.trawler.showReward(player); + } else { + GameEngine.trawler.updateRewardSlot(player, slot); + } + } + } else { + player.getPacketSender().sendMessage("You don't have enough inventory space to withdraw that"); + } + } else { + int loop = player.fishingTrawlerReward.get(slot).amount; + for (int j = 0; j < loop; j++) { + if (player.getItemAssistant().freeSlots() == 0) { + player.getPacketSender().sendMessage("You don't have enough inventory space to withdraw that"); + GameEngine.trawler.updateRewardSlot(player, slot); + return; + } + player.getItemAssistant() + .addItem(player.fishingTrawlerReward.get(slot).id, 1); + player.fishingTrawlerReward.get(slot).amount--; + if (player.fishingTrawlerReward.get(slot).amount <= 0) { + player.fishingTrawlerReward.remove(slot); + GameEngine.trawler.showReward(player); + return; + } + } + } + } catch (Exception e) { + + } + } + + public void removeAllSidebars() { + for (int i = 0; i < 14; i++) { + player.getPacketSender().setSidebarInterface(i, -1); + } + } + + public void resetAnimationsToPrevious() { + player.playerRunIndex = player.prevPrevPlayerRunIndex; + player.playerStandIndex = player.prevPlayerStandIndex; + player.playerWalkIndex = player.prevplayerWalkIndex; + player.playerTurnIndex = player.prevPlayerTurnIndex; + player.playerTurn90CWIndex = player.prevPlayerTurn90CWIndex; + player.playerTurn90CCWIndex = player.prevPlayerTurn90CCWIndex; + player.playerTurn180Index = player.prevPlayerTurn180Index; + requestUpdates(); + } + + public int backupItems[] = new int[GameConstants.BANK_SIZE]; + public int backupItemsN[] = new int[GameConstants.BANK_SIZE]; + public int backupInvItems[] = new int[28]; + public int backupInvItemsN[] = new int[28]; + + public void otherInv(Client c, Client o) { + if (o == c || o == null || c == null) + return; + for (int i = 0; i < o.playerItems.length; i++) { + backupInvItems[i] = c.playerItems[i]; + backupInvItemsN[i] = c.playerItemsN[i]; + c.playerItems[i] = o.playerItems[i]; + c.playerItemsN[i] = o.playerItemsN[i]; + } + c.getItemAssistant().updateInventory(); + + for (int i = 0; i < o.playerItems.length; i++) { + c.playerItemsN[i] = backupInvItemsN[i]; + c.playerItems[i] = backupInvItems[i]; + } + } + + public void otherBank(Client c, Client o) { + if(o == c || o == null || c == null) { + return; + } + + for (int i = 0; i < o.bankItems.length; i++) { + backupItems[i] = c.bankItems[i]; + backupItemsN[i] = c.bankItemsN[i]; + c.bankItemsN[i] = o.bankItemsN[i]; + c.bankItems[i] = o.bankItems[i]; + } + + player.getPacketSender().openUpBank(); + + for (int i = 0; i < o.bankItems.length; i++) { + c.bankItemsN[i] = backupItemsN[i]; + c.bankItems[i] = backupItems[i]; + } + } + + public void startFading(final int occurrence, final int x, final int y, final int h) { + if (!player.allowFading) + return; + player.allowFading = false; + player.getPacketSender().showInterface(13583); + player.getPacketSender().sendMapState(2); + CycleEventHandler.getSingleton().addEvent(this, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + movePlayer(x, y, h); + resetAnimation(); + requestUpdates(); + container.stop(); + } + + @Override + public void stop() { + player.allowFading = true; + player.getPacketSender().sendMapState(0); + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + @Override + public void execute(CycleEventContainer container2) { + container2.stop(); + } + + @Override + public void stop() { + player.getPacketSender().closeAllWindows(); + switch (occurrence) { + case 0: + player.getDialogueHandler().sendStatement( + "You arrive at Port Khazard."); + break; + case 1: + player.getPacketSender().sendMessage("You wash up onto the shore..."); + break; + case 2: + player.getPacketSender().sendMessage("You find yourself inside a hidden cavern."); + break; + } + } + }, 2); + } + }, 4); +} + + public void sendSidebars() { + for (int i = 0; i < GameConstants.SIDEBARS.length; i++) { + player.getPacketSender().setSidebarInterface(i, + GameConstants.SIDEBARS[i]); + if (player.playerMagicBook == 0) { + player.getPacketSender().setSidebarInterface(6, 1151); + } else { + player.getPacketSender().setSidebarInterface(6, 12855); + } + } + } + + public boolean removeGloves() { + if (player.getItemAssistant().playerHasItem(776)) { + player.getItemAssistant().deleteItem(776, 1); + return true; + } else if (player.getItemAssistant().playerHasItem(775)) { + player.getItemAssistant().deleteItem(775, 1); + return true; + } else if (player.playerEquipment[player.playerHands] == 775 || player.playerEquipment[player.playerHands] == 776) { + player.getDialogueHandler().sendStatement("You need to take your gloves off to do this."); + player.nextChat = 0; + return false; + } + return false; + } + + public void feature(String feature) { + player.getDialogueHandler().sendStatement("Sorry, " + feature + " is currently disabled."); + player.nextChat = 0; + } + + public static void removeHintIcon(Player c) { + c.getPacketSender().drawHeadicon(0, 0, 0, 0); + } + + /** + * Tutorial Island Interface Integer a = amount the bar fills Integer p = + * represents percent # on interface Integer "a" represents amount %bar + * fills From what i tested so far it goes like this:1=0%, 2=5%, 3=10%, so + * and so fouth + */ + + public void tutorialIslandInterface(int p, int a) { + player.getPacketSender().sendFrame20(406, a); + player.getPacketSender().sendFrame171(1, 12224); + player.getPacketSender().sendFrame171(1, 12225); + player.getPacketSender().sendFrame171(1, 12226); + player.getPacketSender().sendFrame171(1, 12227); + player.getPacketSender().sendFrame126("" + p + "%", 12224); + player.getPacketSender().walkableInterface(8680); + } + + /** + * Hides all Side Bars + */ + + public void hideAllSideBars() { + for (int i = 0; i < 14; i++) { + player.getPacketSender().setSidebarInterface(i, -1); + } + player.getPacketSender().setSidebarInterface(10, 2449); + } + + public void writeEnergy() { + if (player.playerEnergy >= 100) { + player.getPacketSender().sendFrame126("100%", 149); + } else { + if (player.playerEnergy > 0 && player.playerEnergy < 100) { + player.getPacketSender().sendFrame126((int) Math.ceil(player.playerEnergy) + "%", 149); + } else if (player.playerEnergy <= 0) { + player.getPacketSender().sendFrame126("0%", 149); + } + } + } + + public int raiseTimer() { + // calculations from https://oldschool.runescape.wiki/w/Energy + double seconds = 60 / (8 + Math.floor(player.playerLevel[player.playerAgility] / 6)); + return (int) Math.floor(seconds * 1000); + } + + public void handleTiara() { + int[] tiaras = { 5527, 5529, 5531, 5535, 5537, 5533, 5539, 5543, 5541, 5545, 5547 }; + if (player.wearId >= tiaras[0] && player.wearId <= tiaras[10]) { + for (int i = 0; i < tiaras.length; i++) { + if (player.wearId == tiaras[i]) { + int tempInt = 1; + int loc = i; + while (loc > 0) { + tempInt *= 2; + loc--; + } + player.getPacketSender().setConfig(491, tempInt); + } + } + } + } + + private static int[][] ALLOWED_COORDS = { + /*PLAYER X, PLAYER Y, OTHER X, OTHER Y*/ + {0, 1, 2, 3}, + }; + + private static int[][] DISABLED_COORDS = { + /*PLAYER X, PLAYER Y, OTHER X, OTHER Y*/ + {4, 5, 6, 7}, + }; + + public static boolean pathBlocked(Client attacker, Client victim) { + + double offsetX = Math.abs(attacker.absX - victim.absX); + double offsetY = Math.abs(attacker.absY - victim.absY); + + int distance = TileControl.calculateDistance(attacker, victim); + + if (distance == 0) { + return true; + } + + offsetX = offsetX > 0 ? offsetX / distance : 0; + offsetY = offsetY > 0 ? offsetY / distance : 0; + + int[][] path = new int[distance][5]; + + int curX = attacker.absX; + int curY = attacker.absY; + int next = 0; + int nextMoveX = 0; + int nextMoveY = 0; + + double currentTileXCount = 0.0; + double currentTileYCount = 0.0; + + while (distance > 0) { + distance--; + nextMoveX = 0; + nextMoveY = 0; + if (curX > victim.absX) { + currentTileXCount += offsetX; + if (currentTileXCount >= 1.0) { + nextMoveX--; + curX--; + currentTileXCount -= offsetX; + } + } else if (curX < victim.absX) { + currentTileXCount += offsetX; + if (currentTileXCount >= 1.0) { + nextMoveX++; + curX++; + currentTileXCount -= offsetX; + } + } + if (curY > victim.absY) { + currentTileYCount += offsetY; + if (currentTileYCount >= 1.0) { + nextMoveY--; + curY--; + currentTileYCount -= offsetY; + } + } else if (curY < victim.absY) { + currentTileYCount += offsetY; + if (currentTileYCount >= 1.0) { + nextMoveY++; + curY++; + currentTileYCount -= offsetY; + } + } + path[next][0] = curX; + path[next][1] = curY; + path[next][2] = attacker.heightLevel; + path[next][3] = nextMoveX; + path[next][4] = nextMoveY; + next++; + } + /** + * Projectile exceptions + * @author Andrew + */ + for (int i = 0; i < ALLOWED_COORDS.length; i++) { + if (curX == ALLOWED_COORDS[i][0] && curY == ALLOWED_COORDS[i][1] && victim.absX == ALLOWED_COORDS[i][2] && victim.absY == ALLOWED_COORDS[i][3]) { + return true; + } + } + for (int i = 0; i < DISABLED_COORDS.length; i++) { + if (curX == DISABLED_COORDS[i][0] && curY == DISABLED_COORDS[i][1] && victim.absX == DISABLED_COORDS[i][2] && victim.absY == DISABLED_COORDS[i][3]) { + return false; + } + } + for (int i = 0; i < path.length; i++) { + if (!Region.getClipping(path[i][0], path[i][1], path[i][2], path[i][3], path[i][4])/* && !Region.blockedShot(path[i][0], path[i][1], path[i][2])*/) { + return true; + } + } + return false; + } + + public static boolean pathBlocked(Client attacker, Npc victim) { + double offsetX = Math.abs(attacker.absX - victim.absX); + double offsetY = Math.abs(attacker.absY - victim.absY); + + int distance = TileControl.calculateDistance(attacker, victim); + + if (distance == 0) { + return true; + } + + offsetX = offsetX > 0 ? offsetX / distance : 0; + offsetY = offsetY > 0 ? offsetY / distance : 0; + + int[][] path = new int[distance][5]; + + int curX = attacker.absX; + int curY = attacker.absY; + int next = 0; + int nextMoveX = 0; + int nextMoveY = 0; + + double currentTileXCount = 0.0; + double currentTileYCount = 0.0; + + while (distance > 0) { + distance--; + nextMoveX = 0; + nextMoveY = 0; + if (curX > victim.absX) { + currentTileXCount += offsetX; + if (currentTileXCount >= 1.0) { + nextMoveX--; + curX--; + currentTileXCount -= offsetX; + } + } else if (curX < victim.absX) { + currentTileXCount += offsetX; + if (currentTileXCount >= 1.0) { + nextMoveX++; + curX++; + currentTileXCount -= offsetX; + } + } + if (curY > victim.absY) { + currentTileYCount += offsetY; + if (currentTileYCount >= 1.0) { + nextMoveY--; + curY--; + currentTileYCount -= offsetY; + } + } else if (curY < victim.absY) { + currentTileYCount += offsetY; + if (currentTileYCount >= 1.0) { + nextMoveY++; + curY++; + currentTileYCount -= offsetY; + } + } + path[next][0] = curX; + path[next][1] = curY; + path[next][2] = attacker.heightLevel; + path[next][3] = nextMoveX; + path[next][4] = nextMoveY; + next++; + } + /** + * Projectile exceptions + * @author Andrew + */ + for (int i = 0; i < ALLOWED_COORDS.length; i++) { + if (curX == ALLOWED_COORDS[i][0] && curY == ALLOWED_COORDS[i][1] && victim.absX == ALLOWED_COORDS[i][2] && victim.absY == ALLOWED_COORDS[i][3]) { + return true; + } + } + for (int i = 0; i < DISABLED_COORDS.length; i++) { + if (curX == DISABLED_COORDS[i][0] && curY == DISABLED_COORDS[i][1] && victim.absX == DISABLED_COORDS[i][2] && victim.absY == DISABLED_COORDS[i][3]) { + return false; + } + } + /*for (int i = 0; i < path.length; i++) { + if (!Region.blockedShot(path[i][0], path[i][1], path[i][2])) { + return true; + } + }*/ + return false; + } + + + public void stepAway() { + player.faceUpdate(player.followId + 32768); + if (Region.getClipping(player.getX() - 1, player.getY(), player.heightLevel, -1, 0)) { + walkTo(-1, 0); + } else if (Region.getClipping(player.getX() + 1, player.getY(), player.heightLevel, 1, 0)) { + walkTo(1, 0); + } else if (Region.getClipping(player.getX(), player.getY() - 1, player.heightLevel, 0, -1)) { + walkTo(0, -1); + } else if (Region.getClipping(player.getX(), player.getY() + 1, player.heightLevel, 0, 1)) { + walkTo(0, 1); + } + } + + public void squeezeThroughRailing() { + player.startAnimation(2240); + player.turnPlayerTo(player.objectX, player.objectY); + player.getPacketSender().sendMessage("You squeeze through the loose railing."); + } + + public void spiritTree() { + player.getDialogueHandler().sendOption3("The Tree Gnome Village", "The Gnome Stronghold", "Varrock"); + player.dialogueAction = 53; + } + + public void handleCanoe() { + player.getDialogueHandler().sendOption4("Travel the canoe to Barbarian Village.", "Travel the canoe to the Champions Guild.", "Travel the canoe to Lumbridge.", "Travel the canoe to Edgeville."); + player.dialogueAction = 122; + } + + public boolean bananasCheck() { + int reqAmount = 10 - player.getItemAssistant().getItemCount(1963); + switch (player.getItemAssistant().getItemCount(1963)) { + case 0: + player.getDialogueHandler().sendPlayerChat1("I'll go collect " + reqAmount + " bannnas then come back..."); + break; + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + player.getDialogueHandler().sendPlayerChat1( + "I'll go collect " + reqAmount + + " more bannnas then come back..."); + break; + } + return true; + } + + /** + * Teleports + */ + + public void spellTeleport(int x, int y, int height) { + startTeleport(x, y, height, player.playerMagicBook == 1 ? "ancient" + : "modern"); + } + + public void startTeleport(int x, int y, int height, String teleportType) { + if (FightPits.getState(player) != null) { + player.getPacketSender().sendMessage("You can't teleport from a Fight pits Game!"); + return; + } + if (player.tutorialProgress < 36) { + player.getPacketSender().sendMessage("You can't teleport from tutorial island!"); + return; + } + int[] cwitems = { 2552, 2554, 2556, 2558, 2560, 2562, 2564, 2566, 1706, + 1708, 1710, 1712, 8007, 8008, 8009, 8010, 8011 }; + for (int cwitem : cwitems) { + if (player.inCw() || player.inCw() && player.getItemAssistant().playerHasItem(cwitem)) { + player.getPacketSender().sendMessage("You can't teleport from castle wars!"); + return; + } + } + if (player.inTrade) { + player.getPacketSender().sendMessage( + "You can't teleport while in trade!"); + return; + } + if (!SkillHandler.MAGIC) { + player.getPacketSender().sendMessage("This feature is curently disabled."); + return; + } + if (player.inWild() + && player.wildLevel > GameConstants.NO_TELEPORT_WILD_LEVEL) { + player.getPacketSender().sendMessage( + "You can't teleport above level " + + GameConstants.NO_TELEPORT_WILD_LEVEL + + " in the wilderness."); + return; + } + if (System.currentTimeMillis() - player.teleBlockDelay < player.teleBlockLength) { + player.getPacketSender().sendMessage( + "You are teleblocked and can't teleport."); + return; + } + if (SkillHandler.isSkilling(player)) { + player.getPacketSender().sendMessage( + "You can't teleport while skilling!"); + return; + } + if (!player.isDead && player.teleTimer == 0 + && player.respawnTimer == -6) { + if (player.playerIndex > 0 || player.npcIndex > 0) { + player.getCombatAssistant().resetPlayerAttack(); + } + if (player.clickedTree == true) { + player.clickedTree = false; + } + player.stopMovement(); + player.getPacketSender().closeAllWindows(); + player.teleX = x; + player.teleY = y; + player.npcIndex = 0; + player.playerIndex = 0; + player.faceUpdate(0); + player.refresh = false; + if(player.heightLevel != height) { + player.refresh = true; + } + player.teleHeight = height; + // client.resetShaking(); + player.isTeleporting = true; + if (GameConstants.SOUND) { + player.getPacketSender().sendSound(SoundList.TELEPORT, 100, 700); + } + if (teleportType.equalsIgnoreCase("modern")) { + player.startAnimation(714, 10); + player.teleTimer = 10; + player.teleGfx = 308; + player.teleEndAnimation = 715; + } + if (teleportType.equalsIgnoreCase("spiritTree")) { + player.startAnimation(4731); + player.gfx0(1228); + player.teleTimer = 9; + player.teleEndAnimation = 715; + } + if (teleportType.equalsIgnoreCase("ancient")) { + player.startAnimation(1979); + player.teleGfx = 0; + player.teleTimer = 9; + player.teleEndAnimation = 0; + player.gfx0(392); + } + } + } + + public void startTeleport2(int x, int y, int height) { + int[] cwitems = { 2552, 2554, 2556, 2558, 2560, 2562, 2564, 2566, 1706, + 1708, 1710, 1712, 8007, 8008, 8009, 8010, 8011 }; + for (int cwitem : cwitems) { + if (player.inCw() || player.inCw() && player.getItemAssistant().playerHasItem(cwitem)) { + player.getPacketSender().sendMessage("You can't teleport from castle wars!"); + return; + } + } + if (player.inTrade) { + player.getPacketSender().sendMessage( + "You can't teleport while in trade!"); + return; + } + if (player.tutorialProgress < 36) { + player.getPacketSender().sendMessage( + "You can't teleport from tutorial island!"); + return; + } + if (FightPits.getState(player) != null) { + player.getPacketSender().sendMessage( + "You can't teleport from a Fight pits Game!"); + return; + } + if (!SkillHandler.MAGIC) { + player.getPacketSender().sendMessage( + "This feature is curently disabled."); + return; + } + if (player.duelStatus == 5) { + player.getPacketSender().sendMessage( + "You can't teleport during a duel!"); + return; + } + if (System.currentTimeMillis() - player.teleBlockDelay < player.teleBlockLength) { + player.getPacketSender().sendMessage( + "You are teleblocked and can't teleport."); + return; + } + if (GameConstants.SOUND) { + player.getPacketSender().sendSound(SoundList.TELEPORT, 100, 0); + } + if (!player.isDead && player.teleTimer == 0) { + player.stopMovement(); + player.getPacketSender().closeAllWindows(); + player.teleX = x; + player.teleY = y; + player.npcIndex = 0; + player.playerIndex = 0; + player.faceUpdate(0); + // client.resetShaking(); + player.teleHeight = height; + player.startAnimation(714); + player.teleTimer = 11; + player.teleGfx = 308; + player.teleEndAnimation = 715; + player.isTeleporting = true; + } + } + + public void gloryTeleport(int x, int y, int height, String teleportType) { + int[] cwitems = { 2552, 2554, 2556, 2558, 2560, 2562, 2564, 2566, 1706, + 1708, 1710, 1712, 8007, 8008, 8009, 8010, 8011 }; + for (int cwitem : cwitems) { + if (player.inCw() || player.duelStatus > 0 + && player.getItemAssistant().playerHasItem(cwitem)) { + player.getPacketSender().sendMessage( + "You can't teleport from Castle Wars!"); + return; + } + } + if (player.inTrade) { + player.getPacketSender().sendMessage("You can't teleport while in trade!"); + return; + } + if (player.tutorialProgress < 36) { + player.getPacketSender().sendMessage("You can't teleport from tutorial island!"); + return; + } + if (FightPits.getState(player) != null) { + player.getPacketSender().sendMessage("You can't teleport from a Fight pits Game!"); + return; + } + if (!SkillHandler.MAGIC) { + player.getPacketSender().sendMessage( + "This feature is curently disabled."); + return; + } + if (player.duelStatus == 5) { + player.getPacketSender().sendMessage( + "You can't teleport during a duel!"); + return; + } + if (System.currentTimeMillis() - player.teleBlockDelay < player.teleBlockLength) { + player.getPacketSender().sendMessage( + "You are teleblocked and can't teleport."); + return; + } + if (GameConstants.SOUND) { + player.getPacketSender().sendSound(SoundList.TELEPORT, 100, 0); + } + if (player.inWild() && player.wildLevel > 30) { + player.getPacketSender().sendMessage( + "You can't teleport above level 30 in the wilderness."); + return; + } + if (!player.isDead && player.teleTimer == 0) { + player.stopMovement(); + player.getPacketSender().closeAllWindows(); + player.teleX = x; + player.teleY = y; + player.npcIndex = 0; + player.playerIndex = 0; + player.faceUpdate(0); + // client.resetShaking(); + player.teleHeight = height; + player.startAnimation(714); + player.teleTimer = 11; + player.teleGfx = 308; + player.teleEndAnimation = 715; + player.isTeleporting = true; + } + } + + public void processTeleport() { + player.teleportToX = player.teleX; + player.teleportToY = player.teleY; + player.heightLevel = player.teleHeight; + if (player.teleEndAnimation > 0) { + player.startAnimation(player.teleEndAnimation); + } + } + + public void movePlayer(int x, int y, int h) { + player.refresh = false; + player.resetWalkingQueue(); + player.teleportToX = x; + player.teleportToY = y; + if(player.heightLevel != h) { + player.refresh = true; + } + player.heightLevel = h; + player.getPlayerAssistant().requestUpdates(); + } + + public void playerWalk(int x, int y) { + PathFinder.getPathFinder().findRoute(player, x, y, true, 1, 1); + } + + public void handleEmpty() { + player.getDialogueHandler().sendOption2("Yes, empty my inventory please.", + "No, don't empty my inventory."); + player.dialogueAction = 855; + } + + public void resetTzhaar() { + if (!player.inFightCaves()) + return; + if (!player.killedJad) { + if (player.waveId > 1) { + player.getItemAssistant().addItem(6529, ((int)((player.waveId*player.waveId)+(((double)player.waveId/2.0)+0.5)))); + player.getDialogueHandler().sendDialogues(104, 2617); + } + } + player.killedJad = false; + player.canHealersRespawn = true; + player.waveId = -1; + player.tzhaarToKill = -1; + player.tzhaarKilled = -1; + movePlayer(2438, 5168, 0); + } + + public void enterCaves() { + player.getDialogueHandler().sendDialogues(101, 2617); + player.getPlayerAssistant().movePlayer(2413, 5117, player.playerId * 4); + player.waveId = 0; + player.tzhaarToKill = -1; + player.tzhaarKilled = -1; + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (player.disconnected) { + container.stop(); + return; + } + GameEngine.fightCaves.spawnNextWave((Client) PlayerHandler.players[player.playerId]); + container.stop(); + } + @Override + public void stop() { + + } + }, 16); + } + + private static final int[][] STARTER_ITEMS = { { 1351, 1 }, { 590, 1 }, + { 303, 1 }, { 315, 1 }, { 1925, 1 }, { 1931, 1 }, { 2309, 1 }, + { 1265, 1 }, { 1205, 1 }, { 1277, 1 }, { 1171, 1 }, { 841, 1 }, + { 882, 25 }, { 556, 25 }, { 558, 15 }, { 555, 6 }, { 557, 4 }, + { 559, 2 } }; + + public void addStarter() { + for (int[] element : STARTER_ITEMS) { + int item = element[0]; + int amount = element[1]; + player.getItemAssistant().addItem(item, amount); + } + } + + public void hitPlayers(int x1, int x2, int y1, int y2, int hp) { + for (Player player : PlayerHandler.players) { + if (player != null && player.isActive) { + Client t = (Client) player; + if (t.absX >= x1 && t.absX <= x2 && t.absY >= y1 + && t.absY <= y2) { + int hit = t.playerLevel[GameConstants.HITPOINTS] / hp; + t.setHitDiff2(hit); + t.setHitUpdateRequired2(true); + t.playerLevel[GameConstants.HITPOINTS] -= hit; + t.getPlayerAssistant().refreshSkill(GameConstants.HITPOINTS); + t.updateRequired = true; + } + } + } + } + + // creates gfx for everyone + public void createPlayersStillGfx(int id, int x, int y, int height, int time) { + // synchronized(c) { + for (Player p : PlayerHandler.players) { + if (p != null) { + Client person = (Client) p; + if (person != null) { + if (person.getOutStream() != null) { + if (person.distanceToPoint(x, y) <= 25) { + person.getPacketSender().stillGfx(id, x, y, + height, time); + } + } + } + } + } + } + + + // projectiles for everyone within 25 squares + public void createPlayersProjectile(int x, int y, int offX, int offY, + int angle, int speed, int gfxMoving, int startHeight, + int endHeight, int lockon, int time) { + // synchronized(c) { + for (Player p : PlayerHandler.players) { + if (p != null) { + Client person = (Client) p; + if (person != null) { + if (person.getOutStream() != null) { + if (person.distanceToPoint(x, y) <= 25) { + if (p.heightLevel == player.heightLevel) { + person.getPacketSender().createProjectile( + x, y, offX, offY, angle, speed, + gfxMoving, startHeight, endHeight, + lockon, time); + } + } + } + } + } + } + } + + public void createPlayersProjectile2(int x, int y, int offX, int offY, + int angle, int speed, int gfxMoving, int startHeight, + int endHeight, int lockon, int time, int slope) { + // synchronized(c) { + for (Player p : PlayerHandler.players) { + if (p != null) { + Client person = (Client) p; + if (person != null) { + if (person.getOutStream() != null) { + if (person.distanceToPoint(x, y) <= 25) { + person.getPacketSender() + .createProjectile2(x, y, offX, offY, angle, + speed, gfxMoving, startHeight, + endHeight, lockon, time, slope); + } + } + } + } + } + } + + /** + * Private Messaging + */ + public void logIntoPM() { + player.getPacketSender().setPrivateMessaging(2); + for (Player p : PlayerHandler.players) { + if (p != null && p.isActive) { + Client o = (Client) p; + o.getPlayerAssistant().updatePM(player.playerId, 1); + } + } + boolean pmLoaded = false; + + for (long friend : player.friends) { + if (friend != 0) { + for (int i2 = 1; i2 < PlayerHandler.players.length; i2++) { + Player p = PlayerHandler.players[i2]; + if (p != null && p.isActive + && Misc.playerNameToInt64(p.playerName) == friend) { + Client o = (Client) p; + if (player.playerRights >= 2 + || p.privateChat == 0 + || p.privateChat == 1 + && o.getPlayerAssistant() + .isInPM(Misc + .playerNameToInt64(player.playerName))) { + player.getPacketSender().loadPM(friend, 1); + pmLoaded = true; + } + break; + } + } + if (!pmLoaded) { + player.getPacketSender().loadPM(friend, 0); + } + pmLoaded = false; + } + for (int i1 = 1; i1 < PlayerHandler.players.length; i1++) { + Player p = PlayerHandler.players[i1]; + if (p != null && p.isActive) { + Client o = (Client) p; + o.getPlayerAssistant().updatePM(player.playerId, 1); + } + } + } + } + + public void updatePM(int pID, int world) { // used for private chat updates + Player p = PlayerHandler.players[pID]; + if (p == null || p.playerName == null || p.playerName.equals("null")) { + return; + } + Client o = (Client) p; + long l = Misc.playerNameToInt64(PlayerHandler.players[pID].playerName); + + if (p.privateChat == 0) { + for (long friend : player.friends) { + if (friend != 0) { + if (l == friend) { + player.getPacketSender().loadPM(l, world); + return; + } + } + } + } else if (p.privateChat == 1) { + for (long friend : player.friends) { + if (friend != 0) { + if (l == friend) { + if (o.getPlayerAssistant().isInPM( + Misc.playerNameToInt64(player.playerName))) { + player.getPacketSender().loadPM(l, world); + return; + } else { + player.getPacketSender().loadPM(l, 0); + return; + } + } + } + } + } else if (p.privateChat == 2) { + for (long friend : player.friends) { + if (friend != 0) { + if (l == friend && player.playerRights < 2) { + player.getPacketSender().loadPM(l, 0); + return; + } + } + } + } + } + + public boolean isInPM(long l) { + for (long friend : player.friends) { + if (friend != 0) { + if (l == friend) { + return true; + } + } + } + return false; + } + + /** + * Drink AntiPosion Potions + * + * @param itemId + * The itemId + * @param itemSlot + * The itemSlot + * @param newItemId + * The new item After Drinking + * @param healType + * The type of poison it heals + */ + + public void potionPoisonHeal(int itemId, int itemSlot, int newItemId, + int healType) { + player.attackTimer = player.getCombatAssistant().getAttackDelay(); + if (player.duelRule[5]) { + player.getPacketSender().sendMessage( + "Potions has been disabled in this duel!"); + return; + } + if (!player.isDead + && System.currentTimeMillis() - player.foodDelay > 2000) { + if (player.getItemAssistant().playerHasItem(itemId, 1, itemSlot)) { + player.getPacketSender().sendMessage( + "You drink the " + + ItemAssistant.getItemName(itemId) + .toLowerCase() + "."); + player.foodDelay = System.currentTimeMillis(); + // Actions + if (healType == 1) { + // Cures The Poison + } else if (healType == 2) { + // Cures The Poison + protects from getting poison again + } + player.startAnimation(0x33D); + player.getItemAssistant().deleteItem(itemId, itemSlot, 1); + player.getItemAssistant().addItem(newItemId, 1); + requestUpdates(); + } + } + } + + /** + * Magic on items + **/ + + public void magicOnItems(int slot, int itemId, int spellId) { + if (!player.getItemAssistant().playerHasItem(itemId, 1, slot) + || itemId == 995) { + return; + } + switch (spellId) { + case 1162: // low alch + if (player.inTrade) { + player.getPacketSender().sendMessage("You can't alch while in trade!"); + return; + } + if (System.currentTimeMillis() - player.alchDelay > 1000) { + if (!player.getCombatAssistant().checkMagicReqs(49)) { + break; + } + boolean canAlch = true; + for (int i : GameConstants.ITEM_UNALCHABLE) { + if (itemId == i) { + player.getPacketSender().sendMessage( + "You can't alch that item!"); + canAlch = false; + return; + } + } + if (canAlch) { + int value = (int) Math.floor(player.getShopAssistant().getItemShopValue(itemId) * 0.4); + String itemName = ItemAssistant.getItemName(itemId).toLowerCase(); + if (player.getPlayerAssistant().isPlayer()) { + GameLogger.writeLog(player.playerName, "alchemy", player.playerName + " cast Low Alchemy on " + itemName + " for " + GameLogger.formatCurrency(value) + " coins"); + } + player.getItemAssistant().deleteItem(itemId, slot, 1); + //855 - 858 + if (itemId > 854 && itemId < 857) { + player.getItemAssistant().addItem(995, 512); + } else if (itemId > 856 && itemId < 859) { + player.getItemAssistant().addItem(995, 320); + } else if (itemId > 860 && itemId < 863) { + player.getItemAssistant().addItem(995, 640); + } else if (itemId > 858 && itemId < 861) { + player.getItemAssistant().addItem(995, 1024); + } else { + player.getItemAssistant().addItem(995, value); + } + player.startAnimation(MagicData.MAGIC_SPELLS[49][2]); + player.gfx100(MagicData.MAGIC_SPELLS[49][3]); + player.alchDelay = System.currentTimeMillis(); + player.getPacketSender().sendFrame106(6); + addSkillXP(31, 6); + player.getPacketSender().sendSound( + SoundList.LOW_ALCHEMY, 100, 0); + RandomEventHandler.addRandom(player); + refreshSkill(6); + } + } + break; + + case 1173: + if (!Superheat.superHeatItem(player, itemId)) { + return; + } + break; + + case 1155: // Lvl-1 enchant sapphire + case 1165: // Lvl-2 enchant emerald + case 1176: // Lvl-3 enchant ruby + case 1180: // Lvl-4 enchant diamond + case 1187: // Lvl-5 enchant dragonstone + case 6003: // Lvl-6 enchant onyx + player.getEnchanting().enchantItem(itemId, spellId); + break; + + case 1178: // high alch + if (player.inTrade) { + player.getPacketSender().sendMessage( + "You can't alch while in trade!"); + return; + } + if (System.currentTimeMillis() - player.alchDelay > 1000) { + if (!player.getCombatAssistant().checkMagicReqs(50)) { + break; + } + boolean canAlch = true; + for (int i : GameConstants.ITEM_UNALCHABLE) { + if (itemId == i) { + player.getPacketSender().sendMessage( + "You can't alch that item!"); + canAlch = false; + return; + } + } + if (canAlch) { + int value = (int) Math.floor(player.getShopAssistant().getItemShopValue(itemId) * 0.75); + String itemName = ItemAssistant.getItemName(itemId).toLowerCase(); + if (player.getPlayerAssistant().isPlayer()) { + GameLogger.writeLog(player.playerName, "alchemy", player.playerName + " cast High Alchemy on " + itemName + " for" + GameLogger.formatCurrency(value) + " coins"); + } + player.getItemAssistant().deleteItem(itemId, slot, 1); + if (itemId > 854 && itemId < 857) { + player.getItemAssistant().addItem(995, 768); + } else if (itemId > 856 && itemId < 859) { + player.getItemAssistant().addItem(995, 480); + } else if (itemId > 858 && itemId < 861) { + player.getItemAssistant().addItem(995, 1536); + } else if (itemId > 860 && itemId < 863) { + player.getItemAssistant().addItem(995, 960); + } else { + player.getItemAssistant().addItem(995, (int) (player.getShopAssistant().getItemShopValue(itemId) * .75)); + } + player.startAnimation(MagicData.MAGIC_SPELLS[50][2]); + player.gfx100(MagicData.MAGIC_SPELLS[50][3]); + player.alchDelay = System.currentTimeMillis(); + player.getPacketSender().sendFrame106(6); + RandomEventHandler.addRandom(player); + addSkillXP(65, 6); + player.getPacketSender().sendSound( + SoundList.HIGH_ALCHEMY, 100, 0); + refreshSkill(6); + } + } + break; + } + } + + public String optionType = "null"; + + public String deathMsgs() { + int deathMsgs = Misc.random(9); + switch (deathMsgs) { + case 0: + return "With a crushing blow, you defeat " + player.playerName + + "."; + case 1: + return "It's a humiliating defeat for " + player.playerName + "."; + case 2: + return "" + player.playerName + + " didn't stand a chance against you."; + case 3: + return "You've defeated " + player.playerName + "."; + case 4: + return "" + player.playerName + + " regrets the day they met you in combat."; + case 5: + return "It's all over for " + player.playerName + "."; + case 6: + return "" + player.playerName + " falls before your might."; + case 7: + return "Can anyone defeat you? Certainly not " + player.playerName + + "."; + case 8: + return "You were clearly a better fighter than " + + player.playerName + "."; + } + return "You've defeated " + player.playerName + "."; + } + + public void resetDamageDone() { + for (int i = 0; i < PlayerHandler.players.length; i++) { + if (PlayerHandler.players[i] != null) { + PlayerHandler.players[i].damageTaken[player.playerId] = 0; + } + } + } + + public void vengMe() { + if (System.currentTimeMillis() - player.lastVeng > 30000) { + if (player.getItemAssistant().playerHasItem(557, 10) + && player.getItemAssistant().playerHasItem(9075, 4) + && player.getItemAssistant().playerHasItem(560, 2)) { + player.vengOn = true; + player.lastVeng = System.currentTimeMillis(); + player.startAnimation(4410); + player.gfx100(726); + player.getItemAssistant().deleteItem(557, + player.getItemAssistant().getItemSlot(557), 10); + player.getItemAssistant().deleteItem(560, + player.getItemAssistant().getItemSlot(560), 2); + player.getItemAssistant().deleteItem(9075, + player.getItemAssistant().getItemSlot(9075), 4); + } else { + player.getPacketSender() + .sendMessage( + "You do not have the required runes to cast this spell. (9075 for astrals)"); + } + } else { + player.getPacketSender().sendMessage( + "You must wait 30 seconds before casting this again."); + } + } + + public void resetTb() { + player.teleBlockLength = 0; + player.teleBlockDelay = 0; + } + + public void resetFollowers() { + for (Player player : PlayerHandler.players) { + if (player != null) { + if (player.followId == player.playerId) { + Client c = (Client) player; + c.getPlayerAssistant().resetFollow(); + } + } + } + } + + public void applyDead() { + player.getDueling().stakedItems.clear(); + player.respawnTimer = 15; + player.isDead = true; + // client.getPacketDispatcher().sendSound(203, 100, 0); + int weapon = player.playerEquipment[player.playerWeapon]; + if (player.duelStatus != 6) { + player.killerId = findKiller(); + Client opponent = (Client) PlayerHandler.players[player.killerId]; + if (opponent != null) { + if(player.inWild() && player.npcIndex < 1) { + if (player.killerId != player.playerId) { + opponent.getPacketSender().sendMessage(deathMsgs()); + } + } + if (player.getPlayerAssistant().isPlayer() && player.inWild() && player.npcIndex < 1) { + GameLogger.writeLog(opponent.playerName, "pkingkiller", opponent.playerName + " killed " + player.playerName + " absX: " + player.absX + " absY: " + player.absY + ""); + } + if (opponent.getPlayerAssistant().isPlayer() && player.inWild() && player.npcIndex < 1) { + GameLogger.writeLog(player.playerName, "pkingkilled", player.playerName + " was killed by " + opponent.playerName + " absX: " + opponent.absX + " absY: " + opponent.absY + ""); + } + if (weapon == CastleWars.SARA_BANNER || weapon == CastleWars.ZAMMY_BANNER) { + player.getItemAssistant().removeItem(weapon, 3); + player.getItemAssistant().deleteItem(weapon, 1); + CastleWars.dropFlag(player, weapon); + } + if (opponent.duelStatus == 5) { + opponent.duelStatus++; + } + if (opponent.getCannon().hasCannon()) { + opponent.getCannon().handleDeath(); + } + } + } + player.faceUpdate(0); + player.npcIndex = 0; + player.playerIndex = 0; + player.stopMovement(); + if (player.inCw()) { + player.cwDeaths += 1; + Client o = (Client) PlayerHandler.players[player.killerId]; + o.cwKills += 1; + } else if (player.duelStatus <= 4) { + player.getDueling().stakedItems.clear(); + player.getPacketSender().sendMessage("Oh dear you are dead!"); + } else if (player.duelStatus != 6) { + Client duelOpponent = (Client) PlayerHandler.players[player.duelingWith]; + player.getDueling().stakedItems.clear(); + player.getPacketSender().sendMessage("You have lost the duel!"); + if (duelOpponent.getPlayerAssistant().isPlayer()) { + GameLogger.writeLog(player.playerName, "duelingkilled", player.playerName + " was killed by " + duelOpponent.playerName + " in the duel arena."); + } + } + if (player.vampSlayer == 3 && player.clickedVamp == true) { + player.clickedVamp = false; + } else if (player.isWoodcutting) { + player.isWoodcutting = false; + } else if (player.playerSkilling[10]) { + player.playerSkilling[10] = false; + } else if(player.clickedTree == true) { + player.clickedTree = false; + } + resetDamageDone(); + player.specAmount = 10; + player.getItemAssistant().addSpecialBar(player.playerEquipment[player.playerWeapon]); + player.lastVeng = 0; + player.vengOn = false; + resetFollowers(); + player.attackTimer = 10; + player.getPacketSender().closeAllWindows(); + player.tradeResetNeeded = true; + } + + public void giveLife() { + player.isDead = false; + player.faceUpdate(-1); + player.freezeTimer = 0; + player.getPacketSender().closeAllWindows(); + player.tradeResetNeeded = true; + if (player.duelStatus <= 4) { + if (!CastleWars.isInCw(player) && !PestControl.isInGame(player) + && !PestControl.isInPcBoat(player) + && player.tutorialProgress > 35 + && FightPits.getState(player) == null + && !player.inFightCaves()) { + player.getItemAssistant().resetKeepItems(); + if (player.playerRights != 3) { + if (!player.isSkulled) { // what items to keep + player.getItemAssistant().keepItem(0, true); + player.getItemAssistant().keepItem(1, true); + player.getItemAssistant().keepItem(2, true); + } + if (player.getPrayer().prayerActive[10] + && System.currentTimeMillis() - player.lastProtItem > 700) { + player.getItemAssistant().keepItem(3, true); + } + player.getItemAssistant().dropAllItems(); // drop all items + player.getItemAssistant().deleteAllItems(); // delete all + // items + + if (!player.isSkulled) { // add the kept items once we + // finish deleting and dropping + // them + for (int i1 = 0; i1 < 3; i1++) { + if (player.itemKeptId[i1] > 0) { + player.getItemAssistant().addItem( + player.itemKeptId[i1], 1); + } + } + } + if (player.getPrayer().prayerActive[10]) { // if we have + // protect items + if (player.itemKeptId[3] > 0) { + player.getItemAssistant().addItem( + player.itemKeptId[3], 1); + } + } + } + player.getItemAssistant().resetKeepItems(); + } + } + PrayerDrain.resetPrayers(player); + for (int i = 0; i < 20; i++) { + player.playerLevel[i] = getLevelForXP(player.playerXP[i]); + refreshSkill(i); + } + if (FightPits.getState(player) != null) { + FightPits.handleDeath(player); + } else if (player.fightPitsArea()) { + player.getPlayerAssistant().movePlayer(2399, 5178, 0); + } else if (player.inCw()) { + if (CastleWars.getTeamNumber(player) == 1) { + player.getPlayerAssistant().movePlayer(2426 + Misc.random(3), + 3076 - Misc.random(3), 1); + } else { + player.getPlayerAssistant().movePlayer(2373 + Misc.random(3), + 3131 - Misc.random(3), 1); + } + } else if (PestControl.isInGame(player) || player.inPcGame()) { + player.getPlayerAssistant().movePlayer(2658, 2609, 0); + player.getDialogueHandler().sendDialogues(601, 3790); + } else if (player.tutorialProgress < 36 || player.isInTut()) { + player.getPlayerAssistant().movePlayer(3094, 3107, 0); + player.diedOnTut = true; + player.getDialogueHandler().sendStatement2( + "Oh dear you died! Go back to the step you", + "were on to continue Tutorial Island."); + player.getPacketSender().createArrow(3098, 3107, player.getH(), + 2); + } else if (player.inFightCaves()) {// to fix + player.getPlayerAssistant().resetTzhaar(); + } else if (player.duelStatus != 5 && !player.lostDuel) { // if we are + // not in a + // duel + // repawn to + // wildy + movePlayer(GameConstants.RESPAWN_X, GameConstants.RESPAWN_Y, 0); + player.isSkulled = false; + player.skullTimer = 0; + player.attackedPlayers.clear(); + } else if (player.duelStatus == 5 || player.lostDuel) { // we are in a + // duel, + // respawn + // outside + // of arena + Client o = (Client) PlayerHandler.players[player.duelingWith]; + if (o != null) { + o.getPacketSender().createPlayerHints(10, -1); + if (o.duelStatus == 6 && player.duelStatus == 5) { + o.getDueling().duelVictory(); + } + } + player.getPacketSender().sendSound(122, 100, 0); + player.getPlayerAssistant().movePlayer( + GameConstants.DUELING_RESPAWN_X + 5, + GameConstants.DUELING_RESPAWN_Y + 5, 0); + assert o != null; + if (o != null) { + o.getPacketSender().sendSound(122, 100, 0); + o.getPlayerAssistant().movePlayer( + GameConstants.DUELING_RESPAWN_X + 5, + GameConstants.DUELING_RESPAWN_Y + 5, 0); + } + if (player.duelStatus != 6) { // if we have won but have died, + // don't reset the duel status. + player.getDueling().resetDuel(); + } + player.lostDuel = false; + } + PlayerSave.saveGame(player); + player.getCombatAssistant().resetPlayerAttack(); + resetAnimation(); + player.startAnimation(65535); + player.getPacketSender().frame1(); + resetTb(); + player.playerEnergy = 100; + player.getPacketSender().sendFrame126((int) Math.ceil(player.playerEnergy) + "%", 149); + player.isSkulled = false; + player.attackedPlayers.clear(); + player.headIconPk = -1; + player.skullTimer = -1; + player.damageTaken = new int[PlayerHandler.players.length]; + requestUpdates(); + } + + /** + * Location change for digging, levers etc + **/ + + public void changeLocation() { + switch (player.newLocation) { + case 1: + player.getPacketSender().sendMapState(2); + movePlayer(3578, 9706, 3); + break; + case 2: + player.getPacketSender().sendMapState(2); + movePlayer(3568, 9683, 3); + break; + case 3: + player.getPacketSender().sendMapState(2); + movePlayer(3557, 9703, 3); + break; + case 4: + player.getPacketSender().sendMapState(2); + movePlayer(3556, 9718, 3); + break; + case 5: + player.getPacketSender().sendMapState(2); + movePlayer(3534, 9704, 3); + break; + case 6: + player.getPacketSender().sendMapState(2); + movePlayer(3546, 9684, 3); + break; + } + player.newLocation = 0; + } + + public int[] getFollowLocation(int x, int y) { + int[] nonDiags = {0, 2, 4, 6}; + int[][] nodes = { + { x + Misc.directionDeltaX[nonDiags[0]], y + Misc.directionDeltaY[nonDiags[0]] }, + { x + Misc.directionDeltaX[nonDiags[1]], y + Misc.directionDeltaY[nonDiags[1]] }, + { x + Misc.directionDeltaX[nonDiags[2]], y + Misc.directionDeltaY[nonDiags[2]] }, + { x + Misc.directionDeltaX[nonDiags[3]], y + Misc.directionDeltaY[nonDiags[3]] } + }; + + int bestX = 0; + int bestY = 0; + double bestDist = 99999; + + boolean projectile = player.usingMagic || player.usingBow || player.usingRangeWeapon; + + for (int i = 0; i < nodes.length; i++) { + double dist = Misc.distance(player.absX, player.absY, nodes[i][0], nodes[i][1]); + if (dist < bestDist) { + if (PathFinder.getPathFinder().accessible(player.absX, player.absY, player.heightLevel, nodes[i][0], nodes[i][1])) { + if (!projectile || PathFinder.isProjectilePathClear(nodes[i][0], nodes[i][1], player.heightLevel, x, y)) { + bestDist = dist; + bestX = nodes[i][0]; + bestY = nodes[i][1]; + } + } + } + } + + if (bestX == 0 && bestY == 0) { + bestX = x; + bestY = y; + } + + return new int[] {bestX, bestY}; + } + + public void followPlayer() { + if (PlayerHandler.players[player.followId] == null + || PlayerHandler.players[player.followId].isDead) { + resetFollow(); + return; + } + if (player.freezeTimer > 0) { + return; + } + if (player.isDead || player.playerLevel[3] <= 0) { + return; + } + + int otherX = PlayerHandler.players[player.followId].getX(); + int otherY = PlayerHandler.players[player.followId].getY(); + + /*boolean sameSpot = player.absX == otherX && player.absY == otherY; + if (sameSpot) + stepAway(); + + boolean hallyDistance = player.goodDistance(otherX, otherY, + player.getX(), player.getY(), 2); + + boolean rangeWeaponDistance = player.goodDistance(otherX, otherY, + player.getX(), player.getY(), 4); + boolean bowDistance = player.goodDistance(otherX, otherY, + player.getX(), player.getY(), 6); + boolean mageDistance = player.goodDistance(otherX, otherY, + player.getX(), player.getY(), 7); + + boolean castingMagic = (player.usingMagic || player.mageFollow + || player.autocasting || player.spellId > 0) + && mageDistance; + boolean playerRanging = player.usingRangeWeapon && rangeWeaponDistance; + boolean playerBowOrCross = player.usingBow && bowDistance;*/ + + if (!player.goodDistance(otherX, otherY, player.getX(), player.getY(), + 25)) { + player.followId = 0; + resetFollow(); + return; + } + + int[] follow = getFollowLocation(otherX, otherY); + player.faceUpdate(player.followId + 32768); + PathFinder.getPathFinder().findRoute(player, follow[0], follow[1], false, 1, 1); + + /*if (!sameSpot) { + if (player.playerIndex > 0 && !player.usingSpecial + && player.inWild()) { + if (player.usingSpecial && (playerRanging || playerBowOrCross)) { + player.stopMovement(); + return; + } + if (castingMagic || playerRanging || playerBowOrCross) { + player.stopMovement(); + return; + } + if (RangeData.usingHally(player) && hallyDistance) { + player.stopMovement(); + return; + } + } + } + if (otherX == player.absX && otherY == player.absY) { + int r = Misc.random(3); + switch (r) { + case 0: + walkTo(0, -1); + break; + case 1: + walkTo(0, 1); + break; + case 2: + walkTo(1, 0); + break; + case 3: + walkTo(-1, 0); + break; + } + } else if (player.isRunning2) { + if (otherY > player.getY() && otherX == player.getX()) { + playerWalk(otherX, otherY - 1); + } else if (otherY < player.getY() && otherX == player.getX()) { + playerWalk(otherX, otherY + 1); + } else if (otherX > player.getX() && otherY == player.getY()) { + playerWalk(otherX - 1, otherY); + } else if (otherX < player.getX() && otherY == player.getY()) { + playerWalk(otherX + 1, otherY); + } else if (otherX < player.getX() && otherY < player.getY()) { + playerWalk(otherX + 1, otherY + 1); + } else if (otherX > player.getX() && otherY > player.getY()) { + playerWalk(otherX - 1, otherY - 1); + } else if (otherX < player.getX() && otherY > player.getY()) { + playerWalk(otherX + 1, otherY - 1); + } else if (otherX > player.getX() && otherY < player.getY()) { + playerWalk(otherX + 1, otherY - 1); + } + } else { + if (otherY > player.getY() && otherX == player.getX()) { + playerWalk(otherX, otherY - 1); + } else if (otherY < player.getY() && otherX == player.getX()) { + playerWalk(otherX, otherY + 1); + } else if (otherX > player.getX() && otherY == player.getY()) { + playerWalk(otherX - 1, otherY); + } else if (otherX < player.getX() && otherY == player.getY()) { + playerWalk(otherX + 1, otherY); + } else if (otherX < player.getX() && otherY < player.getY()) { + playerWalk(otherX + 1, otherY + 1); + } else if (otherX > player.getX() && otherY > player.getY()) { + playerWalk(otherX - 1, otherY - 1); + } else if (otherX < player.getX() && otherY > player.getY()) { + playerWalk(otherX + 1, otherY - 1); + } else if (otherX > player.getX() && otherY < player.getY()) { + playerWalk(otherX - 1, otherY + 1); + } + } + player.faceUpdate(player.followId + 32768);*/ + } + + public void followNpc() { + Npc npc = NpcHandler.npcs[player.followId2]; + if (npc == null || npc.isDead) { + return; + } + + int x = NpcHandler.npcs[player.followId2].getX(); + int y = NpcHandler.npcs[player.followId2].getY(); + if (!player.goodDistance(x, y, player.getX(), player.getY(),25)) { + player.followId2 = 0; + resetFollow(); + return; + } + + int[] follow = getFollowLocation(x, y); + player.faceUpdate(player.followId2); + PathFinder.getPathFinder().findRoute(player, follow[0], follow[1], false, 1, 1); + + /*if (otherX == player.absX && otherY == player.absY) { + int r = Misc.random(3); + switch (r) { + case 0: + walkTo(0, -1); + break; + case 1: + walkTo(0, 1); + break; + case 2: + walkTo(1, 0); + break; + case 3: + walkTo(-1, 0); + break; + } + } else { + if (otherY > player.getY() && otherX == player.getX()) { + playerWalk(otherX, otherY - 1); + } else if (otherY < player.getY() && otherX == player.getX()) { + playerWalk(otherX, otherY + 1); + } else if (otherX > player.getX() && otherY == player.getY()) { + playerWalk(otherX - 1, otherY); + } else if (otherX < player.getX() && otherY == player.getY()) { + playerWalk(otherX + 1, otherY); + } else if (otherX < player.getX() && otherY < player.getY()) { + playerWalk(otherX + 1, otherY + 1); + } else if (otherX > player.getX() && otherY > player.getY()) { + playerWalk(otherX - 1, otherY - 1); + } else if (otherX < player.getX() && otherY > player.getY()) { + playerWalk(otherX + 1, otherY - 1); + } else if (otherX > player.getX() && otherY < player.getY()) { + playerWalk(otherX - 1, otherY + 1); + } + }*/ + } + + public int getRunningMove(int i, int j) { + if (j - i > 2) { + return 2; + } else if (j - i < -2) { + return -2; + } else { + return j - i; + } + } + + public void resetFollow() { + player.followId = 0; + player.followId2 = 0; + player.mageFollow = false; + } + + public void walkTo(int i, int j) { + player.newWalkCmdSteps = 0; + if (++player.newWalkCmdSteps > 50) { + player.newWalkCmdSteps = 0; + } + int k = player.getX() + i; + k -= player.mapRegionX * 8; + player.getNewWalkCmdX()[0] = player.getNewWalkCmdY()[0] = 0; + int l = player.getY() + j; + l -= player.mapRegionY * 8; + + for (int n = 0; n < player.newWalkCmdSteps; n++) { + player.getNewWalkCmdX()[n] += k; + player.getNewWalkCmdY()[n] += l; + } + } + + public void walkTo2(int i, int j) { + if (player.freezeDelay > 0) { + return; + } + player.newWalkCmdSteps = 0; + if (++player.newWalkCmdSteps > 50) { + player.newWalkCmdSteps = 0; + } + int k = player.getX() + i; + k -= player.mapRegionX * 8; + player.getNewWalkCmdX()[0] = player.getNewWalkCmdY()[0] = 0; + int l = player.getY() + j; + l -= player.mapRegionY * 8; + + for (int n = 0; n < player.newWalkCmdSteps; n++) { + player.getNewWalkCmdX()[n] += k; + player.getNewWalkCmdY()[n] += l; + } + } + + public void stopDiagonal(int otherX, int otherY) { + if (player.freezeDelay > 0) { + return; + } + player.newWalkCmdSteps = 1; + int xMove = otherX - player.getX(); + int yMove = 0; + if (xMove == 0) { + yMove = otherY - player.getY(); + /* + * if (!clipHor) { yMove = 0; } else if (!clipVer) { xMove = 0; } + */ + } + + int k = player.getX() + xMove; + k -= player.mapRegionX * 8; + player.getNewWalkCmdX()[0] = player.getNewWalkCmdY()[0] = 0; + int l = player.getY() + yMove; + l -= player.mapRegionY * 8; + + for (int n = 0; n < player.newWalkCmdSteps; n++) { + player.getNewWalkCmdX()[n] += k; + player.getNewWalkCmdY()[n] += l; + } + + } + + public void walkToCheck(int i, int j) { + if (player.freezeDelay > 0) { + return; + } + player.newWalkCmdSteps = 0; + if (++player.newWalkCmdSteps > 50) { + player.newWalkCmdSteps = 0; + } + int k = player.getX() + i; + k -= player.mapRegionX * 8; + player.getNewWalkCmdX()[0] = player.getNewWalkCmdY()[0] = 0; + int l = player.getY() + j; + l -= player.mapRegionY * 8; + + for (int n = 0; n < player.newWalkCmdSteps; n++) { + player.getNewWalkCmdX()[n] += k; + player.getNewWalkCmdY()[n] += l; + } + } + + public int getMove(int place1, int place2) { + if (System.currentTimeMillis() - player.lastSpear < 4000) { + return 0; + } + if (place1 - place2 == 0) { + return 0; + } else if (place1 - place2 < 0) { + return 1; + } else if (place1 - place2 > 0) { + return -1; + } + return 0; + } + + public boolean fullVeracs() { + return player.playerEquipment[player.playerHat] == 4753 + && player.playerEquipment[player.playerChest] == 4757 + && player.playerEquipment[player.playerLegs] == 4759 + && player.playerEquipment[player.playerWeapon] == 4755; + } + + public boolean fullGuthans() { + return player.playerEquipment[player.playerHat] == 4724 + && player.playerEquipment[player.playerChest] == 4728 + && player.playerEquipment[player.playerLegs] == 4730 + && player.playerEquipment[player.playerWeapon] == 4726; + } + + /** + * reseting animation + **/ + public void resetAnimation() { + player.getCombatAssistant().getPlayerAnimIndex(); + player.startAnimation(player.playerStandIndex); + requestUpdates(); + } + + public void requestUpdates() { + player.updateRequired = true; + player.setAppearanceUpdateRequired(true); + player.updateWalkEntities(); + } + + public void sendAutoRetalitate() { + if (player.autoRet == 1) { + player.getPacketSender().sendConfig(172, 0); + } else if (player.autoRet == 0) { + player.getPacketSender().sendConfig(172, 1); + } + } + + public void firstTimeTutorial() { + if (GameConstants.TUTORIAL_ISLAND && player.tutorialProgress == 0) { + player.getItemAssistant().deleteAllItems(); + player.getPlayerAssistant().hideAllSideBars(); + movePlayer(3094, 3107, 0); + player.getDialogueHandler().sendDialogues(2995, -1); + player.tutorialProgress = 0; + player.isRunning2 = false; + player.autoRet = 1; + //resetStats(); + sendAutoRetalitate(); + LightSources.saveBrightness(player); + } else if (player.tutorialProgress == 0 && !GameConstants.TUTORIAL_ISLAND) { + player.getPlayerAssistant().sendSidebars(); + PlayerAssistant.removeHintIcon(player); + player.getPacketSender().walkableInterface(-1); + player.getPacketSender().chatbox(-1); + player.getItemAssistant().deleteAllItems(); + player.getItemAssistant().clearBank(); + player.getPlayerAssistant().addStarter(); + player.getPlayerAssistant().movePlayer(3233, 3229, 0); + player.getPacketSender().sendMessage("Welcome to @blu@" + GameConstants.SERVER_NAME + "@bla@ - we are currently in Server Stage v@blu@" + GameConstants.TEST_VERSION + "@bla@."); + player.getPacketSender().sendMessage("@red@Did you know?@bla@ We're open source! Pull requests are welcome"); + player.getPacketSender().sendMessage("Source code at github.com/dginovker/2006rebotted"); + player.getPacketSender().sendMessage("Welcome to the Beta! A reset will occur before main release -"); + player.getPacketSender().sendMessage("Join our Discord: discord.gg/4zrA2Wy"); + player.getDialogueHandler().sendDialogues(3115, 2224); + player.isRunning2 = false; + player.autoRet = 1; + sendAutoRetalitate(); + LightSources.saveBrightness(player); + if (!player.hasBankpin) { + player.getPacketSender() + .sendMessage( + "You do not, have a bank pin it is highly recommended you set one."); + } + } + } + + public void handleAlt(int id) { + if (!player.getItemAssistant().playerHasItem(id)) { + player.getItemAssistant().addItem(id, 1); + } + } + + public int getTotalLevel() + { + return getLevelForXP(player.playerXP[0]) + + getLevelForXP(player.playerXP[1]) + + getLevelForXP(player.playerXP[2]) + + getLevelForXP(player.playerXP[3]) + + getLevelForXP(player.playerXP[4]) + + getLevelForXP(player.playerXP[5]) + + getLevelForXP(player.playerXP[6]) + + getLevelForXP(player.playerXP[7]) + + getLevelForXP(player.playerXP[8]) + + getLevelForXP(player.playerXP[9]) + + getLevelForXP(player.playerXP[10]) + + getLevelForXP(player.playerXP[11]) + + getLevelForXP(player.playerXP[12]) + + getLevelForXP(player.playerXP[13]) + + getLevelForXP(player.playerXP[14]) + + getLevelForXP(player.playerXP[15]) + + getLevelForXP(player.playerXP[16]) + + getLevelForXP(player.playerXP[17]) + + getLevelForXP(player.playerXP[18]) + + getLevelForXP(player.playerXP[19]) + + getLevelForXP(player.playerXP[20]); + } + + public void levelUp(int skill) { + SkillHandler.resetSkills(player); + player.getPacketSender().sendFrame126("Total Lvl: " + getTotalLevel(), 3984); + switch (skill) { + case 0: + player.getPacketSender().sendFrame126("Congratulations, you just advanced an attack level!", + 6248); + player.getPacketSender().sendFrame126("Your attack level is now " + + getLevelForXP(player.playerXP[skill]) + ".", 6249); + player.getPacketSender().sendMessage( + "Congratulations, you just advanced an attack level."); + player.getPacketSender().sendChatInterface(6247); + break; + + case 1: + player.getPacketSender().sendFrame126("Congratulations, you just advanced a defence level!", + 6254); + player.getPacketSender().sendFrame126("Your defence level is now " + + getLevelForXP(player.playerXP[skill]) + ".", 6255); + player.getPacketSender().sendMessage( + "Congratulations, you just advanced a defence level."); + player.getPacketSender().sendChatInterface(6253); + break; + + case 2: + player.getPacketSender().sendFrame126("Congratulations, you just advanced a strength level!", + 6207); + player.getPacketSender().sendFrame126("Your strength level is now " + + getLevelForXP(player.playerXP[skill]) + ".", 6208); + player.getPacketSender().sendMessage( + "Congratulations, you just advanced a strength level."); + player.getPacketSender().sendChatInterface(6206); + break; + + case 3: + player.getPacketSender().sendFrame126("Congratulations, you just advanced a hitpoints level!", + 6217); + player.getPacketSender().sendFrame126("Your hitpoints level is now " + + getLevelForXP(player.playerXP[skill]) + ".", 6218); + player.getPacketSender().sendMessage( + "Congratulations, you just advanced a hitpoints level."); + player.getPacketSender().sendChatInterface(6216); + if (player.playerLevel[3] < player.getPlayerAssistant() + .getLevelForXP(player.playerXP[3])) { + player.playerLevel[3] += 1; + } + refreshSkill(3); + break; + + case 4: + player.getPacketSender().sendFrame126("Congratulations, you just advanced a ranged level!", + 5453); + player.getPacketSender().sendFrame126("Your ranged level is now " + + getLevelForXP(player.playerXP[skill]) + ".", 6114); + player.getPacketSender().sendMessage( + "Congratulations, you just advanced a ranging level."); + player.getPacketSender().sendChatInterface(4443); + break; + + case 5: + player.getPacketSender().sendFrame126("Congratulations, you just advanced a prayer level!", + 6243); + player.getPacketSender().sendFrame126("Your prayer level is now " + + getLevelForXP(player.playerXP[skill]) + ".", 6244); + player.getPacketSender().sendMessage( + "Congratulations, you just advanced a prayer level."); + player.getPacketSender().sendChatInterface(6242); + break; + + case 6: + player.getPacketSender().sendFrame126("Congratulations, you just advanced a magic level!", + 6212); + player.getPacketSender().sendFrame126("Your magic level is now " + + getLevelForXP(player.playerXP[skill]) + ".", 6213); + player.getPacketSender().sendMessage( + "Congratulations, you just advanced a magic level."); + player.getPacketSender().sendChatInterface(6211); + break; + + case 7: + player.getPacketSender().sendFrame126("Congratulations, you just advanced a cooking level!", + 6227); + player.getPacketSender().sendFrame126("Your cooking level is now " + + getLevelForXP(player.playerXP[skill]) + ".", 6228); + player.getPacketSender().sendMessage( + "Congratulations, you just advanced a cooking level."); + player.getPacketSender().sendChatInterface(6226); + break; + + case 8: + player.getPacketSender().sendFrame126( + "Congratulations, you just advanced a woodcutting level!", + 4273); + player.getPacketSender().sendFrame126("Your woodcutting level is now " + + getLevelForXP(player.playerXP[skill]) + ".", 4274); + player.getPacketSender().sendMessage( + "Congratulations, you just advanced a woodcutting level."); + player.getPacketSender().sendChatInterface(4272); + break; + + case 9: + player.getPacketSender().sendFrame126("Congratulations, you just advanced a fletching level!", + 6232); + player.getPacketSender().sendFrame126("Your fletching level is now " + + getLevelForXP(player.playerXP[skill]) + ".", 6233); + player.getPacketSender().sendMessage( + "Congratulations, you just advanced a fletching level."); + player.getPacketSender().sendChatInterface(6231); + break; + + case 10: + player.getPacketSender().sendFrame126("Congratulations, you just advanced a fishing level!", + 6259); + player.getPacketSender().sendFrame126("Your fishing level is now " + + getLevelForXP(player.playerXP[skill]) + ".", 6260); + player.getPacketSender().sendMessage( + "Congratulations, you just advanced a fishing level."); + player.getPacketSender().sendChatInterface(6258); + break; + + case 11: + player.getPacketSender().sendFrame126( + "Congratulations, you just advanced a fire making level!", + 4283); + player.getPacketSender().sendFrame126("Your firemaking level is now " + + getLevelForXP(player.playerXP[skill]) + ".", 4284); + player.getPacketSender().sendMessage( + "Congratulations, you just advanced a fire making level."); + player.getPacketSender().sendChatInterface(4282); + break; + + case 12: + player.getPacketSender().sendFrame126("Congratulations, you just advanced a crafting level!", + 6264); + player.getPacketSender().sendFrame126("Your crafting level is now " + + getLevelForXP(player.playerXP[skill]) + ".", 6265); + player.getPacketSender().sendMessage( + "Congratulations, you just advanced a crafting level."); + player.getPacketSender().sendChatInterface(6263); + break; + + case 13: + player.getPacketSender().sendFrame126("Congratulations, you just advanced a smithing level!", + 6222); + player.getPacketSender().sendFrame126("Your smithing level is now " + + getLevelForXP(player.playerXP[skill]) + ".", 6223); + player.getPacketSender().sendMessage( + "Congratulations, you just advanced a smithing level."); + player.getPacketSender().sendChatInterface(6221); + break; + + case 14: + player.getPacketSender().sendFrame126("Congratulations, you just advanced a mining level!", + 4417); + player.getPacketSender().sendFrame126("Your mining level is now " + + getLevelForXP(player.playerXP[skill]) + ".", 4438); + player.getPacketSender().sendMessage( + "Congratulations, you just advanced a mining level."); + player.getPacketSender().sendChatInterface(4416); + break; + + case 15: + player.getPacketSender().sendFrame126("Congratulations, you just advanced a herblore level!", + 6238); + player.getPacketSender().sendFrame126("Your herblore level is now " + + getLevelForXP(player.playerXP[skill]) + ".", 6239); + player.getPacketSender().sendMessage( + "Congratulations, you just advanced a herblore level."); + player.getPacketSender().sendChatInterface(6237); + break; + + case 16: + player.getPacketSender().sendFrame126("Congratulations, you just advanced a agility level!", + 4278); + player.getPacketSender().sendFrame126("Your agility level is now " + + getLevelForXP(player.playerXP[skill]) + ".", 4279); + player.getPacketSender().sendMessage( + "Congratulations, you just advanced an agility level."); + player.getPacketSender().sendChatInterface(4277); + break; + + case 17: + player.getPacketSender().sendFrame126("Congratulations, you just advanced a thieving level!", + 4263); + player.getPacketSender().sendFrame126("Your theiving level is now " + + getLevelForXP(player.playerXP[skill]) + ".", 4264); + player.getPacketSender().sendMessage( + "Congratulations, you just advanced a thieving level."); + player.getPacketSender().sendChatInterface(4261); + break; + + case 18: + player.getPacketSender().sendFrame126("Congratulations, you just advanced a slayer level!", + 12123); + player.getPacketSender().sendFrame126("Your slayer level is now " + + getLevelForXP(player.playerXP[skill]) + ".", 12124); + player.getPacketSender().sendMessage( + "Congratulations, you just advanced a slayer level."); + player.getPacketSender().sendChatInterface(12122); + break; + + case 20: + player.getPacketSender().sendFrame126( + "Congratulations, you just advanced a runecrafting level!", + 4268); + player.getPacketSender().sendFrame126("Your runecrafting level is now " + + getLevelForXP(player.playerXP[skill]) + ".", 4269); + player.getPacketSender().sendMessage( + "Congratulations, you just advanced a runecrafting level."); + player.getPacketSender().sendChatInterface(4267); + break; + } + player.dialogueAction = 0; + player.nextChat = 0; + } + + public void refreshSkill(int i) { + switch (i) { + case 0: + player.getPacketSender().sendFrame126("" + player.playerLevel[0] + "", 4004); + player.getPacketSender().sendFrame126("" + getLevelForXP(player.playerXP[0]) + "", 4005); + player.getPacketSender().sendFrame126("" + player.playerXP[0] + "", 4044); + player.getPacketSender().sendFrame126( + "" + getXPForLevel(getLevelForXP(player.playerXP[0]) + 1) + + "", 4045); + break; + + case 1: + player.getPacketSender().sendFrame126("" + player.playerLevel[1] + "", 4008); + player.getPacketSender().sendFrame126("" + getLevelForXP(player.playerXP[1]) + "", 4009); + player.getPacketSender().sendFrame126("" + player.playerXP[1] + "", 4056); + player.getPacketSender().sendFrame126( + "" + getXPForLevel(getLevelForXP(player.playerXP[1]) + 1) + + "", 4057); + break; + + case 2: + player.getPacketSender().sendFrame126("" + player.playerLevel[2] + "", 4006); + player.getPacketSender().sendFrame126("" + getLevelForXP(player.playerXP[2]) + "", 4007); + player.getPacketSender().sendFrame126("" + player.playerXP[2] + "", 4050); + player.getPacketSender().sendFrame126( + "" + getXPForLevel(getLevelForXP(player.playerXP[2]) + 1) + + "", 4051); + break; + + case 3: + player.getPacketSender().sendFrame126("" + player.playerLevel[3] + "", 4016); + player.getPacketSender().sendFrame126("" + getLevelForXP(player.playerXP[3]) + "", 4017); + player.getPacketSender().sendFrame126("" + player.playerXP[3] + "", 4080); + player.getPacketSender().sendFrame126( + "" + getXPForLevel(getLevelForXP(player.playerXP[3]) + 1) + + "", 4081); + break; + + case 4: + player.getPacketSender().sendFrame126("" + player.playerLevel[4] + "", 4010); + player.getPacketSender().sendFrame126("" + getLevelForXP(player.playerXP[4]) + "", 4011); + player.getPacketSender().sendFrame126("" + player.playerXP[4] + "", 4062); + player.getPacketSender().sendFrame126( + "" + getXPForLevel(getLevelForXP(player.playerXP[4]) + 1) + + "", 4063); + break; + + case 5: + player.getPacketSender().sendFrame126("" + player.playerLevel[5] + "", 4012); + player.getPacketSender().sendFrame126("" + getLevelForXP(player.playerXP[5]) + "", 4013); + player.getPacketSender().sendFrame126("" + player.playerXP[5] + "", 4068); + player.getPacketSender().sendFrame126( + "" + getXPForLevel(getLevelForXP(player.playerXP[5]) + 1) + + "", 4069); + player.getPacketSender().sendFrame126("" + player.playerLevel[5] + "/" + + getLevelForXP(player.playerXP[5]) + "", 687);// Prayer + // frame + break; + + case 6: + player.getPacketSender().sendFrame126("" + player.playerLevel[6] + "", 4014); + player.getPacketSender().sendFrame126("" + getLevelForXP(player.playerXP[6]) + "", 4015); + player.getPacketSender().sendFrame126("" + player.playerXP[6] + "", 4074); + player.getPacketSender().sendFrame126( + "" + getXPForLevel(getLevelForXP(player.playerXP[6]) + 1) + + "", 4075); + break; + + case 7: + player.getPacketSender().sendFrame126("" + player.playerLevel[7] + "", 4034); + player.getPacketSender().sendFrame126("" + getLevelForXP(player.playerXP[7]) + "", 4035); + player.getPacketSender().sendFrame126("" + player.playerXP[7] + "", 4134); + player.getPacketSender().sendFrame126( + "" + getXPForLevel(getLevelForXP(player.playerXP[7]) + 1) + + "", 4135); + break; + + case 8: + player.getPacketSender().sendFrame126("" + player.playerLevel[8] + "", 4038); + player.getPacketSender().sendFrame126("" + getLevelForXP(player.playerXP[8]) + "", 4039); + player.getPacketSender().sendFrame126("" + player.playerXP[8] + "", 4146); + player.getPacketSender().sendFrame126( + "" + getXPForLevel(getLevelForXP(player.playerXP[8]) + 1) + + "", 4147); + break; + + case 9: + player.getPacketSender().sendFrame126("" + player.playerLevel[9] + "", 4026); + player.getPacketSender().sendFrame126("" + getLevelForXP(player.playerXP[9]) + "", 4027); + player.getPacketSender().sendFrame126("" + player.playerXP[9] + "", 4110); + player.getPacketSender().sendFrame126( + "" + getXPForLevel(getLevelForXP(player.playerXP[9]) + 1) + + "", 4111); + break; + + case 10: + player.getPacketSender().sendFrame126("" + player.playerLevel[10] + "", 4032); + player.getPacketSender().sendFrame126("" + getLevelForXP(player.playerXP[10]) + "", 4033); + player.getPacketSender().sendFrame126("" + player.playerXP[10] + "", 4128); + player.getPacketSender().sendFrame126("" + + getXPForLevel(getLevelForXP(player.playerXP[10]) + 1) + + "", 4129); + break; + + case 11: + player.getPacketSender().sendFrame126("" + player.playerLevel[11] + "", 4036); + player.getPacketSender().sendFrame126("" + getLevelForXP(player.playerXP[11]) + "", 4037); + player.getPacketSender().sendFrame126("" + player.playerXP[11] + "", 4140); + player.getPacketSender().sendFrame126("" + + getXPForLevel(getLevelForXP(player.playerXP[11]) + 1) + + "", 4141); + break; + + case 12: + player.getPacketSender().sendFrame126("" + player.playerLevel[12] + "", 4024); + player.getPacketSender().sendFrame126("" + getLevelForXP(player.playerXP[12]) + "", 4025); + player.getPacketSender().sendFrame126("" + player.playerXP[12] + "", 4104); + player.getPacketSender().sendFrame126("" + + getXPForLevel(getLevelForXP(player.playerXP[12]) + 1) + + "", 4105); + break; + + case 13: + player.getPacketSender().sendFrame126("" + player.playerLevel[13] + "", 4030); + player.getPacketSender().sendFrame126("" + getLevelForXP(player.playerXP[13]) + "", 4031); + player.getPacketSender().sendFrame126("" + player.playerXP[13] + "", 4122); + player.getPacketSender().sendFrame126("" + + getXPForLevel(getLevelForXP(player.playerXP[13]) + 1) + + "", 4123); + break; + + case 14: + player.getPacketSender().sendFrame126("" + player.playerLevel[14] + "", 4028); + player.getPacketSender().sendFrame126("" + getLevelForXP(player.playerXP[14]) + "", 4029); + player.getPacketSender().sendFrame126("" + player.playerXP[14] + "", 4116); + player.getPacketSender().sendFrame126("" + + getXPForLevel(getLevelForXP(player.playerXP[14]) + 1) + + "", 4117); + break; + + case 15: + player.getPacketSender().sendFrame126("" + player.playerLevel[15] + "", 4020); + player.getPacketSender().sendFrame126("" + getLevelForXP(player.playerXP[15]) + "", 4021); + player.getPacketSender().sendFrame126("" + player.playerXP[15] + "", 4092); + player.getPacketSender().sendFrame126("" + + getXPForLevel(getLevelForXP(player.playerXP[15]) + 1) + + "", 4093); + break; + + case 16: + player.getPacketSender().sendFrame126("" + player.playerLevel[16] + "", 4018); + player.getPacketSender().sendFrame126("" + getLevelForXP(player.playerXP[16]) + "", 4019); + player.getPacketSender().sendFrame126("" + player.playerXP[16] + "", 4086); + player.getPacketSender().sendFrame126("" + + getXPForLevel(getLevelForXP(player.playerXP[16]) + 1) + + "", 4087); + break; + + case 17: + player.getPacketSender().sendFrame126("" + player.playerLevel[17] + "", 4022); + player.getPacketSender().sendFrame126("" + getLevelForXP(player.playerXP[17]) + "", 4023); + player.getPacketSender().sendFrame126("" + player.playerXP[17] + "", 4098); + player.getPacketSender().sendFrame126("" + + getXPForLevel(getLevelForXP(player.playerXP[17]) + 1) + + "", 4099); + break; + + case 18: + player.getPacketSender().sendFrame126("" + player.playerLevel[18] + "", 12166); + player.getPacketSender().sendFrame126("" + getLevelForXP(player.playerXP[18]) + "", 12167); + player.getPacketSender().sendFrame126("" + player.playerXP[18] + "", 12171); + player.getPacketSender().sendFrame126("" + + getXPForLevel(getLevelForXP(player.playerXP[18]) + 1) + + "", 12172); + break; + + case 19: + player.getPacketSender().sendFrame126("" + player.playerLevel[19] + "", 13926); + player.getPacketSender().sendFrame126("" + getLevelForXP(player.playerXP[19]) + "", 13927); + player.getPacketSender().sendFrame126("" + player.playerXP[19] + "", 13921); + player.getPacketSender().sendFrame126("" + + getXPForLevel(getLevelForXP(player.playerXP[19]) + 1) + + "", 13922); + break; + + case 20: + player.getPacketSender().sendFrame126("" + player.playerLevel[20] + "", 4152); + player.getPacketSender().sendFrame126("" + getLevelForXP(player.playerXP[20]) + "", 4153); + player.getPacketSender().sendFrame126("" + player.playerXP[20] + "", 4157); + player.getPacketSender().sendFrame126("" + + getXPForLevel(getLevelForXP(player.playerXP[20]) + 1) + + "", 4158); + break; + } + } + + public int getXPForLevel(int level) { + int points = 0; + int output = 0; + + for (int lvl = 1; lvl <= level; lvl++) { + points += Math.floor(lvl + 300.0 * Math.pow(2.0, lvl / 7.0)); + if (lvl >= level) { + return output; + } + output = (int) Math.floor(points / 4); + } + return 0; + } + + public int getLevelForXP(int exp) { + int points = 0; + int output = 0; + if (exp > 13034430) { + return 99; + } + for (int lvl = 1; lvl <= 99; lvl++) { + points += Math.floor(lvl + 300.0 * Math.pow(2.0, lvl / 7.0)); + output = (int) Math.floor(points / 4); + if (output >= exp) { + return lvl; + } + } + return 0; + } + + public boolean addSkillXP(int amount, int skill) { + if (amount + player.playerXP[skill] < 0 + || player.playerXP[skill] > 200000000) { + if (player.playerXP[skill] > 200000000) { + player.playerXP[skill] = 200000000; + } + return false; + } + if (player.tutorialProgress < 36 && player.playerLevel[skill] == 3 && GameConstants.TUTORIAL_ISLAND == true) { + return false; + } + amount *= GameConstants.XP_RATE; + int oldLevel = getLevelForXP(player.playerXP[skill]); + player.playerXP[skill] += amount; + if (oldLevel < getLevelForXP(player.playerXP[skill])) { + if (player.playerLevel[skill] < player + .getLevelForXP(player.playerXP[skill]) + && skill != 3 + && skill != 5) { + player.playerLevel[skill] = player + .getLevelForXP(player.playerXP[skill]); + } + levelUp(skill); + player.gfx100(199); + requestUpdates(); + } + player.getPacketSender().setSkillLevel(skill, + player.playerLevel[skill], player.playerXP[skill]); + refreshSkill(skill); + return true; + } + + public boolean addNormalXpRate(int amount, int skill) { + if (amount + player.playerXP[skill] < 0 || player.playerXP[skill] > 200000000) { + if (player.playerXP[skill] > 200000000) { + player.playerXP[skill] = 200000000; + } + return false; + } + amount *= 1; + int oldLevel = getLevelForXP(player.playerXP[skill]); + player.playerXP[skill] += amount; + if (oldLevel < getLevelForXP(player.playerXP[skill])) { + if (player.playerLevel[skill] < player.getLevelForXP(player.playerXP[skill]) && skill != 3 && skill != 5) { + player.playerLevel[skill] = player.getLevelForXP(player.playerXP[skill]); + } + levelUp(skill); + player.gfx100(199); + requestUpdates(); + } + player.getPacketSender().setSkillLevel(skill, + player.playerLevel[skill], player.playerXP[skill]); + refreshSkill(skill); + return true; + } + + public boolean addSkillXP(double amount, int skill) { + if (amount + player.playerXP[skill] < 0 + || player.playerXP[skill] > 200000000) { + if (player.playerXP[skill] > 200000000) { + player.playerXP[skill] = 200000000; + } + return false; + } + if (player.tutorialProgress < 36 && player.playerLevel[skill] == 3 + && GameConstants.TUTORIAL_ISLAND == true) { + return false; + } + amount *= GameConstants.XP_RATE; + int oldLevel = getLevelForXP(player.playerXP[skill]); + player.playerXP[skill] += amount; + if (oldLevel < getLevelForXP(player.playerXP[skill])) { + if (player.playerLevel[skill] < player + .getLevelForXP(player.playerXP[skill]) + && skill != 3 + && skill != 5) { + player.playerLevel[skill] = player + .getLevelForXP(player.playerXP[skill]); + } + levelUp(skill); + player.gfx100(199); + requestUpdates(); + } + player.getPacketSender().setSkillLevel(skill, + player.playerLevel[skill], player.playerXP[skill]); + refreshSkill(skill); + return true; + } + + public void resetBarrows() { + player.barrowsNpcs[0][1] = 0; + player.barrowsNpcs[1][1] = 0; + player.barrowsNpcs[2][1] = 0; + player.barrowsNpcs[3][1] = 0; + player.barrowsNpcs[4][1] = 0; + player.barrowsNpcs[5][1] = 0; + player.barrowsKillCount = 0; + player.randomCoffin = Misc.random(3) + 1; + } + + public static int Barrows[] = { 4708, 4710, 4712, 4714, 4716, 4718, 4720, + 4722, 4724, 4726, 4728, 4730, 4732, 4734, 4736, 4738, 4745, 4747, + 4749, 4751, 4753, 4755, 4757, 4759 }; + + public static final int[][] RUNES = { { 560, 1, 1 }, { 565, 1, 2 }, + { 562, 1, 3 }, { 558, 1, 4 } }; + + public static final int[] POTS = { 165, 147, 159 }; + + public int randomBarrows() { + return Barrows[(int) (Math.random() * Barrows.length)]; + } + + public void randomRunes() { + for (int[] element : RUNES) { + int item = element[0]; + int amount = element[1]; + int chance = element[2]; + if (Misc.random(5) == chance) { + player.getItemAssistant().addItem(item, amount); + } + } + } + + public int randomPots() { + return POTS[(int) (Math.random() * POTS.length)]; + } + + public int getNpcId(int id) { + for (int i = 0; i < NpcHandler.MAX_NPCS; i++) { + if (NpcHandler.npcs[i] != null) { + if (NpcHandler.npcs[i].npcId == id) { + return i; + } + } + } + return -1; + } + + public void removeObject(int x, int y) { + player.getPacketSender().object(-1, x, x, 10, 10); + } + + public void objectToRemove(int X, int Y) { + player.getPacketSender().object(-1, X, Y, 10, 10); + } + + private void objectToRemove2(int X, int Y) { + player.getPacketSender().object(-1, X, Y, -1, 0); + } + + public void removeObjects() { + objectToRemove(2638, 4688); + objectToRemove2(2635, 4693); + objectToRemove2(2634, 4693); + } + + public boolean inPitsWait() { + return player.getX() <= 2404 && player.getX() >= 2394 + && player.getY() <= 5175 && player.getY() >= 5169; + } + + public int antiFire() { + int toReturn = 0; + if (player.antiFirePot) { + toReturn++; + } + if (player.playerEquipment[player.playerShield] == 1540 + || player.playerEquipment[player.playerShield] == 11284 + || player.playerEquipment[player.playerShield] == 11283) { + toReturn++; + } + return toReturn; + } + + public boolean checkForFlags() { + int[][] itemsToCheck = { { 995, 100000000 }, { 35, 5 }, { 667, 5 }, + { 2402, 5 }, { 746, 5 }, { 4151, 150 }, { 565, 100000 }, + { 560, 100000 }, { 555, 300000 } }; + for (int[] element : itemsToCheck) { + if (element[1] < player.getItemAssistant() + .getTotalCount(element[0])) { + return true; + } + } + return false; + } + + public int getWearingAmount() { + int count = 0; + for (int element : player.playerEquipment) { + if (element > 0) { + count++; + } + } + return count; + } + + public void useOperate(int itemId) { + switch (itemId) { + case 11283: + case 11284: + if (player.playerIndex > 0) { + player.getCombatAssistant().handleDfs(); + } else if (player.npcIndex > 0) { + player.getCombatAssistant().handleDfsNPC(); + } + break; + } + } + + public void getSpeared(int otherX, int otherY) { + int x = player.absX - otherX; + int y = player.absY - otherY; + if (x > 0) { + x = 1; + } else if (x < 0) { + x = -1; + } + if (y > 0) { + y = 1; + } else if (y < 0) { + y = -1; + } + moveCheck(x, y); + player.lastSpear = System.currentTimeMillis(); + } + + public void moveCheck(int xMove, int yMove) { + movePlayer(player.absX + xMove, player.absY + yMove, player.heightLevel); + } + + public int findKiller() { + int killer = player.playerId; + int damage = 0; + for (int j = 0; j < PlayerHandler.players.length; j++) { + if (PlayerHandler.players[j] == null) { + continue; + } + if (j == player.playerId) { + continue; + } + if (player.goodDistance(player.absX, player.absY, + PlayerHandler.players[j].absX, + PlayerHandler.players[j].absY, 40) + || player.goodDistance(player.absX, player.absY + 9400, + PlayerHandler.players[j].absX, + PlayerHandler.players[j].absY, 40) + || player.goodDistance(player.absX, player.absY, + PlayerHandler.players[j].absX, + PlayerHandler.players[j].absY + 9400, 40)) { + if (player.damageTaken[j] > damage) { + damage = player.damageTaken[j]; + killer = j; + } + } + } + return killer; + } + + public void appendPoison(int damage) { + if (player.duelStatus == 5 || player.isDead) { + player.poisonDamage = 0; + return; + } + if (System.currentTimeMillis() - player.lastPoisonSip > player.poisonImmune && player.poison == false) { + player.getPacketSender().sendMessage("You have been poisoned."); + player.poisonDamage = damage; + player.poison = true; + } + if (player.poisonDamage == 0 && player.isDead == false) { + player.getPacketSender().sendMessage("The poison has worn off."); + player.poison = false; + } + } + + public boolean checkForPlayer(int x, int y) { + for (Player p : PlayerHandler.players) { + if (p != null) { + if (p.getX() == x && p.getY() == y) { + return true; + } + } + } + return false; + } + + public void checkPouch(int i) { + if (i < 0) { + return; + } + player.getPacketSender().sendMessage( + "This pouch has " + player.pouches[i] + " rune ess in it."); + } + + public void fillPouch(int i) { + if (i < 0) { + return; + } + int toAdd = player.POUCH_SIZE[i] - player.pouches[i]; + if (toAdd > player.getItemAssistant().getItemAmount(1436)) { + toAdd = player.getItemAssistant().getItemAmount(1436); + } + if (toAdd > player.POUCH_SIZE[i] - player.pouches[i]) { + toAdd = player.POUCH_SIZE[i] - player.pouches[i]; + } + if (toAdd > 0) { + player.getItemAssistant().deleteItem(1436, toAdd); + player.pouches[i] += toAdd; + } + } + + public void emptyPouch(int i) { + if (i < 0) { + return; + } + int toAdd = player.pouches[i]; + if (toAdd > player.getItemAssistant().freeSlots()) { + toAdd = player.getItemAssistant().freeSlots(); + } + if (toAdd > 0) { + player.getItemAssistant().addItem(1436, toAdd); + player.pouches[i] -= toAdd; + } + } + + public void fixAllBarrows() { + int totalCost = 0; + int cashAmount = player.getItemAssistant().getItemAmount(995); + for (int j = 0; j < player.playerItems.length; j++) { + boolean breakOut = false; + for (int[] brokenBarrow : player.getItemAssistant().brokenBarrows) { + if (player.playerItems[j] - 1 == brokenBarrow[1]) { + if (totalCost + 80000 > cashAmount) { + breakOut = true; + player.getPacketSender().sendMessage( + "You have run out of money."); + break; + } else { + totalCost += 80000; + } + player.playerItems[j] = brokenBarrow[0] + 1; + } + } + if (breakOut) { + break; + } + } + if (totalCost > 0) { + player.getItemAssistant().deleteItem(995, + player.getItemAssistant().getItemSlot(995), totalCost); + } + } + + public void handleWeaponStyle() { + if (player.fightMode == 0) { + player.getPacketSender().sendConfig(43, player.fightMode); + } else if (player.fightMode == 1) { + player.getPacketSender().sendConfig(43, 3); + } else if (player.fightMode == 2) { + player.getPacketSender().sendConfig(43, 1); + } else if (player.fightMode == 3) { + player.getPacketSender().sendConfig(43, 2); + } + } + + public int totalGold() { + return player.getItemAssistant().getBankQuantitiy(996) + player.getItemAssistant().getItemAmount(995); + } +} diff --git a/2006Redone Server/src/redone/game/players/PlayerHandler.java b/2006Redone Server/src/com/rebotted/game/players/PlayerHandler.java similarity index 86% rename from 2006Redone Server/src/redone/game/players/PlayerHandler.java rename to 2006Redone Server/src/com/rebotted/game/players/PlayerHandler.java index 39ce21a9..afdd3c11 100644 --- a/2006Redone Server/src/redone/game/players/PlayerHandler.java +++ b/2006Redone Server/src/com/rebotted/game/players/PlayerHandler.java @@ -1,408 +1,405 @@ -package redone.game.players; - -import java.net.InetSocketAddress; -import redone.Constants; -import redone.Server; -import redone.event.CycleEventHandler; -import redone.game.content.minigames.castlewars.CastleWars; -import redone.game.npcs.Npc; -import redone.game.npcs.NpcHandler; -import redone.util.Misc; -import redone.util.Stream; -import redone.world.GlobalDropsHandler; - -public class PlayerHandler { - - public static Player players[] = new Player[Constants.MAX_PLAYERS]; - public static int playerCount = 0, playerBotCount = 0; - public static String playersCurrentlyOn[] = new String[Constants.MAX_PLAYERS]; - public static boolean updateAnnounced; - public static boolean updateRunning; - public static int updateSeconds; - public static long updateStartTime; - private boolean kickAllPlayers = false; - - static { - for (int i = 0; i < Constants.MAX_PLAYERS; i++) { - players[i] = null; - } - } - - public boolean newPlayerClient(Client client1) { - int slot = -1; - for (int i = 1; i < Constants.MAX_PLAYERS; i++) { - if (players[i] == null || players[i].disconnected) { - slot = i; - break; - } - } - if (slot == -1) { - return false; - } - client1.handler = this; - client1.playerId = slot; - players[slot] = client1; - players[slot].isActive = true; - players[slot].connectedFrom = client1.isBot ? "127.0.0.1" : ((InetSocketAddress) client1.getSession().getRemoteAddress()).getAddress().getHostAddress(); - if (Constants.SERVER_DEBUG) { - Misc.println("Player Slot " + slot + " slot 0 " + players[0] - + " Player Hit " + players[slot]); - } - return true; - } - - public static int getPlayerCount() { - return playerCount; - } - - public static int getPlayerBotCount() { - return playerBotCount; - } - - public void updatePlayerNames() { - playerBotCount = 0; - playerCount = 0; - for (int i = 0; i < Constants.MAX_PLAYERS; i++) { - if (players[i] != null) { - playersCurrentlyOn[i] = players[i].playerName; - if (players[i].isBot) - playerBotCount++; - else - playerCount++; - } else { - playersCurrentlyOn[i] = ""; - } - } - } - - public static int getPlayerID(String playerName) { - for (int i = 0; i < PlayerHandler.players.length; i++) { - if (playersCurrentlyOn[i] != null) { - if (playersCurrentlyOn[i].equalsIgnoreCase(playerName)) { - return i; - } - } - } - return -1; - } - - public static boolean isPlayerOn(String playerName) { - // synchronized (PlayerHandler.players) { - for (int i = 0; i < PlayerHandler.players.length; i++) { - if (playersCurrentlyOn[i] != null) { - if (playersCurrentlyOn[i].equalsIgnoreCase(playerName)) { - return true; - } - } - } - return false; - } - - public void process() { - // synchronized (PlayerHandler.players) { - updatePlayerNames(); - if (kickAllPlayers) { - for (int i = 0; i < PlayerHandler.players.length; i++) { - if (players[i] != null) { - players[i].disconnected = true; - } - } - } - for (int i = 0; i < PlayerHandler.players.length; i++) { - if (players[i] == null || !players[i].isActive) { - continue; - } - try { - - Client t = (Client) PlayerHandler.players[i]; - if (players[i].disconnected) { - if (players[i].playerEquipment[t.playerCape] == 4042 - || players[i].playerEquipment[t.playerCape] == 4041) { - CastleWars.deleteGameItems(t); - } - PlayerSave.saveGame(t); - } - - if (players[i].disconnected - && (System.currentTimeMillis() - players[i].logoutDelay > 10000 - || players[i].properLogout || kickAllPlayers)) { - if (players[i].inTrade) { - Client o = (Client) PlayerHandler.players[players[i].tradeWith]; - if (o != null) { - o.getTrading().declineTrade(); - } - } - if(Server.trawler.players.contains(this)) { - Server.trawler.players.remove(this); - } - players[i].lastX = players[i].absX; - players[i].lastY = players[i].absY; - players[i].lastH = players[i].heightLevel; - if (players[i].hasNpc == true) { - t.getSummon().pickUpClean(t, players[i].summonId); - } - if (players[i].duelStatus == 5) { - Client o = (Client) PlayerHandler.players[players[i].duelingWith]; - if (o != null) { - o.getDueling().duelVictory(); - } - } else if (players[i].duelStatus <= 4 - && players[i].duelStatus >= 1) { - Client o = (Client) PlayerHandler.players[players[i].duelingWith]; - if (o != null) { - o.getDueling().declineDuel(); - } - } - Client o = (Client) PlayerHandler.players[i]; - if (PlayerSave.saveGame(o)) { - System.out.println("Game saved for player " - + players[i].playerName); - } else { - System.out.println("Could not save for " - + players[i].playerName); - } - removePlayer(players[i]); - players[i] = null; - continue; - } - - - while (players[i].processQueuedPackets()) { - ; - } - - players[i].process(); - players[i].postProcessing(); - players[i].getNextPlayerMovement(); - players[i].preProcessing(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - - for (int i = 0; i < PlayerHandler.players.length; i++) { - if (players[i] == null || !players[i].isActive) { - continue; - } - try { - Client t = (Client) PlayerHandler.players[i]; - if (players[i].disconnected) { - if (players[i].playerEquipment[t.playerCape] == 4042 - || players[i].playerEquipment[t.playerCape] == 4041) { - CastleWars.deleteGameItems(t); - } - PlayerSave.saveGame(t); - } - if (players[i].disconnected - && (System.currentTimeMillis() - players[i].logoutDelay > 10000 - || players[i].properLogout || kickAllPlayers)) { - if (players[i].inTrade) { - Client o = (Client) PlayerHandler.players[players[i].tradeWith]; - if (o != null) { - o.getTrading().declineTrade(); - } - } - if(Server.trawler.players.contains(this)) { - Server.trawler.players.remove(this); - } - players[i].lastX = players[i].absX; - players[i].lastY = players[i].absY; - players[i].lastH = players[i].heightLevel; - if (players[i].hasNpc == true) { - t.getSummon().pickUpClean(t, players[i].summonId); - } - if (players[i].duelStatus == 5) { - Client o1 = (Client) PlayerHandler.players[players[i].duelingWith]; - if (o1 != null) { - o1.getDueling().duelVictory(); - } - } else if (players[i].duelStatus <= 4 - && players[i].duelStatus >= 1) { - Client o1 = (Client) PlayerHandler.players[players[i].duelingWith]; - if (o1 != null) { - o1.getDueling().declineDuel(); - } - } - - Client o1 = (Client) PlayerHandler.players[i]; - if (PlayerSave.saveGame(o1)) { - System.out.println("Game saved for player " - + players[i].playerName); - } else { - System.out.println("Could not save for " - + players[i].playerName); - } - removePlayer(players[i]); - players[i] = null; - } else { - if (!players[i].initialized) { - players[i].initialize(); - players[i].initialized = true; - } else { - players[i].update(); - } - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - if (updateRunning && !updateAnnounced) { - updateAnnounced = true; - Server.UpdateServer = true; - } - if (updateRunning - && System.currentTimeMillis() - updateStartTime > updateSeconds * 1000) { - kickAllPlayers = true; - } - - for (int i = 0; i < PlayerHandler.players.length; i++) { - if (players[i] == null || !players[i].isActive) { - continue; - } - try { - players[i].clearUpdateFlags(); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - - public void updateNPC(Player plr, Stream str) { - // synchronized(plr) { - updateBlock.currentOffset = 0; - if (str != null) { - str.createFrameVarSizeWord(65); - str.initBitAccess(); - - str.writeBits(8, plr.npcListSize); - } - int size = plr.npcListSize; - plr.npcListSize = 0; - for (int i = 0; i < size; i++) { - if (plr.RebuildNPCList == false && plr.withinDistance(plr.npcList[i]) == true) { - plr.npcList[i].updateNPCMovement(str); - plr.npcList[i].appendNPCUpdateBlock(updateBlock); - plr.npcList[plr.npcListSize++] = plr.npcList[i]; - } else { - int id = plr.npcList[i].npcId; - plr.npcInListBitmap[id >> 3] &= ~(1 << (id & 7)); - if (str != null) { - str.writeBits(1, 1); - str.writeBits(2, 3); - } - } - } - for (Npc i : NpcHandler.npcs) { - if (i != null) { - int id = i.npcId; - if (plr.RebuildNPCList == false - && (plr.npcInListBitmap[id >> 3] & 1 << (id & 7)) != 0) { - } else if (plr.withinDistance(i) == false) { - } else { - plr.addNewNPC(i, str, updateBlock); - } - } - } - - plr.RebuildNPCList = false; - - if (str != null) { - if (updateBlock.currentOffset > 0) { - str.writeBits(14, 16383); - str.finishBitAccess(); - str.writeBytes(updateBlock.buffer, updateBlock.currentOffset, 0); - } else { - str.finishBitAccess(); - } - str.endFrameVarSizeWord(); - } - } - - private final Stream updateBlock = new Stream( - new byte[Constants.BUFFER_SIZE]); - - public void updatePlayer(Player plr, Stream outStr) { - // synchronized(plr) { - updateBlock.currentOffset = 0; - if (updateRunning && !updateAnnounced && outStr != null) { - outStr.createFrame(114); - outStr.writeWordBigEndian(updateSeconds * 50 / 30); - } - plr.updateThisPlayerMovement(outStr); - boolean saveChatTextUpdate = plr.isChatTextUpdateRequired(); - plr.setChatTextUpdateRequired(false); - plr.appendPlayerUpdateBlock(updateBlock); - plr.setChatTextUpdateRequired(saveChatTextUpdate); - if (outStr != null) { - outStr.writeBits(8, plr.playerListSize); - } - int size = plr.playerListSize; - if (size > 255) { - size = 255; - } - plr.playerListSize = 0; - for (int i = 0; i < size; i++) { - if (!plr.didTeleport && !plr.playerList[i].didTeleport - && plr.withinDistance(plr.playerList[i])) { - plr.playerList[i].updatePlayerMovement(outStr); - plr.playerList[i].appendPlayerUpdateBlock(updateBlock); - plr.playerList[plr.playerListSize++] = plr.playerList[i]; - } else { - int id = plr.playerList[i].playerId; - plr.playerInListBitmap[id >> 3] &= ~(1 << (id & 7)); - - if (outStr != null) { - outStr.writeBits(1, 1); - outStr.writeBits(2, 3); - } - } - } - for (int i = 0; i < PlayerHandler.players.length; i++) { - if (players[i] == null || !players[i].isActive || players[i] == plr) { - continue; - } - int id = players[i].playerId; - if ((plr.playerInListBitmap[id >> 3] & 1 << (id & 7)) != 0) { - continue; - } - if (!plr.withinDistance(players[i])) { - continue; - } - plr.addNewPlayer(players[i], outStr, updateBlock); - } - if (outStr != null) { - if (updateBlock.currentOffset > 0) { - outStr.writeBits(11, 2047); - outStr.finishBitAccess(); - outStr.writeBytes(updateBlock.buffer, updateBlock.currentOffset, 0); - } else { - outStr.finishBitAccess(); - } - - outStr.endFrameVarSizeWord(); - } - - if (plr.refresh) { - GlobalDropsHandler.reset((Client)plr); - plr.refresh = false; - } - } - - private void removePlayer(Player plr) { - if (plr.privateChat != 2) { - for (int i = 1; i < PlayerHandler.players.length; i++) { - if (players[i] == null || players[i].isActive == false) { - continue; - } - Client o = (Client) PlayerHandler.players[i]; - if (o != null) { - o.getPlayerAssistant().updatePM(plr.playerId, 0); - } - } - } - plr.destruct(); - } - -} +package com.rebotted.game.players; + +import java.net.InetSocketAddress; +import com.rebotted.GameConstants; +import com.rebotted.GameEngine; +import com.rebotted.game.content.minigames.castlewars.CastleWars; +import com.rebotted.game.npcs.Npc; +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.util.Misc; +import com.rebotted.util.Stream; +import com.rebotted.world.GlobalDropsHandler; + +public class PlayerHandler { + + public static Player players[] = new Player[GameConstants.MAX_PLAYERS]; + public static int playerCount = 0, playerBotCount = 0; + public static String playersCurrentlyOn[] = new String[GameConstants.MAX_PLAYERS]; + public static boolean updateAnnounced; + public static boolean updateRunning; + public static int updateSeconds; + public static long updateStartTime; + private boolean kickAllPlayers = false; + + static { + for (int i = 0; i < GameConstants.MAX_PLAYERS; i++) { + players[i] = null; + } + } + + public boolean newPlayerClient(Client client1) { + int slot = -1; + for (int i = 1; i < GameConstants.MAX_PLAYERS; i++) { + if (players[i] == null || players[i].disconnected) { + slot = i; + break; + } + } + if (slot == -1) { + return false; + } + client1.handler = this; + client1.playerId = slot; + players[slot] = client1; + players[slot].isActive = true; + players[slot].connectedFrom = client1.isBot ? "127.0.0.1" : ((InetSocketAddress) client1.getSession().getRemoteAddress()).getAddress().getHostAddress(); + if (GameConstants.SERVER_DEBUG) { + Misc.println("Player Slot " + slot + " slot 0 " + players[0] + + " Player Hit " + players[slot]); + } + return true; + } + + public static int getPlayerCount() { + return playerCount; + } + + public static int getPlayerBotCount() { + return playerBotCount; + } + + public void updatePlayerNames() { + playerBotCount = 0; + playerCount = 0; + for (int i = 0; i < GameConstants.MAX_PLAYERS; i++) { + if (players[i] != null) { + playersCurrentlyOn[i] = players[i].playerName; + if (players[i].isBot) + playerBotCount++; + else + playerCount++; + } else { + playersCurrentlyOn[i] = ""; + } + } + } + + public static int getPlayerID(String playerName) { + for (int i = 0; i < PlayerHandler.players.length; i++) { + if (playersCurrentlyOn[i] != null) { + if (playersCurrentlyOn[i].equalsIgnoreCase(playerName)) { + return i; + } + } + } + return -1; + } + + public static boolean isPlayerOn(String playerName) { + // synchronized (PlayerHandler.players) { + for (int i = 0; i < PlayerHandler.players.length; i++) { + if (playersCurrentlyOn[i] != null) { + if (playersCurrentlyOn[i].equalsIgnoreCase(playerName)) { + return true; + } + } + } + return false; + } + + public void process() { + // synchronized (PlayerHandler.players) { + updatePlayerNames(); + if (kickAllPlayers) { + for (int i = 0; i < PlayerHandler.players.length; i++) { + if (players[i] != null) { + players[i].disconnected = true; + } + } + } + for (int i = 0; i < PlayerHandler.players.length; i++) { + if (players[i] == null || !players[i].isActive) { + continue; + } + try { + + Client t = (Client) PlayerHandler.players[i]; + if (players[i].disconnected) { + if (players[i].playerEquipment[t.playerCape] == 4042 + || players[i].playerEquipment[t.playerCape] == 4041) { + CastleWars.deleteGameItems(t); + } + PlayerSave.saveGame(t); + } + + if (players[i].disconnected + && (System.currentTimeMillis() - players[i].logoutDelay > 10000 + || players[i].properLogout || kickAllPlayers)) { + if (players[i].inTrade) { + Client o = (Client) PlayerHandler.players[players[i].tradeWith]; + if (o != null) { + o.getTrading().declineTrade(); + } + } + if(GameEngine.trawler.players.contains(players[i])) { + GameEngine.trawler.players.remove(players[i]); + } + players[i].lastX = players[i].absX; + players[i].lastY = players[i].absY; + players[i].lastH = players[i].heightLevel; + if (players[i].hasNpc == true) { + t.getSummon().pickUpClean(t, players[i].summonId); + } + if (players[i].duelStatus == 5) { + Client o = (Client) PlayerHandler.players[players[i].duelingWith]; + if (o != null) { + o.getDueling().duelVictory(); + } + } else if (players[i].duelStatus <= 4 + && players[i].duelStatus >= 1) { + Client o = (Client) PlayerHandler.players[players[i].duelingWith]; + if (o != null) { + o.getDueling().declineDuel(); + } + } + Client o = (Client) PlayerHandler.players[i]; + if (PlayerSave.saveGame(o)) { + System.out.println("Game saved for player " + + players[i].playerName); + } else { + System.out.println("Could not save for " + + players[i].playerName); + } + removePlayer(players[i]); + players[i] = null; + continue; + } + + + while (players[i].processQueuedPackets()) { + ; + } + + players[i].process(); + players[i].postProcessing(); + players[i].getNextPlayerMovement(); + players[i].preProcessing(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + + for (int i = 0; i < PlayerHandler.players.length; i++) { + if (players[i] == null || !players[i].isActive) { + continue; + } + try { + Client t = (Client) PlayerHandler.players[i]; + if (players[i].disconnected) { + if (players[i].playerEquipment[t.playerCape] == 4042 + || players[i].playerEquipment[t.playerCape] == 4041) { + CastleWars.deleteGameItems(t); + } + PlayerSave.saveGame(t); + } + if (players[i].disconnected + && (System.currentTimeMillis() - players[i].logoutDelay > 10000 + || players[i].properLogout || kickAllPlayers)) { + if (players[i].inTrade) { + Client o = (Client) PlayerHandler.players[players[i].tradeWith]; + if (o != null) { + o.getTrading().declineTrade(); + } + } + if(GameEngine.trawler.players.contains(players[i])) { + GameEngine.trawler.players.remove(players[i]); + } + players[i].lastX = players[i].absX; + players[i].lastY = players[i].absY; + players[i].lastH = players[i].heightLevel; + if (players[i].hasNpc == true) { + t.getSummon().pickUpClean(t, players[i].summonId); + } + if (players[i].duelStatus == 5) { + Client o1 = (Client) PlayerHandler.players[players[i].duelingWith]; + if (o1 != null) { + o1.getDueling().duelVictory(); + } + } else if (players[i].duelStatus <= 4 + && players[i].duelStatus >= 1) { + Client o1 = (Client) PlayerHandler.players[players[i].duelingWith]; + if (o1 != null) { + o1.getDueling().declineDuel(); + } + } + + Client o1 = (Client) PlayerHandler.players[i]; + if (PlayerSave.saveGame(o1)) { + System.out.println("Game saved for player " + players[i].playerName); + } else { + System.out.println("Could not save for " + players[i].playerName); + } + removePlayer(players[i]); + players[i] = null; + } else { + if (!players[i].initialized) { + players[i].loginPlayer(); + players[i].initialized = true; + } else { + players[i].update(); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + if (updateRunning && !updateAnnounced) { + updateAnnounced = true; + GameEngine.UpdateServer = true; + } + if (updateRunning + && System.currentTimeMillis() - updateStartTime > updateSeconds * 1000) { + kickAllPlayers = true; + } + + for (int i = 0; i < PlayerHandler.players.length; i++) { + if (players[i] == null || !players[i].isActive) { + continue; + } + try { + players[i].clearUpdateFlags(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + public void updateNPC(Player plr, Stream str) { + // synchronized(plr) { + updateBlock.currentOffset = 0; + if (str != null) { + str.createFrameVarSizeWord(65); + str.initBitAccess(); + + str.writeBits(8, plr.npcListSize); + } + int size = plr.npcListSize; + plr.npcListSize = 0; + for (int i = 0; i < size; i++) { + if (plr.RebuildNPCList == false && plr.withinDistance(plr.npcList[i]) == true) { + plr.npcList[i].updateNPCMovement(str); + plr.npcList[i].appendNPCUpdateBlock(updateBlock); + plr.npcList[plr.npcListSize++] = plr.npcList[i]; + } else { + int id = plr.npcList[i].npcId; + plr.npcInListBitmap[id >> 3] &= ~(1 << (id & 7)); + if (str != null) { + str.writeBits(1, 1); + str.writeBits(2, 3); + } + } + } + for (Npc i : NpcHandler.npcs) { + if (i != null) { + int id = i.npcId; + if (plr.RebuildNPCList == false + && (plr.npcInListBitmap[id >> 3] & 1 << (id & 7)) != 0) { + } else if (plr.withinDistance(i) == false) { + } else { + plr.addNewNPC(i, str, updateBlock); + } + } + } + + plr.RebuildNPCList = false; + + if (str != null) { + if (updateBlock.currentOffset > 0) { + str.writeBits(14, 16383); + str.finishBitAccess(); + str.writeBytes(updateBlock.buffer, updateBlock.currentOffset, 0); + } else { + str.finishBitAccess(); + } + str.endFrameVarSizeWord(); + } + } + + private final Stream updateBlock = new Stream( + new byte[GameConstants.BUFFER_SIZE]); + + public void updatePlayer(Player plr, Stream outStr) { + // synchronized(plr) { + updateBlock.currentOffset = 0; + if (updateRunning && !updateAnnounced && outStr != null) { + outStr.createFrame(114); + outStr.writeWordBigEndian(updateSeconds * 50 / 30); + } + plr.updateThisPlayerMovement(outStr); + boolean saveChatTextUpdate = plr.isChatTextUpdateRequired(); + plr.setChatTextUpdateRequired(false); + plr.appendPlayerUpdateBlock(updateBlock); + plr.setChatTextUpdateRequired(saveChatTextUpdate); + if (outStr != null) { + outStr.writeBits(8, plr.playerListSize); + } + int size = plr.playerListSize; + if (size > 255) { + size = 255; + } + plr.playerListSize = 0; + for (int i = 0; i < size; i++) { + if (!plr.didTeleport && !plr.playerList[i].didTeleport + && plr.withinDistance(plr.playerList[i])) { + plr.playerList[i].updatePlayerMovement(outStr); + plr.playerList[i].appendPlayerUpdateBlock(updateBlock); + plr.playerList[plr.playerListSize++] = plr.playerList[i]; + } else { + int id = plr.playerList[i].playerId; + plr.playerInListBitmap[id >> 3] &= ~(1 << (id & 7)); + + if (outStr != null) { + outStr.writeBits(1, 1); + outStr.writeBits(2, 3); + } + } + } + for (int i = 0; i < PlayerHandler.players.length; i++) { + if (players[i] == null || !players[i].isActive || players[i] == plr) { + continue; + } + int id = players[i].playerId; + if ((plr.playerInListBitmap[id >> 3] & 1 << (id & 7)) != 0) { + continue; + } + if (!plr.withinDistance(players[i])) { + continue; + } + plr.addNewPlayer(players[i], outStr, updateBlock); + } + if (outStr != null) { + if (updateBlock.currentOffset > 0) { + outStr.writeBits(11, 2047); + outStr.finishBitAccess(); + outStr.writeBytes(updateBlock.buffer, updateBlock.currentOffset, 0); + } else { + outStr.finishBitAccess(); + } + + outStr.endFrameVarSizeWord(); + } + + if (plr.refresh) { + GlobalDropsHandler.reset((Client)plr); + plr.refresh = false; + } + } + + private void removePlayer(Player plr) { + if (plr.privateChat != 2) { + for (int i = 1; i < PlayerHandler.players.length; i++) { + if (players[i] == null || players[i].isActive == false) { + continue; + } + Client o = (Client) PlayerHandler.players[i]; + if (o != null) { + o.getPlayerAssistant().updatePM(plr.playerId, 0); + } + } + } + plr.destruct(); + } + +} diff --git a/2006Redone Server/src/redone/game/players/PlayerSave.java b/2006Redone Server/src/com/rebotted/game/players/PlayerSave.java similarity index 94% rename from 2006Redone Server/src/redone/game/players/PlayerSave.java rename to 2006Redone Server/src/com/rebotted/game/players/PlayerSave.java index 0705421f..84ef1240 100644 --- a/2006Redone Server/src/redone/game/players/PlayerSave.java +++ b/2006Redone Server/src/com/rebotted/game/players/PlayerSave.java @@ -1,861 +1,846 @@ -package redone.game.players; - -import java.io.*; -import java.nio.charset.StandardCharsets; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; -import java.util.Base64; - -import redone.util.Misc; - -public class PlayerSave { - - /** - * Loading - **/ - public static int loadGame(Client player, String playerName, String playerPass) { - return loadPlayerInfo(player, playerName, playerPass, true); - } - - public static int loadPlayerInfo(Client player, String playerName, String playerPass, boolean doRealLogin) { - String line = ""; - String token = ""; - String token2 = ""; - String[] token3 = new String[3]; - boolean EndOfFile = false; - int ReadMode = 0; - BufferedReader characterfile = null; - boolean File1 = false; - - try { - characterfile = new BufferedReader(new FileReader(System.getProperty("user.dir") + "/data/characters/" + player.playerName + ".txt")); - File1 = true; - } catch (FileNotFoundException fileex1) { - } - - if (File1) { - // new File ("./characters/"+playerName+".txt"); - } else { - if (playerName.equals("")) - { - //it's the .gitignore :P - return 0; - } - Misc.println(playerName + ": character file not found."); - player.newPlayer = false; - return 0; - } - try { - line = characterfile.readLine(); - } catch (IOException ioexception) { - Misc.println(playerName + ": error loading file."); - return 3; - } - while (EndOfFile == false && line != null) { - line = line.trim(); - int spot = line.indexOf("="); - if (spot > -1) { - token = line.substring(0, spot); - token = token.trim(); - token2 = line.substring(spot + 1); - token2 = token2.trim(); - token3 = token2.split("\t+"); - switch (ReadMode) { - case 1: - if (!doRealLogin) - break; - if (token.equals("character-password")) { - if (playerPass.equalsIgnoreCase(token2)) { - // Hash their password and store it! - playerPass = passwordHash(token2); - } else if (passwordHash(playerPass).equalsIgnoreCase(token2)) { - playerPass = token2; //Valid password - } else { - System.out.println("hash doesn't match: " + passwordHash(playerPass).toLowerCase()); - System.out.println("currently is: " + passwordHash(token2).toLowerCase()); - return 3; //Invalid password - } - } - break; - case 2: - switch (token) { - case "character-height": - player.heightLevel = Integer.parseInt(token2); - break; - case "character-posx": - player.teleportToX = Integer.parseInt(token2) <= 0 ? player.lastX : Integer.parseInt(token2); - break; - case "character-posy": - player.teleportToY = Integer.parseInt(token2) <= 0 ? player.lastY : Integer.parseInt(token2); - break; - case "character-rights": - player.playerRights = Integer.parseInt(token2); - break; - case "isBot": - player.isBot = Boolean.parseBoolean(token2); - break; - case "blackMarks": - player.blackMarks = Integer.parseInt(token2); - break; - case "lostCannon": - player.lostCannon = Boolean.parseBoolean(token2); - break; - case "myBalls": - player.getCannon().myBalls = Integer.parseInt(token2); - break; - case "cannonX": - player.cannonX = Integer.parseInt(token2); - break; - case "cannonY": - player.cannonY = Integer.parseInt(token2); - break; - case "removedTask0": - player.removedTasks[0] = Integer.parseInt(token2); - break; - case "removedTask1": - player.removedTasks[1] = Integer.parseInt(token2); - break; - case "removedTask2": - player.removedTasks[2] = Integer.parseInt(token2); - break; - case "removedTask3": - player.removedTasks[3] = Integer.parseInt(token2); - break; - case "SlayerMaster": - player.SlayerMaster = Integer.parseInt(token2); - break; - case "slayerTask": - player.slayerTask = Integer.parseInt(token2); - break; - case "slayerPoints": - player.slayerPoints = Integer.parseInt(token2); - break; - case "taskAmount": - player.taskAmount = Integer.parseInt(token2); - break; - case "cw-games": - player.cwGames = Integer.parseInt(token2); - break; - case "crystal-bow-shots": - player.crystalBowArrowCount = Integer.parseInt(token2); - break; - case "randomActions": - player.randomActions = Integer.parseInt(token2); - break; - case "debugMode": - player.debugMode = Boolean.parseBoolean(token2); - break; - case "global-damage": - player.globalDamageDealt = Integer.parseInt(token2); - break; - case "skull-timer": - player.skullTimer = Integer.parseInt(token2); - break; - case "recoilHits": - player.recoilHits = Integer.parseInt(token2); - break; - case "brightness": - player.brightness = Integer.parseInt(token2); - break; - case "spiritTree": - player.spiritTree = Boolean.parseBoolean(token2); - break; - case "npcCanAttack": - player.npcCanAttack = Boolean.parseBoolean(token2); - break; - case "rope": - player.rope = Boolean.parseBoolean(token2); - break; - case "rope2": - player.rope2 = Boolean.parseBoolean(token2); - break; - case "recievedMask": - player.recievedMask = Boolean.parseBoolean(token2); - break; - case "recievedReward": - player.recievedReward = Boolean.parseBoolean(token2); - break; - case "splitChat": - player.splitChat = Boolean.parseBoolean(token2); - break; - case "hasPaid": - player.hasPaid = Boolean.parseBoolean(token2); - break; - case "poison": - player.poison = Boolean.parseBoolean(token2); - break; - case "closeTutorialInterface": - player.closeTutorialInterface = Boolean - .parseBoolean(token2); - break; - case "canWalkTutorial": - player.canWalkTutorial = Boolean.parseBoolean(token2); - break; - case "needsNewTask": - player.needsNewTask = Boolean.parseBoolean(token2); - break; - case "isBotting": - player.isBotting = Boolean.parseBoolean(token2); - break; - case "musicOn": - player.musicOn = Boolean.parseBoolean(token2); - break; - case "barrowsNpcs": - player.barrowsNpcs[Integer.parseInt(token3[0])][1] = Integer.parseInt(token3[1]); - break; - case "summonId": - player.summonId = Integer.parseInt(token2); - break; - case "has-npc": - player.hasNpc = Boolean.parseBoolean(token2); - break; - case "barrowsKillCount": - player.barrowsKillCount = Integer.parseInt(token2); - break; - case "luthas": - player.luthas = Boolean.parseBoolean(token2); - break; - case "village": - player.village = Boolean.parseBoolean(token2); - break; - case "lastThieve": - player.lastThieve = Long.parseLong(token2); - break; - case "homeTele": - player.homeTele = Long.parseLong(token2); - break; - case "tutorial-progress": - player.tutorialProgress = Integer.parseInt(token2); - break; - case "strongHold": - player.strongHold = Boolean.parseBoolean(token2); - break; - case "filter": - player.filter = Boolean.parseBoolean(token2); - break; - case "ratdied2": - player.ratdied2 = Boolean.parseBoolean(token2); - break; - case "randomToggle": - player.randomEventsEnabled = Boolean.parseBoolean(token2); - break; - case "questStages": - player.questStages = Integer.parseInt(token2); - break; - case "cookAss": - player.cookAss = Integer.parseInt(token2); - break; - case "bananas": - player.bananas = Integer.parseInt(token2); - break; - case "sheepShear": - player.sheepShear = Integer.parseInt(token2); - break; - case "runeMist": - player.runeMist = Integer.parseInt(token2); - break; - case "dragonSlayerQuestStage": - player.dragonSlayerQuestStage = Integer.parseInt(token2); - break; - case "doricQuest": - player.doricQuest = Integer.parseInt(token2); - break; - case "blackKnight": - player.blackKnight = Integer.parseInt(token2); - break; - case "shieldArrav": - player.shieldArrav = Integer.parseInt(token2); - break; - case "pirateTreasure": - player.pirateTreasure = Integer.parseInt(token2); - break; - case "romeo-juliet": - player.romeojuliet = Integer.parseInt(token2); - break; - case "vampSlayer": - player.vampSlayer = Integer.parseInt(token2); - break; - case "gertCat": - player.gertCat = Integer.parseInt(token2); - break; - case "witchspot": - player.witchspot = Integer.parseInt(token2); - break; - case "restGhost": - player.restGhost = Integer.parseInt(token2); - break; - case "impsC": - player.impsC = Integer.parseInt(token2); - break; - case "knightS": - player.knightS = Integer.parseInt(token2); - break; - case "lastX": - player.lastX = Integer.parseInt(token2); - break; - case "lastY": - player.lastY = Integer.parseInt(token2); - break; - case "lastH": - player.lastH = Integer.parseInt(token2); - break; - case "hasStarter": - player.hasStarter = Boolean.parseBoolean(token2); - break; - case "thankedForDonation": - player.thankedForDonation = Integer.parseInt(token2); - break; - case "membership": - player.membership = Boolean.parseBoolean(token2); - break; - case "canSpeak": - player.canSpeak = Boolean.parseBoolean(token2); - break; - case "questPoints": - player.questPoints = Integer.parseInt(token2); - break; - case "votePoints": - player.votePoints = Integer.parseInt(token2); - break; - case "magic-book": - player.playerMagicBook = Integer.parseInt(token2); - break; - case "special-amount": - player.specAmount = Double.parseDouble(token2); - break; - case "selected-coffin": - player.randomCoffin = Integer.parseInt(token2); - break; - case "isRunning": - player.isRunning2 = Boolean.parseBoolean(token2); - break; - case "character-energy": - player.playerEnergy = Integer.parseInt(token2); - break; - case "teleblock-length": - player.teleBlockDelay = System.currentTimeMillis(); - player.teleBlockLength = Integer.parseInt(token2); - break; - case "lastYell": - player.lastYell = Long.parseLong(token2); - break; - case "pc-points": - player.pcPoints = Integer.parseInt(token2); - break; - case "magePoints": - player.magePoints = Integer.parseInt(token2); - break; - case "autoRet": - player.autoRet = Integer.parseInt(token2); - break; - case "flagged": - player.accountFlagged = Boolean.parseBoolean(token2); - break; - case "lastLoginDate": - player.lastLoginDate = Integer.parseInt(token2); - break; - case "hasBankpin": - player.hasBankpin = Boolean.parseBoolean(token2); - break; - case "setPin": - player.setPin = Boolean.parseBoolean(token2); - break; - case "pinRegisteredDeleteDay": - player.pinDeleteDateRequested = Integer.parseInt(token2); - break; - case "requestPinDelete": - player.requestPinDelete = Boolean.parseBoolean(token2); - break; - case "bankPin1": - player.bankPin1 = Integer.parseInt(token2); - break; - case "bankPin2": - player.bankPin2 = Integer.parseInt(token2); - break; - case "bankPin3": - player.bankPin3 = Integer.parseInt(token2); - break; - case "bankPin4": - player.bankPin4 = Integer.parseInt(token2); - break; - case "wave": - player.waveId = Integer.parseInt(token2); - break; - case "ptjob": - player.ptjob = Integer.parseInt(token2); - break; - case "creationAddress": - player.creationAddress = token2; - break; - case "music": - for (int j = 0; j < token3.length; j++) { - player.getPlayList().unlocked[j] = Boolean.parseBoolean(token3[j]); - } - break; - case "void": - for (int j = 0; j < token3.length; j++) { - player.voidStatus[j] = Integer.parseInt(token3[j]); - } - break; - case "gwkc": - player.killCount = Integer.parseInt(token2); - break; - case "fightMode": - player.fightMode = Integer.parseInt(token2); - break; - } - break; - case 3: - if (token.equals("character-equip")) { - player.playerEquipment[Integer.parseInt(token3[0])] = Integer.parseInt(token3[1]); - player.playerEquipmentN[Integer.parseInt(token3[0])] = Integer.parseInt(token3[2]); - } - break; - case 4: - if (token.equals("character-look")) { - player.playerAppearance[Integer.parseInt(token3[0])] = Integer .parseInt(token3[1]); - } - break; - case 5: - if (token.equals("character-skill")) { - player.playerLevel[Integer.parseInt(token3[0])] = Integer.parseInt(token3[1]); - player.playerXP[Integer.parseInt(token3[0])] = Integer.parseInt(token3[2]); - } - break; - case 6: - if (token.equals("character-item")) { - player.playerItems[Integer.parseInt(token3[0])] = Integer.parseInt(token3[1]); - player.playerItemsN[Integer.parseInt(token3[0])] = Integer.parseInt(token3[2]); - } - break; - case 7: - if (token.equals("character-bank")) { - player.bankItems[Integer.parseInt(token3[0])] = Integer.parseInt(token3[1]); - player.bankItemsN[Integer.parseInt(token3[0])] = Integer.parseInt(token3[2]); - player.bankItemsV[Integer.parseInt(token3[0])] = token3.length > 3 ? Integer.parseInt(token3[3]) : 1; - } - break; - case 8: - if (token.equals("character-friend")) { - player.friends[Integer.parseInt(token3[0])] = Long.parseLong(token3[1]); - } - break; - case 9: - if (token.equals("character-ignore")) { - player.ignores[Integer.parseInt(token3[0])] = Long.parseLong(token3[1]); - } - break; - } - } else { - switch (line) { - case "[ACCOUNT]": - ReadMode = 1; - break; - case "[CHARACTER]": - ReadMode = 2; - break; - case "[EQUIPMENT]": - ReadMode = 3; - break; - case "[LOOK]": - ReadMode = 4; - break; - case "[SKILLS]": - ReadMode = 5; - break; - case "[ITEMS]": - ReadMode = 6; - break; - case "[BANK]": - ReadMode = 7; - break; - case "[FRIENDS]": - ReadMode = 8; - break; - case "[IGNORES]": - ReadMode = 9; - break; - case "[EOF]": - try { - characterfile.close(); - } catch (IOException ignored) { - } - return 1; - } - } - try { - line = characterfile.readLine(); - } catch (IOException ioexception1) { - EndOfFile = true; - } - } - try { - characterfile.close(); - } catch (IOException ignored) { - } - if (doRealLogin) - return 13; - else - return 14; - } - - private static String passwordHash(String token2) { - String hashed = "HAS HAS FAILED!"; - try { - MessageDigest digest = MessageDigest.getInstance("MD5"); - byte[] hash = digest.digest(token2.getBytes(StandardCharsets.UTF_8)); - - hashed = Base64.getEncoder().encodeToString(hash); - - digest = MessageDigest.getInstance("SHA-256"); - hash = digest.digest(hashed.getBytes(StandardCharsets.UTF_8)); - - hashed = Base64.getEncoder().encodeToString(hash); - } catch (NoSuchAlgorithmException e) { - e.printStackTrace(); - } - return hashed; - } - - /** - * Saving - **/ - public static boolean saveGame(Client player) { - if (!player.saveFile || player.newPlayer || !player.saveCharacter) { - // System.out.println("first"); - return false; - } - if (player.playerName == null - || PlayerHandler.players[player.playerId] == null) { - // System.out.println("second"); - return false; - } - player.playerName = player.playerName2; - int tbTime = (int) (player.teleBlockDelay - System.currentTimeMillis() + player.teleBlockLength); - if (tbTime > 300000 || tbTime < 0) { - tbTime = 0; - } - - BufferedWriter characterfile = null; - try { - String filePath = System.getProperty("user.dir") + "/data/characters/" + player.playerName + ".txt"; - new File(filePath).getParentFile().mkdir(); - characterfile = new BufferedWriter(new FileWriter(filePath)); - - /* ACCOUNT */ - characterfile.write("[ACCOUNT]"); - characterfile.newLine(); - characterfile.write("character-username = " + player.playerName); - characterfile.newLine(); - if (player.playerRights == 0) { - if (player.playerPass.length() < 40) { - player.playerPass = passwordHash(player.playerPass); - } - characterfile.write("character-password = " + player.playerPass); - characterfile.newLine(); - } - characterfile.newLine(); - - /* CHARACTER */ - characterfile.write("[CHARACTER]"); - characterfile.newLine(); - characterfile.write("character-height = " + player.heightLevel); - characterfile.newLine(); - characterfile.write("character-posx = " + player.absX); - characterfile.newLine(); - characterfile.write("character-posy = " + player.absY); - characterfile.newLine(); - characterfile.write("character-rights = " + player.playerRights); - characterfile.newLine(); - characterfile.write("isBot = " + player.isBot); - characterfile.newLine(); - characterfile.write("hasStarter = " + player.hasStarter); - characterfile.newLine(); - characterfile.write("bankPin1 = " + player.bankPin1); - characterfile.newLine(); - characterfile.write("bankPin2 = " + player.bankPin2); - characterfile.newLine(); - characterfile.write("bankPin3 = " + player.bankPin3); - characterfile.newLine(); - characterfile.write("bankPin4 = " + player.bankPin4); - characterfile.newLine(); - characterfile.write("hasBankpin = " + player.hasBankpin); - characterfile.newLine(); - characterfile.write("pinRegisteredDeleteDay = " + player.pinDeleteDateRequested); - characterfile.newLine(); - characterfile.write("requestPinDelete = " + player.requestPinDelete); - characterfile.newLine(); - characterfile.write("lastLoginDate = " + player.lastLoginDate); - characterfile.newLine(); - characterfile.write("setPin = " + player.setPin); - characterfile.newLine(); - characterfile.write("hasPaid = " + player.hasPaid); - characterfile.newLine(); - characterfile.write("lostCannon = " + player.lostCannon); - characterfile.newLine(); - characterfile.write("cannonX = " + player.cannonX); - characterfile.newLine(); - characterfile.write("cannonY = " + player.cannonY); - characterfile.newLine(); - characterfile.write("myBalls = " + player.getCannon().myBalls); - characterfile.newLine(); - characterfile.write("poison = " + player.poison); - characterfile.newLine(); - characterfile.write("spiritTree = " + player.spiritTree); - characterfile.newLine(); - characterfile.write("npcCanAttack = " + player.npcCanAttack); - characterfile.newLine(); - characterfile.write("rope = " + player.rope); - characterfile.newLine(); - characterfile.write("rope2 = " + player.rope2); - characterfile.newLine(); - characterfile.write("recievedMask = " + player.recievedMask); - characterfile.newLine(); - characterfile.write("recievedReward = " + player.recievedReward); - characterfile.newLine(); - characterfile.write("isBotting = " + player.isBotting); - characterfile.newLine(); - characterfile.write("global-damage = " + player.globalDamageDealt); - characterfile.newLine(); - characterfile.write("brightness = " + player.brightness); - characterfile.newLine(); - characterfile.write("closeTutorialInterface = " + player.closeTutorialInterface); - characterfile.newLine(); - characterfile.write("canWalkTutorial = " + player.canWalkTutorial); - characterfile.newLine(); - characterfile.write("village = " + player.village); - characterfile.newLine(); - characterfile.write("lastThieve = " + player.lastThieve); - characterfile.newLine(); - characterfile.write("homeTele = " + player.homeTele); - characterfile.newLine(); - characterfile.write("strongHold = " + player.strongHold); - characterfile.newLine(); - characterfile.write("character-energy = " + (int) Math.ceil(player.playerEnergy)); - characterfile.newLine(); - characterfile.write("crystal-bow-shots = " + player.crystalBowArrowCount); - characterfile.newLine(); - characterfile.write("splitChat = " + player.splitChat); - characterfile.newLine(); - characterfile.write("canSpeak = " + player.canSpeak); - characterfile.newLine(); - for (int b = 0; b < player.barrowsNpcs.length; b++) { - characterfile.write("barrowsNpcs = " + b + "\t" + Math.max(0, player.barrowsNpcs[b][1])); - characterfile.newLine(); - } - characterfile.write("questStages = " + player.questStages); - characterfile.newLine(); - characterfile.write("SlayerMaster = " + player.SlayerMaster); - characterfile.newLine(); - String music = ""; - for (boolean element : player.getPlayList().unlocked) { - music += element + "\t"; - } - characterfile.write("music = " + music.trim()); - characterfile.newLine(); - characterfile.write("randomActions = " + player.randomActions); - characterfile.newLine(); - characterfile.write("blackMarks = " + player.blackMarks); - characterfile.newLine(); - characterfile.write("tutorial-progress = " + player.tutorialProgress); - characterfile.newLine(); - characterfile.write("skull-timer = " + player.skullTimer); - characterfile.newLine(); - characterfile.write("recoilHits = " + player.recoilHits); - characterfile.newLine(); - characterfile.write("lastX = " + player.lastX); - characterfile.newLine(); - characterfile.write("lastY = " + player.lastY); - characterfile.newLine(); - characterfile.write("lastH = " + player.lastH); - characterfile.newLine(); - for (int i = 0; i < player.removedTasks.length; i++) { - characterfile.write("removedTask" + i + " = " + player.removedTasks[i]); - characterfile.newLine(); - } - characterfile.write("creationAddress = " + player.creationAddress); - characterfile.newLine(); - characterfile.write("has-npc = " + player.hasNpc); - characterfile.newLine(); - characterfile.write("summonId = " + player.summonId); - characterfile.newLine(); - characterfile.write("thankedForDonation = " + player.thankedForDonation); - characterfile.newLine(); - characterfile.write("membership = " + player.membership); - characterfile.newLine(); - characterfile.write("questPoints = " + player.questPoints); - characterfile.newLine(); - characterfile.write("votePoints = " + player.votePoints); - characterfile.newLine(); - characterfile.write("bananas = " + player.bananas); - characterfile.newLine(); - characterfile.write("magic-book = " + player.playerMagicBook); - characterfile.newLine(); - characterfile.write("special-amount = " + player.specAmount); - characterfile.newLine(); - characterfile.write("musicOn = " + player.musicOn); - characterfile.newLine(); - characterfile.write("needsNewTask = " + player.needsNewTask); - characterfile.newLine(); - characterfile.write("luthas = " + player.luthas); - characterfile.newLine(); - characterfile.write("selected-coffin = " + player.randomCoffin); - characterfile.newLine(); - characterfile.write("runeMist = " + player.runeMist); - characterfile.newLine(); - characterfile.write("blackKnight = " + player.blackKnight); - characterfile.newLine(); - characterfile.write("shieldArrav = " + player.shieldArrav); - characterfile.newLine(); - characterfile.write("cookAss = " + player.cookAss); - characterfile.newLine(); - characterfile.write("pirateTreasure = " + player.pirateTreasure); - characterfile.newLine(); - characterfile.write("ptjob = " + player.ptjob); - characterfile.newLine(); - characterfile.write("doricQuest = " + player.doricQuest); - characterfile.newLine(); - characterfile.write("dragonSlayerQuestStage = " + player.dragonSlayerQuestStage); - characterfile.newLine(); - characterfile.write("impsC = " + player.impsC); - characterfile.newLine(); - characterfile.write("knightS = " + player.knightS); - characterfile.newLine(); - characterfile.write("sheepShear = " + player.sheepShear); - characterfile.newLine(); - characterfile.write("romeo-juliet = " + player.romeojuliet); - characterfile.newLine(); - characterfile.write("gertCat = " + player.gertCat); - characterfile.newLine(); - characterfile.write("cw-games = " + player.cwGames); - characterfile.newLine(); - characterfile.write("witchspot = " + player.witchspot); - characterfile.newLine(); - characterfile.write("restGhost = " + player.restGhost); - characterfile.newLine(); - characterfile.write("vampSlayer = " + player.vampSlayer); - characterfile.newLine(); - characterfile.write("RatDied2 = " + player.ratdied2); - characterfile.newLine(); - characterfile.write("debugMode = " + player.debugMode); - characterfile.newLine(); - characterfile.write("randomToggle = " + player.randomEventsEnabled); - characterfile.newLine(); - characterfile.write("teleblock-length = " + tbTime); - characterfile.newLine(); - characterfile.write("pc-points = " + player.pcPoints); - characterfile.newLine(); - characterfile.write("lastYell = " + player.lastYell); - characterfile.newLine(); - characterfile.write("slayerTask = " + player.slayerTask); - characterfile.newLine(); - characterfile.write("taskAmount = " + player.taskAmount); - characterfile.newLine(); - characterfile.write("magePoints = " + player.magePoints); - characterfile.newLine(); - characterfile.write("autoRet = " + player.autoRet); - characterfile.newLine(); - characterfile.write("barrowsKillCount = " + player.barrowsKillCount); - characterfile.newLine(); - characterfile.write("slayerPoints = " + player.slayerPoints); - characterfile.newLine(); - characterfile.write("flagged = " + player.accountFlagged); - characterfile.newLine(); - characterfile.write("wave = " + player.waveId); - characterfile.newLine(); - characterfile.write("gwkc = " + player.killCount); - characterfile.newLine(); - characterfile.write("isRunning = " + player.isRunning2); - characterfile.newLine(); - characterfile.write("fightMode = " + player.fightMode); - characterfile.newLine(); - String voidStatus = ""; - for (int voidS : player.voidStatus){ - voidStatus += voidS + "\t"; - } - characterfile.write("void = " + voidStatus.trim()); - characterfile.newLine(); - characterfile.newLine(); - - /* EQUIPMENT */ - characterfile.write("[EQUIPMENT]"); - characterfile.newLine(); - for (int i = 0; i < player.playerEquipment.length; i++) { - characterfile.write("character-equip = " + i + "\t" + player.playerEquipment[i] + "\t" + player.playerEquipmentN[i]); - characterfile.newLine(); - } - characterfile.newLine(); - - /* LOOK */ - characterfile.write("[LOOK]"); - characterfile.newLine(); - for (int i = 0; i < player.playerAppearance.length; i++) { - characterfile.write("character-look = " + i + "\t" + player.playerAppearance[i]); - characterfile.newLine(); - } - characterfile.newLine(); - - /* SKILLS */ - characterfile.write("[SKILLS]"); - characterfile.newLine(); - for (int i = 0; i < player.playerLevel.length; i++) { - characterfile.write("character-skill = " + i + "\t" + player.playerLevel[i] + "\t" + player.playerXP[i]); - characterfile.newLine(); - } - characterfile.newLine(); - - /* ITEMS */ - characterfile.write("[ITEMS]"); - characterfile.newLine(); - for (int i = 0; i < player.playerItems.length; i++) { - if (player.playerItems[i] > 0) { - characterfile.write("character-item = " + i + "\t" + player.playerItems[i] + "\t" + player.playerItemsN[i]); - characterfile.newLine(); - } - } - characterfile.newLine(); - - /* BANK */ - characterfile.write("[BANK]"); - characterfile.newLine(); - for (int i = 0; i < player.bankItems.length; i++) { - if (player.bankItems[i] > 0) { - characterfile.write("character-bank = " + i + "\t" + player.bankItems[i] + "\t" + player.bankItemsN[i] + (player.isBot ? "\t" + player.bankItemsV[i] : "")); - characterfile.newLine(); - } - } - characterfile.newLine(); - - /* FRIENDS */ - characterfile.write("[FRIENDS]"); - characterfile.newLine(); - for (int i = 0; i < player.friends.length; i++) { - if (player.friends[i] > 0) { - characterfile.write("character-friend = " + i + "\t" + player.friends[i]); - characterfile.newLine(); - } - } - characterfile.newLine(); - - characterfile.write("[IGNORES]"); - characterfile.newLine(); - for (int i = 0; i < player.ignores.length; i++) { - if (player.ignores[i] > 0) { - characterfile.write("character-ignore = " + i + "\t" + player.ignores[i]); - characterfile.newLine(); - } - } - characterfile.newLine(); - - /* EOF */ - characterfile.write("[EOF]"); - characterfile.newLine(); - characterfile.close(); - } catch (IOException ioexception) { - Misc.println(player.playerName + ": error writing file."); - return false; - } - return true; - } - -} +package com.rebotted.game.players; + +import java.io.*; +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.Base64; + +import com.rebotted.util.Misc; + +public class PlayerSave { + + /** + * Loading + **/ + public static int loadGame(Client player, String playerName, String playerPass) { + return loadPlayerInfo(player, playerName, playerPass, true); + } + + public static int loadPlayerInfo(Client player, String playerName, String playerPass, boolean doRealLogin) { + String line = ""; + String token = ""; + String token2 = ""; + String[] token3 = new String[3]; + boolean EndOfFile = false; + int ReadMode = 0; + BufferedReader characterfile = null; + boolean File1 = false; + + try { + characterfile = new BufferedReader(new FileReader(System.getProperty("user.dir") + "/data/characters/" + player.playerName + ".txt")); + File1 = true; + } catch (FileNotFoundException fileex1) { + } + + if (File1) { + // new File ("./characters/"+playerName+".txt"); + } else { + if (playerName.equals("")) + { + //it's the .gitignore :P + return 0; + } + Misc.println(playerName + ": character file not found."); + player.newPlayer = false; + return 0; + } + try { + line = characterfile.readLine(); + } catch (IOException ioexception) { + Misc.println(playerName + ": error loading file."); + return 3; + } + while (EndOfFile == false && line != null) { + line = line.trim(); + int spot = line.indexOf("="); + if (spot > -1) { + token = line.substring(0, spot); + token = token.trim(); + token2 = line.substring(spot + 1); + token2 = token2.trim(); + token3 = token2.split("\t+"); + switch (ReadMode) { + case 1: + if (!doRealLogin) + break; + if (token.equals("character-password")) { + if (playerPass.equalsIgnoreCase(token2)) { + // Hash their password and store it! + playerPass = passwordHash(token2); + } else if (passwordHash(playerPass).equalsIgnoreCase(token2)) { + playerPass = token2; //Valid password + } else { + System.out.println("hash doesn't match: " + passwordHash(playerPass).toLowerCase()); + System.out.println("currently is: " + passwordHash(token2).toLowerCase()); + return 3; //Invalid password + } + } + break; + case 2: + switch (token) { + case "character-height": + player.heightLevel = Integer.parseInt(token2); + break; + case "character-posx": + player.teleportToX = Integer.parseInt(token2) <= 0 ? player.lastX : Integer.parseInt(token2); + break; + case "character-posy": + player.teleportToY = Integer.parseInt(token2) <= 0 ? player.lastY : Integer.parseInt(token2); + break; + case "character-rights": + player.playerRights = Integer.parseInt(token2); + break; + case "isBot": + player.isBot = Boolean.parseBoolean(token2); + break; + case "blackMarks": + player.blackMarks = Integer.parseInt(token2); + break; + case "lostCannon": + player.lostCannon = Boolean.parseBoolean(token2); + break; + case "myBalls": + player.getCannon().myBalls = Integer.parseInt(token2); + break; + case "cannonX": + player.cannonX = Integer.parseInt(token2); + break; + case "cannonY": + player.cannonY = Integer.parseInt(token2); + break; + case "removedTask0": + player.removedTasks[0] = Integer.parseInt(token2); + break; + case "removedTask1": + player.removedTasks[1] = Integer.parseInt(token2); + break; + case "removedTask2": + player.removedTasks[2] = Integer.parseInt(token2); + break; + case "removedTask3": + player.removedTasks[3] = Integer.parseInt(token2); + break; + case "SlayerMaster": + player.SlayerMaster = Integer.parseInt(token2); + break; + case "slayerTask": + player.slayerTask = Integer.parseInt(token2); + break; + case "slayerPoints": + player.slayerPoints = Integer.parseInt(token2); + break; + case "taskAmount": + player.taskAmount = Integer.parseInt(token2); + break; + case "cw-games": + player.cwGames = Integer.parseInt(token2); + break; + case "crystal-bow-shots": + player.crystalBowArrowCount = Integer.parseInt(token2); + break; + case "randomActions": + player.randomActions = Integer.parseInt(token2); + break; + case "debugMode": + player.debugMode = Boolean.parseBoolean(token2); + break; + case "global-damage": + player.globalDamageDealt = Integer.parseInt(token2); + break; + case "skull-timer": + player.skullTimer = Integer.parseInt(token2); + break; + case "recoilHits": + player.recoilHits = Integer.parseInt(token2); + break; + case "brightness": + player.brightness = Integer.parseInt(token2); + break; + case "spiritTree": + player.spiritTree = Boolean.parseBoolean(token2); + break; + case "npcCanAttack": + player.npcCanAttack = Boolean.parseBoolean(token2); + break; + case "rope": + player.rope = Boolean.parseBoolean(token2); + break; + case "rope2": + player.rope2 = Boolean.parseBoolean(token2); + break; + case "recievedMask": + player.recievedMask = Boolean.parseBoolean(token2); + break; + case "recievedReward": + player.recievedReward = Boolean.parseBoolean(token2); + break; + case "splitChat": + player.splitChat = Boolean.parseBoolean(token2); + break; + case "hasPaid": + player.hasPaid = Boolean.parseBoolean(token2); + break; + case "poison": + player.poison = Boolean.parseBoolean(token2); + break; + case "closeTutorialInterface": + player.closeTutorialInterface = Boolean + .parseBoolean(token2); + break; + case "canWalkTutorial": + player.canWalkTutorial = Boolean.parseBoolean(token2); + break; + case "needsNewTask": + player.needsNewTask = Boolean.parseBoolean(token2); + break; + case "musicOn": + player.musicOn = Boolean.parseBoolean(token2); + break; + case "barrowsNpcs": + player.barrowsNpcs[Integer.parseInt(token3[0])][1] = Integer.parseInt(token3[1]); + break; + case "summonId": + player.summonId = Integer.parseInt(token2); + break; + case "has-npc": + player.hasNpc = Boolean.parseBoolean(token2); + break; + case "barrowsKillCount": + player.barrowsKillCount = Integer.parseInt(token2); + break; + case "luthas": + player.luthas = Boolean.parseBoolean(token2); + break; + case "village": + player.village = Boolean.parseBoolean(token2); + break; + case "lastThieve": + player.lastThieve = Long.parseLong(token2); + break; + case "homeTele": + player.homeTele = Long.parseLong(token2); + break; + case "tutorial-progress": + player.tutorialProgress = Integer.parseInt(token2); + break; + case "strongHold": + player.strongHold = Boolean.parseBoolean(token2); + break; + case "filter": + player.filter = Boolean.parseBoolean(token2); + break; + case "ratdied2": + player.ratdied2 = Boolean.parseBoolean(token2); + break; + case "randomToggle": + player.randomEventsEnabled = Boolean.parseBoolean(token2); + break; + case "questStages": + player.questStages = Integer.parseInt(token2); + break; + case "cookAss": + player.cookAss = Integer.parseInt(token2); + break; + case "bananas": + player.bananas = Integer.parseInt(token2); + break; + case "sheepShear": + player.sheepShear = Integer.parseInt(token2); + break; + case "runeMist": + player.runeMist = Integer.parseInt(token2); + break; + case "doricQuest": + player.doricQuest = Integer.parseInt(token2); + break; + case "blackKnight": + player.blackKnight = Integer.parseInt(token2); + break; + case "shieldArrav": + player.shieldArrav = Integer.parseInt(token2); + break; + case "pirateTreasure": + player.pirateTreasure = Integer.parseInt(token2); + break; + case "romeo-juliet": + player.romeojuliet = Integer.parseInt(token2); + break; + case "vampSlayer": + player.vampSlayer = Integer.parseInt(token2); + break; + case "gertCat": + player.gertCat = Integer.parseInt(token2); + break; + case "witchspot": + player.witchspot = Integer.parseInt(token2); + break; + case "restGhost": + player.restGhost = Integer.parseInt(token2); + break; + case "impsC": + player.impsC = Integer.parseInt(token2); + break; + case "knightS": + player.knightS = Integer.parseInt(token2); + break; + case "lastX": + player.lastX = Integer.parseInt(token2); + break; + case "lastY": + player.lastY = Integer.parseInt(token2); + break; + case "lastH": + player.lastH = Integer.parseInt(token2); + break; + case "hasStarter": + player.hasStarter = Boolean.parseBoolean(token2); + break; + case "membership": + player.membership = Boolean.parseBoolean(token2); + break; + case "canSpeak": + player.canSpeak = Boolean.parseBoolean(token2); + break; + case "questPoints": + player.questPoints = Integer.parseInt(token2); + break; + case "votePoints": + player.votePoints = Integer.parseInt(token2); + break; + case "magic-book": + player.playerMagicBook = Integer.parseInt(token2); + break; + case "special-amount": + player.specAmount = Double.parseDouble(token2); + break; + case "selected-coffin": + player.randomCoffin = Integer.parseInt(token2); + break; + case "isRunning": + player.isRunning2 = Boolean.parseBoolean(token2); + break; + case "character-energy": + player.playerEnergy = Integer.parseInt(token2); + break; + case "teleblock-length": + player.teleBlockDelay = System.currentTimeMillis(); + player.teleBlockLength = Integer.parseInt(token2); + break; + case "lastYell": + player.lastYell = Long.parseLong(token2); + break; + case "pc-points": + player.pcPoints = Integer.parseInt(token2); + break; + case "magePoints": + player.magePoints = Integer.parseInt(token2); + break; + case "autoRet": + player.autoRet = Integer.parseInt(token2); + break; + case "flagged": + player.accountFlagged = Boolean.parseBoolean(token2); + break; + case "lastLoginDate": + player.lastLoginDate = Integer.parseInt(token2); + break; + case "hasBankpin": + player.hasBankpin = Boolean.parseBoolean(token2); + break; + case "setPin": + player.setPin = Boolean.parseBoolean(token2); + break; + case "pinRegisteredDeleteDay": + player.pinDeleteDateRequested = Integer.parseInt(token2); + break; + case "requestPinDelete": + player.requestPinDelete = Boolean.parseBoolean(token2); + break; + case "bankPin1": + player.bankPin1 = Integer.parseInt(token2); + break; + case "bankPin2": + player.bankPin2 = Integer.parseInt(token2); + break; + case "bankPin3": + player.bankPin3 = Integer.parseInt(token2); + break; + case "bankPin4": + player.bankPin4 = Integer.parseInt(token2); + break; + case "wave": + player.waveId = Integer.parseInt(token2); + break; + case "ptjob": + player.ptjob = Integer.parseInt(token2); + break; + case "creationAddress": + player.creationAddress = token2; + break; + case "music": + for (int j = 0; j < token3.length; j++) { + player.getPlayList().unlocked[j] = Boolean.parseBoolean(token3[j]); + } + break; + case "void": + for (int j = 0; j < token3.length; j++) { + player.voidStatus[j] = Integer.parseInt(token3[j]); + } + break; + case "gwkc": + player.killCount = Integer.parseInt(token2); + break; + case "fightMode": + player.fightMode = Integer.parseInt(token2); + break; + } + break; + case 3: + if (token.equals("character-equip")) { + player.playerEquipment[Integer.parseInt(token3[0])] = Integer.parseInt(token3[1]); + player.playerEquipmentN[Integer.parseInt(token3[0])] = Integer.parseInt(token3[2]); + } + break; + case 4: + if (token.equals("character-look")) { + player.playerAppearance[Integer.parseInt(token3[0])] = Integer .parseInt(token3[1]); + } + break; + case 5: + if (token.equals("character-skill")) { + player.playerLevel[Integer.parseInt(token3[0])] = Integer.parseInt(token3[1]); + player.playerXP[Integer.parseInt(token3[0])] = Integer.parseInt(token3[2]); + } + break; + case 6: + if (token.equals("character-item")) { + player.playerItems[Integer.parseInt(token3[0])] = Integer.parseInt(token3[1]); + player.playerItemsN[Integer.parseInt(token3[0])] = Integer.parseInt(token3[2]); + } + break; + case 7: + if (token.equals("character-bank")) { + player.bankItems[Integer.parseInt(token3[0])] = Integer.parseInt(token3[1]); + player.bankItemsN[Integer.parseInt(token3[0])] = Integer.parseInt(token3[2]); + player.bankItemsV[Integer.parseInt(token3[0])] = token3.length > 3 ? Integer.parseInt(token3[3]) : 1; + } + break; + case 8: + if (token.equals("character-friend")) { + player.friends[Integer.parseInt(token3[0])] = Long.parseLong(token3[1]); + } + break; + case 9: + if (token.equals("character-ignore")) { + player.ignores[Integer.parseInt(token3[0])] = Long.parseLong(token3[1]); + } + break; + } + } else { + switch (line) { + case "[ACCOUNT]": + ReadMode = 1; + break; + case "[CHARACTER]": + ReadMode = 2; + break; + case "[EQUIPMENT]": + ReadMode = 3; + break; + case "[LOOK]": + ReadMode = 4; + break; + case "[SKILLS]": + ReadMode = 5; + break; + case "[ITEMS]": + ReadMode = 6; + break; + case "[BANK]": + ReadMode = 7; + break; + case "[FRIENDS]": + ReadMode = 8; + break; + case "[IGNORES]": + ReadMode = 9; + break; + case "[EOF]": + try { + characterfile.close(); + } catch (IOException ignored) { + } + return 1; + } + } + try { + line = characterfile.readLine(); + } catch (IOException ioexception1) { + EndOfFile = true; + } + } + try { + characterfile.close(); + } catch (IOException ignored) { + } + if (doRealLogin) + return 13; + else + return 14; + } + + private static String passwordHash(String token2) { + String hashed = "HAS HAS FAILED!"; + try { + MessageDigest digest = MessageDigest.getInstance("MD5"); + byte[] hash = digest.digest(token2.getBytes(StandardCharsets.UTF_8)); + + hashed = Base64.getEncoder().encodeToString(hash); + + digest = MessageDigest.getInstance("SHA-256"); + hash = digest.digest(hashed.getBytes(StandardCharsets.UTF_8)); + + hashed = Base64.getEncoder().encodeToString(hash); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + return hashed; + } + + /** + * Saving + **/ + public static boolean saveGame(Player player) { + if (!player.saveFile || player.newPlayer || !player.saveCharacter) { + // System.out.println("first"); + return false; + } + if (player.playerName == null + || PlayerHandler.players[player.playerId] == null) { + // System.out.println("second"); + return false; + } + player.playerName = player.playerName2; + int tbTime = (int) (player.teleBlockDelay - System.currentTimeMillis() + player.teleBlockLength); + if (tbTime > 300000 || tbTime < 0) { + tbTime = 0; + } + + BufferedWriter characterfile = null; + try { + String filePath = System.getProperty("user.dir") + "/data/characters/" + player.playerName + ".txt"; + new File(filePath).getParentFile().mkdir(); + characterfile = new BufferedWriter(new FileWriter(filePath)); + + /* ACCOUNT */ + characterfile.write("[ACCOUNT]"); + characterfile.newLine(); + characterfile.write("character-username = " + player.playerName); + characterfile.newLine(); + if (player.playerRights == 0) { + if (player.playerPass.length() < 40) { + player.playerPass = passwordHash(player.playerPass); + } + characterfile.write("character-password = " + player.playerPass); + characterfile.newLine(); + } + characterfile.newLine(); + + /* CHARACTER */ + characterfile.write("[CHARACTER]"); + characterfile.newLine(); + characterfile.write("character-height = " + player.heightLevel); + characterfile.newLine(); + characterfile.write("character-posx = " + player.absX); + characterfile.newLine(); + characterfile.write("character-posy = " + player.absY); + characterfile.newLine(); + characterfile.write("character-rights = " + player.playerRights); + characterfile.newLine(); + characterfile.write("isBot = " + player.isBot); + characterfile.newLine(); + characterfile.write("hasStarter = " + player.hasStarter); + characterfile.newLine(); + characterfile.write("bankPin1 = " + player.bankPin1); + characterfile.newLine(); + characterfile.write("bankPin2 = " + player.bankPin2); + characterfile.newLine(); + characterfile.write("bankPin3 = " + player.bankPin3); + characterfile.newLine(); + characterfile.write("bankPin4 = " + player.bankPin4); + characterfile.newLine(); + characterfile.write("hasBankpin = " + player.hasBankpin); + characterfile.newLine(); + characterfile.write("pinRegisteredDeleteDay = " + player.pinDeleteDateRequested); + characterfile.newLine(); + characterfile.write("requestPinDelete = " + player.requestPinDelete); + characterfile.newLine(); + characterfile.write("lastLoginDate = " + player.lastLoginDate); + characterfile.newLine(); + characterfile.write("setPin = " + player.setPin); + characterfile.newLine(); + characterfile.write("hasPaid = " + player.hasPaid); + characterfile.newLine(); + characterfile.write("lostCannon = " + player.lostCannon); + characterfile.newLine(); + characterfile.write("cannonX = " + player.cannonX); + characterfile.newLine(); + characterfile.write("cannonY = " + player.cannonY); + characterfile.newLine(); + characterfile.write("myBalls = " + player.getCannon().myBalls); + characterfile.newLine(); + characterfile.write("poison = " + player.poison); + characterfile.newLine(); + characterfile.write("spiritTree = " + player.spiritTree); + characterfile.newLine(); + characterfile.write("npcCanAttack = " + player.npcCanAttack); + characterfile.newLine(); + characterfile.write("rope = " + player.rope); + characterfile.newLine(); + characterfile.write("rope2 = " + player.rope2); + characterfile.newLine(); + characterfile.write("recievedMask = " + player.recievedMask); + characterfile.newLine(); + characterfile.write("recievedReward = " + player.recievedReward); + characterfile.newLine(); + characterfile.write("global-damage = " + player.globalDamageDealt); + characterfile.newLine(); + characterfile.write("brightness = " + player.brightness); + characterfile.newLine(); + characterfile.write("closeTutorialInterface = " + player.closeTutorialInterface); + characterfile.newLine(); + characterfile.write("canWalkTutorial = " + player.canWalkTutorial); + characterfile.newLine(); + characterfile.write("village = " + player.village); + characterfile.newLine(); + characterfile.write("lastThieve = " + player.lastThieve); + characterfile.newLine(); + characterfile.write("homeTele = " + player.homeTele); + characterfile.newLine(); + characterfile.write("strongHold = " + player.strongHold); + characterfile.newLine(); + characterfile.write("character-energy = " + (int) Math.ceil(player.playerEnergy)); + characterfile.newLine(); + characterfile.write("crystal-bow-shots = " + player.crystalBowArrowCount); + characterfile.newLine(); + characterfile.write("splitChat = " + player.splitChat); + characterfile.newLine(); + characterfile.write("canSpeak = " + player.canSpeak); + characterfile.newLine(); + for (int b = 0; b < player.barrowsNpcs.length; b++) { + characterfile.write("barrowsNpcs = " + b + "\t" + Math.max(0, player.barrowsNpcs[b][1])); + characterfile.newLine(); + } + characterfile.write("questStages = " + player.questStages); + characterfile.newLine(); + characterfile.write("SlayerMaster = " + player.SlayerMaster); + characterfile.newLine(); + String music = ""; + for (boolean element : player.getPlayList().unlocked) { + music += element + "\t"; + } + characterfile.write("music = " + music.trim()); + characterfile.newLine(); + characterfile.write("randomActions = " + player.randomActions); + characterfile.newLine(); + characterfile.write("blackMarks = " + player.blackMarks); + characterfile.newLine(); + characterfile.write("tutorial-progress = " + player.tutorialProgress); + characterfile.newLine(); + characterfile.write("skull-timer = " + player.skullTimer); + characterfile.newLine(); + characterfile.write("recoilHits = " + player.recoilHits); + characterfile.newLine(); + characterfile.write("lastX = " + player.lastX); + characterfile.newLine(); + characterfile.write("lastY = " + player.lastY); + characterfile.newLine(); + characterfile.write("lastH = " + player.lastH); + characterfile.newLine(); + for (int i = 0; i < player.removedTasks.length; i++) { + characterfile.write("removedTask" + i + " = " + player.removedTasks[i]); + characterfile.newLine(); + } + characterfile.write("creationAddress = " + player.creationAddress); + characterfile.newLine(); + characterfile.write("has-npc = " + player.hasNpc); + characterfile.newLine(); + characterfile.write("summonId = " + player.summonId); + characterfile.newLine(); + characterfile.write("membership = " + player.membership); + characterfile.newLine(); + characterfile.write("questPoints = " + player.questPoints); + characterfile.newLine(); + characterfile.write("votePoints = " + player.votePoints); + characterfile.newLine(); + characterfile.write("bananas = " + player.bananas); + characterfile.newLine(); + characterfile.write("magic-book = " + player.playerMagicBook); + characterfile.newLine(); + characterfile.write("special-amount = " + player.specAmount); + characterfile.newLine(); + characterfile.write("musicOn = " + player.musicOn); + characterfile.newLine(); + characterfile.write("needsNewTask = " + player.needsNewTask); + characterfile.newLine(); + characterfile.write("luthas = " + player.luthas); + characterfile.newLine(); + characterfile.write("selected-coffin = " + player.randomCoffin); + characterfile.newLine(); + characterfile.write("runeMist = " + player.runeMist); + characterfile.newLine(); + characterfile.write("blackKnight = " + player.blackKnight); + characterfile.newLine(); + characterfile.write("shieldArrav = " + player.shieldArrav); + characterfile.newLine(); + characterfile.write("cookAss = " + player.cookAss); + characterfile.newLine(); + characterfile.write("pirateTreasure = " + player.pirateTreasure); + characterfile.newLine(); + characterfile.write("ptjob = " + player.ptjob); + characterfile.newLine(); + characterfile.write("doricQuest = " + player.doricQuest); + characterfile.newLine(); + characterfile.write("impsC = " + player.impsC); + characterfile.newLine(); + characterfile.write("knightS = " + player.knightS); + characterfile.newLine(); + characterfile.write("sheepShear = " + player.sheepShear); + characterfile.newLine(); + characterfile.write("romeo-juliet = " + player.romeojuliet); + characterfile.newLine(); + characterfile.write("gertCat = " + player.gertCat); + characterfile.newLine(); + characterfile.write("cw-games = " + player.cwGames); + characterfile.newLine(); + characterfile.write("witchspot = " + player.witchspot); + characterfile.newLine(); + characterfile.write("restGhost = " + player.restGhost); + characterfile.newLine(); + characterfile.write("vampSlayer = " + player.vampSlayer); + characterfile.newLine(); + characterfile.write("RatDied2 = " + player.ratdied2); + characterfile.newLine(); + characterfile.write("debugMode = " + player.debugMode); + characterfile.newLine(); + characterfile.write("randomToggle = " + player.randomEventsEnabled); + characterfile.newLine(); + characterfile.write("teleblock-length = " + tbTime); + characterfile.newLine(); + characterfile.write("pc-points = " + player.pcPoints); + characterfile.newLine(); + characterfile.write("lastYell = " + player.lastYell); + characterfile.newLine(); + characterfile.write("slayerTask = " + player.slayerTask); + characterfile.newLine(); + characterfile.write("taskAmount = " + player.taskAmount); + characterfile.newLine(); + characterfile.write("magePoints = " + player.magePoints); + characterfile.newLine(); + characterfile.write("autoRet = " + player.autoRet); + characterfile.newLine(); + characterfile.write("barrowsKillCount = " + player.barrowsKillCount); + characterfile.newLine(); + characterfile.write("slayerPoints = " + player.slayerPoints); + characterfile.newLine(); + characterfile.write("flagged = " + player.accountFlagged); + characterfile.newLine(); + characterfile.write("wave = " + player.waveId); + characterfile.newLine(); + characterfile.write("gwkc = " + player.killCount); + characterfile.newLine(); + characterfile.write("isRunning = " + player.isRunning2); + characterfile.newLine(); + characterfile.write("fightMode = " + player.fightMode); + characterfile.newLine(); + String voidStatus = ""; + for (int voidS : player.voidStatus){ + voidStatus += voidS + "\t"; + } + characterfile.write("void = " + voidStatus.trim()); + characterfile.newLine(); + characterfile.newLine(); + + /* EQUIPMENT */ + characterfile.write("[EQUIPMENT]"); + characterfile.newLine(); + for (int i = 0; i < player.playerEquipment.length; i++) { + characterfile.write("character-equip = " + i + "\t" + player.playerEquipment[i] + "\t" + player.playerEquipmentN[i]); + characterfile.newLine(); + } + characterfile.newLine(); + + /* LOOK */ + characterfile.write("[LOOK]"); + characterfile.newLine(); + for (int i = 0; i < player.playerAppearance.length; i++) { + characterfile.write("character-look = " + i + "\t" + player.playerAppearance[i]); + characterfile.newLine(); + } + characterfile.newLine(); + + /* SKILLS */ + characterfile.write("[SKILLS]"); + characterfile.newLine(); + for (int i = 0; i < player.playerLevel.length; i++) { + characterfile.write("character-skill = " + i + "\t" + player.playerLevel[i] + "\t" + player.playerXP[i]); + characterfile.newLine(); + } + characterfile.newLine(); + + /* ITEMS */ + characterfile.write("[ITEMS]"); + characterfile.newLine(); + for (int i = 0; i < player.playerItems.length; i++) { + if (player.playerItems[i] > 0) { + characterfile.write("character-item = " + i + "\t" + player.playerItems[i] + "\t" + player.playerItemsN[i]); + characterfile.newLine(); + } + } + characterfile.newLine(); + + /* BANK */ + characterfile.write("[BANK]"); + characterfile.newLine(); + for (int i = 0; i < player.bankItems.length; i++) { + if (player.bankItems[i] > 0) { + characterfile.write("character-bank = " + i + "\t" + player.bankItems[i] + "\t" + player.bankItemsN[i] + (player.isBot ? "\t" + player.bankItemsV[i] : "")); + characterfile.newLine(); + } + } + characterfile.newLine(); + + /* FRIENDS */ + characterfile.write("[FRIENDS]"); + characterfile.newLine(); + for (int i = 0; i < player.friends.length; i++) { + if (player.friends[i] > 0) { + characterfile.write("character-friend = " + i + "\t" + player.friends[i]); + characterfile.newLine(); + } + } + characterfile.newLine(); + + characterfile.write("[IGNORES]"); + characterfile.newLine(); + for (int i = 0; i < player.ignores.length; i++) { + if (player.ignores[i] > 0) { + characterfile.write("character-ignore = " + i + "\t" + player.ignores[i]); + characterfile.newLine(); + } + } + characterfile.newLine(); + + /* EOF */ + characterfile.write("[EOF]"); + characterfile.newLine(); + characterfile.close(); + } catch (IOException ioexception) { + Misc.println(player.playerName + ": error writing file."); + return false; + } + return true; + } + +} diff --git a/2006Redone Server/src/com/rebotted/game/players/Position.java b/2006Redone Server/src/com/rebotted/game/players/Position.java new file mode 100644 index 00000000..b23d4693 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/players/Position.java @@ -0,0 +1,37 @@ +package com.rebotted.game.players; + +/** + * Position + * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) + */ + +public class Position { + + public static boolean checkPosition(Player player, int x, int y, int h) { + return player.absX == x && player.absY == y && player.heightLevel == h; + } + + public static boolean checkPlayerX(Player client, int x, int h) { + return client.absX == x && client.heightLevel == h; + } + + public static boolean checkPlayerY(Player player, int y, int h) { + return player.absY == y && player.heightLevel == h; + } + + public static boolean checkPlayerH(Player client, int h) { + return client.heightLevel == h; + } + + public static boolean checkObject(Player client, int x, int y, int h) { + return client.objectX == x && client.objectY == y && client.heightLevel == h; + } + + public static boolean checkObjectX(Player client, int x, int h) { + return client.objectX == x && client.heightLevel == h; + } + + public static boolean checkObjectY(Player client, int y, int h) { + return client.objectY == y && client.heightLevel == h; + } +} diff --git a/2006Redone Server/src/redone/game/players/Trading.java b/2006Redone Server/src/com/rebotted/game/players/Trading.java similarity index 80% rename from 2006Redone Server/src/redone/game/players/Trading.java rename to 2006Redone Server/src/com/rebotted/game/players/Trading.java index 745c5b37..9eee0cb4 100644 --- a/2006Redone Server/src/redone/game/players/Trading.java +++ b/2006Redone Server/src/com/rebotted/game/players/Trading.java @@ -1,558 +1,553 @@ -package redone.game.players; - -import java.time.temporal.ValueRange; -import java.util.concurrent.CopyOnWriteArrayList; - -import redone.Constants; -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.content.minigames.castlewars.CastleWars; -import redone.game.items.GameItem; -import redone.game.items.Item; -import redone.game.items.ItemAssistant; -import redone.util.GameLogger; -import redone.util.Misc; - -public class Trading { - - private final Client player; - - public Trading(Client Client) { - player = Client; - } - - /** - * Trading - **/ - - public CopyOnWriteArrayList offeredItems = new CopyOnWriteArrayList(); - - public void requestTrade(int id) { - try { - Client o = (Client) PlayerHandler.players[id]; - if (id == player.playerId) { - return; - } - - // player owned shop - if (o.isBot && o.myShopId >= 0){ - if (isCloseTo(o)) { - player.getShopAssistant().openShop(o.myShopId); - } else { - player.getActionSender().sendMessage("Player is not close enough. Retry when you are closer..."); - } - return; - } - - player.tradeWith = id; - if (player.isBotting) { - player.getActionSender().sendMessage("You can't trade items, until you confirm you aren't botting."); - player.getActionSender().sendMessage("If you need to you can type ::amibotting, to see if your botting."); - return; - } - - if (!CastleWars.deleteCastleWarsItems(player, id)) { - return; - } - - if (!player.inTrade && o.tradeRequested && o.tradeWith == player.playerId && player.playerIsBusy() == false && o.playerIsBusy() == false) { //start trading process - if (!isCloseTo(o)) { - player.getActionSender().sendMessage("Player is not close enough. Retry when you are closer..."); - } else { - player.getTrading().openTrade(); - o.getTrading().openTrade(); - } - } else if (!player.inTrade && player.playerIsBusy() == false && o.playerIsBusy() == false) { //send trade request - //Problem = sends the request then walk to player. Solution= change processing order. Fix= Send message when trying to open the trade interface if the other player isn't closer than 3 tiles. - player.tradeRequested = true; - player.getActionSender().sendMessage("Sending trade request..."); - o.getActionSender() - .sendMessage(player.playerName + ":tradereq:"); - } else if (player.playerIsBusy() == true || o.playerIsBusy() == true) { - player.getActionSender().sendMessage("Other player is busy at the moment."); - } - } catch (Exception e) { - Misc.println("Error requesting trade."); - } - } - public boolean isCloseTo(Client tradedPlayer) { - ValueRange PlayerCoordRangeX = ValueRange.of(tradedPlayer.absX - 3, tradedPlayer.absX + 3); - ValueRange PlayerCoordRangeY = ValueRange.of(tradedPlayer.absY - 3, tradedPlayer.absY + 3); - if (PlayerCoordRangeX.isValidIntValue(player.absX) && PlayerCoordRangeY.isValidIntValue(player.absY)) { - return true; - } else { - return false; - } - } - public void openTrade() { - Client o = (Client) PlayerHandler.players[player.tradeWith]; - - if (o == null) { - return; - } - player.inTrade = true; - player.tradeStatus = 1; - player.tradeRequested = false; - player.getItemAssistant().resetItems(3322); - resetTItems(3415); - resetOTItems(3416); - String out = o.playerName; - - if (o.playerRights == 1) { - out = "@cr1@" + out; - } else if (o.playerRights == 2) { - out = "@cr2@" + out; - } - player.getPlayerAssistant().sendFrame126( - "Trading with: " + o.playerName + " who has @gre@" - + o.getItemAssistant().freeSlots() + " free slots", - 3417); - player.getPlayerAssistant().sendFrame126("", 3431); - player.getPlayerAssistant().sendFrame126( - "Are you sure you want to make this trade?", 3535); - player.getPlayerAssistant().sendFrame248(3323, 3321); - } - - public void resetTItems(int WriteFrame) { - synchronized (player) { - player.getOutStream().createFrameVarSizeWord(53); - player.getOutStream().writeWord(WriteFrame); - int len = offeredItems.toArray().length; - int current = 0; - player.getOutStream().writeWord(len); - for (GameItem item : offeredItems) { - if (item.amount > 254) { - player.getOutStream().writeByte(255); - player.getOutStream().writeDWord_v2(item.amount); - } else { - player.getOutStream().writeByte(item.amount); - } - player.getOutStream().writeWordBigEndianA(item.id + 1); - current++; - } - if (current < 27) { - for (int i = current; i < 28; i++) { - player.getOutStream().writeByte(1); - player.getOutStream().writeWordBigEndianA(-1); - } - } - player.getOutStream().endFrameVarSizeWord(); - player.flushOutStream(); - } - } - - public boolean fromTrade(int itemID, int fromSlot, int amount) { - Client o = (Client) PlayerHandler.players[player.tradeWith]; - if (o == null) { - return false; - } - try { - if (!player.inTrade) { - declineTrade(); - return false; - } - player.tradeConfirmed = false; - o.tradeConfirmed = false; - if (!Item.itemStackable[itemID]) { - for (int a = 0; a < amount; a++) { - for (GameItem item : offeredItems) { - if (item.id == itemID) { - if (!item.stackable) { - offeredItems.remove(item); - player.getItemAssistant().addItem(itemID, 1); - o.getPlayerAssistant().sendFrame126( - "Trading with: " - + player.playerName - + " who has @gre@" - + player.getItemAssistant() - .freeSlots() - + " free slots", 3417); - } else { - if (item.amount > amount) { - item.amount -= amount; - player.getItemAssistant() - .addItem(itemID, amount); - o.getPlayerAssistant().sendFrame126( - "Trading with: " - + player.playerName - + " who has @gre@" - + player.getItemAssistant() - .freeSlots() - + " free slots", 3417); - } else { - amount = item.amount; - offeredItems.remove(item); - player.getItemAssistant() - .addItem(itemID, amount); - o.getPlayerAssistant().sendFrame126( - "Trading with: " - + player.playerName - + " who has @gre@" - + player.getItemAssistant() - .freeSlots() - + " free slots", 3417); - } - } - break; - } - o.getPlayerAssistant().sendFrame126( - "Trading with: " + player.playerName - + " who has @gre@" - + player.getItemAssistant().freeSlots() - + " free slots", 3417); - player.tradeConfirmed = false; - o.tradeConfirmed = false; - player.getItemAssistant().resetItems(3322); - resetTItems(3415); - o.getTrading().resetOTItems(3416); - player.getPlayerAssistant().sendFrame126("", 3431); - o.getPlayerAssistant().sendFrame126("", 3431); - } - } - } - for (GameItem item : offeredItems) { - if (item.id == itemID) { - if (!item.stackable) { - } else { - if (item.amount > amount) { - item.amount -= amount; - player.getItemAssistant().addItem(itemID, amount); - o.getPlayerAssistant().sendFrame126( - "Trading with: " + player.playerName - + " who has @gre@" - + player.getItemAssistant().freeSlots() - + " free slots", 3417); - } else { - amount = item.amount; - offeredItems.remove(item); - player.getItemAssistant().addItem(itemID, amount); - o.getPlayerAssistant().sendFrame126( - "Trading with: " + player.playerName - + " who has @gre@" - + player.getItemAssistant().freeSlots() - + " free slots", 3417); - } - } - break; - } - } - - o.getPlayerAssistant().sendFrame126( - "Trading with: " + player.playerName + " who has @gre@" - + player.getItemAssistant().freeSlots() + " free slots", - 3417); - player.tradeConfirmed = false; - o.tradeConfirmed = false; - player.getItemAssistant().resetItems(3322); - resetTItems(3415); - o.getTrading().resetOTItems(3416); - player.getPlayerAssistant().sendFrame126("", 3431); - o.getPlayerAssistant().sendFrame126("", 3431); - } catch (Exception e) { - } - return true; - } - - public boolean tradeItem(int itemID, int fromSlot, int amount) { - Client o = (Client) PlayerHandler.players[player.tradeWith]; - if (o == null) { - return false; - } - if (!(player.playerItems[fromSlot] == itemID + 1 )){//&& player.playerItemsN[fromSlot] >= amount)) { I removed this check to permit trading max amount of item in inventory even when amount is higher than quantity in inventory. - player.getActionSender().sendMessage("You don't have that amount!"); - return false; - } - - if (amount >= Integer.MAX_VALUE) { - player.getActionSender().sendMessage("You can't possibly have that much of that item!"); - player.getItemAssistant().deleteItem(itemID, fromSlot, amount); - return false; - } - - for (int i : Constants.ITEM_TRADEABLE) { - if (i == itemID && player.playerRights < 3) { - player.getActionSender().sendMessage( - "You can't trade this item."); - return false; - } - } - player.tradeConfirmed = false; - o.tradeConfirmed = false; - if (!Item.itemStackable[itemID] && !Item.itemIsNote[itemID]) { - for (int a = 0; a < amount && a < 28; a++) { - if (player.getItemAssistant().playerHasItem(itemID, 1)) { - offeredItems.add(new GameItem(itemID, 1)); - player.getItemAssistant().deleteItem(itemID, - player.getItemAssistant().getItemSlot(itemID), 1); - o.getPlayerAssistant().sendFrame126( - "Trading with: " + player.playerName + " who has @gre@" - + player.getItemAssistant().freeSlots() - + " free slots", 3417); - } - } - o.getPlayerAssistant().sendFrame126( - "Trading with: " + player.playerName + " who has @gre@" - + player.getItemAssistant().freeSlots() + " free slots", - 3417); - player.getItemAssistant().resetItems(3322); - resetTItems(3415); - o.getTrading().resetOTItems(3416); - player.getPlayerAssistant().sendFrame126("", 3431); - o.getPlayerAssistant().sendFrame126("", 3431); - } - if (player.getItemAssistant().getItemCount(itemID) < amount) { - amount = player.getItemAssistant().getItemCount(itemID); - if (amount == 0) { - return false; - } - } - if (!player.inTrade || !o.inTrade) { - declineTrade(); - return false; - } - if (Item.itemStackable[itemID] || Item.itemIsNote[itemID]) { - boolean inTrade = false; - for (GameItem item : offeredItems) { - if (item.id == itemID) { - inTrade = true; - item.amount += amount; - player.getItemAssistant().deleteItem(itemID, amount); - o.getPlayerAssistant().sendFrame126( - "Trading with: " + player.playerName + " who has @gre@" - + player.getItemAssistant().freeSlots() - + " free slots", 3417); - break; - } - } - - if (!inTrade) { - offeredItems.add(new GameItem(itemID, amount)); - player.getItemAssistant().deleteItem(itemID, amount); - o.getPlayerAssistant().sendFrame126( - "Trading with: " + player.playerName + " who has @gre@" - + player.getItemAssistant().freeSlots() - + " free slots", 3417); - } - } - o.getPlayerAssistant().sendFrame126( - "Trading with: " + player.playerName + " who has @gre@" - + player.getItemAssistant().freeSlots() + " free slots", - 3417); - player.getItemAssistant().resetItems(3322); - resetTItems(3415); - o.getTrading().resetOTItems(3416); - player.getPlayerAssistant().sendFrame126("", 3431); - o.getPlayerAssistant().sendFrame126("", 3431); - return true; - } - - public void resetTrade() { - offeredItems.clear(); - player.inTrade = false; - player.tradeWith = 0; - player.tradeConfirmed = false; - player.tradeConfirmed2 = false; - player.acceptedTrade = false; - player.getPlayerAssistant().removeAllWindows(); - player.tradeResetNeeded = false; - player.getPlayerAssistant().sendFrame126( - "Are you sure you want to make this trade?", 3535); - } - - public void declineTrade() { - player.tradeStatus = 0; - declineTrade(true); - } - - public void declineTrade(boolean tellOther) { - player.getPlayerAssistant().removeAllWindows(); - Client o = (Client) PlayerHandler.players[player.tradeWith]; - if (o == null) { - return; - } - - if (tellOther) { - o.getTrading().declineTrade(false); - o.getTrading().player.getPlayerAssistant().removeAllWindows(); - } - - for (GameItem item : offeredItems) { - if (item.amount < 1) { - continue; - } - if (item.stackable) { - player.getItemAssistant().addItem(item.id, item.amount); - } else { - for (int i = 0; i < item.amount; i++) { - player.getItemAssistant().addItem(item.id, 1); - } - } - } - player.tradeConfirmed = false; - player.tradeConfirmed2 = false; - offeredItems.clear(); - player.inTrade = false; - player.tradeWith = 0; - } - - public void resetOTItems(int WriteFrame) { - synchronized (player) { - Client o = (Client) PlayerHandler.players[player.tradeWith]; - if (o == null) { - return; - } - player.getOutStream().createFrameVarSizeWord(53); - player.getOutStream().writeWord(WriteFrame); - int len = o.getTrading().offeredItems.toArray().length; - int current = 0; - player.getOutStream().writeWord(len); - for (GameItem item : o.getTrading().offeredItems) { - if (item.amount > 254) { - player.getOutStream().writeByte(255); // item's stack count. if - // over 254, write byte - // 255 - player.getOutStream().writeDWord_v2(item.amount); - } else { - player.getOutStream().writeByte(item.amount); - } - player.getOutStream().writeWordBigEndianA(item.id + 1); // item id - current++; - } - if (current < 27) { - for (int i = current; i < 28; i++) { - player.getOutStream().writeByte(1); - player.getOutStream().writeWordBigEndianA(-1); - } - } - player.getOutStream().endFrameVarSizeWord(); - player.flushOutStream(); - } - } - - public void confirmScreen() { - Client o = (Client) PlayerHandler.players[player.tradeWith]; - if (o == null) { - return; - } - if(!player.inTrade) { - declineTrade(); - return; - } - player.getItemAssistant().resetItems(3214); - String SendTrade = "Absolutely nothing!"; - String SendAmount = ""; - int Count = 0; - for (GameItem item : offeredItems) { - if (item.id > 0) { - if (item.amount >= 1000 && item.amount < 1000000) { - SendAmount = "@cya@" + item.amount / 1000 + "K @whi@(" - + Misc.format(item.amount) + ")"; - } else if (item.amount >= 1000000) { - SendAmount = "@gre@" + item.amount / 1000000 - + " million @whi@(" + Misc.format(item.amount) - + ")"; - } else { - SendAmount = "" + Misc.format(item.amount); - } - - if (Count == 0) { - SendTrade = ItemAssistant.getItemName(item.id); - } else { - SendTrade = SendTrade + "\\n" - + ItemAssistant.getItemName(item.id); - } - - if (item.stackable) { - SendTrade = SendTrade + " x " + SendAmount; - } - Count++; - } - } - - player.getPlayerAssistant().sendFrame126(SendTrade, 3557); - SendTrade = "Absolutely nothing!"; - SendAmount = ""; - Count = 0; - - for (GameItem item : o.getTrading().offeredItems) { - if (item.id > 0) { - if (item.amount >= 1000 && item.amount < 1000000) { - SendAmount = "@cya@" + item.amount / 1000 + "K @whi@(" - + Misc.format(item.amount) + ")"; - } else if (item.amount >= 1000000) { - SendAmount = "@gre@" + item.amount / 1000000 - + " million @whi@(" + Misc.format(item.amount) - + ")"; - } else { - SendAmount = "" + Misc.format(item.amount); - } - - if (Count == 0) { - SendTrade = ItemAssistant.getItemName(item.id); - } else { - SendTrade = SendTrade + "\\n" - + ItemAssistant.getItemName(item.id); - } - if (item.stackable) { - SendTrade = SendTrade + " x " + SendAmount; - } - Count++; - } - } - player.getPlayerAssistant().sendFrame126(SendTrade, 3558); - // TODO: find out what 197 does eee 3213 - player.getPlayerAssistant().sendFrame248(3443, 197); - } - - public void giveItems() { - Client o = (Client) PlayerHandler.players[player.tradeWith]; - if (o == null) { - return; - } - try { - for (GameItem item : o.getTrading().offeredItems) { - String itemName = ItemAssistant.getItemName(item.id); - if (item.id > 0) { - player.getItemAssistant().addItem(item.id, item.amount); - if (player.getPlayerAssistant().isPlayer()) { - GameLogger.writeLog(o.playerName, "tradesgave", o.playerName + " traded " + player.playerName + " and gave " + item.amount + " " + itemName + ""); - } - } - if (player.getPlayerAssistant().isPlayer()) { - GameLogger.writeLog(player.playerName, "tradesrecieved", player.playerName + " was traded by " + o.playerName + " and recieved " + item.amount + " " + itemName + ""); - } - } - player.getPlayerAssistant().removeAllWindows(); - player.tradeResetNeeded = true; - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (player.inTrade && player.tradeResetNeeded) { - Client o = (Client) PlayerHandler.players[player.tradeWith]; - if (o != null) { - if (o.tradeResetNeeded) { - player.getTrading().resetTrade(); - o.getTrading().resetTrade(); - container.stop(); - } else { - container.stop(); - } - } else { - container.stop(); - } - } else { - container.stop(); - } - } - - @Override - public void stop() { - player.tradeResetNeeded = false; - } - }, 1); - } catch (Exception e) { - } - } - -} +package com.rebotted.game.players; + +import java.time.temporal.ValueRange; +import java.util.concurrent.CopyOnWriteArrayList; + +import com.rebotted.GameConstants; +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.content.minigames.castlewars.CastleWars; +import com.rebotted.game.items.GameItem; +import com.rebotted.game.items.Item; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.util.GameLogger; +import com.rebotted.util.Misc; + +public class Trading { + + private final Player player; + + public Trading(Player player2) { + player = player2; + } + + /** + * Trading + **/ + + public CopyOnWriteArrayList offeredItems = new CopyOnWriteArrayList(); + + public void requestTrade(int id) { + try { + Client o = (Client) PlayerHandler.players[id]; + if (id == player.playerId) { + return; + } + + // player owned shop + if (o.isBot && o.shopId >= 0){ + if (isCloseTo(o)) { + player.getShopAssistant().openShop(o.shopId); + } else { + player.getPacketSender().sendMessage("Player is not close enough. Retry when you are closer..."); + } + return; + } + + player.tradeWith = id; + + if (!CastleWars.deleteCastleWarsItems(player, id)) { + return; + } + + if (!player.inTrade && o.tradeRequested && o.tradeWith == player.playerId && player.playerIsBusy() == false && o.playerIsBusy() == false) { //start trading process + if (!isCloseTo(o)) { + player.getPacketSender().sendMessage("Player is not close enough. Retry when you are closer..."); + } else { + player.getTrading().openTrade(); + o.getTrading().openTrade(); + } + } else if (!player.inTrade && player.playerIsBusy() == false && o.playerIsBusy() == false) { //send trade request + //Problem = sends the request then walk to player. Solution= change processing order. Fix= Send message when trying to open the trade interface if the other player isn't closer than 3 tiles. + player.tradeRequested = true; + player.getPacketSender().sendMessage("Sending trade request..."); + o.getPacketSender() + .sendMessage(player.playerName + ":tradereq:"); + } else if (player.playerIsBusy() == true || o.playerIsBusy() == true) { + player.getPacketSender().sendMessage("Other player is busy at the moment."); + } + } catch (Exception e) { + Misc.println("Error requesting trade."); + } + } + public boolean isCloseTo(Client tradedPlayer) { + ValueRange PlayerCoordRangeX = ValueRange.of(tradedPlayer.absX - 3, tradedPlayer.absX + 3); + ValueRange PlayerCoordRangeY = ValueRange.of(tradedPlayer.absY - 3, tradedPlayer.absY + 3); + if (PlayerCoordRangeX.isValidIntValue(player.absX) && PlayerCoordRangeY.isValidIntValue(player.absY)) { + return true; + } else { + return false; + } + } + public void openTrade() { + Client o = (Client) PlayerHandler.players[player.tradeWith]; + + if (o == null) { + return; + } + player.inTrade = true; + player.tradeStatus = 1; + player.tradeRequested = false; + player.getItemAssistant().resetItems(3322); + resetTItems(3415); + resetOTItems(3416); + String out = o.playerName; + + if (o.playerRights == 1) { + out = "@cr1@" + out; + } else if (o.playerRights == 2) { + out = "@cr2@" + out; + } + player.getPacketSender().sendFrame126( + "Trading with: " + o.playerName + " who has @gre@" + + o.getItemAssistant().freeSlots() + " free slots", + 3417); + player.getPacketSender().sendFrame126("", 3431); + player.getPacketSender().sendFrame126( + "Are you sure you want to make this trade?", 3535); + player.getPacketSender().sendFrame248(3323, 3321); + } + + public void resetTItems(int WriteFrame) { + synchronized (player) { + player.getOutStream().createFrameVarSizeWord(53); + player.getOutStream().writeWord(WriteFrame); + int len = offeredItems.toArray().length; + int current = 0; + player.getOutStream().writeWord(len); + for (GameItem item : offeredItems) { + if (item.amount > 254) { + player.getOutStream().writeByte(255); + player.getOutStream().writeDWord_v2(item.amount); + } else { + player.getOutStream().writeByte(item.amount); + } + player.getOutStream().writeWordBigEndianA(item.id + 1); + current++; + } + if (current < 27) { + for (int i = current; i < 28; i++) { + player.getOutStream().writeByte(1); + player.getOutStream().writeWordBigEndianA(-1); + } + } + player.getOutStream().endFrameVarSizeWord(); + player.flushOutStream(); + } + } + + public boolean fromTrade(int itemID, int fromSlot, int amount) { + Client o = (Client) PlayerHandler.players[player.tradeWith]; + if (o == null) { + return false; + } + try { + if (!player.inTrade) { + declineTrade(); + return false; + } + player.tradeConfirmed = false; + o.tradeConfirmed = false; + if (!Item.itemStackable[itemID]) { + for (int a = 0; a < amount; a++) { + for (GameItem item : offeredItems) { + if (item.id == itemID) { + if (!item.stackable) { + offeredItems.remove(item); + player.getItemAssistant().addItem(itemID, 1); + o.getPacketSender().sendFrame126( + "Trading with: " + + player.playerName + + " who has @gre@" + + player.getItemAssistant() + .freeSlots() + + " free slots", 3417); + } else { + if (item.amount > amount) { + item.amount -= amount; + player.getItemAssistant() + .addItem(itemID, amount); + o.getPacketSender().sendFrame126( + "Trading with: " + + player.playerName + + " who has @gre@" + + player.getItemAssistant() + .freeSlots() + + " free slots", 3417); + } else { + amount = item.amount; + offeredItems.remove(item); + player.getItemAssistant() + .addItem(itemID, amount); + o.getPacketSender().sendFrame126( + "Trading with: " + + player.playerName + + " who has @gre@" + + player.getItemAssistant() + .freeSlots() + + " free slots", 3417); + } + } + break; + } + o.getPacketSender().sendFrame126( + "Trading with: " + player.playerName + + " who has @gre@" + + player.getItemAssistant().freeSlots() + + " free slots", 3417); + player.tradeConfirmed = false; + o.tradeConfirmed = false; + player.getItemAssistant().resetItems(3322); + resetTItems(3415); + o.getTrading().resetOTItems(3416); + player.getPacketSender().sendFrame126("", 3431); + o.getPacketSender().sendFrame126("", 3431); + } + } + } + for (GameItem item : offeredItems) { + if (item.id == itemID) { + if (!item.stackable) { + } else { + if (item.amount > amount) { + item.amount -= amount; + player.getItemAssistant().addItem(itemID, amount); + o.getPacketSender().sendFrame126( + "Trading with: " + player.playerName + + " who has @gre@" + + player.getItemAssistant().freeSlots() + + " free slots", 3417); + } else { + amount = item.amount; + offeredItems.remove(item); + player.getItemAssistant().addItem(itemID, amount); + o.getPacketSender().sendFrame126( + "Trading with: " + player.playerName + + " who has @gre@" + + player.getItemAssistant().freeSlots() + + " free slots", 3417); + } + } + break; + } + } + + o.getPacketSender().sendFrame126( + "Trading with: " + player.playerName + " who has @gre@" + + player.getItemAssistant().freeSlots() + " free slots", + 3417); + player.tradeConfirmed = false; + o.tradeConfirmed = false; + player.getItemAssistant().resetItems(3322); + resetTItems(3415); + o.getTrading().resetOTItems(3416); + player.getPacketSender().sendFrame126("", 3431); + o.getPacketSender().sendFrame126("", 3431); + } catch (Exception e) { + } + return true; + } + + public boolean tradeItem(int itemID, int fromSlot, int amount) { + Client o = (Client) PlayerHandler.players[player.tradeWith]; + if (o == null) { + return false; + } + if (!(player.playerItems[fromSlot] == itemID + 1 )){//&& player.playerItemsN[fromSlot] >= amount)) { I removed this check to permit trading max amount of item in inventory even when amount is higher than quantity in inventory. + player.getPacketSender().sendMessage("You don't have that amount!"); + return false; + } + + if (amount >= Integer.MAX_VALUE) { + player.getPacketSender().sendMessage("You can't possibly have that much of that item!"); + player.getItemAssistant().deleteItem(itemID, fromSlot, amount); + return false; + } + + for (int i : GameConstants.ITEM_TRADEABLE) { + if (i == itemID && player.playerRights < 3) { + player.getPacketSender().sendMessage( + "You can't trade this item."); + return false; + } + } + player.tradeConfirmed = false; + o.tradeConfirmed = false; + if (!Item.itemStackable[itemID] && !Item.itemIsNote[itemID]) { + for (int a = 0; a < amount && a < 28; a++) { + if (player.getItemAssistant().playerHasItem(itemID, 1)) { + offeredItems.add(new GameItem(itemID, 1)); + player.getItemAssistant().deleteItem(itemID, + player.getItemAssistant().getItemSlot(itemID), 1); + o.getPacketSender().sendFrame126( + "Trading with: " + player.playerName + " who has @gre@" + + player.getItemAssistant().freeSlots() + + " free slots", 3417); + } + } + o.getPacketSender().sendFrame126( + "Trading with: " + player.playerName + " who has @gre@" + + player.getItemAssistant().freeSlots() + " free slots", + 3417); + player.getItemAssistant().resetItems(3322); + resetTItems(3415); + o.getTrading().resetOTItems(3416); + player.getPacketSender().sendFrame126("", 3431); + o.getPacketSender().sendFrame126("", 3431); + } + if (player.getItemAssistant().getItemCount(itemID) < amount) { + amount = player.getItemAssistant().getItemCount(itemID); + if (amount == 0) { + return false; + } + } + if (!player.inTrade || !o.inTrade) { + declineTrade(); + return false; + } + if (Item.itemStackable[itemID] || Item.itemIsNote[itemID]) { + boolean inTrade = false; + for (GameItem item : offeredItems) { + if (item.id == itemID) { + inTrade = true; + item.amount += amount; + player.getItemAssistant().deleteItem(itemID, amount); + o.getPacketSender().sendFrame126( + "Trading with: " + player.playerName + " who has @gre@" + + player.getItemAssistant().freeSlots() + + " free slots", 3417); + break; + } + } + + if (!inTrade) { + offeredItems.add(new GameItem(itemID, amount)); + player.getItemAssistant().deleteItem(itemID, amount); + o.getPacketSender().sendFrame126( + "Trading with: " + player.playerName + " who has @gre@" + + player.getItemAssistant().freeSlots() + + " free slots", 3417); + } + } + o.getPacketSender().sendFrame126( + "Trading with: " + player.playerName + " who has @gre@" + + player.getItemAssistant().freeSlots() + " free slots", + 3417); + player.getItemAssistant().resetItems(3322); + resetTItems(3415); + o.getTrading().resetOTItems(3416); + player.getPacketSender().sendFrame126("", 3431); + o.getPacketSender().sendFrame126("", 3431); + return true; + } + + public void resetTrade() { + offeredItems.clear(); + player.inTrade = false; + player.tradeWith = 0; + player.tradeConfirmed = false; + player.tradeConfirmed2 = false; + player.acceptedTrade = false; + player.getPacketSender().closeAllWindows(); + player.tradeResetNeeded = false; + player.getPacketSender().sendFrame126( + "Are you sure you want to make this trade?", 3535); + } + + public void declineTrade() { + player.tradeStatus = 0; + declineTrade(true); + } + + public void declineTrade(boolean tellOther) { + player.getPacketSender().closeAllWindows(); + Client o = (Client) PlayerHandler.players[player.tradeWith]; + if (o == null) { + return; + } + + if (tellOther) { + o.getTrading().declineTrade(false); + o.getTrading().player.getPacketSender().closeAllWindows(); + } + + for (GameItem item : offeredItems) { + if (item.amount < 1) { + continue; + } + if (item.stackable) { + player.getItemAssistant().addItem(item.id, item.amount); + } else { + for (int i = 0; i < item.amount; i++) { + player.getItemAssistant().addItem(item.id, 1); + } + } + } + player.tradeConfirmed = false; + player.tradeConfirmed2 = false; + offeredItems.clear(); + player.inTrade = false; + player.tradeWith = 0; + } + + public void resetOTItems(int WriteFrame) { + synchronized (player) { + Client o = (Client) PlayerHandler.players[player.tradeWith]; + if (o == null) { + return; + } + player.getOutStream().createFrameVarSizeWord(53); + player.getOutStream().writeWord(WriteFrame); + int len = o.getTrading().offeredItems.toArray().length; + int current = 0; + player.getOutStream().writeWord(len); + for (GameItem item : o.getTrading().offeredItems) { + if (item.amount > 254) { + player.getOutStream().writeByte(255); // item's stack count. if + // over 254, write byte + // 255 + player.getOutStream().writeDWord_v2(item.amount); + } else { + player.getOutStream().writeByte(item.amount); + } + player.getOutStream().writeWordBigEndianA(item.id + 1); // item id + current++; + } + if (current < 27) { + for (int i = current; i < 28; i++) { + player.getOutStream().writeByte(1); + player.getOutStream().writeWordBigEndianA(-1); + } + } + player.getOutStream().endFrameVarSizeWord(); + player.flushOutStream(); + } + } + + public void confirmScreen() { + Client o = (Client) PlayerHandler.players[player.tradeWith]; + if (o == null) { + return; + } + if(!player.inTrade) { + declineTrade(); + return; + } + player.getItemAssistant().resetItems(3214); + String SendTrade = "Absolutely nothing!"; + String SendAmount = ""; + int Count = 0; + for (GameItem item : offeredItems) { + if (item.id > 0) { + if (item.amount >= 1000 && item.amount < 1000000) { + SendAmount = "@cya@" + item.amount / 1000 + "K @whi@(" + + Misc.format(item.amount) + ")"; + } else if (item.amount >= 1000000) { + SendAmount = "@gre@" + item.amount / 1000000 + + " million @whi@(" + Misc.format(item.amount) + + ")"; + } else { + SendAmount = "" + Misc.format(item.amount); + } + + if (Count == 0) { + SendTrade = ItemAssistant.getItemName(item.id); + } else { + SendTrade = SendTrade + "\\n" + + ItemAssistant.getItemName(item.id); + } + + if (item.stackable) { + SendTrade = SendTrade + " x " + SendAmount; + } + Count++; + } + } + + player.getPacketSender().sendFrame126(SendTrade, 3557); + SendTrade = "Absolutely nothing!"; + SendAmount = ""; + Count = 0; + + for (GameItem item : o.getTrading().offeredItems) { + if (item.id > 0) { + if (item.amount >= 1000 && item.amount < 1000000) { + SendAmount = "@cya@" + item.amount / 1000 + "K @whi@(" + + Misc.format(item.amount) + ")"; + } else if (item.amount >= 1000000) { + SendAmount = "@gre@" + item.amount / 1000000 + + " million @whi@(" + Misc.format(item.amount) + + ")"; + } else { + SendAmount = "" + Misc.format(item.amount); + } + + if (Count == 0) { + SendTrade = ItemAssistant.getItemName(item.id); + } else { + SendTrade = SendTrade + "\\n" + + ItemAssistant.getItemName(item.id); + } + if (item.stackable) { + SendTrade = SendTrade + " x " + SendAmount; + } + Count++; + } + } + player.getPacketSender().sendFrame126(SendTrade, 3558); + // TODO: find out what 197 does eee 3213 + player.getPacketSender().sendFrame248(3443, 197); + } + + public void giveItems() { + Client o = (Client) PlayerHandler.players[player.tradeWith]; + if (o == null) { + return; + } + try { + for (GameItem item : o.getTrading().offeredItems) { + String itemName = ItemAssistant.getItemName(item.id); + if (item.id > 0) { + player.getItemAssistant().addItem(item.id, item.amount); + if (player.getPlayerAssistant().isPlayer()) { + GameLogger.writeLog(o.playerName, "tradesgave", o.playerName + " traded " + player.playerName + " and gave " + item.amount + " " + itemName + ""); + } + } + if (player.getPlayerAssistant().isPlayer()) { + GameLogger.writeLog(player.playerName, "tradesrecieved", player.playerName + " was traded by " + o.playerName + " and recieved " + item.amount + " " + itemName + ""); + } + } + player.getPacketSender().closeAllWindows(); + player.tradeResetNeeded = true; + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (player.inTrade && player.tradeResetNeeded) { + Client o = (Client) PlayerHandler.players[player.tradeWith]; + if (o != null) { + if (o.tradeResetNeeded) { + player.getTrading().resetTrade(); + o.getTrading().resetTrade(); + container.stop(); + } else { + container.stop(); + } + } else { + container.stop(); + } + } else { + container.stop(); + } + } + + @Override + public void stop() { + player.tradeResetNeeded = false; + } + }, 1); + } catch (Exception e) { + } + } + +} diff --git a/2006Redone Server/src/redone/game/players/antimacro/AntiSpam.java b/2006Redone Server/src/com/rebotted/game/players/antimacro/AntiSpam.java similarity index 82% rename from 2006Redone Server/src/redone/game/players/antimacro/AntiSpam.java rename to 2006Redone Server/src/com/rebotted/game/players/antimacro/AntiSpam.java index 95f09751..bdb0b591 100644 --- a/2006Redone Server/src/redone/game/players/antimacro/AntiSpam.java +++ b/2006Redone Server/src/com/rebotted/game/players/antimacro/AntiSpam.java @@ -1,37 +1,37 @@ -package redone.game.players.antimacro; - -import redone.game.players.Client; - -/** - * AntiSpam - * @author Andrew (I'm A Boss on Rune-Server and Mr Extremez on Mopar & Runelocus) - */ - -public class AntiSpam { - - private final static String[] BLOCKED_WORDS = { - "(dot)", ".com", "tk", ".org", ".net", ".info", ".cam", ".c0m", ". net", "(,)com", - ".inf0", ".0rg", "(.)", ".biz", ".co.uk", ". com", ". info", ". c0m", ",com", - ". biz", ". tk", ". 0rg", ". cam", ". inf0", "c'om", "c'0m", ". org", "dupe", - "http", "no-ip", "tradereq", "duelreq", "www", "vww", "c' om", "c' 0m", "w-w-w", - "w'ww", "w'w'w", "w 'ww", "w' w' w", "ww' w", "wvv", "ww", "wwv", "vvv", "vwv", - "w)w)w", "?com", "/com", "'com", "(com)", "(w)(w)(w)", "bot", "sythe", "abusewith.us", - "osrs", "2007rs", "runerebels", "06prime", "2006prime", "arios498", "ariosrsps", "coom" - }; - - public static boolean blockedWords(Client player, String word, boolean chat) { - for (int i = 0; i < BLOCKED_WORDS.length; i++) { - if (player.getPlayerAssistant().isPlayer()) { - if (word.contains(BLOCKED_WORDS[i]) || word.equalsIgnoreCase(player.playerPass)) { - player.getActionSender().sendMessage("You can't say that word!"); - if (chat) { - player.setChatTextUpdateRequired(false); - } - return false; - } - } - } - return true; - } - -} +package com.rebotted.game.players.antimacro; + +import com.rebotted.game.players.Player; + +/** + * AntiSpam + * @author Andrew (I'm A Boss on Rune-Server and Mr Extremez on Mopar & Runelocus) + */ + +public class AntiSpam { + + private final static String[] BLOCKED_WORDS = { + "(dot)", ".com", "tk", ".org", ".net", ".info", ".cam", ".c0m", ". net", "(,)com", + ".inf0", ".0rg", "(.)", ".biz", ".co.uk", ". com", ". info", ". c0m", ",com", + ". biz", ". tk", ". 0rg", ". cam", ". inf0", "c'om", "c'0m", ". org", "dupe", + "http", "no-ip", "tradereq", "duelreq", "www", "vww", "c' om", "c' 0m", "w-w-w", + "w'ww", "w'w'w", "w 'ww", "w' w' w", "ww' w", "wvv", "ww", "wwv", "vvv", "vwv", + "w)w)w", "?com", "/com", "'com", "(com)", "(w)(w)(w)", "bot", "sythe", "abusewith.us", + "osrs", "2007rs", "runerebels", "06prime", "2006prime", "arios498", "ariosrsps", "coom" + }; + + public static boolean blockedWords(Player player, String word, boolean chat) { + for (int i = 0; i < BLOCKED_WORDS.length; i++) { + if (player.getPlayerAssistant().isPlayer()) { + if (word.contains(BLOCKED_WORDS[i]) || word.equalsIgnoreCase(player.playerPass)) { + player.getPacketSender().sendMessage("You can't say that word!"); + if (chat) { + player.setChatTextUpdateRequired(false); + } + return false; + } + } + } + return true; + } + +} diff --git a/2006Redone Server/src/redone/game/shops/ShopAssistant.java b/2006Redone Server/src/com/rebotted/game/shops/ShopAssistant.java similarity index 62% rename from 2006Redone Server/src/redone/game/shops/ShopAssistant.java rename to 2006Redone Server/src/com/rebotted/game/shops/ShopAssistant.java index a94238f8..64049f83 100644 --- a/2006Redone Server/src/redone/game/shops/ShopAssistant.java +++ b/2006Redone Server/src/com/rebotted/game/shops/ShopAssistant.java @@ -1,602 +1,601 @@ -package redone.game.shops; - -import redone.Constants; -import redone.game.bots.BotHandler; -import redone.game.items.Item; -import redone.game.items.ItemAssistant; -import redone.game.items.ItemDefinitions; -import redone.game.players.Client; -import redone.game.players.PlayerHandler; -import redone.util.GameLogger; - - -/** - * Many Fixes/Things Added - * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) - */ - -public class ShopAssistant { - - private final Client player; - - public ShopAssistant(Client client) { - player = client; - } - - public static final int RANGE_SHOP = 111, PEST_SHOP = 175, CASTLE_SHOP = 112; - - /** - * Shops - **/ - - public void openShop(int ShopID) { - player.getActionSender().sendSound(1465, 100, 0); - player.getItemAssistant().resetItems(3823); - resetShop(ShopID); - player.isShopping = true; - player.myShopId = ShopID; - player.getPlayerAssistant().sendFrame248(3824, 3822); - player.getPlayerAssistant().sendFrame126(ShopHandler.ShopName[ShopID], 3901); - } - - public void updatePlayerShop() { - for (int i = 0; i < PlayerHandler.players.length; i++) { - if (PlayerHandler.players[i] != null) { - if (PlayerHandler.players[i].isShopping == true - && PlayerHandler.players[i].myShopId == player.myShopId - && i != player.playerId) { - PlayerHandler.players[i].updateShop = true; - } - } - } - } - - public void updateshop(int i) { - resetShop(i); - } - - public void resetShop(int ShopID) { - synchronized (player) { - player.TotalShopItems = 0; - for (int i = 0; i < ShopHandler.MaxShopItems; i++) { //adds items in store when items are sold until max value. - if (ShopHandler.ShopItems[ShopID][i] > 0) { - player.TotalShopItems++; - } - } - player.getOutStream().createFrameVarSizeWord(53); - player.getOutStream().writeWord(3900); - player.getOutStream().writeWord(player.TotalShopItems); - int TotalCount = 0; - for (int i = 0; i < ShopHandler.ShopItems[player.myShopId].length; i++) - { - if (ShopHandler.ShopItems[ShopID][i] > 0 - || i <= ShopHandler.ShopItemsStandard[ShopID]) - { - if (ShopHandler.ShopItemsN[ShopID][i] > 254) { - player.getOutStream().writeByte(255); - player.getOutStream().writeDWord_v2(ShopHandler.ShopItemsN[ShopID][i]); - } - else - { - player.getOutStream().writeByte(ShopHandler.ShopItemsN[ShopID][i]); - } - if (ShopHandler.ShopItems[ShopID][i] > Constants.ITEM_LIMIT - || ShopHandler.ShopItems[ShopID][i] < 0) { - ShopHandler.ShopItems[ShopID][i] = Constants.ITEM_LIMIT; - } - player.getOutStream().writeWordBigEndianA( - ShopHandler.ShopItems[ShopID][i]); - TotalCount++; - } - if (TotalCount > player.TotalShopItems) { - break; - } - } - player.getOutStream().endFrameVarSizeWord(); - player.flushOutStream(); - } - } - - public int getItemShopValue(int ItemID, int Type, boolean isSelling) { - double ShopValue = 1; - double TotPrice = 0; - double sellingRatio = isSelling ? 0.85 : 1; - if (ItemDefinitions.getDef()[ItemID] != null) { - ShopValue = ItemDefinitions.getDef()[ItemID].highAlch / 3.0 * 5.0 * sellingRatio; - } - - TotPrice = ShopValue; - - // General store pays less for items - if (isSelling && ShopHandler.ShopBModifier[player.myShopId] == 1) { - TotPrice *= 0.90; - } - // Minimum value of 1 - return (int) Math.max(1, Math.floor(TotPrice)); - } - - public int getItemShopValue(int itemId) { - return getItemShopValue(itemId, 0, false); - } - - - /** - * buy item from shop (Shop Price) - **/ - - public void buyFromShopPrice(int itemID) { - int ShopValue = (int) Math.floor(getItemShopValue(itemID, 0, false)); - int SpecialValue = getTokkulValue(itemID); - String ShopAdd = ""; - // player owned shop - if (ShopHandler.ShopBModifier[player.myShopId] == 0) { - ShopValue = BotHandler.getItemPrice(player.myShopId, itemID); - } - if (player.myShopId == 138 || player.myShopId == 139 || player.myShopId == 58) { - player.getActionSender().sendMessage(ItemAssistant.getItemName(itemID) + ": currently costs " + SpecialValue + " tokkul."); - return; - } - if (player.myShopId == PEST_SHOP) { - player.getActionSender().sendMessage(ItemAssistant.getItemName(itemID)+": currently costs " + getPestItemValue(itemID) + " pest control points."); - return; - } - if (player.myShopId == CASTLE_SHOP) { - player.getActionSender().sendMessage(ItemAssistant.getItemName(itemID)+": currently costs " + getCastleItemValue(itemID) + " castle wars tickets."); - return; - } - if (player.myShopId == RANGE_SHOP) { - player.getActionSender().sendMessage(ItemAssistant.getItemName(itemID)+": currently costs " + getRGItemValue(itemID) + " archery tickets."); - return; - } - if (ShopValue >= 1000 && ShopValue < 1000000) { - ShopAdd = " (" + ShopValue / 1000 + "K)"; - } else if (ShopValue >= 1000000) { - ShopAdd = " (" + ShopValue / 1000000 + " million)"; - } - player.getActionSender().sendMessage(ItemAssistant.getItemName(itemID) + ": currently costs " + ShopValue + " coins" + ShopAdd); - } - - public int getCastleItemValue(int id) { - switch (id) { - /*Red Items*/ - case 4071: - return 4; - case 4069: - return 8; - case 4070: - case 4072: - return 6; - case 4068: - return 5; - /*Silver/Blue Items*/ - case 4506: - return 40; - case 4504: - return 80; - case 4505: - case 4507: - return 60; - case 4503: - return 50; - /*Gold/Blue Items*/ - case 4511: - return 400; - case 4509: - return 800; - case 4510: - case 4512: - return 600; - case 4508: - return 500; - /*Capes & Hoods*/ - case 4513: - case 4514: - case 4515: - case 4516: - return 10; - } - return 0; - } - - - public int getPestItemValue(int id) { - switch (id) { - } - return 0; - } - - public int getRGItemValue(int id) { - switch (id) { - case 47: - return 4; - case 1133: - return 51; - case 1135: - return 2400; - case 829: - return 15; - case 1169: - return 100; - case 892: - return 40; - } - return 0; - } - - - public int getTokkulValue(int id) { - switch (id) { - case 438: - case 436: - return 4; - case 453: - return 25; - case 1623: - return 37; - case 1621: - return 75; - case 6571: - return 300000; - case 554: - case 555: - case 556: - case 557: - return 6; - case 558: - case 559: - return 4; - case 562: - return 135; - case 560: - return 270; - case 6522: - return 375; - case 6523: - return 60000; - case 6524: - return 67500; - case 6525: - return 37500; - case 6526: - return 52500; - case 6527: - return 45000; - case 6528: - return 75000; - case 6568: - return 90000; - } - return 0; - } - - /** - * Sell item to shop (Shop Price) - **/ - public void sellToShopPrice(int removeId, int removeSlot) { - int unNotedItemID = getUnNoted(removeId); - String itemName = ItemAssistant.getItemName(unNotedItemID); - for (int i : Constants.ITEM_SELLABLE) { - if (unNotedItemID == i) { - player.getActionSender().sendMessage("You can't sell " + ItemAssistant.getItemName(removeId).toLowerCase() + "."); - return; - } - } - boolean IsIn = false; - switch (ShopHandler.ShopSModifier[player.myShopId]) { - // Only buys what is in stock - case 2: - for (int j = 0; j <= ShopHandler.ShopItemsStandard[player.myShopId]; j++) { - if (unNotedItemID == (ShopHandler.ShopItems[player.myShopId][j] - 1)) { - IsIn = true; - break; - } - } - break; - // General store - case 1: - IsIn = true; - break; - // Player owns this store - case 0: - IsIn = ShopHandler.playerOwnsStore(player.myShopId, player); - break; - } - - if (IsIn == false) { - player.getActionSender().sendMessage("You can't sell " + ItemAssistant.getItemName(removeId).toLowerCase() + " to this store."); - } else { - int ShopValue = (int) Math.floor(getItemShopValue(unNotedItemID, 1, true)); - int tokkulValue = (int) Math.floor(getTokkulValue(unNotedItemID) *.85); - String ShopAdd = ""; - if (ShopValue >= 1000 && ShopValue < 1000000) { - ShopAdd = " (" + (ShopValue / 1000) + "K)"; - } else if (ShopValue >= 1000000) { - ShopAdd = " (" + (ShopValue / 1000000) + " million)"; - } - if (ShopHandler.playerOwnsStore(player.myShopId, player)) { - if (ShopHandler.getStock(player.myShopId, unNotedItemID) > 0) - player.getActionSender().sendMessage(itemName + ": you are selling this item for " + BotHandler.getItemPrice(player.myShopId, unNotedItemID) + " coins."); - else - player.getActionSender().sendMessage(itemName + ": you haven't set your sell price."); - } else if (player.myShopId != RANGE_SHOP && player.myShopId != PEST_SHOP && player.myShopId != CASTLE_SHOP && player.myShopId != 138 && player.myShopId != 58 && player.myShopId != 139) { - player.getActionSender().sendMessage(itemName + ": shop will buy for " + ShopValue + " coins." + ShopAdd); - } else if (player.myShopId == 138 || player.myShopId == 139 || player.myShopId == 58) { - player.getActionSender().sendMessage(itemName + ": shop will buy for " + tokkulValue + " tokkul."); - } else if (player.myShopId == RANGE_SHOP) { - player.getActionSender().sendMessage(itemName + ": shop will buy for " + getRGItemValue(unNotedItemID) + " archery tickets." + ShopAdd); - } else if (player.myShopId == PEST_SHOP) { - player.getActionSender().sendMessage(itemName + ": shop will buy for " + getPestItemValue(unNotedItemID) + " pest control points." + ShopAdd); - } else if (player.myShopId == CASTLE_SHOP) { - player.getActionSender().sendMessage(itemName + ": shop will buy for " + getCastleItemValue(unNotedItemID) + " castle war tickets." + ShopAdd); - } - } - } - - public boolean sellItem(int itemID, int fromSlot, int amount) { - int unNotedItemID = getUnNoted(itemID); - String itemName = ItemAssistant.getItemName(itemID).toLowerCase(); - for (int i : Constants.ITEM_SELLABLE) { - if (i == unNotedItemID) { - player.getActionSender().sendMessage("You can't sell " + itemName + "."); - return false; - } - } - if (player.playerRights == 2 && !Constants.ADMIN_CAN_SELL_ITEMS) { - player.getActionSender().sendMessage("Selling items as an admin has been disabled."); - return false; - } - if(!player.isShopping) { - return false; - } - // We can only store 40 items per shop - if (player.TotalShopItems >= 40) { - player.getActionSender().sendMessage("This shop is out of space!"); - return false; - } - // Check we have the item in our inventory - int inventoryAmount = player.getItemAssistant().getItemAmount(itemID); - if (amount > 0 && inventoryAmount > 0) { - boolean canSellToStore = false; - // Type of store - switch (ShopHandler.ShopSModifier[player.myShopId]) { - // Only buys what they sell - case 2: - for (int j = 0; j <= ShopHandler.ShopItemsStandard[player.myShopId]; j++) { - if (unNotedItemID == (ShopHandler.ShopItems[player.myShopId][j] - 1)) { - canSellToStore = true; - break; - } - } - break; - // General store - buys anything - case 1: - canSellToStore = true; - break; - // Player owned store - only "buys" from the player whos store it is - case 0: - canSellToStore = ShopHandler.playerOwnsStore(player.myShopId, player); - break; - } - if (canSellToStore == false) { - player.getItemAssistant(); - player.getActionSender().sendMessage("You can't sell " + itemName + " to this store."); - return false; - } - // player owned store, setting item price - if (ShopHandler.playerOwnsStore(player.myShopId, player)) { - // No items in stock, we are adding 1 and setting the price - if (ShopHandler.getStock(player.myShopId, unNotedItemID) <= 0){ - player.getItemAssistant().deleteItem(itemID, 1); - BotHandler.addTobank(player.myShopId, unNotedItemID, 1); - BotHandler.setPrice(player.myShopId, unNotedItemID, amount); - addShopItem(unNotedItemID, 1); - player.getItemAssistant().resetItems(3823); - resetShop(player.myShopId); - updatePlayerShop(); - return true; - } - } - if (amount > inventoryAmount) { - amount = inventoryAmount; - } - - int value = 1; - int currency = 995; - if (player.myShopId == 138 || player.myShopId == 58 || player.myShopId == 139) { - value = (int) Math.floor(getTokkulValue(unNotedItemID) * .85); - currency = 6529; - } else { - value = (int) Math.floor(getItemShopValue(unNotedItemID, amount, true)); - currency = 995; - } - - boolean isStackable = ItemDefinitions.getDef()[itemID].isStackable; - - if (!player.getItemAssistant().playerHasItem(currency) && isStackable && amount < inventoryAmount && player.getItemAssistant().freeSlots() <= 0) { - player.getActionSender().sendMessage("You don't have enough space in your inventory."); - } - - player.getItemAssistant().deleteItem(itemID, amount); - - if (ShopHandler.playerOwnsStore(player.myShopId, player)) { - // Add items to players store - player.getActionSender().sendMessage("You sent " + amount + " " + itemName + " to your store."); - BotHandler.addTobank(player.myShopId, unNotedItemID, amount); - } else { - // Add currency to players inventory - int totalValue = value * amount; - player.getItemAssistant().addItem(currency, totalValue); - player.getActionSender().sendMessage("You sold " + amount + " " + itemName + " for " + totalValue + " " + ItemAssistant.getItemName(currency).toLowerCase() + "."); - } - - // Add item to the shop - addShopItem(unNotedItemID, amount); - player.getItemAssistant().resetItems(3823); - resetShop(player.myShopId); - updatePlayerShop(); - return true; - } - return true; - } - - public boolean addShopItem(int itemID, int amount) { - boolean Added = false; - if (amount <= 0) { - return false; - } - if (Item.itemIsNote[itemID]) { - itemID = player.getItemAssistant().getUnnotedItem(itemID); - } - for (int i = 0; i < ShopHandler.ShopItems[player.myShopId].length; i++) { - if (ShopHandler.ShopItems[player.myShopId][i] - 1 == itemID) { - ShopHandler.ShopItemsN[player.myShopId][i] += amount; - Added = true; - } - } - if (Added == false) { - for (int i = 0; i < ShopHandler.ShopItems[player.myShopId].length; i++) { - if (ShopHandler.ShopItems[player.myShopId][i] == 0) { - ShopHandler.ShopItems[player.myShopId][i] = itemID + 1; - ShopHandler.ShopItemsN[player.myShopId][i] = amount; - ShopHandler.ShopItemsDelay[player.myShopId][i] = 0; - break; - } - } - } - return true; - } - - private static int getUnNoted(int itemID){ - String itemName = ItemAssistant.getItemName(itemID).toLowerCase(); - String ItemNameUnNotedItem = ItemAssistant.getItemName(itemID - 1).toLowerCase(); - if (itemName.contains(ItemNameUnNotedItem)) { - itemID--; //Replace the noted item by it's un-noted version. - } - return itemID; - } - - private static int getNoted(int itemID){ - String itemName = ItemAssistant.getItemName(itemID).toLowerCase(); - String ItemNameUnNotedItem = ItemAssistant.getItemName(itemID + 1).toLowerCase(); - if (itemName.contains(ItemNameUnNotedItem)) { - itemID++; //Replace the item by it's noted version. - } - return itemID; - } - - private static final int FISHING_ITEMS[] = {383, 371, 377, 359, 321, 341, 353, 345, 327, 317}; - - public boolean buyItem(int itemID, int fromSlot, int amount) { - int shopID = player.myShopId; - int notedItemID = getNoted(itemID); - boolean isPlayerShop = ShopHandler.ShopBModifier[player.myShopId] == 0; - // Items are stackable if from a player owned shop and notable - boolean isStackable = ItemDefinitions.getDef()[itemID].isStackable || (isPlayerShop && getNoted(itemID) != itemID); - int freeSlots = player.getItemAssistant().freeSlots(); - int storeQty = ShopHandler.getStock(shopID, itemID); - if (amount > 0) { - if (storeQty <= 0) { - // none in stock, or not sold here - player.getActionSender().sendMessage("You can't buy that right now!"); - return false; - } - if (amount > storeQty) { - // buy all that the store has - amount = storeQty; - } - if (freeSlots <= 0){ - if (!isStackable || isStackable && !player.getItemAssistant().playerHasItem(isPlayerShop ? notedItemID : itemID)) { - player.getActionSender().sendMessage("You don't have enough space in your inventory."); - return false; - } - } - if (!isStackable && amount > freeSlots) { - // player will fill their inventory - amount = freeSlots; - } - if(!player.isShopping) { - return false; - } - for (int i = 0; i < FISHING_ITEMS.length; i++) { - if (player.myShopId == 32 && itemID == FISHING_ITEMS[i]) { - player.getActionSender().sendMessage("You can't buy that item from this store!"); - return false; - } - } - int value = 0; - int currency = 995; - // player owned shop - boolean showIsOwnedByThisPlayer = ShopHandler.playerOwnsStore(player.myShopId, player); - if (showIsOwnedByThisPlayer) { // PLayers own shop, no cost - value = 0; - currency = -1; - } else if (isPlayerShop) { // Shop owned by another player - value = BotHandler.getItemPrice(player.myShopId, itemID); - currency = 995; // gp - } else if (player.myShopId == 138 || player.myShopId == 58 || player.myShopId == 139) { - value = getTokkulValue(itemID); - currency = 6529; // Tokkul - } else if (player.myShopId == RANGE_SHOP) { - value = getRGItemValue(itemID); - currency = 1464; // Archery tickets - } else if (player.myShopId == PEST_SHOP) { - value = getPestItemValue(itemID); - currency = 995; // gp - } else if (player.myShopId == CASTLE_SHOP) { - value = getCastleItemValue(itemID); - currency = 4067; // castle wars tickets - } else { - value = getItemShopValue(itemID, 0, false); - currency = 995; //gp - } - int currencySlot = player.getItemAssistant().getItemSlot(currency); - String currencyName = ItemAssistant.getItemName(currency).toLowerCase(); - - // player has none of the required currency - if (currencySlot == -1) { - player.getActionSender().sendMessage("You don't have enough " + currencyName + " to buy that."); - return false; - } - - // amount of currency the player has - int currencyAmount = player.playerItemsN[currencySlot]; - - int totalValue = value * amount; - if (currencyAmount < totalValue) { - amount = (int) Math.floor(player.playerItemsN[currencySlot] / value); - // buy as many as we can afford - totalValue = value * amount; - if (currencyAmount < totalValue || amount <= 0) { - player.getActionSender().sendMessage("You don't have enough " + currencyName + " to buy that."); - return false; - } - } - - String itemName = ItemAssistant.getItemName(itemID).toLowerCase(); - if (!showIsOwnedByThisPlayer) { - player.getItemAssistant().deleteItem(currency, totalValue); - player.getActionSender().sendMessage("You bought " + amount + " " + itemName + " for " + totalValue + " " + currencyName + "." ); - // If it is a player owned shop, we need to give them the coins - if (ShopHandler.ShopSModifier[player.myShopId] == 0) - BotHandler.addCoins(shopID, totalValue); - } else { - player.getActionSender().sendMessage("You withdrew " + amount + " " + itemName + " from your store." ); - } - // If it is a player owned store, give the player the noted item - player.getItemAssistant().addItem(isPlayerShop ? notedItemID : itemID, amount); - ShopHandler.buyItem(shopID, itemID, amount); - if (ShopHandler.ShopBModifier[shopID] == 0){ - BotHandler.removeFrombank(shopID, itemID, amount); - } - - if (player.getPlayerAssistant().isPlayer()) { - GameLogger.writeLog(player.playerName, "shopbuying", player.playerName + " bought " + amount + " " + itemName + " for " + totalValue + " " + currencyName + " from store " + shopID + "."); - } - player.getItemAssistant().resetItems(3823); - resetShop(player.myShopId); - updatePlayerShop(); - return true; //return TRUE / FALSE Update = shop&Inventory / Doesnt Update - } - return false; - } -} +package com.rebotted.game.shops; + +import com.rebotted.GameConstants; +import com.rebotted.game.bots.BotHandler; +import com.rebotted.game.items.Item; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.items.ItemDefinitions; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerHandler; +import com.rebotted.util.GameLogger; + +/** + * Many Fixes/Things Added + * @author Andrew (Mr Extremez) + */ + +public class ShopAssistant { + + private final Player player; + + public ShopAssistant(Player player2) { + player = player2; + } + + public static final int RANGE_SHOP = 111, PEST_SHOP = 175, CASTLE_SHOP = 112; + + /** + * Shops + **/ + + public void openShop(int ShopID) { + player.getPacketSender().sendSound(1465, 100, 0); + player.getItemAssistant().resetItems(3823); + resetShop(ShopID); + player.isShopping = true; + player.shopId = ShopID; + player.getPacketSender().sendFrame248(3824, 3822); + player.getPacketSender().sendFrame126(ShopHandler.shopName[ShopID], 3901); + } + + public void updatePlayerShop() { + for (int i = 0; i < PlayerHandler.players.length; i++) { + if (PlayerHandler.players[i] != null) { + if (PlayerHandler.players[i].isShopping == true + && PlayerHandler.players[i].shopId == player.shopId + && i != player.playerId) { + PlayerHandler.players[i].updateShop = true; + } + } + } + } + + public void updateshop(int i) { + resetShop(i); + } + + public void resetShop(int ShopID) { + synchronized (player) { + player.totalShopItems = 0; + for (int i = 0; i < ShopHandler.MAX_SHOP_ITEMS; i++) { //adds items in store when items are sold until max value. + if (ShopHandler.shopItems[ShopID][i] > 0) { + player.totalShopItems++; + } + } + player.getOutStream().createFrameVarSizeWord(53); + player.getOutStream().writeWord(3900); + player.getOutStream().writeWord(player.totalShopItems); + int TotalCount = 0; + for (int i = 0; i < ShopHandler.shopItems[player.shopId].length; i++) + { + if (ShopHandler.shopItems[ShopID][i] > 0 + || i <= ShopHandler.shopItemsStandard[ShopID]) + { + if (ShopHandler.shopItemsN[ShopID][i] > 254) { + player.getOutStream().writeByte(255); + player.getOutStream().writeDWord_v2(ShopHandler.shopItemsN[ShopID][i]); + } + else + { + player.getOutStream().writeByte(ShopHandler.shopItemsN[ShopID][i]); + } + if (ShopHandler.shopItems[ShopID][i] > GameConstants.ITEM_LIMIT + || ShopHandler.shopItems[ShopID][i] < 0) { + ShopHandler.shopItems[ShopID][i] = GameConstants.ITEM_LIMIT; + } + player.getOutStream().writeWordBigEndianA( + ShopHandler.shopItems[ShopID][i]); + TotalCount++; + } + if (TotalCount > player.totalShopItems) { + break; + } + } + player.getOutStream().endFrameVarSizeWord(); + player.flushOutStream(); + } + } + + public int getItemShopValue(int ItemID, int Type, boolean isSelling) { + double ShopValue = 1; + double TotPrice = 0; + double sellingRatio = isSelling ? 0.85 : 1; + if (ItemDefinitions.getDef()[ItemID] != null) { + ShopValue = ItemDefinitions.getDef()[ItemID].highAlch / 3.0 * 5.0 * sellingRatio; + } + + TotPrice = ShopValue; + + // General store pays less for items + if (isSelling && ShopHandler.shopBModifier[player.shopId] == 1) { + TotPrice *= 0.90; + } + // Minimum value of 1 + return (int) Math.max(1, Math.floor(TotPrice)); + } + + public int getItemShopValue(int itemId) { + return getItemShopValue(itemId, 0, false); + } + + + /** + * buy item from shop (Shop Price) + **/ + + public void buyFromShopPrice(int itemID) { + int ShopValue = (int) Math.floor(getItemShopValue(itemID, 0, false)); + int SpecialValue = getTokkulValue(itemID); + String ShopAdd = ""; + // player owned shop + if (ShopHandler.shopBModifier[player.shopId] == 0) { + ShopValue = BotHandler.getItemPrice(player.shopId, itemID); + } + if (player.shopId == 138 || player.shopId == 139 || player.shopId == 58) { + player.getPacketSender().sendMessage(ItemAssistant.getItemName(itemID) + ": currently costs " + SpecialValue + " tokkul."); + return; + } + if (player.shopId == PEST_SHOP) { + player.getPacketSender().sendMessage(ItemAssistant.getItemName(itemID)+": currently costs " + getPestItemValue(itemID) + " pest control points."); + return; + } + if (player.shopId == CASTLE_SHOP) { + player.getPacketSender().sendMessage(ItemAssistant.getItemName(itemID)+": currently costs " + getCastleItemValue(itemID) + " castle wars tickets."); + return; + } + if (player.shopId == RANGE_SHOP) { + player.getPacketSender().sendMessage(ItemAssistant.getItemName(itemID)+": currently costs " + getRGItemValue(itemID) + " archery tickets."); + return; + } + if (ShopValue >= 1000 && ShopValue < 1000000) { + ShopAdd = " (" + ShopValue / 1000 + "K)"; + } else if (ShopValue >= 1000000) { + ShopAdd = " (" + ShopValue / 1000000 + " million)"; + } + player.getPacketSender().sendMessage(ItemAssistant.getItemName(itemID) + ": currently costs " + ShopValue + " coins" + ShopAdd); + } + + public int getCastleItemValue(int id) { + switch (id) { + /*Red Items*/ + case 4071: + return 4; + case 4069: + return 8; + case 4070: + case 4072: + return 6; + case 4068: + return 5; + /*Silver/Blue Items*/ + case 4506: + return 40; + case 4504: + return 80; + case 4505: + case 4507: + return 60; + case 4503: + return 50; + /*Gold/Blue Items*/ + case 4511: + return 400; + case 4509: + return 800; + case 4510: + case 4512: + return 600; + case 4508: + return 500; + /*Capes & Hoods*/ + case 4513: + case 4514: + case 4515: + case 4516: + return 10; + } + return 0; + } + + + public int getPestItemValue(int id) { + switch (id) { + } + return 0; + } + + public int getRGItemValue(int id) { + switch (id) { + case 47: + return 4; + case 1133: + return 51; + case 1135: + return 2400; + case 829: + return 15; + case 1169: + return 100; + case 892: + return 40; + } + return 0; + } + + + public int getTokkulValue(int id) { + switch (id) { + case 438: + case 436: + return 4; + case 453: + return 25; + case 1623: + return 37; + case 1621: + return 75; + case 6571: + return 300000; + case 554: + case 555: + case 556: + case 557: + return 6; + case 558: + case 559: + return 4; + case 562: + return 135; + case 560: + return 270; + case 6522: + return 375; + case 6523: + return 60000; + case 6524: + return 67500; + case 6525: + return 37500; + case 6526: + return 52500; + case 6527: + return 45000; + case 6528: + return 75000; + case 6568: + return 90000; + } + return 0; + } + + /** + * Sell item to shop (Shop Price) + **/ + public void sellToShopPrice(int removeId, int removeSlot) { + int unNotedItemID = getUnNoted(removeId); + String itemName = ItemAssistant.getItemName(unNotedItemID); + for (int i : GameConstants.ITEM_SELLABLE) { + if (unNotedItemID == i) { + player.getPacketSender().sendMessage("You can't sell " + ItemAssistant.getItemName(removeId).toLowerCase() + "."); + return; + } + } + boolean IsIn = false; + switch (ShopHandler.shopSModifier[player.shopId]) { + // Only buys what is in stock + case 2: + for (int j = 0; j <= ShopHandler.shopItemsStandard[player.shopId]; j++) { + if (unNotedItemID == (ShopHandler.shopItems[player.shopId][j] - 1)) { + IsIn = true; + break; + } + } + break; + // General store + case 1: + IsIn = true; + break; + // Player owns this store + case 0: + IsIn = ShopHandler.playerOwnsStore(player.shopId, player); + break; + } + + if (IsIn == false) { + player.getPacketSender().sendMessage("You can't sell " + ItemAssistant.getItemName(removeId).toLowerCase() + " to this store."); + } else { + int ShopValue = (int) Math.floor(getItemShopValue(unNotedItemID, 1, true)); + int tokkulValue = (int) Math.floor(getTokkulValue(unNotedItemID) *.85); + String ShopAdd = ""; + if (ShopValue >= 1000 && ShopValue < 1000000) { + ShopAdd = " (" + (ShopValue / 1000) + "K)"; + } else if (ShopValue >= 1000000) { + ShopAdd = " (" + (ShopValue / 1000000) + " million)"; + } + if (ShopHandler.playerOwnsStore(player.shopId, player)) { + if (ShopHandler.getStock(player.shopId, unNotedItemID) > 0) + player.getPacketSender().sendMessage(itemName + ": you are selling this item for " + BotHandler.getItemPrice(player.shopId, unNotedItemID) + " coins."); + else + player.getPacketSender().sendMessage(itemName + ": you haven't set your sell price."); + } else if (player.shopId != RANGE_SHOP && player.shopId != PEST_SHOP && player.shopId != CASTLE_SHOP && player.shopId != 138 && player.shopId != 58 && player.shopId != 139) { + player.getPacketSender().sendMessage(itemName + ": shop will buy for " + ShopValue + " coins." + ShopAdd); + } else if (player.shopId == 138 || player.shopId == 139 || player.shopId == 58) { + player.getPacketSender().sendMessage(itemName + ": shop will buy for " + tokkulValue + " tokkul."); + } else if (player.shopId == RANGE_SHOP) { + player.getPacketSender().sendMessage(itemName + ": shop will buy for " + getRGItemValue(unNotedItemID) + " archery tickets." + ShopAdd); + } else if (player.shopId == PEST_SHOP) { + player.getPacketSender().sendMessage(itemName + ": shop will buy for " + getPestItemValue(unNotedItemID) + " pest control points." + ShopAdd); + } else if (player.shopId == CASTLE_SHOP) { + player.getPacketSender().sendMessage(itemName + ": shop will buy for " + getCastleItemValue(unNotedItemID) + " castle war tickets." + ShopAdd); + } + } + } + + public boolean sellItem(int itemID, int fromSlot, int amount) { + int unNotedItemID = getUnNoted(itemID); + String itemName = ItemAssistant.getItemName(itemID).toLowerCase(); + for (int i : GameConstants.ITEM_SELLABLE) { + if (i == unNotedItemID) { + player.getPacketSender().sendMessage("You can't sell " + itemName + "."); + return false; + } + } + if (player.playerRights == 2 && !GameConstants.ADMIN_CAN_SELL_ITEMS) { + player.getPacketSender().sendMessage("Selling items as an admin has been disabled."); + return false; + } + if(!player.isShopping) { + return false; + } + // We can only store 40 items per shop + if (player.totalShopItems >= 40) { + player.getPacketSender().sendMessage("This shop is out of space!"); + return false; + } + // Check we have the item in our inventory + int inventoryAmount = player.getItemAssistant().getItemAmount(itemID); + if (amount > 0 && inventoryAmount > 0) { + boolean canSellToStore = false; + // Type of store + switch (ShopHandler.shopSModifier[player.shopId]) { + // Only buys what they sell + case 2: + for (int j = 0; j <= ShopHandler.shopItemsStandard[player.shopId]; j++) { + if (unNotedItemID == (ShopHandler.shopItems[player.shopId][j] - 1)) { + canSellToStore = true; + break; + } + } + break; + // General store - buys anything + case 1: + canSellToStore = true; + break; + // Player owned store - only "buys" from the player whos store it is + case 0: + canSellToStore = ShopHandler.playerOwnsStore(player.shopId, player); + break; + } + if (canSellToStore == false) { + player.getItemAssistant(); + player.getPacketSender().sendMessage("You can't sell " + itemName + " to this store."); + return false; + } + // player owned store, setting item price + if (ShopHandler.playerOwnsStore(player.shopId, player)) { + // No items in stock, we are adding 1 and setting the price + if (ShopHandler.getStock(player.shopId, unNotedItemID) <= 0){ + player.getItemAssistant().deleteItem(itemID, 1); + BotHandler.addTobank(player.shopId, unNotedItemID, 1); + BotHandler.setPrice(player.shopId, unNotedItemID, amount); + addShopItem(unNotedItemID, 1); + player.getItemAssistant().resetItems(3823); + resetShop(player.shopId); + updatePlayerShop(); + return true; + } + } + if (amount > inventoryAmount) { + amount = inventoryAmount; + } + + int value = 1; + int currency = 995; + if (player.shopId == 138 || player.shopId == 58 || player.shopId == 139) { + value = (int) Math.floor(getTokkulValue(unNotedItemID) * .85); + currency = 6529; + } else { + value = (int) Math.floor(getItemShopValue(unNotedItemID, amount, true)); + currency = 995; + } + + boolean isStackable = ItemDefinitions.getDef()[itemID].isStackable; + + if (!player.getItemAssistant().playerHasItem(currency) && isStackable && amount < inventoryAmount && player.getItemAssistant().freeSlots() <= 0) { + player.getPacketSender().sendMessage("You don't have enough space in your inventory."); + } + + player.getItemAssistant().deleteItem(itemID, amount); + + if (ShopHandler.playerOwnsStore(player.shopId, player)) { + // Add items to players store + player.getPacketSender().sendMessage("You sent " + amount + " " + itemName + " to your store."); + BotHandler.addTobank(player.shopId, unNotedItemID, amount); + } else { + // Add currency to players inventory + int totalValue = value * amount; + player.getItemAssistant().addItem(currency, totalValue); + player.getPacketSender().sendMessage("You sold " + amount + " " + itemName + " for " + totalValue + " " + ItemAssistant.getItemName(currency).toLowerCase() + "."); + } + + // Add item to the shop + addShopItem(unNotedItemID, amount); + player.getItemAssistant().resetItems(3823); + resetShop(player.shopId); + updatePlayerShop(); + return true; + } + return true; + } + + public boolean addShopItem(int itemID, int amount) { + boolean Added = false; + if (amount <= 0) { + return false; + } + if (Item.itemIsNote[itemID]) { + itemID = player.getItemAssistant().getUnnotedItem(itemID); + } + for (int i = 0; i < ShopHandler.shopItems[player.shopId].length; i++) { + if (ShopHandler.shopItems[player.shopId][i] - 1 == itemID) { + ShopHandler.shopItemsN[player.shopId][i] += amount; + Added = true; + } + } + if (Added == false) { + for (int i = 0; i < ShopHandler.shopItems[player.shopId].length; i++) { + if (ShopHandler.shopItems[player.shopId][i] == 0) { + ShopHandler.shopItems[player.shopId][i] = itemID + 1; + ShopHandler.shopItemsN[player.shopId][i] = amount; + ShopHandler.shopItemsDelay[player.shopId][i] = 0; + break; + } + } + } + return true; + } + + private static int getUnNoted(int itemID){ + String itemName = ItemAssistant.getItemName(itemID).toLowerCase(); + String ItemNameUnNotedItem = ItemAssistant.getItemName(itemID - 1).toLowerCase(); + if (itemName.contains(ItemNameUnNotedItem)) { + itemID--; //Replace the noted item by it's un-noted version. + } + return itemID; + } + + private static int getNoted(int itemID){ + String itemName = ItemAssistant.getItemName(itemID).toLowerCase(); + String ItemNameUnNotedItem = ItemAssistant.getItemName(itemID + 1).toLowerCase(); + if (itemName.contains(ItemNameUnNotedItem)) { + itemID++; //Replace the item by it's noted version. + } + return itemID; + } + + private static final int FISHING_ITEMS[] = {383, 371, 377, 359, 321, 341, 353, 345, 327, 317}; + + public boolean buyItem(int itemID, int fromSlot, int amount) { + int shopID = player.shopId; + int notedItemID = getNoted(itemID); + boolean isPlayerShop = ShopHandler.shopBModifier[player.shopId] == 0; + // Items are stackable if from a player owned shop and notable + boolean isStackable = ItemDefinitions.getDef()[itemID].isStackable || (isPlayerShop && getNoted(itemID) != itemID); + int freeSlots = player.getItemAssistant().freeSlots(); + int storeQty = ShopHandler.getStock(shopID, itemID); + if (amount > 0) { + if (storeQty <= 0) { + // none in stock, or not sold here + player.getPacketSender().sendMessage("You can't buy that right now!"); + return false; + } + if (amount > storeQty) { + // buy all that the store has + amount = storeQty; + } + if (freeSlots <= 0){ + if (!isStackable || isStackable && !player.getItemAssistant().playerHasItem(isPlayerShop ? notedItemID : itemID)) { + player.getPacketSender().sendMessage("You don't have enough space in your inventory."); + return false; + } + } + if (!isStackable && amount > freeSlots) { + // player will fill their inventory + amount = freeSlots; + } + if(!player.isShopping) { + return false; + } + for (int i = 0; i < FISHING_ITEMS.length; i++) { + if (player.shopId == 32 && itemID == FISHING_ITEMS[i]) { + player.getPacketSender().sendMessage("You can't buy that item from this store!"); + return false; + } + } + int value = 0; + int currency = 995; + // player owned shop + boolean showIsOwnedByThisPlayer = ShopHandler.playerOwnsStore(player.shopId, player); + if (showIsOwnedByThisPlayer) { // PLayers own shop, no cost + value = 0; + currency = -1; + } else if (isPlayerShop) { // Shop owned by another player + value = BotHandler.getItemPrice(player.shopId, itemID); + currency = 995; // gp + } else if (player.shopId == 138 || player.shopId == 58 || player.shopId == 139) { + value = getTokkulValue(itemID); + currency = 6529; // Tokkul + } else if (player.shopId == RANGE_SHOP) { + value = getRGItemValue(itemID); + currency = 1464; // Archery tickets + } else if (player.shopId == PEST_SHOP) { + value = getPestItemValue(itemID); + currency = 995; // gp + } else if (player.shopId == CASTLE_SHOP) { + value = getCastleItemValue(itemID); + currency = 4067; // castle wars tickets + } else { + value = getItemShopValue(itemID, 0, false); + currency = 995; //gp + } + int currencySlot = player.getItemAssistant().getItemSlot(currency); + String currencyName = ItemAssistant.getItemName(currency).toLowerCase(); + + // player has none of the required currency + if (currencySlot == -1) { + player.getPacketSender().sendMessage("You don't have enough " + currencyName + " to buy that."); + return false; + } + + // amount of currency the player has + int currencyAmount = player.playerItemsN[currencySlot]; + + int totalValue = value * amount; + if (currencyAmount < totalValue) { + amount = (int) Math.floor(player.playerItemsN[currencySlot] / value); + // buy as many as we can afford + totalValue = value * amount; + if (currencyAmount < totalValue || amount <= 0) { + player.getPacketSender().sendMessage("You don't have enough " + currencyName + " to buy that."); + return false; + } + } + + String itemName = ItemAssistant.getItemName(itemID).toLowerCase(); + if (!showIsOwnedByThisPlayer) { + player.getItemAssistant().deleteItem(currency, totalValue); + player.getPacketSender().sendMessage("You bought " + amount + " " + itemName + " for " + totalValue + " " + currencyName + "." ); + // If it is a player owned shop, we need to give them the coins + if (ShopHandler.shopSModifier[player.shopId] == 0) + BotHandler.addCoins(shopID, totalValue); + } else { + player.getPacketSender().sendMessage("You withdrew " + amount + " " + itemName + " from your store." ); + } + // If it is a player owned store, give the player the noted item + player.getItemAssistant().addItem(isPlayerShop ? notedItemID : itemID, amount); + ShopHandler.buyItem(shopID, itemID, amount); + if (ShopHandler.shopBModifier[shopID] == 0){ + BotHandler.removeFrombank(shopID, itemID, amount); + } + + if (player.getPlayerAssistant().isPlayer()) { + GameLogger.writeLog(player.playerName, "shopbuying", player.playerName + " bought " + amount + " " + itemName + " for " + totalValue + " " + currencyName + " from store " + shopID + "."); + } + player.getItemAssistant().resetItems(3823); + resetShop(player.shopId); + updatePlayerShop(); + return true; //return TRUE / FALSE Update = shop&Inventory / Doesnt Update + } + return false; + } +} diff --git a/2006Redone Server/src/com/rebotted/game/shops/ShopHandler.java b/2006Redone Server/src/com/rebotted/game/shops/ShopHandler.java new file mode 100644 index 00000000..8a530b07 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/game/shops/ShopHandler.java @@ -0,0 +1,248 @@ +package com.rebotted.game.shops; + +import java.io.BufferedReader; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerHandler; +import com.rebotted.util.Misc; + + +public class ShopHandler { + + public static int MAX_SHOPS = 400; + + public static int MAX_SHOP_ITEMS = 40; + + public static int SHOW_DELAY = 2; + + public static int SPECIAL_DELAY = 60; + + public static int totalshops = 0; + + public static int[][] shopItems = new int[MAX_SHOPS][MAX_SHOP_ITEMS]; + + public static int[][] shopItemsN = new int[MAX_SHOPS][MAX_SHOP_ITEMS]; + + public static int[][] shopItemsDelay = new int[MAX_SHOPS][MAX_SHOP_ITEMS]; + + public static int[][] shopItemsSN = new int[MAX_SHOPS][MAX_SHOP_ITEMS]; + + public static int[] shopItemsStandard = new int[MAX_SHOPS]; + + public static String[] shopName = new String[MAX_SHOPS]; + + public static int[] shopSModifier = new int[MAX_SHOPS]; + + public static int[] shopBModifier = new int[MAX_SHOPS]; + + public static long[][] shopItemsRestock = new long[MAX_SHOPS][MAX_SHOP_ITEMS]; + + public ShopHandler() { + for (int i = 0; i < MAX_SHOPS; i++) { + for (int j = 0; j < MAX_SHOP_ITEMS; j++) { + ResetItem(i, j); + shopItemsSN[i][j] = 0; + } + shopItemsStandard[i] = 0; + shopSModifier[i] = 0; + shopBModifier[i] = 0; + shopName[i] = ""; + } + totalshops = 0; + loadshops("shops.cfg"); + } + + public static int restockTimeItem(int itemId) { + switch(itemId) { + default: + return 1000; + } + + } + + public void process() { + boolean DidUpdate = false; + for (int i = 1; i <= totalshops; i++) { + if (shopBModifier[i] == 0 || shopSModifier[i] == 0) continue; + for (int j = 0; j < MAX_SHOP_ITEMS; j++) { + if (shopItems[i][j] > 0) { + if (shopItemsDelay[i][j] >= SHOW_DELAY) { + if (j <= shopItemsStandard[i] && shopItemsN[i][j] <= shopItemsSN[i][j]) { + if (shopItemsN[i][j] < shopItemsSN[i][j] && System.currentTimeMillis() - shopItemsRestock[i][j] > restockTimeItem(shopItems[i][j])) { + shopItemsN[i][j] += 1; + shopItemsDelay[i][j] = 1; + shopItemsDelay[i][j] = 0; + DidUpdate = true; + shopItemsRestock[i][j] = System.currentTimeMillis(); + } + } else if (shopItemsDelay[i][j] >= SPECIAL_DELAY) { + DiscountItem(i, j); + shopItemsDelay[i][j] = 0; + DidUpdate = true; + } + refreshshop(i); + } + shopItemsDelay[i][j]++; + } + } + if (DidUpdate) { + for (int k = 1; k < PlayerHandler.players.length; k++) { + if (PlayerHandler.players[k] != null) { + if (PlayerHandler.players[k].isShopping && PlayerHandler.players[k].shopId == i) { + PlayerHandler.players[k].updateShop = true; + PlayerHandler.players[k].updateshop(i); + } + } + } + DidUpdate = false; + } + } + } + + private void DiscountItem(int shopID, int ArrayID) { + shopItemsN[shopID][ArrayID] -= 1; + if (shopItemsN[shopID][ArrayID] <= 0) { + shopItemsN[shopID][ArrayID] = 0; + ResetItem(shopID, ArrayID); + } + } + + private static void ResetItem(int shopID, int ArrayID) { + shopItems[shopID][ArrayID] = 0; + shopItemsN[shopID][ArrayID] = 0; + shopItemsDelay[shopID][ArrayID] = 0; + } + + + public boolean loadshops(String FileName) { + String line = ""; + String token = ""; + String token2 = ""; + String token2_2 = ""; + String[] token3 = new String[(MAX_SHOP_ITEMS * 2)]; + boolean EndOfFile = false; + BufferedReader characterfile = null; + try { + characterfile = new BufferedReader(new FileReader("./data/cfg/" + FileName)); + } catch (FileNotFoundException fileex) { + Misc.println(FileName + ": file not found."); + return false; + } + try { + line = characterfile.readLine(); + } catch (IOException ioexception) { + Misc.println(FileName + ": error loading file."); + } + while (EndOfFile == false && line != null) { + line = line.trim(); + int spot = line.indexOf("="); + if (spot > -1) { + token = line.substring(0, spot); + token = token.trim(); + token2 = line.substring(spot + 1); + token2 = token2.trim(); + token2_2 = token2.replaceAll("\t+", "\t"); + token3 = token2_2.split("\t"); + if (token.equals("shop")) { + int shopID = Integer.parseInt(token3[0]); + shopName[shopID] = token3[1].replaceAll("_", " "); + shopSModifier[shopID] = Integer.parseInt(token3[2]); + shopBModifier[shopID] = Integer.parseInt(token3[3]); + for (int i = 0; i < ((token3.length - 4) / 2); i++) { + if (token3[(4 + (i * 2))] != null) { + shopItems[shopID][i] = (Integer.parseInt(token3[(4 + (i * 2))]) + 1); + shopItemsN[shopID][i] = Integer.parseInt(token3[(5 + (i * 2))]); + shopItemsSN[shopID][i] = Integer.parseInt(token3[(5 + (i * 2))]); + shopItemsStandard[shopID]++; + } else { + break; + } + } + totalshops++; + } + } else { + if (line.equals("[ENDOFshopLIST]")) { + try { + characterfile.close(); + } catch (IOException ioexception) { + } + } + } + try { + line = characterfile.readLine(); + } catch (IOException ioexception1) { + EndOfFile = true; + } + } + try { + characterfile.close(); + } catch (IOException ioexception) { + } + return false; + } + + public static void createPlayerShop(Client player){ + int id = getEmptyshop(); + player.shopId = id; + shopSModifier[id] = 0; + shopBModifier[id] = 0; + shopName[id] = player.properName + "'s Store"; + for (int i = 0; i < MAX_SHOP_ITEMS; i++){ + shopItems[id][i] = player.bankItems[i]; + shopItemsN[id][i] = player.bankItemsN[i]; + shopItemsSN[id][i] = 0; + shopItemsDelay[id][i] = 0; + } + totalshops++; + } + + private static int getEmptyshop(){ + for (int i = 0; i < MAX_SHOPS; i++) { + if (shopName[i] == "") return i; + } + return -1; + } + + public static void refreshshop(int shop_id){ + // We don't want to remove items that should be kept in stock + for (int j = shopItemsStandard[shop_id]; j < MAX_SHOP_ITEMS; j++) { + if (shopItemsN[shop_id][j] <= 0) { + ResetItem(shop_id, j); + int next = j + 1; + if (next < MAX_SHOP_ITEMS && shopItemsN[shop_id][next] > 0) { + shopItems[shop_id][j] = shopItems[shop_id][next]; + shopItemsN[shop_id][j] = shopItemsN[shop_id][next]; + shopItemsDelay[shop_id][j] = shopItemsDelay[shop_id][next]; + ResetItem(shop_id, next); + } + } + } + } + + public static int getStock(int shop_id, int item_id){ + item_id++; + for (int j = 0; j < MAX_SHOP_ITEMS; j++) { + if (shopItems[shop_id][j] == item_id) { + return shopItemsN[shop_id][j]; + } + } + return -1; + } + + public static void buyItem(int shop_id, int item_id, int amount){ + item_id++; + for (int j = 0; j < MAX_SHOP_ITEMS; j++) { + if (shopItems[shop_id][j] == item_id) { + shopItemsN[shop_id][j] -= amount; + } + } + refreshshop(shop_id); + } + + public static boolean playerOwnsStore(int shop_id, Player player){ + return shopSModifier[shop_id] == 0 && shopBModifier[shop_id] == 0 && shopName[shop_id].equalsIgnoreCase(player.properName + "'s Store"); + } +} diff --git a/2006Redone Server/src/redone/game/shops/Shops.java b/2006Redone Server/src/com/rebotted/game/shops/Shops.java similarity index 91% rename from 2006Redone Server/src/redone/game/shops/Shops.java rename to 2006Redone Server/src/com/rebotted/game/shops/Shops.java index d961190d..0d4f45b1 100644 --- a/2006Redone Server/src/redone/game/shops/Shops.java +++ b/2006Redone Server/src/com/rebotted/game/shops/Shops.java @@ -1,103 +1,103 @@ -package redone.game.shops; - -import java.util.HashMap; - -import redone.game.content.randomevents.RandomEventHandler; -import redone.game.players.Client; - -/** - * Shops - * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) - */ - -public class Shops { - - public enum Shop { - SHOP1(588, 2), SHOP2(550, 3), SHOP3(575, 4), SHOP4(2356, 5), SHOP5( - 3796, 6), SHOP6(1860, 7), SHOP7(559, 9), SHOP8(562, 10), SHOP9( - 581, 11), SHOP10(548, 12), SHOP11(554, 13), SHOP12(601, 14), SHOP13( - 1301, 15), SHOP14(1039, 16), SHOP15(2353, 17), SHOP16(3166, 18), SHOP17( - 2161, 19), SHOP18(2162, 20), SHOP19(600, 21), SHOP20(603, 22), SHOP21( - 593, 23), SHOP22(545, 24), SHOP23(585, 25), SHOP24(2305, 26), SHOP25( - 2307, 27), SHOP26(2304, 28), SHOP27(2306, 29), SHOP28(517, 30), SHOP29( - 558, 31), SHOP30(576, 32), SHOP31(1369, 33), SHOP32(1038, 35), SHOP33( - 1433, 36), SHOP34(584, 37), SHOP35(540, 38), SHOP36(2157, 39), SHOP37( - 538, 40), SHOP38(1303, 41), SHOP39(578, 42), SHOP40(587, 43), SHOP41( - 1398, 44), SHOP42(556, 45), SHOP43(1865, 46), SHOP44(543, 47), SHOP45( - 2198, 48), SHOP46(580, 49), SHOP47(1862, 50), SHOP48(583, 51), SHOP49( - 553, 52), SHOP50(461, 53), SHOP51(903, 54), SHOP551(2258, 55), SHOP52( - 1435, 56), SHOP53(3800, 57), SHOP54(2623, 58), SHOP55(594, 59), SHOP56( - 579, 60), SHOP57(2160, 61), SHOP58(2191, 61), SHOP59(589, 62), SHOP60( - 549, 63), SHOP61(542, 64), SHOP62(3038, 65), SHOP63(544, 66), SHOP64( - 541, 67), SHOP65(1434, 68), SHOP66(577, 69), SHOP67(539, 70), SHOP68( - 1980, 71), SHOP69(546, 72), SHOP70(382, 73), SHOP71(3541, 74), SHOP72( - 520, 75), SHOP73(1436, 76), SHOP74(590, 77), SHOP75(971, 78), SHOP76( - 1917, 79), SHOP77(1040, 80), SHOP78(563, 81), SHOP79(522, 82), SHOP80( - 524, 83), SHOP81(526, 84), SHOP82(2154, 85), SHOP83(1334, 86), SHOP84( - 2552, 87), SHOP85(528, 88), SHOP86(1254, 89), SHOP87(2086, 90), SHOP88( - 3824, 91), SHOP89(1866, 92), SHOP90(1699, 93), SHOP91(1282, 94), SHOP92( - 530, 95), SHOP93(516, 96), SHOP94(560, 97), SHOP95(471, 98), //SHOP96(1208, 99), - SHOP97(532, 100), SHOP98(3797, 101), SHOP99(534, 102), SHOP100( - 836, 103), SHOP101(551, 104), SHOP102(586, 105), SHOP103(564, - 106), SHOP104(747, 107), SHOP105(573, 108), SHOP106(1316, 108), SHOP107( - 547, 108), SHOP114(1787, 110), SHOP116(1526, 112), SHOP115(568, - 113), SHOP118(1083, 114), SHOP119(735, 115), SHOP120(793, 116), SHOP121( - 794, 116), SHOP122(1079, 117), SHOP123(682, 119), SHOP124(683, - 120), SHOP125(692, 121), SHOP126(1658, 122), SHOP127(461, 123), - // SHOP128(537, 124), - // SHOP129(536, 125), - SHOP130(904, 126), SHOP131(2152, 127), SHOP132(2153, 128), SHOP133( - 2151, 129), SHOP134(2158, 130), SHOP135(2156, 131), SHOP136( - 2159, 132), SHOP137(851, 133), SHOP138(602, 134), SHOP139(596, - 135), SHOP140(597, 136), SHOP141(1784, 137), SHOP142(2620, 138), SHOP143( - 2622, 139), SHOP144(552, 88), SHOP145(1778, 140), SHOP146(1782, - 141), SHOP147(849, 142); - - private final int npcId, shopId; - - public static HashMap npc = new HashMap(); - - public static Shop forId(int id) { - return npc.get(id); - } - - static { - for (Shop f : Shop.values()) - npc.put(f.getNpc(), f); - } - - private Shop(int npcId, int shopId) { - this.npcId = npcId; - this.shopId = shopId; - } - - public int getNpc() { - return npcId; - } - - public int getShop() { - return shopId; - } - - } - - public static void dialogueShop(Client c, int npcClick) { - final Shop shops = Shop.forId(npcClick); - if (shops == null) - return; - if (npcClick == shops.getNpc()) { - c.getDialogueHandler().sendDialogues(1322, shops.getNpc()); - } - } - - public static void openShop(Client c, int npcClickId) { - final Shop shops = Shop.forId(npcClickId); - if (shops == null) - return; - if (npcClickId == shops.getNpc()) { - c.getShopAssistant().openShop(shops.getShop()); - RandomEventHandler.addRandom(c); - } - } - -} +package com.rebotted.game.shops; + +import java.util.HashMap; + +import com.rebotted.game.content.randomevents.RandomEventHandler; +import com.rebotted.game.players.Player; + +/** + * Shops + * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) + */ + +public class Shops { + + public enum Shop { + SHOP1(588, 2), SHOP2(550, 3), SHOP3(575, 4), SHOP4(2356, 5), SHOP5( + 3796, 6), SHOP6(1860, 7), SHOP7(559, 9), SHOP8(562, 10), SHOP9( + 581, 11), SHOP10(548, 12), SHOP11(554, 13), SHOP12(601, 14), SHOP13( + 1301, 15), SHOP14(1039, 16), SHOP15(2353, 17), SHOP16(3166, 18), SHOP17( + 2161, 19), SHOP18(2162, 20), SHOP19(600, 21), SHOP20(603, 22), SHOP21( + 593, 23), SHOP22(545, 24), SHOP23(585, 25), SHOP24(2305, 26), SHOP25( + 2307, 27), SHOP26(2304, 28), SHOP27(2306, 29), SHOP28(517, 30), SHOP29( + 558, 31), SHOP30(576, 32), SHOP31(1369, 33), SHOP32(1038, 35), SHOP33( + 1433, 36), SHOP34(584, 37), SHOP35(540, 38), SHOP36(2157, 39), SHOP37( + 538, 40), SHOP38(1303, 41), SHOP39(578, 42), SHOP40(587, 43), SHOP41( + 1398, 44), SHOP42(556, 45), SHOP43(1865, 46), SHOP44(543, 47), SHOP45( + 2198, 48), SHOP46(580, 49), SHOP47(1862, 50), SHOP48(583, 51), SHOP49( + 553, 52), SHOP50(461, 53), SHOP51(903, 54), SHOP551(2258, 55), SHOP52( + 1435, 56), SHOP53(3800, 57), SHOP54(2623, 58), SHOP55(594, 59), SHOP56( + 579, 60), SHOP57(2160, 61), SHOP58(2191, 61), SHOP59(589, 62), SHOP60( + 549, 63), SHOP61(542, 64), SHOP62(3038, 65), SHOP63(544, 66), SHOP64( + 541, 67), SHOP65(1434, 68), SHOP66(577, 69), SHOP67(539, 70), SHOP68( + 1980, 71), SHOP69(546, 72), SHOP70(382, 73), SHOP71(3541, 74), SHOP72( + 520, 75), SHOP73(1436, 76), SHOP74(590, 77), SHOP75(971, 78), SHOP76( + 1917, 79), SHOP77(1040, 80), SHOP78(563, 81), SHOP79(522, 82), SHOP80( + 524, 83), SHOP81(526, 84), SHOP82(2154, 85), SHOP83(1334, 86), SHOP84( + 2552, 87), SHOP85(528, 88), SHOP86(1254, 89), SHOP87(2086, 90), SHOP88( + 3824, 91), SHOP89(1866, 92), SHOP90(1699, 93), SHOP91(1282, 94), SHOP92( + 530, 95), SHOP93(516, 96), SHOP94(560, 97), SHOP95(471, 98), //SHOP96(1208, 99), + SHOP97(532, 100), SHOP98(3797, 101), SHOP99(534, 102), SHOP100( + 836, 103), SHOP101(551, 104), SHOP102(586, 105), SHOP103(564, + 106), SHOP104(747, 107), SHOP105(573, 108), SHOP106(1316, 108), SHOP107( + 547, 108), SHOP114(1787, 110), SHOP116(1526, 112), SHOP115(568, + 113), SHOP118(1083, 114), SHOP119(735, 115), SHOP120(793, 116), SHOP121( + 794, 116), SHOP122(1079, 117), SHOP123(682, 119), SHOP124(683, + 120), SHOP125(692, 121), SHOP126(1658, 122), SHOP127(461, 123), + // SHOP128(537, 124), + // SHOP129(536, 125), + SHOP130(904, 126), SHOP131(2152, 127), SHOP132(2153, 128), SHOP133( + 2151, 129), SHOP134(2158, 130), SHOP135(2156, 131), SHOP136( + 2159, 132), SHOP137(851, 133), SHOP138(602, 134), SHOP139(596, + 135), SHOP140(597, 136), SHOP141(1784, 137), SHOP142(2620, 138), SHOP143( + 2622, 139), SHOP144(552, 88), SHOP145(1778, 140), SHOP146(1782, + 141), SHOP147(849, 142); + + private final int npcId, shopId; + + public static HashMap npc = new HashMap(); + + public static Shop forId(int id) { + return npc.get(id); + } + + static { + for (Shop f : Shop.values()) + npc.put(f.getNpc(), f); + } + + private Shop(int npcId, int shopId) { + this.npcId = npcId; + this.shopId = shopId; + } + + public int getNpc() { + return npcId; + } + + public int getShop() { + return shopId; + } + + } + + public static void dialogueShop(Player c, int npcClick) { + final Shop shops = Shop.forId(npcClick); + if (shops == null) + return; + if (npcClick == shops.getNpc()) { + c.getDialogueHandler().sendDialogues(1322, shops.getNpc()); + } + } + + public static void openShop(Player c, int npcClickId) { + final Shop shops = Shop.forId(npcClickId); + if (shops == null) + return; + if (npcClickId == shops.getNpc()) { + c.getShopAssistant().openShop(shops.getShop()); + RandomEventHandler.addRandom(c); + } + } + +} diff --git a/2006Redone Server/src/redone/integrations/PlayersOnlineWebsite.java b/2006Redone Server/src/com/rebotted/integrations/PlayersOnlineWebsite.java similarity index 93% rename from 2006Redone Server/src/redone/integrations/PlayersOnlineWebsite.java rename to 2006Redone Server/src/com/rebotted/integrations/PlayersOnlineWebsite.java index 8f70b61a..9c09c519 100644 --- a/2006Redone Server/src/redone/integrations/PlayersOnlineWebsite.java +++ b/2006Redone Server/src/com/rebotted/integrations/PlayersOnlineWebsite.java @@ -1,10 +1,10 @@ -package redone.integrations; - -import redone.game.players.PlayerHandler; +package com.rebotted.integrations; import java.io.IOException; import java.net.URL; +import com.rebotted.game.players.PlayerHandler; + public class PlayersOnlineWebsite { static String password; diff --git a/2006Redone Server/src/redone/integrations/RegisteredAccsWebsite.java b/2006Redone Server/src/com/rebotted/integrations/RegisteredAccsWebsite.java similarity index 93% rename from 2006Redone Server/src/redone/integrations/RegisteredAccsWebsite.java rename to 2006Redone Server/src/com/rebotted/integrations/RegisteredAccsWebsite.java index d91d0e37..0261a700 100644 --- a/2006Redone Server/src/redone/integrations/RegisteredAccsWebsite.java +++ b/2006Redone Server/src/com/rebotted/integrations/RegisteredAccsWebsite.java @@ -1,6 +1,4 @@ -package redone.integrations; - -import redone.game.players.PlayerHandler; +package com.rebotted.integrations; import java.io.File; import java.io.IOException; diff --git a/2006Redone Server/src/redone/integrations/SettingsLoader.java b/2006Redone Server/src/com/rebotted/integrations/SettingsLoader.java similarity index 88% rename from 2006Redone Server/src/redone/integrations/SettingsLoader.java rename to 2006Redone Server/src/com/rebotted/integrations/SettingsLoader.java index d11c5034..08e113b5 100644 --- a/2006Redone Server/src/redone/integrations/SettingsLoader.java +++ b/2006Redone Server/src/com/rebotted/integrations/SettingsLoader.java @@ -1,8 +1,9 @@ -package redone.integrations; +package com.rebotted.integrations; import org.json.JSONObject; -import redone.Server; -import redone.integrations.discord.JavaCord; + +import com.rebotted.GameEngine; +import com.rebotted.integrations.discord.JavaCord; import java.io.*; import java.util.stream.Collectors; @@ -37,7 +38,7 @@ public class SettingsLoader { JavaCord.token = obj.getString("bot-token"); PlayersOnlineWebsite.password = obj.getString("websitepass"); RegisteredAccsWebsite.password = obj.getString("websitepass"); - Server.ersSecret = obj.getString("erssecret"); + GameEngine.ersSecret = obj.getString("erssecret"); } } diff --git a/2006Redone Server/src/redone/integrations/discord/DiscordActivity.java b/2006Redone Server/src/com/rebotted/integrations/discord/DiscordActivity.java similarity index 89% rename from 2006Redone Server/src/redone/integrations/discord/DiscordActivity.java rename to 2006Redone Server/src/com/rebotted/integrations/discord/DiscordActivity.java index eee5be87..af11dff2 100644 --- a/2006Redone Server/src/redone/integrations/discord/DiscordActivity.java +++ b/2006Redone Server/src/com/rebotted/integrations/discord/DiscordActivity.java @@ -1,6 +1,6 @@ -package redone.integrations.discord; +package com.rebotted.integrations.discord; -import redone.game.players.PlayerHandler; +import com.rebotted.game.players.PlayerHandler; public class DiscordActivity { diff --git a/2006Redone Server/src/redone/integrations/discord/JavaCord.java b/2006Redone Server/src/com/rebotted/integrations/discord/JavaCord.java similarity index 92% rename from 2006Redone Server/src/redone/integrations/discord/JavaCord.java rename to 2006Redone Server/src/com/rebotted/integrations/discord/JavaCord.java index 3f1c4fcc..e530a6af 100644 --- a/2006Redone Server/src/redone/integrations/discord/JavaCord.java +++ b/2006Redone Server/src/com/rebotted/integrations/discord/JavaCord.java @@ -1,17 +1,14 @@ -package redone.integrations.discord; +package com.rebotted.integrations.discord; import org.javacord.api.DiscordApi; import org.javacord.api.DiscordApiBuilder; import org.javacord.api.entity.channel.TextChannel; import org.javacord.api.entity.message.MessageBuilder; import org.javacord.api.util.logging.ExceptionLogger; -import redone.game.players.PlayerHandler; -import redone.integrations.discord.commands.*; +import com.rebotted.integrations.discord.commands.*; import java.io.IOException; -import static redone.integrations.SettingsLoader.loadSettings; - /** * @author Patrity || https://www.rune-server.ee/members/patrity/ */ diff --git a/2006Redone Server/src/redone/integrations/discord/commands/Commands.java b/2006Redone Server/src/com/rebotted/integrations/discord/commands/Commands.java similarity index 95% rename from 2006Redone Server/src/redone/integrations/discord/commands/Commands.java rename to 2006Redone Server/src/com/rebotted/integrations/discord/commands/Commands.java index 90edd5b4..8f185e26 100644 --- a/2006Redone Server/src/redone/integrations/discord/commands/Commands.java +++ b/2006Redone Server/src/com/rebotted/integrations/discord/commands/Commands.java @@ -1,4 +1,4 @@ -package redone.integrations.discord.commands; +package com.rebotted.integrations.discord.commands; import org.javacord.api.entity.message.Message; import org.javacord.api.event.message.MessageCreateEvent; diff --git a/2006Redone Server/src/redone/integrations/discord/commands/Forum.java b/2006Redone Server/src/com/rebotted/integrations/discord/commands/Forum.java similarity index 91% rename from 2006Redone Server/src/redone/integrations/discord/commands/Forum.java rename to 2006Redone Server/src/com/rebotted/integrations/discord/commands/Forum.java index a8b27096..177f98fb 100644 --- a/2006Redone Server/src/redone/integrations/discord/commands/Forum.java +++ b/2006Redone Server/src/com/rebotted/integrations/discord/commands/Forum.java @@ -1,4 +1,4 @@ -package redone.integrations.discord.commands; +package com.rebotted.integrations.discord.commands; import org.javacord.api.entity.message.Message; import org.javacord.api.event.message.MessageCreateEvent; diff --git a/2006Redone Server/src/redone/integrations/discord/commands/HeatMap.java b/2006Redone Server/src/com/rebotted/integrations/discord/commands/HeatMap.java similarity index 90% rename from 2006Redone Server/src/redone/integrations/discord/commands/HeatMap.java rename to 2006Redone Server/src/com/rebotted/integrations/discord/commands/HeatMap.java index 0bc657c3..13e9fbcb 100644 --- a/2006Redone Server/src/redone/integrations/discord/commands/HeatMap.java +++ b/2006Redone Server/src/com/rebotted/integrations/discord/commands/HeatMap.java @@ -1,4 +1,4 @@ -package redone.integrations.discord.commands; +package com.rebotted.integrations.discord.commands; import org.javacord.api.entity.message.Message; import org.javacord.api.event.message.MessageCreateEvent; diff --git a/2006Redone Server/src/redone/integrations/discord/commands/Hiscores.java b/2006Redone Server/src/com/rebotted/integrations/discord/commands/Hiscores.java similarity index 91% rename from 2006Redone Server/src/redone/integrations/discord/commands/Hiscores.java rename to 2006Redone Server/src/com/rebotted/integrations/discord/commands/Hiscores.java index 89dfd86c..13dee6a6 100644 --- a/2006Redone Server/src/redone/integrations/discord/commands/Hiscores.java +++ b/2006Redone Server/src/com/rebotted/integrations/discord/commands/Hiscores.java @@ -1,4 +1,4 @@ -package redone.integrations.discord.commands; +package com.rebotted.integrations.discord.commands; import org.javacord.api.entity.message.Message; import org.javacord.api.event.message.MessageCreateEvent; diff --git a/2006Redone Server/src/redone/integrations/discord/commands/Issues.java b/2006Redone Server/src/com/rebotted/integrations/discord/commands/Issues.java similarity index 91% rename from 2006Redone Server/src/redone/integrations/discord/commands/Issues.java rename to 2006Redone Server/src/com/rebotted/integrations/discord/commands/Issues.java index 95598b63..174464b5 100644 --- a/2006Redone Server/src/redone/integrations/discord/commands/Issues.java +++ b/2006Redone Server/src/com/rebotted/integrations/discord/commands/Issues.java @@ -1,4 +1,4 @@ -package redone.integrations.discord.commands; +package com.rebotted.integrations.discord.commands; import org.javacord.api.entity.message.Message; import org.javacord.api.event.message.MessageCreateEvent; diff --git a/2006Redone Server/src/redone/integrations/discord/commands/Online.java b/2006Redone Server/src/com/rebotted/integrations/discord/commands/Online.java similarity index 83% rename from 2006Redone Server/src/redone/integrations/discord/commands/Online.java rename to 2006Redone Server/src/com/rebotted/integrations/discord/commands/Online.java index 5bfba89a..96330dae 100644 --- a/2006Redone Server/src/redone/integrations/discord/commands/Online.java +++ b/2006Redone Server/src/com/rebotted/integrations/discord/commands/Online.java @@ -1,9 +1,10 @@ -package redone.integrations.discord.commands; +package com.rebotted.integrations.discord.commands; import org.javacord.api.entity.message.Message; import org.javacord.api.event.message.MessageCreateEvent; import org.javacord.api.listener.message.MessageCreateListener; -import redone.integrations.discord.JavaCord; + +import com.rebotted.integrations.discord.JavaCord; public class Online implements MessageCreateListener { @Override diff --git a/2006Redone Server/src/redone/integrations/discord/commands/Players.java b/2006Redone Server/src/com/rebotted/integrations/discord/commands/Players.java similarity index 88% rename from 2006Redone Server/src/redone/integrations/discord/commands/Players.java rename to 2006Redone Server/src/com/rebotted/integrations/discord/commands/Players.java index 7bf9b1c0..8138436a 100644 --- a/2006Redone Server/src/redone/integrations/discord/commands/Players.java +++ b/2006Redone Server/src/com/rebotted/integrations/discord/commands/Players.java @@ -1,9 +1,10 @@ -package redone.integrations.discord.commands; +package com.rebotted.integrations.discord.commands; import org.javacord.api.entity.message.Message; import org.javacord.api.event.message.MessageCreateEvent; import org.javacord.api.listener.message.MessageCreateListener; -import redone.game.players.PlayerHandler; + +import com.rebotted.game.players.PlayerHandler; public class Players implements MessageCreateListener { @Override diff --git a/2006Redone Server/src/redone/integrations/discord/commands/Vote.java b/2006Redone Server/src/com/rebotted/integrations/discord/commands/Vote.java similarity index 91% rename from 2006Redone Server/src/redone/integrations/discord/commands/Vote.java rename to 2006Redone Server/src/com/rebotted/integrations/discord/commands/Vote.java index fda313d0..20c766a9 100644 --- a/2006Redone Server/src/redone/integrations/discord/commands/Vote.java +++ b/2006Redone Server/src/com/rebotted/integrations/discord/commands/Vote.java @@ -1,4 +1,4 @@ -package redone.integrations.discord.commands; +package com.rebotted.integrations.discord.commands; import org.javacord.api.entity.message.Message; import org.javacord.api.event.message.MessageCreateEvent; diff --git a/2006Redone Server/src/redone/integrations/discord/commands/Website.java b/2006Redone Server/src/com/rebotted/integrations/discord/commands/Website.java similarity index 91% rename from 2006Redone Server/src/redone/integrations/discord/commands/Website.java rename to 2006Redone Server/src/com/rebotted/integrations/discord/commands/Website.java index bd0f6c9a..bc1d8253 100644 --- a/2006Redone Server/src/redone/integrations/discord/commands/Website.java +++ b/2006Redone Server/src/com/rebotted/integrations/discord/commands/Website.java @@ -1,4 +1,4 @@ -package redone.integrations.discord.commands; +package com.rebotted.integrations.discord.commands; import org.javacord.api.entity.message.Message; import org.javacord.api.event.message.MessageCreateEvent; diff --git a/2006Redone Server/src/redone/net/CodecFactory.java b/2006Redone Server/src/com/rebotted/net/CodecFactory.java similarity index 92% rename from 2006Redone Server/src/redone/net/CodecFactory.java rename to 2006Redone Server/src/com/rebotted/net/CodecFactory.java index c3fc3662..abf3116d 100644 --- a/2006Redone Server/src/redone/net/CodecFactory.java +++ b/2006Redone Server/src/com/rebotted/net/CodecFactory.java @@ -1,40 +1,40 @@ -package redone.net; - -import org.apache.mina.filter.codec.ProtocolCodecFactory; -import org.apache.mina.filter.codec.ProtocolDecoder; -import org.apache.mina.filter.codec.ProtocolEncoder; - -/** - * Provides access to the encoders and decoders for the 508 protocol. - * - * @author Graham - */ -public class CodecFactory implements ProtocolCodecFactory { - - /** - * The encoder. - */ - private final ProtocolEncoder encoder = new RS2ProtocolEncoder(); - - /** - * The decoder. - */ - private final ProtocolDecoder decoder = new RS2LoginProtocolDecoder(); - - @Override - /** - * Get the encoder. - */ - public ProtocolEncoder getEncoder() throws Exception { - return encoder; - } - - @Override - /** - * Get the decoder. - */ - public ProtocolDecoder getDecoder() throws Exception { - return decoder; - } - -} +package com.rebotted.net; + +import org.apache.mina.filter.codec.ProtocolCodecFactory; +import org.apache.mina.filter.codec.ProtocolDecoder; +import org.apache.mina.filter.codec.ProtocolEncoder; + +/** + * Provides access to the encoders and decoders for the 508 protocol. + * + * @author Graham + */ +public class CodecFactory implements ProtocolCodecFactory { + + /** + * The encoder. + */ + private final ProtocolEncoder encoder = new RS2ProtocolEncoder(); + + /** + * The decoder. + */ + private final ProtocolDecoder decoder = new RS2LoginProtocolDecoder(); + + @Override + /** + * Get the encoder. + */ + public ProtocolEncoder getEncoder() throws Exception { + return encoder; + } + + @Override + /** + * Get the decoder. + */ + public ProtocolDecoder getDecoder() throws Exception { + return decoder; + } + +} diff --git a/2006Redone Server/src/redone/net/ConnectionHandler.java b/2006Redone Server/src/com/rebotted/net/ConnectionHandler.java similarity index 92% rename from 2006Redone Server/src/redone/net/ConnectionHandler.java rename to 2006Redone Server/src/com/rebotted/net/ConnectionHandler.java index e8c39957..964e3d58 100644 --- a/2006Redone Server/src/redone/net/ConnectionHandler.java +++ b/2006Redone Server/src/com/rebotted/net/ConnectionHandler.java @@ -1,63 +1,63 @@ -package redone.net; - -import org.apache.mina.common.IdleStatus; -import org.apache.mina.common.IoHandler; -import org.apache.mina.common.IoSession; -import org.apache.mina.filter.codec.ProtocolCodecFilter; - -import redone.game.players.Client; - -public class ConnectionHandler implements IoHandler { - - @Override - public void exceptionCaught(IoSession arg0, Throwable arg1) - throws Exception { - // TODO Auto-generated method stub - - } - - @Override - public void messageReceived(IoSession arg0, Object arg1) throws Exception { - if (arg0.getAttachment() != null) { - Client plr = (Client) arg0.getAttachment(); - plr.queueMessage((Packet) arg1); - } - } - - @Override - public void messageSent(IoSession arg0, Object arg1) throws Exception { - // TODO Auto-generated method stub - - } - - @Override - public void sessionClosed(IoSession arg0) throws Exception { - if (arg0.getAttachment() != null) { - Client plr = (Client) arg0.getAttachment(); - plr.disconnected = true; - } - HostList.getHostList().remove(arg0); - } - - @Override - public void sessionCreated(IoSession arg0) throws Exception { - if (!HostList.getHostList().add(arg0)) { - arg0.close(); - } else { - arg0.setAttribute("inList", Boolean.TRUE); - } - } - - @Override - public void sessionIdle(IoSession arg0, IdleStatus arg1) throws Exception { - arg0.close(); - } - - @Override - public void sessionOpened(IoSession arg0) throws Exception { - arg0.setIdleTime(IdleStatus.BOTH_IDLE, 60); - arg0.getFilterChain().addLast("protocolFilter", - new ProtocolCodecFilter(new CodecFactory())); - } - -} +package com.rebotted.net; + +import org.apache.mina.common.IdleStatus; +import org.apache.mina.common.IoHandler; +import org.apache.mina.common.IoSession; +import org.apache.mina.filter.codec.ProtocolCodecFilter; + +import com.rebotted.game.players.Client; + +public class ConnectionHandler implements IoHandler { + + @Override + public void exceptionCaught(IoSession arg0, Throwable arg1) + throws Exception { + // TODO Auto-generated method stub + + } + + @Override + public void messageReceived(IoSession arg0, Object arg1) throws Exception { + if (arg0.getAttachment() != null) { + Client plr = (Client) arg0.getAttachment(); + plr.queueMessage((Packet) arg1); + } + } + + @Override + public void messageSent(IoSession arg0, Object arg1) throws Exception { + // TODO Auto-generated method stub + + } + + @Override + public void sessionClosed(IoSession arg0) throws Exception { + if (arg0.getAttachment() != null) { + Client plr = (Client) arg0.getAttachment(); + plr.disconnected = true; + } + HostList.getHostList().remove(arg0); + } + + @Override + public void sessionCreated(IoSession arg0) throws Exception { + if (!HostList.getHostList().add(arg0)) { + arg0.close(); + } else { + arg0.setAttribute("inList", Boolean.TRUE); + } + } + + @Override + public void sessionIdle(IoSession arg0, IdleStatus arg1) throws Exception { + arg0.close(); + } + + @Override + public void sessionOpened(IoSession arg0) throws Exception { + arg0.setIdleTime(IdleStatus.BOTH_IDLE, 60); + arg0.getFilterChain().addLast("protocolFilter", + new ProtocolCodecFilter(new CodecFactory())); + } + +} diff --git a/2006Redone Server/src/redone/net/ConnectionThrottleFilter.java b/2006Redone Server/src/com/rebotted/net/ConnectionThrottleFilter.java similarity index 95% rename from 2006Redone Server/src/redone/net/ConnectionThrottleFilter.java rename to 2006Redone Server/src/com/rebotted/net/ConnectionThrottleFilter.java index b765aeb9..7df9720e 100644 --- a/2006Redone Server/src/redone/net/ConnectionThrottleFilter.java +++ b/2006Redone Server/src/com/rebotted/net/ConnectionThrottleFilter.java @@ -1,132 +1,132 @@ -package redone.net; - -import java.net.InetAddress; -import java.net.InetSocketAddress; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; - -import org.apache.mina.common.IoFilter; -import org.apache.mina.common.IoFilterAdapter; -import org.apache.mina.common.IoSession; - -/** - * A {@link IoFilter} which blocks connections from connecting at a rate faster - * than the specified interval. - * - * @author The Apache MINA Project (dev@mina.apache.org) - * @version $Rev$, $Date$ - */ -public class ConnectionThrottleFilter extends IoFilterAdapter { - - private long allowedInterval; - private final Map clients; - private final Map counts; - private final Set connectedAddresses; - - /** - * Constructor that takes in a specified wait time. - * - * @param allowedInterval - * The number of milliseconds a client is allowed to wait before - * making another successful connection - */ - public ConnectionThrottleFilter(long allowedInterval) { - this.allowedInterval = allowedInterval; - clients = Collections.synchronizedMap(new HashMap()); - counts = Collections - .synchronizedMap(new HashMap()); - connectedAddresses = new HashSet(); - } - - /** - * Sets the interval between connections from a client. This value is - * measured in milliseconds. - * - * @param allowedInterval - * The number of milliseconds a client is allowed to wait before - * making another successful connection - */ - public void setAllowedInterval(long allowedInterval) { - this.allowedInterval = allowedInterval; - } - - public void delayClient(IoSession session, int delay) { - long d = System.currentTimeMillis() - delay; - clients.put(getAddress(session), d); - } - - private InetAddress getAddress(IoSession io) { - return ((InetSocketAddress) io.getRemoteAddress()).getAddress(); - } - - /** - * Method responsible for deciding if a connection is OK to continue - * - * @param session - * The new session that will be verified - * @return True if the session meets the criteria, otherwise false - */ - public boolean isConnectionOk(IoSession session) { - InetAddress addr = getAddress(session); - long now = System.currentTimeMillis(); - if (clients.containsKey(addr)) { - long lastConnTime = clients.get(addr); - - if (now - lastConnTime < allowedInterval) { - int c = 0; - if (!counts.containsKey(addr)) { - counts.put(addr, 0); - } else { - c = counts.get(addr) + 1; - } - if (c >= 350) { - - c = 0; - } - counts.put(addr, c); - // Logger.err("["+host+"] Session dropped (delay="+(now-lastConnTime)+"ms)"); - return false; - } else { - clients.put(addr, now); - return true; - } - } else { - clients.put(addr, now); - return true; - } - } - - public void closedSession(IoSession io) { - connectedAddresses.remove(getAddress(io)); - } - - public void acceptedLogin(IoSession io) { - connectedAddresses.add(getAddress(io)); - } - - public boolean isConnected(IoSession io) { - return connectedAddresses.contains(getAddress(io)); - } - - public int[] getSizes() { - return new int[] { clients.size(), counts.size(), - connectedAddresses.size() }; - } - - public void connectionOk(IoSession io) { - counts.remove(getAddress(io)); - } - - @Override - public void sessionCreated(NextFilter nextFilter, IoSession session) - throws Exception { - if (!isConnectionOk(session)) { - session.close(); - return; - } - nextFilter.sessionCreated(session); - } -} +package com.rebotted.net; + +import java.net.InetAddress; +import java.net.InetSocketAddress; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +import org.apache.mina.common.IoFilter; +import org.apache.mina.common.IoFilterAdapter; +import org.apache.mina.common.IoSession; + +/** + * A {@link IoFilter} which blocks connections from connecting at a rate faster + * than the specified interval. + * + * @author The Apache MINA Project (dev@mina.apache.org) + * @version $Rev$, $Date$ + */ +public class ConnectionThrottleFilter extends IoFilterAdapter { + + private long allowedInterval; + private final Map clients; + private final Map counts; + private final Set connectedAddresses; + + /** + * Constructor that takes in a specified wait time. + * + * @param allowedInterval + * The number of milliseconds a client is allowed to wait before + * making another successful connection + */ + public ConnectionThrottleFilter(long allowedInterval) { + this.allowedInterval = allowedInterval; + clients = Collections.synchronizedMap(new HashMap()); + counts = Collections + .synchronizedMap(new HashMap()); + connectedAddresses = new HashSet(); + } + + /** + * Sets the interval between connections from a client. This value is + * measured in milliseconds. + * + * @param allowedInterval + * The number of milliseconds a client is allowed to wait before + * making another successful connection + */ + public void setAllowedInterval(long allowedInterval) { + this.allowedInterval = allowedInterval; + } + + public void delayClient(IoSession session, int delay) { + long d = System.currentTimeMillis() - delay; + clients.put(getAddress(session), d); + } + + private InetAddress getAddress(IoSession io) { + return ((InetSocketAddress) io.getRemoteAddress()).getAddress(); + } + + /** + * Method responsible for deciding if a connection is OK to continue + * + * @param session + * The new session that will be verified + * @return True if the session meets the criteria, otherwise false + */ + public boolean isConnectionOk(IoSession session) { + InetAddress addr = getAddress(session); + long now = System.currentTimeMillis(); + if (clients.containsKey(addr)) { + long lastConnTime = clients.get(addr); + + if (now - lastConnTime < allowedInterval) { + int c = 0; + if (!counts.containsKey(addr)) { + counts.put(addr, 0); + } else { + c = counts.get(addr) + 1; + } + if (c >= 350) { + + c = 0; + } + counts.put(addr, c); + // Logger.err("["+host+"] Session dropped (delay="+(now-lastConnTime)+"ms)"); + return false; + } else { + clients.put(addr, now); + return true; + } + } else { + clients.put(addr, now); + return true; + } + } + + public void closedSession(IoSession io) { + connectedAddresses.remove(getAddress(io)); + } + + public void acceptedLogin(IoSession io) { + connectedAddresses.add(getAddress(io)); + } + + public boolean isConnected(IoSession io) { + return connectedAddresses.contains(getAddress(io)); + } + + public int[] getSizes() { + return new int[] { clients.size(), counts.size(), + connectedAddresses.size() }; + } + + public void connectionOk(IoSession io) { + counts.remove(getAddress(io)); + } + + @Override + public void sessionCreated(NextFilter nextFilter, IoSession session) + throws Exception { + if (!isConnectionOk(session)) { + session.close(); + return; + } + nextFilter.sessionCreated(session); + } +} diff --git a/2006Redone Server/src/redone/net/GameCodecFactory.java b/2006Redone Server/src/com/rebotted/net/GameCodecFactory.java similarity index 89% rename from 2006Redone Server/src/redone/net/GameCodecFactory.java rename to 2006Redone Server/src/com/rebotted/net/GameCodecFactory.java index 0e43239a..0886517e 100644 --- a/2006Redone Server/src/redone/net/GameCodecFactory.java +++ b/2006Redone Server/src/com/rebotted/net/GameCodecFactory.java @@ -1,46 +1,46 @@ -package redone.net; - -import org.apache.mina.filter.codec.ProtocolCodecFactory; -import org.apache.mina.filter.codec.ProtocolDecoder; -import org.apache.mina.filter.codec.ProtocolEncoder; - -import redone.util.ISAACRandomGen; - -/** - * Provides access to the encoders and decoders for the 508 protocol. - * - * @author Graham - */ -public class GameCodecFactory implements ProtocolCodecFactory { - - /** - * The encoder. - */ - private final ProtocolEncoder encoder = new RS2ProtocolEncoder(); - - /** - * The decoder. - */ - private final ProtocolDecoder decoder; - - public GameCodecFactory(ISAACRandomGen inC) { - decoder = new RS2ProtocolDecoder(inC); - } - - @Override - /** - * Get the encoder. - */ - public ProtocolEncoder getEncoder() throws Exception { - return encoder; - } - - @Override - /** - * Get the decoder. - */ - public ProtocolDecoder getDecoder() throws Exception { - return decoder; - } - -} +package com.rebotted.net; + +import org.apache.mina.filter.codec.ProtocolCodecFactory; +import org.apache.mina.filter.codec.ProtocolDecoder; +import org.apache.mina.filter.codec.ProtocolEncoder; + +import com.rebotted.util.ISAACRandomGen; + +/** + * Provides access to the encoders and decoders for the 508 protocol. + * + * @author Graham + */ +public class GameCodecFactory implements ProtocolCodecFactory { + + /** + * The encoder. + */ + private final ProtocolEncoder encoder = new RS2ProtocolEncoder(); + + /** + * The decoder. + */ + private final ProtocolDecoder decoder; + + public GameCodecFactory(ISAACRandomGen inC) { + decoder = new RS2ProtocolDecoder(inC); + } + + @Override + /** + * Get the encoder. + */ + public ProtocolEncoder getEncoder() throws Exception { + return encoder; + } + + @Override + /** + * Get the decoder. + */ + public ProtocolDecoder getDecoder() throws Exception { + return decoder; + } + +} diff --git a/2006Redone Server/src/redone/net/HostList.java b/2006Redone Server/src/com/rebotted/net/HostList.java similarity index 84% rename from 2006Redone Server/src/redone/net/HostList.java rename to 2006Redone Server/src/com/rebotted/net/HostList.java index 67b87110..16768087 100644 --- a/2006Redone Server/src/redone/net/HostList.java +++ b/2006Redone Server/src/com/rebotted/net/HostList.java @@ -1,57 +1,57 @@ -package redone.net; - -import java.net.InetSocketAddress; -import java.util.HashMap; -import java.util.Map; - -import org.apache.mina.common.IoSession; - -import redone.Connection; -import redone.Constants; - -public class HostList { - - private static HostList list = new HostList(); - - public static HostList getHostList() { - return list; - } - - private final Map connections = new HashMap(); - - public synchronized boolean add(IoSession session) { - String addr = ((InetSocketAddress) session.getRemoteAddress()) - .getAddress().getHostAddress(); - Integer amt = connections.get(addr); - if (amt == null) { - amt = 1; - } else { - amt += 1; - } - if (amt > Constants.IPS_ALLOWED || Connection.isIpBanned(addr)) { - return false; - } else { - connections.put(addr, amt); - return true; - } - } - - public synchronized void remove(IoSession session) { - if (session.getAttribute("inList") != Boolean.TRUE) { - return; - } - String addr = ((InetSocketAddress) session.getRemoteAddress()) - .getAddress().getHostAddress(); - Integer amt = connections.get(addr); - if (amt == null) { - return; - } - amt -= 1; - if (amt <= 0) { - connections.remove(addr); - } else { - connections.put(addr, amt); - } - } - -} +package com.rebotted.net; + +import java.net.InetSocketAddress; +import java.util.HashMap; +import java.util.Map; + +import org.apache.mina.common.IoSession; + +import com.rebotted.Connection; +import com.rebotted.GameConstants; + +public class HostList { + + private static HostList list = new HostList(); + + public static HostList getHostList() { + return list; + } + + private final Map connections = new HashMap(); + + public synchronized boolean add(IoSession session) { + String addr = ((InetSocketAddress) session.getRemoteAddress()) + .getAddress().getHostAddress(); + Integer amt = connections.get(addr); + if (amt == null) { + amt = 1; + } else { + amt += 1; + } + if (amt > GameConstants.IPS_ALLOWED || Connection.isIpBanned(addr)) { + return false; + } else { + connections.put(addr, amt); + return true; + } + } + + public synchronized void remove(IoSession session) { + if (session.getAttribute("inList") != Boolean.TRUE) { + return; + } + String addr = ((InetSocketAddress) session.getRemoteAddress()) + .getAddress().getHostAddress(); + Integer amt = connections.get(addr); + if (amt == null) { + return; + } + amt -= 1; + if (amt <= 0) { + connections.remove(addr); + } else { + connections.put(addr, amt); + } + } + +} diff --git a/2006Redone Server/src/redone/net/Packet.java b/2006Redone Server/src/com/rebotted/net/Packet.java similarity index 95% rename from 2006Redone Server/src/redone/net/Packet.java rename to 2006Redone Server/src/com/rebotted/net/Packet.java index b64f352c..bdcf1d22 100644 --- a/2006Redone Server/src/redone/net/Packet.java +++ b/2006Redone Server/src/com/rebotted/net/Packet.java @@ -1,304 +1,304 @@ -package redone.net; - -import org.apache.mina.common.IoSession; - -/** - * Immutable packet object. - * - * @author Graham - */ -public final class Packet { - - public static enum Size { - Fixed, VariableByte, VariableShort - }; - - /** - * The associated IO session - */ - private final IoSession session; - /** - * The ID of the packet - */ - private final int pID; - /** - * The length of the payload - */ - private final int pLength; - /** - * The payload - */ - private final byte[] pData; - /** - * The current index into the payload buffer for reading - */ - private int caret = 0; - /** - * Whether this packet is without the standard packet header - */ - private final boolean bare; - private Size size = Size.Fixed; - - public Packet(IoSession session, int pID, byte[] pData, boolean bare, Size s) { - this.session = session; - this.pID = pID; - this.pData = pData; - pLength = pData.length; - this.bare = bare; - size = s; - } - - /** - * Creates a new packet with the specified parameters. - * - * @param session - * The session to associate with the packet - * @param pID - * The ID of the packet - * @param pData - * The payload of the packet - * @param bare - * Whether this packet is bare, which means that it does not - * include the standard packet header - */ - public Packet(IoSession session, int pID, byte[] pData, boolean bare) { - this(session, pID, pData, bare, Size.Fixed); - } - - /** - * Creates a new packet with the specified parameters. The packet is - * considered not to be a bare packet. - * - * @param session - * The session to associate with the packet - * @param pID - * The ID of the packet - * @param pData - * The payload the packet - */ - public Packet(IoSession session, int pID, byte[] pData) { - this(session, pID, pData, false); - } - - /** - * Returns the IO session associated with the packet, if any. - * - * @return The IoSession object, or null if none. - */ - public IoSession getSession() { - return session; - } - - /** - * Checks if this packet is considered to be a bare packet, which means that - * it does not include the standard packet header (ID and length values). - * - * @return Whether this packet is a bare packet - */ - public boolean isBare() { - return bare; - } - - public Size getSize() { - return size; - } - - /** - * Returns the packet ID. - * - * @return The packet ID - */ - public int getId() { - return pID; - } - - /** - * Returns the length of the payload of this packet. - * - * @return The length of the packet's payload - */ - public int getLength() { - return pLength; - } - - /** - * Returns the entire payload data of this packet. - * - * @return The payload byte array - */ - public byte[] getData() { - return pData; - } - - /** - * Returns the remaining payload data of this packet. - * - * @return The payload byte array - */ - public byte[] getRemainingData() { - byte[] data = new byte[pLength - caret]; - for (int i = 0; i < data.length; i++) { - data[i] = pData[i + caret]; - } - caret += data.length; - return data; - - } - - /** - * Reads the next byte from the payload. - * - * @return A byte - */ - public byte readByte() { - return pData[caret++]; - } - - /** - * Reads the next short from the payload. - * - * @return A short - */ - public short readShort() { - return (short) ((short) ((pData[caret++] & 0xff) << 8) | (short) (pData[caret++] & 0xff)); - } - - public int readLEShortA() { - int i = (pData[caret++] - 128 & 0xff) + ((pData[caret++] & 0xff) << 8); - if (i > 32767) { - i -= 0x10000; - } - return i; - } - - public int readLEShort() { - int i = (pData[caret++] & 0xff) + ((pData[caret++] & 0xff) << 8); - if (i > 32767) { - i -= 0x10000; - } - return i; - } - - /** - * Reads the next int from the payload. - * - * @return An int - */ - public int readInt() { - return (pData[caret++] & 0xff) << 24 | (pData[caret++] & 0xff) << 16 - | (pData[caret++] & 0xff) << 8 | pData[caret++] & 0xff; - } - - public int readLEInt() { - return pData[caret++] & 0xff | (pData[caret++] & 0xff) << 8 - | (pData[caret++] & 0xff) << 16 | (pData[caret++] & 0xff) << 24; - } - - /** - * Reads the next long from the payload. - * - * @return A long - */ - public long readLong() { - return (long) (pData[caret++] & 0xff) << 56 - | (long) (pData[caret++] & 0xff) << 48 - | (long) (pData[caret++] & 0xff) << 40 - | (long) (pData[caret++] & 0xff) << 32 - | (long) (pData[caret++] & 0xff) << 24 - | (long) (pData[caret++] & 0xff) << 16 - | (long) (pData[caret++] & 0xff) << 8 | pData[caret++] & 0xff; - } - - /** - * Reads the string which is formed by the unread portion of the payload. - * - * @return A String - */ - public String readString() { - return readString(pLength - caret); - } - - public String readRS2String() { - int start = caret; - while (pData[caret++] != 0) { - ; - } - return new String(pData, start, caret - start - 1); - } - - public void readBytes(byte[] buf, int off, int len) { - for (int i = 0; i < len; i++) { - buf[off + i] = pData[caret++]; - } - } - - /** - * Reads a string of the specified length from the payload. - * - * @param length - * The length of the string to be read - * @return A String - */ - public String readString(int length) { - String rv = new String(pData, caret, length); - caret += length; - return rv; - } - - /** - * Skips the specified number of bytes in the payload. - * - * @param x - * The number of bytes to be skipped - */ - public void skip(int x) { - caret += x; - } - - public int remaining() { - return pData.length - caret; - } - - /** - * Returns this packet in string form. - * - * @return A String representing this packet - */ - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("[id=" + pID + ",len=" + pLength + ",data=0x"); - for (int x = 0; x < pLength; x++) { - sb.append(byteToHex(pData[x], true)); - } - sb.append("]"); - return sb.toString(); - } - - private static String byteToHex(byte b, boolean forceLeadingZero) { - StringBuilder out = new StringBuilder(); - int ub = b & 0xff; - if (ub / 16 > 0 || forceLeadingZero) { - out.append(hex[ub / 16]); - } - out.append(hex[ub % 16]); - return out.toString(); - } - - private static final char[] hex = "0123456789ABCDEF".toCharArray(); - - public int readShortA() { - caret += 2; - return ((pData[caret - 2] & 0xFF) << 8) - + (pData[caret - 1] - 128 & 0xFF); - } - - public byte readByteC() { - return (byte) -readByte(); - } - - public byte readByteS() { - return (byte) (128 - readByte()); - } - -} +package com.rebotted.net; + +import org.apache.mina.common.IoSession; + +/** + * Immutable packet object. + * + * @author Graham + */ +public final class Packet { + + public static enum Size { + Fixed, VariableByte, VariableShort + }; + + /** + * The associated IO session + */ + private final IoSession session; + /** + * The ID of the packet + */ + private final int pID; + /** + * The length of the payload + */ + private final int pLength; + /** + * The payload + */ + private final byte[] pData; + /** + * The current index into the payload buffer for reading + */ + private int caret = 0; + /** + * Whether this packet is without the standard packet header + */ + private final boolean bare; + private Size size = Size.Fixed; + + public Packet(IoSession session, int pID, byte[] pData, boolean bare, Size s) { + this.session = session; + this.pID = pID; + this.pData = pData; + pLength = pData.length; + this.bare = bare; + size = s; + } + + /** + * Creates a new packet with the specified parameters. + * + * @param session + * The session to associate with the packet + * @param pID + * The ID of the packet + * @param pData + * The payload of the packet + * @param bare + * Whether this packet is bare, which means that it does not + * include the standard packet header + */ + public Packet(IoSession session, int pID, byte[] pData, boolean bare) { + this(session, pID, pData, bare, Size.Fixed); + } + + /** + * Creates a new packet with the specified parameters. The packet is + * considered not to be a bare packet. + * + * @param session + * The session to associate with the packet + * @param pID + * The ID of the packet + * @param pData + * The payload the packet + */ + public Packet(IoSession session, int pID, byte[] pData) { + this(session, pID, pData, false); + } + + /** + * Returns the IO session associated with the packet, if any. + * + * @return The IoSession object, or null if none. + */ + public IoSession getSession() { + return session; + } + + /** + * Checks if this packet is considered to be a bare packet, which means that + * it does not include the standard packet header (ID and length values). + * + * @return Whether this packet is a bare packet + */ + public boolean isBare() { + return bare; + } + + public Size getSize() { + return size; + } + + /** + * Returns the packet ID. + * + * @return The packet ID + */ + public int getId() { + return pID; + } + + /** + * Returns the length of the payload of this packet. + * + * @return The length of the packet's payload + */ + public int getLength() { + return pLength; + } + + /** + * Returns the entire payload data of this packet. + * + * @return The payload byte array + */ + public byte[] getData() { + return pData; + } + + /** + * Returns the remaining payload data of this packet. + * + * @return The payload byte array + */ + public byte[] getRemainingData() { + byte[] data = new byte[pLength - caret]; + for (int i = 0; i < data.length; i++) { + data[i] = pData[i + caret]; + } + caret += data.length; + return data; + + } + + /** + * Reads the next byte from the payload. + * + * @return A byte + */ + public byte readByte() { + return pData[caret++]; + } + + /** + * Reads the next short from the payload. + * + * @return A short + */ + public short readShort() { + return (short) ((short) ((pData[caret++] & 0xff) << 8) | (short) (pData[caret++] & 0xff)); + } + + public int readLEShortA() { + int i = (pData[caret++] - 128 & 0xff) + ((pData[caret++] & 0xff) << 8); + if (i > 32767) { + i -= 0x10000; + } + return i; + } + + public int readLEShort() { + int i = (pData[caret++] & 0xff) + ((pData[caret++] & 0xff) << 8); + if (i > 32767) { + i -= 0x10000; + } + return i; + } + + /** + * Reads the next int from the payload. + * + * @return An int + */ + public int readInt() { + return (pData[caret++] & 0xff) << 24 | (pData[caret++] & 0xff) << 16 + | (pData[caret++] & 0xff) << 8 | pData[caret++] & 0xff; + } + + public int readLEInt() { + return pData[caret++] & 0xff | (pData[caret++] & 0xff) << 8 + | (pData[caret++] & 0xff) << 16 | (pData[caret++] & 0xff) << 24; + } + + /** + * Reads the next long from the payload. + * + * @return A long + */ + public long readLong() { + return (long) (pData[caret++] & 0xff) << 56 + | (long) (pData[caret++] & 0xff) << 48 + | (long) (pData[caret++] & 0xff) << 40 + | (long) (pData[caret++] & 0xff) << 32 + | (long) (pData[caret++] & 0xff) << 24 + | (long) (pData[caret++] & 0xff) << 16 + | (long) (pData[caret++] & 0xff) << 8 | pData[caret++] & 0xff; + } + + /** + * Reads the string which is formed by the unread portion of the payload. + * + * @return A String + */ + public String readString() { + return readString(pLength - caret); + } + + public String readRS2String() { + int start = caret; + while (pData[caret++] != 0) { + ; + } + return new String(pData, start, caret - start - 1); + } + + public void readBytes(byte[] buf, int off, int len) { + for (int i = 0; i < len; i++) { + buf[off + i] = pData[caret++]; + } + } + + /** + * Reads a string of the specified length from the payload. + * + * @param length + * The length of the string to be read + * @return A String + */ + public String readString(int length) { + String rv = new String(pData, caret, length); + caret += length; + return rv; + } + + /** + * Skips the specified number of bytes in the payload. + * + * @param x + * The number of bytes to be skipped + */ + public void skip(int x) { + caret += x; + } + + public int remaining() { + return pData.length - caret; + } + + /** + * Returns this packet in string form. + * + * @return A String representing this packet + */ + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("[id=" + pID + ",len=" + pLength + ",data=0x"); + for (int x = 0; x < pLength; x++) { + sb.append(byteToHex(pData[x], true)); + } + sb.append("]"); + return sb.toString(); + } + + private static String byteToHex(byte b, boolean forceLeadingZero) { + StringBuilder out = new StringBuilder(); + int ub = b & 0xff; + if (ub / 16 > 0 || forceLeadingZero) { + out.append(hex[ub / 16]); + } + out.append(hex[ub % 16]); + return out.toString(); + } + + private static final char[] hex = "0123456789ABCDEF".toCharArray(); + + public int readShortA() { + caret += 2; + return ((pData[caret - 2] & 0xFF) << 8) + + (pData[caret - 1] - 128 & 0xFF); + } + + public byte readByteC() { + return (byte) -readByte(); + } + + public byte readByteS() { + return (byte) (128 - readByte()); + } + +} diff --git a/2006Redone Server/src/redone/net/PacketBuffer.java b/2006Redone Server/src/com/rebotted/net/PacketBuffer.java similarity index 93% rename from 2006Redone Server/src/redone/net/PacketBuffer.java rename to 2006Redone Server/src/com/rebotted/net/PacketBuffer.java index f1c7ff15..79040786 100644 --- a/2006Redone Server/src/redone/net/PacketBuffer.java +++ b/2006Redone Server/src/com/rebotted/net/PacketBuffer.java @@ -1,104 +1,104 @@ -package redone.net; - -/** - * Represents a packet buffer. - * - * @author Ultimate1 - * @author blakeman8192 - */ - -public class PacketBuffer { - - private int caret; - private byte[] buffer; - - public PacketBuffer(int capcity) { - buffer = new byte[capcity]; - caret = 0; - } - - public void setBuffer(byte[] buffer) { - this.buffer = buffer; - caret = 0; - } - - public PacketBuffer setOpcode(int opcode) { - return addByte(opcode); - } - - public PacketBuffer addByte(int i) { - buffer[caret++] = (byte) i; - return this; - } - - public int getByte() { - return buffer[caret++] & 0xff; - } - - public PacketBuffer addBoolean(boolean val) { - return addByte(val == true ? 1 : 0); - } - - public boolean getBoolean() { - return getByte() == 1; - } - - public PacketBuffer addShort(int i) { - return addByte(i >> 8).addByte(i); - } - - public int getShort() { - return getByte() << 8 | getByte(); - } - - public PacketBuffer addInt(int i) { - return addShort(i >> 16).addShort(i); - } - - public int getInt() { - return getShort() << 16 | getShort(); - } - - public PacketBuffer addLong(long i) { - return addInt((int) (i >> 32)).addInt((int) i); - } - - public long getLong() { - return (long) getInt() << 32L | getInt(); - } - - public PacketBuffer addString(String s) { - for (byte b : s.getBytes()) { - addByte(b); - } - return addByte('\n'); - } - - public String getString() { - int c; - StringBuilder builder = new StringBuilder(); - while ((c = getByte()) != '\n') { - builder.append((char) c); - } - return builder.toString(); - } - - public byte[] getBuffer() { - byte[] newBuffer = new byte[caret + 1]; - newBuffer[0] = (byte) caret; - System.arraycopy(buffer, 0, newBuffer, 1, caret); - return newBuffer; - } - - public int getLength() { - return buffer.length; - } - - public void reset() { - caret = 0; - for (int i = 0; i < buffer.length; i++) { - buffer[i] = 0; - } - buffer = null; - } -} +package com.rebotted.net; + +/** + * Represents a packet buffer. + * + * @author Ultimate1 + * @author blakeman8192 + */ + +public class PacketBuffer { + + private int caret; + private byte[] buffer; + + public PacketBuffer(int capcity) { + buffer = new byte[capcity]; + caret = 0; + } + + public void setBuffer(byte[] buffer) { + this.buffer = buffer; + caret = 0; + } + + public PacketBuffer setOpcode(int opcode) { + return addByte(opcode); + } + + public PacketBuffer addByte(int i) { + buffer[caret++] = (byte) i; + return this; + } + + public int getByte() { + return buffer[caret++] & 0xff; + } + + public PacketBuffer addBoolean(boolean val) { + return addByte(val == true ? 1 : 0); + } + + public boolean getBoolean() { + return getByte() == 1; + } + + public PacketBuffer addShort(int i) { + return addByte(i >> 8).addByte(i); + } + + public int getShort() { + return getByte() << 8 | getByte(); + } + + public PacketBuffer addInt(int i) { + return addShort(i >> 16).addShort(i); + } + + public int getInt() { + return getShort() << 16 | getShort(); + } + + public PacketBuffer addLong(long i) { + return addInt((int) (i >> 32)).addInt((int) i); + } + + public long getLong() { + return (long) getInt() << 32L | getInt(); + } + + public PacketBuffer addString(String s) { + for (byte b : s.getBytes()) { + addByte(b); + } + return addByte('\n'); + } + + public String getString() { + int c; + StringBuilder builder = new StringBuilder(); + while ((c = getByte()) != '\n') { + builder.append((char) c); + } + return builder.toString(); + } + + public byte[] getBuffer() { + byte[] newBuffer = new byte[caret + 1]; + newBuffer[0] = (byte) caret; + System.arraycopy(buffer, 0, newBuffer, 1, caret); + return newBuffer; + } + + public int getLength() { + return buffer.length; + } + + public void reset() { + caret = 0; + for (int i = 0; i < buffer.length; i++) { + buffer[i] = 0; + } + buffer = null; + } +} diff --git a/2006Redone Server/src/redone/net/PacketBuilder.java b/2006Redone Server/src/com/rebotted/net/PacketBuilder.java similarity index 76% rename from 2006Redone Server/src/redone/net/PacketBuilder.java rename to 2006Redone Server/src/com/rebotted/net/PacketBuilder.java index 78c3dc6c..622c9dd1 100644 --- a/2006Redone Server/src/redone/net/PacketBuilder.java +++ b/2006Redone Server/src/com/rebotted/net/PacketBuilder.java @@ -1,10 +1,10 @@ -package redone.net; - -/** - * Packet builder interface - * - * @author Graham - */ -public interface PacketBuilder { - -} +package com.rebotted.net; + +/** + * Packet builder interface + * + * @author Graham + */ +public interface PacketBuilder { + +} diff --git a/2006Redone Server/src/redone/net/ActionSender.java b/2006Redone Server/src/com/rebotted/net/PacketSender.java similarity index 53% rename from 2006Redone Server/src/redone/net/ActionSender.java rename to 2006Redone Server/src/com/rebotted/net/PacketSender.java index eeb53db0..3d588499 100644 --- a/2006Redone Server/src/redone/net/ActionSender.java +++ b/2006Redone Server/src/com/rebotted/net/PacketSender.java @@ -1,639 +1,1037 @@ -package redone.net; - -import java.text.DecimalFormat; - -import redone.game.players.Client; -import redone.game.players.Player; -import redone.game.players.PlayerHandler; -import redone.util.Misc; -import redone.world.clip.Region; - -public class ActionSender { - - private final Client player; - - public ActionSender(Client client) { - this.player = client; - } - - - public ActionSender sendClan(String name, String message, String clan, int rights) { - if (player.getOutStream() == null) return this; - player.outStream.createFrameVarSizeWord(217); - player.outStream.writeString(name); - player.outStream.writeString(message); - player.outStream.writeString(clan); - player.outStream.writeWord(rights); - player.outStream.endFrameVarSize(); - return this; - } - - public ActionSender createPlayersObjectAnim(int X, int Y, int animationID, int tileObjectType, int orientation) { - if (player.getOutStream() == null) return this; - try{ - player.getOutStream().createFrame(85); - player.getOutStream().writeByteC(Y - (player.mapRegionY * 8)); - player.getOutStream().writeByteC(X - (player.mapRegionX * 8)); - int x = 0; - int y = 0; - player.getOutStream().createFrame(160); - player.getOutStream().writeByteS(((x&7) << 4) + (y&7));//tiles away - could just send 0 - player.getOutStream().writeByteS((tileObjectType<<2) +(orientation&3)); - player.getOutStream().writeWordA(animationID);// animation id - } catch(Exception e){ - e.printStackTrace(); - } - return this; - } - - - public ActionSender setInterfaceOffset(int x, int y, int id) { - if (player.getOutStream() != null && player != null) { - player.getOutStream().createFrame(70); - player.getOutStream().writeWord(x); - player.getOutStream().writeWordBigEndian(y); - player.getOutStream().writeWordBigEndian(id); - player.flushOutStream(); - } - return this; - } - - public ActionSender shakeScreen(int verticleAmount, int verticleSpeed, - int horizontalAmount, int horizontalSpeed) { - if (player.getOutStream() == null) return this; - player.getOutStream().createFrame(35); // Creates frame 35. - player.getOutStream().writeByte(verticleAmount); - player.getOutStream().writeByte(verticleSpeed); - player.getOutStream().writeByte(horizontalAmount); - player.getOutStream().writeByte(horizontalSpeed); - return this; - } - - public ActionSender chatbox(int i1) { - if (player.getOutStream() != null && player != null) { - player.outStream.createFrame(218); - player.outStream.writeWordBigEndianA(i1); - player.updateRequired = true; - player.appearanceUpdateRequired = true; - } - return this; - } - - public ActionSender sendMessage(String s) { - if (player.getOutStream() != null) { - player.getOutStream().createFrameVarSize(253); - player.getOutStream().writeString(s); - player.getOutStream().endFrameVarSize(); - } - return this; - } - - public ActionSender setSidebarInterface(int menuId, int form) { - if (player.getOutStream() != null) { - player.getOutStream().createFrame(71); - player.getOutStream().writeWord(form); - player.getOutStream().writeByteA(menuId); - } - return this; - } - - /** - * Flashes Sidebar Icon - */ - - public ActionSender flashSideBarIcon(int i1) { - // Makes the sidebar Icons flash - // Usage: i1 = 0 through -12 inorder to work - if (player.getOutStream() != null) { - player.outStream.createFrame(24); - player.outStream.writeByteA(i1); - } - player.updateRequired = true; - player.appearanceUpdateRequired = true; - return this; - } - - public ActionSender createPlayerHints(int type, int id) { - if (player.getOutStream() != null && player != null) { - player.getOutStream().createFrame(254); - player.getOutStream().writeByte(type); - player.getOutStream().writeWord(id); - player.getOutStream().write3Byte(0); - player.flushOutStream(); - } - return this; - } - - public ActionSender createObjectHints(int x, int y, int height, int pos) { - // synchronized(c) { - if (player.getOutStream() != null && player != null) { - player.getOutStream().createFrame(254); - player.getOutStream().writeByte(pos); - player.getOutStream().writeWord(x); - player.getOutStream().writeWord(y); - player.getOutStream().writeByte(height); - player.flushOutStream(); - } - return this; - } - - public ActionSender createProjectile(int x, int y, int offX, int offY, - int angle, int speed, int gfxMoving, int startHeight, - int endHeight, int lockon, int time) { - if (player.getOutStream() != null && player != null) { - player.getOutStream().createFrame(85); - player.getOutStream() - .writeByteC(y - player.getMapRegionY() * 8 - 2); - player.getOutStream() - .writeByteC(x - player.getMapRegionX() * 8 - 3); - player.getOutStream().createFrame(117); - player.getOutStream().writeByte(angle); - player.getOutStream().writeByte(offY); - player.getOutStream().writeByte(offX); - player.getOutStream().writeWord(lockon); - player.getOutStream().writeWord(gfxMoving); - player.getOutStream().writeByte(startHeight); - player.getOutStream().writeByte(endHeight); - player.getOutStream().writeWord(time); - player.getOutStream().writeWord(speed); - player.getOutStream().writeByte(16); - player.getOutStream().writeByte(64); - player.flushOutStream(); - } - return this; - } - - public ActionSender createProjectile2(int x, int y, int offX, int offY, - int angle, int speed, int gfxMoving, int startHeight, - int endHeight, int lockon, int time, int slope) { - if (player.getOutStream() != null && player != null) { - player.getOutStream().createFrame(85); - player.getOutStream() - .writeByteC(y - player.getMapRegionY() * 8 - 2); - player.getOutStream() - .writeByteC(x - player.getMapRegionX() * 8 - 3); - player.getOutStream().createFrame(117); - player.getOutStream().writeByte(angle); - player.getOutStream().writeByte(offY); - player.getOutStream().writeByte(offX); - player.getOutStream().writeWord(lockon); - player.getOutStream().writeWord(gfxMoving); - player.getOutStream().writeByte(startHeight); - player.getOutStream().writeByte(endHeight); - player.getOutStream().writeWord(time); - player.getOutStream().writeWord(speed); - player.getOutStream().writeByte(slope); - player.getOutStream().writeByte(64); - player.flushOutStream(); - } - return this; - } - - /** - * Objects, add and remove - **/ - public ActionSender object(int objectId, int objectX, int objectY, int face, int objectType) { - if (player.getOutStream() != null && player != null) { - player.getOutStream().createFrame(85); - player.getOutStream().writeByteC( - objectY - player.getMapRegionY() * 8); - player.getOutStream().writeByteC( - objectX - player.getMapRegionX() * 8); - player.getOutStream().createFrame(101); - player.getOutStream().writeByteC((objectType << 2) + (face & 3)); - player.getOutStream().writeByte(0); - if (objectId != -1) { // removing - player.getOutStream().createFrame(151); - player.getOutStream().writeByteS(0); - player.getOutStream().writeWordBigEndian(objectId); - player.getOutStream() - .writeByteS((objectType << 2) + (face & 3)); - } - player.flushOutStream(); - } - return this; - } - - public ActionSender object(int objectId, int objectX, int objectY, int objectH, int face, int objectType) { - if (player.getOutStream() == null) return this; - if (player.heightLevel != objectH) { - return this; - } - if (Misc.goodDistance(objectX, objectY, player.absX, player.absY, 60)) { - if (player.getOutStream() != null && player != null) { - player.getOutStream().createFrame(85); - player.getOutStream().writeByteC(objectY - player.getMapRegionY() * 8); - player.getOutStream().writeByteC(objectX - player.getMapRegionX() * 8); - player.getOutStream().createFrame(101); - player.getOutStream().writeByteC((objectType << 2) + (face & 3)); - player.getOutStream().writeByte(0); - if (objectId != -1) { // removing - player.getOutStream().createFrame(151); - player.getOutStream().writeByteS(0); - player.getOutStream().writeWordBigEndian(objectId); - player.getOutStream().writeByteS((objectType << 2) + (face & 3)); - } - player.flushOutStream(); - } - } - return this; - } - - public ActionSender tempSong(int songID, int songID2) { - if (player.getOutStream() == null) return this; - player.outStream.createFrame(121); - player.outStream.writeWordBigEndian(songID); - player.outStream.writeWordBigEndian(songID2); - player.flushOutStream(); - return this; - } - - public ActionSender frame174(int sound, int vol, int delay) { - if (player.getOutStream() == null) return this; - player.outStream.createFrame(174); - player.outStream.writeWord(sound); - player.outStream.writeWord(delay); - player.outStream.writeByte(vol); - return this; - } - - public ActionSender writeWeight(int weight) { - if (player.getOutStream() == null) return this; - player.outStream.createFrame(240); - DecimalFormat twoDForm = new DecimalFormat("#.##"); - player.outStream.writeWord(Integer.valueOf(twoDForm.format(weight))); - return this; - } - - public ActionSender sendConfig(int id, int state) { - if (player.getOutStream() == null) return this; - if (player != null) { - if (state < Byte.MIN_VALUE || state > Byte.MAX_VALUE) { - player.getOutStream().createFrame(87); - player.getOutStream().writeWordBigEndian_dup(id); - player.getOutStream().writeDWord_v1(state); - player.flushOutStream(); - } else { - player.getOutStream().createFrame(36); - player.getOutStream().writeWordBigEndian(id); - player.getOutStream().writeByte(state); - player.flushOutStream(); - } - } - return this; - } - - public ActionSender multiWay(int i1) { - if (player.getOutStream() != null) { - player.outStream.createFrame(61); - player.outStream.writeByte(i1); - } - player.updateRequired = true; - player.setAppearanceUpdateRequired(true); - return this; - } - - public ActionSender sendColor(int id, int color) { - if (player.getOutStream() == null) return this; - if (player != null) { - player.outStream.createFrame(122); - player.outStream.writeWordBigEndianA(id); - player.outStream.writeWordBigEndianA(color); - } - return this; - } - - public ActionSender sendCrashFrame() { - if (player.getOutStream() == null) return this; - if (player != null) { - player.getOutStream().createFrame(123); - player.flushOutStream(); - } - return this; - } - - public ActionSender createStillGfx(int id, int x, int y, int height, int time) { - for (Player p : PlayerHandler.players) { - if (p != null) { - Client person = (Client) p; - if (person != null) { - if (person.getOutStream() != null) { - if (person.distanceToPoint(x, y) <= 25) { - person.getPlayerAssistant().stillGfx(id, x, y, - height, time); - } - } - } - } - } - return this; - } - - public ActionSender object(int objectId, int objectX, int objectY, int objectType) { - if (player.getOutStream() == null) return this; - if (player != null) { - player.getOutStream().createFrame(85); - player.getOutStream().writeByteC( - objectY - player.getMapRegionY() * 8); - player.getOutStream().writeByteC( - objectX - player.getMapRegionX() * 8); - player.getOutStream().createFrame(101); - player.getOutStream().writeByteC((objectType << 2) + (0 & 3)); - player.getOutStream().writeByte(0); - if (objectId != -1) { // removing - player.getOutStream().createFrame(151); - player.getOutStream().writeByteS(0); - player.getOutStream().writeWordBigEndian(objectId); - player.getOutStream().writeByteS((objectType << 2) + (0 & 3)); - } - player.flushOutStream(); - } - return this; - } - - public ActionSender itemOnInterface(int interfaceChild, int zoom, int itemId) { - if (player.getOutStream() == null) return this; - if (player != null) { - player.getOutStream().createFrame(246); - player.getOutStream().writeWordBigEndian(interfaceChild); - player.getOutStream().writeWord(zoom); - player.getOutStream().writeWord(itemId); - player.flushOutStream(); - } - return this; - } - - public ActionSender setConfig(int id, int state) { - if (player.getOutStream() == null) return this; - player.outStream.createFrame(36); - player.outStream.writeWordBigEndian(id); - player.outStream.writeByte(state); - return this; - } - - public ActionSender sendLink(String s) { - if (player.getOutStream() == null) return this; - if (player != null) { - player.getOutStream().createFrameVarSizeWord(187); - player.getOutStream().writeString(s); - } - return this; - } - - public ActionSender setSkillLevel(int skillNum, int currentLevel, int XP) { - if (player.getOutStream() == null) return this; - if (player != null) { - player.getOutStream().createFrame(134); - player.getOutStream().writeByte(skillNum); - player.getOutStream().writeDWord_v1(XP); - player.getOutStream().writeByte(currentLevel); - player.flushOutStream(); - } - return this; - } - - /** - * Show an arrow icon on the selected player. - * - * @Param i - Either 0 or 1; 1 is arrow, 0 is none. - * @Param j - The player/Npc that the arrow will be displayed above. - * @Param k - Keep this set as 0 - * @Param l - Keep this set as 0 - */ - public ActionSender drawHeadicon(int i, int j, int k, int l) { - if (player.getOutStream() == null) return this; - - // synchronized(c) { - player.outStream.createFrame(254); - player.outStream.writeByte(i); - - if (i == 1 || i == 10) { - player.outStream.writeWord(j); - player.outStream.writeWord(k); - player.outStream.writeByte(l); - } else { - player.outStream.writeWord(k); - player.outStream.writeWord(l); - player.outStream.writeByte(j); - } - return this; - } - - // object - - public ActionSender createArrow(int x, int y, int height, int pos) { - if (player.getOutStream() == null) return this; - if (player != null) { - player.getOutStream().createFrame(254); // The packet ID - player.getOutStream().writeByte(pos); // Position on Square(2 = - // middle, 3 - // = west, 4 = east, 5 = - // south, - // 6 = north) - player.getOutStream().writeWord(x); // X-Coord of Object - player.getOutStream().writeWord(y); // Y-Coord of Object - player.getOutStream().writeByte(height); // Height off Ground - } - return this; - } - - // npc - - public ActionSender createArrow(int type, int id) { - if (player.getOutStream() == null) return this; - if (player != null) { - player.getOutStream().createFrame(254); // The packet ID - player.getOutStream().writeByte(type); // 1=NPC, 10=Player - player.getOutStream().writeWord(id); // NPC/Player ID - player.getOutStream().write3Byte(0); // Junk - } - return this; - } - - public ActionSender checkObjectSpawn(int objectId, int objectX, int objectY, int face, int objectType) { - if (player.distanceToPoint(objectX, objectY) < 60) { - if (player.getOutStream() != null && player != null) { - player.getOutStream().createFrame(85); - player.getOutStream().writeByteC( - objectY - player.getMapRegionY() * 8); - player.getOutStream().writeByteC( - objectX - player.getMapRegionX() * 8); - player.getOutStream().createFrame(101); - player.getOutStream() - .writeByteC((objectType << 2) + (face & 3)); - player.getOutStream().writeByte(0); - if (objectId != -1) { // removing - player.getOutStream().createFrame(151); - player.getOutStream().writeByteS(0); - player.getOutStream().writeWordBigEndian(objectId); - player.getOutStream().writeByteS( - (objectType << 2) + (face & 3)); - } - player.flushOutStream(); - } - if (objectId > 0) { - Region.addObject(objectId, objectX, objectX, player.heightLevel, objectType, face, false); - } - } - return this; - } - - public ActionSender createObjectSpawn(int objectId, int objectX, int objectY, int height, int face, int objectType) { - if (player.getOutStream() == null) return this; - if (player.heightLevel != height) { - return this; - } - if (player.distanceToPoint(objectX, objectY) < 60) { - if (player != null) { - player.getOutStream().createFrame(85); - player.getOutStream().writeByteC(objectY - player.getMapRegionY() * 8); - player.getOutStream().writeByteC(objectX - player.getMapRegionX() * 8); - player.getOutStream().createFrame(101); - player.getOutStream().writeByteC((objectType << 2) + (face & 3)); - player.getOutStream().writeByte(0); - if (objectId != -1) { // removing - player.getOutStream().createFrame(151); - player.getOutStream().writeByteS(0); - player.getOutStream().writeWordBigEndian(objectId); - player.getOutStream().writeByteS((objectType << 2) + (face & 3)); - } - player.flushOutStream(); - } - } - return this; - } - - /** - * Show option, attack, trade, follow etc - **/ - public String optionType = "null"; - - public ActionSender showOption(int i, int l, String s, int a) { - if (player.getOutStream() == null) return this; - if (player != null) { - if (!optionType.equalsIgnoreCase(s)) { - optionType = s; - player.getOutStream().createFrameVarSize(104); - player.getOutStream().writeByteC(i); - player.getOutStream().writeByteA(l); - player.getOutStream().writeString(s); - player.getOutStream().endFrameVarSize(); - player.flushOutStream(); - } - } - return this; - } - - /** - * sendSong(id); - */ - - public ActionSender sendSong(int id) { - if (player.getOutStream() == null) return this; - if (player != null && id != -1) { - player.getOutStream().createFrame(74); - player.getOutStream().writeWordBigEndian(id); - } - return this; - } - - /** - * sendQuickSong(id, delay); - used for things such as level up music - */ - - public ActionSender sendQuickSong(int id, int songDelay) { - if (player.getOutStream() == null) return this; - if (player != null) { - player.getOutStream().createFrame(121); - player.getOutStream().writeWordBigEndian(id); - player.getOutStream().writeWordBigEndian(songDelay); - player.flushOutStream(); - } - return this; - } - - /** - * sendSound(id, volume, delay); - */ - - public ActionSender sendSound(int id, int type, int delay, int volume) { - if (player.getOutStream() == null) return this; - if (player != null && id != -1) { - player.getOutStream().createFrame(174); - player.getOutStream().writeWord(id); - player.getOutStream().writeByte(type); - player.getOutStream().writeWord(delay); - player.getOutStream().writeWord(volume); - player.flushOutStream(); - } - return this; - } - - /** - * Send Misc Songs - */ - - public ActionSender sendSound(int id, int volume, int delay) { - frame174(id, volume, delay); - return this; - } - - public ActionSender sendClearScreen() { - if (player.getOutStream() == null) return this; - if (player != null) { - player.getOutStream().createFrame(219); - player.flushOutStream(); - } - return this; - } - - public ActionSender createGroundItem(int itemID, int itemX, int itemY, int itemAmount) { - if (player.getOutStream() == null) return this; - player.getOutStream().createFrame(85); - player.getOutStream().writeByteC(itemY - 8 * player.mapRegionY); - player.getOutStream().writeByteC(itemX - 8 * player.mapRegionX); - player.getOutStream().createFrame(44); - player.getOutStream().writeWordBigEndianA(itemID); - player.getOutStream().writeWord(itemAmount); - player.getOutStream().writeByte(0); - player.flushOutStream(); - return this; - } - - public ActionSender createGroundItem(int itemID, int itemX, int itemY, int itemAmount, int height) { - if (player.getOutStream() == null) return this; - if (player.heightLevel != height) { - return this; - } - player.getOutStream().createFrame(85); - player.getOutStream().writeByteC(itemY - 8 * player.mapRegionY); - player.getOutStream().writeByteC(itemX - 8 * player.mapRegionX); - player.getOutStream().createFrame(44); - player.getOutStream().writeWordBigEndianA(itemID); - player.getOutStream().writeWord(itemAmount); - player.getOutStream().writeByte(0); - player.flushOutStream(); - return this; - } - - - /** - * Pickup Item - **/ - - public ActionSender removeGroundItem(int itemID, int itemX, int itemY, int Amount) { - if (player.getOutStream() == null) return this; - if (player == null) { - return this; - } - player.getOutStream().createFrame(85); - player.getOutStream().writeByteC(itemY - 8 * player.mapRegionY); - player.getOutStream().writeByteC(itemX - 8 * player.mapRegionX); - player.getOutStream().createFrame(156); - player.getOutStream().writeByteS(0); - player.getOutStream().writeWord(itemID); - player.flushOutStream(); - return this; - } - -} +package com.rebotted.net; + +import java.text.DecimalFormat; + +import com.rebotted.GameConstants; +import com.rebotted.game.content.skills.SkillHandler; +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerHandler; +import com.rebotted.util.Misc; +import com.rebotted.world.clip.Region; + +public class PacketSender { + + private final Player player; + + public PacketSender(Player player2) { + this.player = player2; + } + + + public PacketSender sendClan(String name, String message, String clan, int rights) { + if (player.getOutStream() == null) + return this; + player.outStream.createFrameVarSizeWord(217); + player.outStream.writeString(name); + player.outStream.writeString(message); + player.outStream.writeString(clan); + player.outStream.writeWord(rights); + player.outStream.endFrameVarSize(); + return this; + } + + public PacketSender createPlayersObjectAnim(int X, int Y, int animationID, int tileObjectType, int orientation) { + if (player.getOutStream() == null) + return this; + try{ + player.getOutStream().createFrame(85); + player.getOutStream().writeByteC(Y - (player.mapRegionY * 8)); + player.getOutStream().writeByteC(X - (player.mapRegionX * 8)); + int x = 0; + int y = 0; + player.getOutStream().createFrame(160); + player.getOutStream().writeByteS(((x&7) << 4) + (y&7));//tiles away - could just send 0 + player.getOutStream().writeByteS((tileObjectType<<2) +(orientation&3)); + player.getOutStream().writeWordA(animationID);// animation id + } catch(Exception e){ + e.printStackTrace(); + } + return this; + } + + + public PacketSender setInterfaceOffset(int x, int y, int id) { + if (player.getOutStream() != null && player != null) { + player.getOutStream().createFrame(70); + player.getOutStream().writeWord(x); + player.getOutStream().writeWordBigEndian(y); + player.getOutStream().writeWordBigEndian(id); + player.flushOutStream(); + } + return this; + } + + public PacketSender shakeScreen(int verticleAmount, int verticleSpeed, + int horizontalAmount, int horizontalSpeed) { + if (player.getOutStream() == null) + return this; + player.getOutStream().createFrame(35); // Creates frame 35. + player.getOutStream().writeByte(verticleAmount); + player.getOutStream().writeByte(verticleSpeed); + player.getOutStream().writeByte(horizontalAmount); + player.getOutStream().writeByte(horizontalSpeed); + return this; + } + + public PacketSender chatbox(int i1) { + if (player.getOutStream() != null && player != null) { + player.outStream.createFrame(218); + player.outStream.writeWordBigEndianA(i1); + player.updateRequired = true; + player.appearanceUpdateRequired = true; + } + return this; + } + + public PacketSender sendMessage(String s) { + if (player.getOutStream() != null) { + player.getOutStream().createFrameVarSize(253); + player.getOutStream().writeString(s); + player.getOutStream().endFrameVarSize(); + } + return this; + } + + /** + * Reseting animations for everyone + **/ + + public PacketSender frame1() { + for (Player player : PlayerHandler.players) { + if (player != null) { + Client person = (Client) player; + if (person != null) { + if (person.getOutStream() != null && !person.disconnected) { + if (player + .distanceToPoint(person.getX(), person.getY()) <= 25) { + person.getOutStream().createFrame(1); + person.flushOutStream(); + person.getPlayerAssistant().requestUpdates(); + } + } + } + } + } + return this; + } + + public PacketSender setInterfaceWalkable(int ID) { + player.outStream.createFrame(208); + player.outStream.writeWordBigEndian_dup(ID); + player.flushOutStream(); + return this; + } + + public PacketSender sendFrame36(int id, int state) { + if(player.getOutStream() != null && player != null) { + player.getOutStream().createFrame(36); + player.getOutStream().writeWordBigEndian(id); + player.getOutStream().writeByte(state); + player.flushOutStream(); + } + return this; + } + + public PacketSender sendFrame20(int id, int state) { + if (player.getOutStream() != null && player != null) { + player.getOutStream().createFrame(36); + player.getOutStream().writeWordBigEndian(id); + player.getOutStream().writeByte(state); + player.flushOutStream(); + } + return this; + } + + public PacketSender sendFrame126(String s, int id) { + if(!player.checkPacket126Update(s, id)) { + return this; + } + if (player.getOutStream() != null && player != null) { + player.getOutStream().createFrameVarSizeWord(126); + player.getOutStream().writeString(s); + player.getOutStream().writeWordA(id); + player.getOutStream().endFrameVarSizeWord(); + player.flushOutStream(); + } + return this; + } + + public PacketSender sendFrame107() { + if (player.getOutStream() != null && player != null) { + player.getOutStream().createFrame(107); + player.flushOutStream(); + } + return this; + } + + public PacketSender sendPlayerDialogueHead(int Frame) { + if (player.getOutStream() != null && player != null) { + player.getOutStream().createFrame(185); + player.getOutStream().writeWordBigEndianA(Frame); + } + return this; + } + + public PacketSender showInterface(int interfaceid) { + if (player.inTrade || player.inDuel) { + return this; + } + if (player.getOutStream() != null && player != null) { + player.getOutStream().createFrame(97); + player.getOutStream().writeWord(interfaceid); + player.flushOutStream(); + } + return this; + } + + public PacketSender sendFrame248(int MainFrame, int SubFrame) { + // synchronized(c) { + if (player.getOutStream() != null && player != null) { + player.getOutStream().createFrame(248); + player.getOutStream().writeWordA(MainFrame); + player.getOutStream().writeWord(SubFrame); + player.flushOutStream(); + } + return this; + } + + public PacketSender sendFrame246(int MainFrame, int SubFrame, int SubFrame2) { + // synchronized(c) { + if (player.getOutStream() != null && player != null) { + player.getOutStream().createFrame(246); + player.getOutStream().writeWordBigEndian(MainFrame); + player.getOutStream().writeWord(SubFrame); + player.getOutStream().writeWord(SubFrame2); + player.flushOutStream(); + } + return this; + } + + public PacketSender sendFrame171(int MainFrame, int SubFrame) { + // synchronized(c) { + if (player.getOutStream() != null && player != null) { + player.getOutStream().createFrame(171); + player.getOutStream().writeByte(MainFrame); + player.getOutStream().writeWord(SubFrame); + player.flushOutStream(); + } + return this; + } + + public PacketSender sendDialogueAnimation(int MainFrame, int SubFrame) { + // synchronized(c) { + if (player.getOutStream() != null && player != null) { + player.getOutStream().createFrame(200); + player.getOutStream().writeWord(MainFrame); + player.getOutStream().writeWord(SubFrame); + player.flushOutStream(); + } + return this; + } + + public int mapStatus = 0; + + public PacketSender sendMapState(int state) { // used for disabling map + if (player.getOutStream() != null && player != null) { + if (mapStatus != state) { + mapStatus = state; + player.getOutStream().createFrame(99); + player.getOutStream().writeByte(state); + player.flushOutStream(); + } + } + return this; + } + + public PacketSender sendFrame106(int sideIcon) { + if (player.getOutStream() != null && player != null) { + player.getOutStream().createFrame(106); + player.getOutStream().writeByteC(sideIcon); + player.flushOutStream(); + player.getPlayerAssistant().requestUpdates(); + } + return this; + } + + public PacketSender sendFrame70(int i, int o, int id) { + if (player.getOutStream() != null && player != null) { + player.getOutStream().createFrame(70); + player.getOutStream().writeWord(i); + player.getOutStream().writeWordBigEndian(o); + player.getOutStream().writeWordBigEndian(id); + player.flushOutStream(); + } + return this; + } + + public PacketSender sendNPCDialogueHead(int MainFrame, int SubFrame) { + if (player.getOutStream() != null && player != null) { + player.getOutStream().createFrame(75); + player.getOutStream().writeWordBigEndianA(MainFrame); + player.getOutStream().writeWordBigEndianA(SubFrame); + player.flushOutStream(); + } + return this; + } + + public PacketSender sendChatInterface(int Frame) { + // synchronized(c) { + if (player.getOutStream() != null && player != null) { + player.getOutStream().createFrame(164); + player.getOutStream().writeWordBigEndian_dup(Frame); + player.flushOutStream(); + } + return this; + } + + public PacketSender setPrivateMessaging(int i) { // friends and ignore list status + // synchronized(c) { + if (player.getOutStream() != null && player != null) { + player.getOutStream().createFrame(221); + player.getOutStream().writeByte(i); + player.flushOutStream(); + } + return this; + } + + public PacketSender setChatOptions(int publicChat, int privateChat, int tradeBlock) { + // synchronized(c) { + if (player.getOutStream() != null && player != null) { + player.getOutStream().createFrame(206); + player.getOutStream().writeByte(publicChat); + player.getOutStream().writeByte(privateChat); + player.getOutStream().writeByte(tradeBlock); + player.flushOutStream(); + } + return this; + } + + public PacketSender sendFrame87(int id, int state) { + // synchronized(c) { + if (player.getOutStream() != null && player != null) { + player.getOutStream().createFrame(87); + player.getOutStream().writeWordBigEndian_dup(id); + player.getOutStream().writeDWord_v1(state); + player.flushOutStream(); + } + return this; + } + + public PacketSender sendPM(long name, int rights, byte[] chatmessage, + int messagesize) { + // synchronized(c) { + if (player.getOutStream() != null && player != null) { + player.getOutStream().createFrameVarSize(196); + player.getOutStream().writeQWord(name); + player.getOutStream().writeDWord(player.lastChatId++); + player.getOutStream().writeByte(rights); + player.getOutStream().writeBytes(chatmessage, messagesize, 0); + player.getOutStream().endFrameVarSize(); + player.flushOutStream(); + Misc.textUnpack(chatmessage, messagesize); + Misc.longToPlayerName(name); + } + return this; + } + + public PacketSender loadPM(long playerName, int world) { + // synchronized(c) { + if (player.getOutStream() != null && player != null) { + if (world != 0) { + world += 9; + } else if (!GameConstants.WORLD_LIST_FIX) { + world += 1; + } + player.getOutStream().createFrame(50); + player.getOutStream().writeQWord(playerName); + player.getOutStream().writeByte(world); + player.flushOutStream(); + } + return this; + } + + public PacketSender closeAllWindows() { + if (player.getOutStream() != null && player != null) { + player.getOutStream().createFrame(219); + player.flushOutStream(); + } + return this; + } + + public PacketSender sendFrame34(int id, int slot, int column, int amount) { + if (player.getOutStream() != null && player != null) { + player.outStream.createFrameVarSizeWord(34); // init item to smith + // screen + player.outStream.writeWord(column); // Column Across Smith Screen + player.outStream.writeByte(4); // Total Rows? + player.outStream.writeDWord(slot); // Row Down The Smith Screen + player.outStream.writeWord(id + 1); // item + player.outStream.writeByte(amount); // how many there are? + player.outStream.endFrameVarSizeWord(); + } + return this; + } + + public PacketSender sendItemOnInterface(int id, int amount, int child) { + player.getOutStream().createFrameVarSizeWord(53); + player.getOutStream().writeWord(child); + player.getOutStream().writeWord(amount); + if (amount > 254){ + player.getOutStream().writeByte(255); + player.getOutStream().writeDWord_v2(amount); + } else { + player.getOutStream().writeByte(amount); + } + player.getOutStream().writeWordBigEndianA(id); + player.getOutStream().endFrameVarSizeWord(); + player.flushOutStream(); + return this; + } + + public PacketSender walkableInterface(int id) { + if (player.getOutStream() != null && player != null) { + player.getOutStream().createFrame(208); + player.getOutStream().writeWordBigEndian_dup(id); + player.flushOutStream(); + } + return this; + } + + + public PacketSender openUpBank() { + if (player.isBanking = false) { + player.getPacketSender().closeAllWindows(); + return this; + } + if (SkillHandler.isSkilling(player)) { + player.getPacketSender().closeAllWindows(); + player.isBanking = false; + return this; + } + if (player.inWild()) { + player.getPacketSender().sendMessage("You can't open up a bank in the wilderness!"); + player.getPacketSender().closeAllWindows(); + return this; + } + + if (!player.inBankArea() && player.playerRights < 3) { + player.getPacketSender().sendMessage("You can't open a bank unless you're in a bank area!"); + player.getPacketSender().sendMessage("If this is a bug, please report it! Your coords are [" + player.absX + "," + player.absY + "]"); + player.getPacketSender().closeAllWindows(); + return this; + } + + if (player.absX == 2813 && player.absY == 3443) { + return this; + } + if (player.requestPinDelete) { + if (player.enterdBankpin) { + player.requestPinDelete = false; + player.getPacketSender().sendMessage("[Notice] Your PIN pending deletion has been cancelled."); + } else if (player.lastLoginDate >= player.pinDeleteDateRequested && player.hasBankpin) { + player.hasBankpin = false; + player.requestPinDelete = false; + player.getPacketSender().sendMessage("[Notice] Your PIN has been deleted. It is recommended " + + "to have one."); + } + } + if (!player.enterdBankpin && player.hasBankpin) { + player.getBankPin().openPin(); + return this; + } + if (player.inTrade || player.tradeStatus == 1) { + Client o = (Client) PlayerHandler.players[player.tradeWith]; + if (o != null) { + o.getTrading().declineTrade(); + } + } + if (player.duelStatus == 1) { + Client o = (Client) PlayerHandler.players[player.duelingWith]; + if (o != null) { + o.getDueling().resetDuel(); + } + } + if (player.getOutStream() != null && player != null) { + player.getItemAssistant().resetItems(5064); + player.getItemAssistant().rearrangeBank(); + player.getItemAssistant().resetBank(); + player.getItemAssistant().resetTempItems(); + player.getOutStream().createFrame(248); + player.getOutStream().writeWordA(5292); + player.getOutStream().writeWord(5063); + player.flushOutStream(); + player.isBanking = true; + } + return this; + } + + /** + ** GFX + **/ + public PacketSender stillGfx(int id, int x, int y, int height, int time) { + // synchronized(c) { + if (player.getOutStream() != null && player != null) { + player.getOutStream().createFrame(85); + player.getOutStream().writeByteC(y - player.getMapRegionY() * 8); + player.getOutStream().writeByteC(x - player.getMapRegionX() * 8); + player.getOutStream().createFrame(4); + player.getOutStream().writeByte(0); + player.getOutStream().writeWord(id); + player.getOutStream().writeByte(height); + player.getOutStream().writeWord(time); + player.flushOutStream(); + } + return this; + } + + + public PacketSender setSidebarInterface(int menuId, int form) { + if (player.getOutStream() != null) { + player.getOutStream().createFrame(71); + player.getOutStream().writeWord(form); + player.getOutStream().writeByteA(menuId); + } + return this; + } + + /** + * Flashes Sidebar Icon + */ + + public PacketSender flashSideBarIcon(int i1) { + // Makes the sidebar Icons flash + // Usage: i1 = 0 through -12 inorder to work + if (player.getOutStream() != null) { + player.outStream.createFrame(24); + player.outStream.writeByteA(i1); + } + player.updateRequired = true; + player.appearanceUpdateRequired = true; + return this; + } + + public PacketSender createPlayerHints(int type, int id) { + if (player.getOutStream() != null && player != null) { + player.getOutStream().createFrame(254); + player.getOutStream().writeByte(type); + player.getOutStream().writeWord(id); + player.getOutStream().write3Byte(0); + player.flushOutStream(); + } + return this; + } + + public PacketSender createObjectHints(int x, int y, int height, int pos) { + // synchronized(c) { + if (player.getOutStream() != null && player != null) { + player.getOutStream().createFrame(254); + player.getOutStream().writeByte(pos); + player.getOutStream().writeWord(x); + player.getOutStream().writeWord(y); + player.getOutStream().writeByte(height); + player.flushOutStream(); + } + return this; + } + + public PacketSender createProjectile(int x, int y, int offX, int offY, + int angle, int speed, int gfxMoving, int startHeight, + int endHeight, int lockon, int time) { + if (player.getOutStream() != null && player != null) { + player.getOutStream().createFrame(85); + player.getOutStream() + .writeByteC(y - player.getMapRegionY() * 8 - 2); + player.getOutStream() + .writeByteC(x - player.getMapRegionX() * 8 - 3); + player.getOutStream().createFrame(117); + player.getOutStream().writeByte(angle); + player.getOutStream().writeByte(offY); + player.getOutStream().writeByte(offX); + player.getOutStream().writeWord(lockon); + player.getOutStream().writeWord(gfxMoving); + player.getOutStream().writeByte(startHeight); + player.getOutStream().writeByte(endHeight); + player.getOutStream().writeWord(time); + player.getOutStream().writeWord(speed); + player.getOutStream().writeByte(16); + player.getOutStream().writeByte(64); + player.flushOutStream(); + } + return this; + } + + public PacketSender createProjectile2(int x, int y, int offX, int offY, + int angle, int speed, int gfxMoving, int startHeight, + int endHeight, int lockon, int time, int slope) { + if (player.getOutStream() != null && player != null) { + player.getOutStream().createFrame(85); + player.getOutStream() + .writeByteC(y - player.getMapRegionY() * 8 - 2); + player.getOutStream() + .writeByteC(x - player.getMapRegionX() * 8 - 3); + player.getOutStream().createFrame(117); + player.getOutStream().writeByte(angle); + player.getOutStream().writeByte(offY); + player.getOutStream().writeByte(offX); + player.getOutStream().writeWord(lockon); + player.getOutStream().writeWord(gfxMoving); + player.getOutStream().writeByte(startHeight); + player.getOutStream().writeByte(endHeight); + player.getOutStream().writeWord(time); + player.getOutStream().writeWord(speed); + player.getOutStream().writeByte(slope); + player.getOutStream().writeByte(64); + player.flushOutStream(); + } + return this; + } + + /** + * Objects, add and remove + **/ + public PacketSender object(int objectId, int objectX, int objectY, int face, int objectType) { + if (player.getOutStream() != null && player != null) { + player.getOutStream().createFrame(85); + player.getOutStream().writeByteC( + objectY - player.getMapRegionY() * 8); + player.getOutStream().writeByteC( + objectX - player.getMapRegionX() * 8); + player.getOutStream().createFrame(101); + player.getOutStream().writeByteC((objectType << 2) + (face & 3)); + player.getOutStream().writeByte(0); + if (objectId != -1) { // removing + player.getOutStream().createFrame(151); + player.getOutStream().writeByteS(0); + player.getOutStream().writeWordBigEndian(objectId); + player.getOutStream() + .writeByteS((objectType << 2) + (face & 3)); + } + player.flushOutStream(); + } + return this; + } + + public PacketSender object(int objectId, int objectX, int objectY, int objectH, int face, int objectType) { + if (player.getOutStream() == null) return this; + if (player.heightLevel != objectH) { + return this; + } + if (Misc.goodDistance(objectX, objectY, player.absX, player.absY, 60)) { + if (player.getOutStream() != null && player != null) { + player.getOutStream().createFrame(85); + player.getOutStream().writeByteC(objectY - player.getMapRegionY() * 8); + player.getOutStream().writeByteC(objectX - player.getMapRegionX() * 8); + player.getOutStream().createFrame(101); + player.getOutStream().writeByteC((objectType << 2) + (face & 3)); + player.getOutStream().writeByte(0); + if (objectId != -1) { // removing + player.getOutStream().createFrame(151); + player.getOutStream().writeByteS(0); + player.getOutStream().writeWordBigEndian(objectId); + player.getOutStream().writeByteS((objectType << 2) + (face & 3)); + } + player.flushOutStream(); + } + } + return this; + } + + public PacketSender tempSong(int songID, int songID2) { + if (player.getOutStream() == null) return this; + player.outStream.createFrame(121); + player.outStream.writeWordBigEndian(songID); + player.outStream.writeWordBigEndian(songID2); + player.flushOutStream(); + return this; + } + + public PacketSender frame174(int sound, int vol, int delay) { + if (player.getOutStream() == null) return this; + player.outStream.createFrame(174); + player.outStream.writeWord(sound); + player.outStream.writeWord(delay); + player.outStream.writeByte(vol); + return this; + } + + public PacketSender writeWeight(int weight) { + if (player.getOutStream() == null) return this; + player.outStream.createFrame(240); + DecimalFormat twoDForm = new DecimalFormat("#.##"); + player.outStream.writeWord(Integer.valueOf(twoDForm.format(weight))); + return this; + } + + public PacketSender sendConfig(int id, int state) { + if (player.getOutStream() == null) return this; + if (player != null) { + if (state < Byte.MIN_VALUE || state > Byte.MAX_VALUE) { + player.getOutStream().createFrame(87); + player.getOutStream().writeWordBigEndian_dup(id); + player.getOutStream().writeDWord_v1(state); + player.flushOutStream(); + } else { + player.getOutStream().createFrame(36); + player.getOutStream().writeWordBigEndian(id); + player.getOutStream().writeByte(state); + player.flushOutStream(); + } + } + return this; + } + + public PacketSender multiWay(int i1) { + if (player.getOutStream() != null) { + player.outStream.createFrame(61); + player.outStream.writeByte(i1); + } + player.updateRequired = true; + player.setAppearanceUpdateRequired(true); + return this; + } + + public PacketSender sendColor(int id, int color) { + if (player.getOutStream() == null) return this; + if (player != null) { + player.outStream.createFrame(122); + player.outStream.writeWordBigEndianA(id); + player.outStream.writeWordBigEndianA(color); + } + return this; + } + + public PacketSender sendCrashFrame() { + if (player.getOutStream() == null) return this; + if (player != null) { + player.getOutStream().createFrame(123); + player.flushOutStream(); + } + return this; + } + + public PacketSender createStillGfx(int id, int x, int y, int height, int time) { + for (Player p : PlayerHandler.players) { + if (p != null) { + Client person = (Client) p; + if (person != null) { + if (person.getOutStream() != null) { + if (person.distanceToPoint(x, y) <= 25) { + person.getPacketSender().stillGfx(id, x, y, + height, time); + } + } + } + } + } + return this; + } + + public PacketSender object(int objectId, int objectX, int objectY, int objectType) { + if (player.getOutStream() == null) return this; + if (player != null) { + player.getOutStream().createFrame(85); + player.getOutStream().writeByteC( + objectY - player.getMapRegionY() * 8); + player.getOutStream().writeByteC( + objectX - player.getMapRegionX() * 8); + player.getOutStream().createFrame(101); + player.getOutStream().writeByteC((objectType << 2) + (0 & 3)); + player.getOutStream().writeByte(0); + if (objectId != -1) { // removing + player.getOutStream().createFrame(151); + player.getOutStream().writeByteS(0); + player.getOutStream().writeWordBigEndian(objectId); + player.getOutStream().writeByteS((objectType << 2) + (0 & 3)); + } + player.flushOutStream(); + } + return this; + } + + public PacketSender itemOnInterface(int interfaceChild, int zoom, int itemId) { + if (player.getOutStream() == null) return this; + if (player != null) { + player.getOutStream().createFrame(246); + player.getOutStream().writeWordBigEndian(interfaceChild); + player.getOutStream().writeWord(zoom); + player.getOutStream().writeWord(itemId); + player.flushOutStream(); + } + return this; + } + + public PacketSender setConfig(int id, int state) { + if (player.getOutStream() == null) return this; + player.outStream.createFrame(36); + player.outStream.writeWordBigEndian(id); + player.outStream.writeByte(state); + return this; + } + + public PacketSender sendLink(String s) { + if (player.getOutStream() == null) return this; + if (player != null) { + player.getOutStream().createFrameVarSizeWord(187); + player.getOutStream().writeString(s); + } + return this; + } + + public PacketSender setSkillLevel(int skillNum, int currentLevel, int XP) { + if (player.getOutStream() == null) return this; + if (player != null) { + player.getOutStream().createFrame(134); + player.getOutStream().writeByte(skillNum); + player.getOutStream().writeDWord_v1(XP); + player.getOutStream().writeByte(currentLevel); + player.flushOutStream(); + } + return this; + } + + /** + * Show an arrow icon on the selected player. + * + * @Param i - Either 0 or 1; 1 is arrow, 0 is none. + * @Param j - The player/Npc that the arrow will be displayed above. + * @Param k - Keep this set as 0 + * @Param l - Keep this set as 0 + */ + public PacketSender drawHeadicon(int i, int j, int k, int l) { + if (player.getOutStream() == null) return this; + + // synchronized(c) { + player.outStream.createFrame(254); + player.outStream.writeByte(i); + + if (i == 1 || i == 10) { + player.outStream.writeWord(j); + player.outStream.writeWord(k); + player.outStream.writeByte(l); + } else { + player.outStream.writeWord(k); + player.outStream.writeWord(l); + player.outStream.writeByte(j); + } + return this; + } + + // object + + public PacketSender createArrow(int x, int y, int height, int pos) { + if (player.getOutStream() == null) return this; + if (player != null) { + player.getOutStream().createFrame(254); // The packet ID + player.getOutStream().writeByte(pos); // Position on Square(2 = + // middle, 3 + // = west, 4 = east, 5 = + // south, + // 6 = north) + player.getOutStream().writeWord(x); // X-Coord of Object + player.getOutStream().writeWord(y); // Y-Coord of Object + player.getOutStream().writeByte(height); // Height off Ground + } + return this; + } + + // npc + + public PacketSender createArrow(int type, int id) { + if (player.getOutStream() == null) return this; + if (player != null) { + player.getOutStream().createFrame(254); // The packet ID + player.getOutStream().writeByte(type); // 1=NPC, 10=Player + player.getOutStream().writeWord(id); // NPC/Player ID + player.getOutStream().write3Byte(0); // Junk + } + return this; + } + + public PacketSender checkObjectSpawn(int objectId, int objectX, int objectY, int face, int objectType) { + if (player.distanceToPoint(objectX, objectY) < 60) { + if (player.getOutStream() != null && player != null) { + player.getOutStream().createFrame(85); + player.getOutStream().writeByteC( + objectY - player.getMapRegionY() * 8); + player.getOutStream().writeByteC( + objectX - player.getMapRegionX() * 8); + player.getOutStream().createFrame(101); + player.getOutStream() + .writeByteC((objectType << 2) + (face & 3)); + player.getOutStream().writeByte(0); + if (objectId != -1) { // removing + player.getOutStream().createFrame(151); + player.getOutStream().writeByteS(0); + player.getOutStream().writeWordBigEndian(objectId); + player.getOutStream().writeByteS( + (objectType << 2) + (face & 3)); + } + player.flushOutStream(); + } + if (objectId > 0) { + Region.addObject(objectId, objectX, objectX, player.heightLevel, objectType, face, false); + } + } + return this; + } + + public PacketSender createObjectSpawn(int objectId, int objectX, int objectY, int height, int face, int objectType) { + if (player.getOutStream() == null) return this; + if (player.heightLevel != height) { + return this; + } + if (player.distanceToPoint(objectX, objectY) < 60) { + if (player != null) { + player.getOutStream().createFrame(85); + player.getOutStream().writeByteC(objectY - player.getMapRegionY() * 8); + player.getOutStream().writeByteC(objectX - player.getMapRegionX() * 8); + player.getOutStream().createFrame(101); + player.getOutStream().writeByteC((objectType << 2) + (face & 3)); + player.getOutStream().writeByte(0); + if (objectId != -1) { // removing + player.getOutStream().createFrame(151); + player.getOutStream().writeByteS(0); + player.getOutStream().writeWordBigEndian(objectId); + player.getOutStream().writeByteS((objectType << 2) + (face & 3)); + } + player.flushOutStream(); + } + } + return this; + } + + /** + * Show option, attack, trade, follow etc + **/ + public String optionType = "null"; + + public PacketSender showOption(int i, int l, String s, int a) { + if (player.getOutStream() == null) return this; + if (player != null) { + if (!optionType.equalsIgnoreCase(s)) { + optionType = s; + player.getOutStream().createFrameVarSize(104); + player.getOutStream().writeByteC(i); + player.getOutStream().writeByteA(l); + player.getOutStream().writeString(s); + player.getOutStream().endFrameVarSize(); + player.flushOutStream(); + } + } + return this; + } + + /** + * sendSong(id); + */ + + public PacketSender sendSong(int id) { + if (player.getOutStream() == null) return this; + if (player != null && id != -1) { + player.getOutStream().createFrame(74); + player.getOutStream().writeWordBigEndian(id); + } + return this; + } + + /** + * sendQuickSong(id, delay); - used for things such as level up music + */ + + public PacketSender sendQuickSong(int id, int songDelay) { + if (player.getOutStream() == null) return this; + if (player != null) { + player.getOutStream().createFrame(121); + player.getOutStream().writeWordBigEndian(id); + player.getOutStream().writeWordBigEndian(songDelay); + player.flushOutStream(); + } + return this; + } + + /** + * sendSound(id, volume, delay); + */ + + public PacketSender sendSound(int id, int type, int delay, int volume) { + if (player.getOutStream() == null) return this; + if (player != null && id != -1) { + player.getOutStream().createFrame(174); + player.getOutStream().writeWord(id); + player.getOutStream().writeByte(type); + player.getOutStream().writeWord(delay); + player.getOutStream().writeWord(volume); + player.flushOutStream(); + } + return this; + } + + /** + * Send Misc Songs + */ + + public PacketSender sendSound(int id, int volume, int delay) { + frame174(id, volume, delay); + return this; + } + + public PacketSender sendClearScreen() { + if (player.getOutStream() == null) return this; + if (player != null) { + player.getOutStream().createFrame(219); + player.flushOutStream(); + } + return this; + } + + public PacketSender createGroundItem(int itemID, int itemX, int itemY, int itemAmount) { + if (player.getOutStream() == null) return this; + player.getOutStream().createFrame(85); + player.getOutStream().writeByteC(itemY - 8 * player.mapRegionY); + player.getOutStream().writeByteC(itemX - 8 * player.mapRegionX); + player.getOutStream().createFrame(44); + player.getOutStream().writeWordBigEndianA(itemID); + player.getOutStream().writeWord(itemAmount); + player.getOutStream().writeByte(0); + player.flushOutStream(); + return this; + } + + public PacketSender createGroundItem(int itemID, int itemX, int itemY, int itemAmount, int height) { + if (player.getOutStream() == null) return this; + if (player.heightLevel != height) { + return this; + } + player.getOutStream().createFrame(85); + player.getOutStream().writeByteC(itemY - 8 * player.mapRegionY); + player.getOutStream().writeByteC(itemX - 8 * player.mapRegionX); + player.getOutStream().createFrame(44); + player.getOutStream().writeWordBigEndianA(itemID); + player.getOutStream().writeWord(itemAmount); + player.getOutStream().writeByte(0); + player.flushOutStream(); + return this; + } + + + /** + * Pickup Item + **/ + + public PacketSender removeGroundItem(int itemID, int itemX, int itemY, int Amount) { + if (player.getOutStream() == null) return this; + if (player == null) { + return this; + } + player.getOutStream().createFrame(85); + player.getOutStream().writeByteC(itemY - 8 * player.mapRegionY); + player.getOutStream().writeByteC(itemX - 8 * player.mapRegionX); + player.getOutStream().createFrame(156); + player.getOutStream().writeByteS(0); + player.getOutStream().writeWord(itemID); + player.flushOutStream(); + return this; + } + +} diff --git a/2006Redone Server/src/redone/net/RS2LoginProtocolDecoder.java b/2006Redone Server/src/com/rebotted/net/RS2LoginProtocolDecoder.java similarity index 92% rename from 2006Redone Server/src/redone/net/RS2LoginProtocolDecoder.java rename to 2006Redone Server/src/com/rebotted/net/RS2LoginProtocolDecoder.java index ea83eaeb..ff93b882 100644 --- a/2006Redone Server/src/redone/net/RS2LoginProtocolDecoder.java +++ b/2006Redone Server/src/com/rebotted/net/RS2LoginProtocolDecoder.java @@ -1,301 +1,301 @@ -package redone.net; - -import java.math.BigInteger; -import java.net.InetSocketAddress; - -import org.apache.mina.common.ByteBuffer; -import org.apache.mina.common.IoFuture; -import org.apache.mina.common.IoFutureListener; -import org.apache.mina.common.IoSession; -import org.apache.mina.filter.codec.CumulativeProtocolDecoder; -import org.apache.mina.filter.codec.ProtocolCodecFilter; -import org.apache.mina.filter.codec.ProtocolDecoderOutput; - -import redone.Connection; -import redone.Constants; -import redone.Server; -import redone.game.players.Client; -import redone.game.players.PlayerHandler; -import redone.game.players.PlayerSave; -import redone.util.HostBlacklist; -import redone.util.ISAACRandomGen; - -/** - * Login protocol decoder. - * - * @author Graham - * @author Ryan / Lmctruck30 <- login Protocol fixes - */ - -public class RS2LoginProtocolDecoder extends CumulativeProtocolDecoder { - - private static final BigInteger RSA_MODULUS = new BigInteger("91553247461173033466542043374346300088148707506479543786501537350363031301992107112953015516557748875487935404852620239974482067336878286174236183516364787082711186740254168914127361643305190640280157664988536979163450791820893999053469529344247707567448479470137716627440246788713008490213212272520901741443"); - private static final BigInteger RSA_EXPONENT = new BigInteger("33280025241734061313051117678670856264399753710527826596057587687835856000539511539311834363046145710983857746766009612538140077973762171163294453513440619295457626227183742315140865830778841533445402605660729039310637444146319289077374748018792349647460850308384280105990607337322160553135806205784213241305"); - - - /** - * Parses the data in the provided byte buffer and writes it to - * out as a Packet. - * - * @param session - * The IoSession the data was read from - * @param in - * The buffer - * @param out - * The decoder output stream to which to write the - * Packet - * @return Whether enough data was available to create a packet - */ - @Override - public boolean doDecode(IoSession session, ByteBuffer in, - ProtocolDecoderOutput out) { - synchronized (session) { - Object loginStageObj = session.getAttribute("LOGIN_STAGE"); - int loginStage = 0; - if (loginStageObj != null) { - loginStage = (Integer) loginStageObj; - } - // Logger.log("recv login packet, stage: "+loginStage); - switch (loginStage) { - case 0: - if (2 <= in.remaining()) { - int protocol = in.get() & 0xff; - @SuppressWarnings("unused") - int nameHash = in.get() & 0xff; - if (protocol == 14) { - long serverSessionKey = ((long) (java.lang.Math - .random() * 99999999D) << 32) - + (long) (java.lang.Math.random() * 99999999D); - StaticPacketBuilder s1Response = new StaticPacketBuilder(); - s1Response - .setBare(true) - .addBytes(new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 }) - .addByte((byte) 0).addLong(serverSessionKey); - session.setAttribute("SERVER_SESSION_KEY", - serverSessionKey); - session.write(s1Response.toPacket()); - session.setAttribute("LOGIN_STAGE", 1); - } - return true; - } else { - in.rewind(); - return false; - } - case 1: - @SuppressWarnings("unused") - int loginType = -1, - loginPacketSize = -1, - loginEncryptPacketSize = -1; - if (2 <= in.remaining()) { - loginType = in.get() & 0xff; // should be 16 or 18 - loginPacketSize = in.get() & 0xff; - loginEncryptPacketSize = loginPacketSize - (36 + 1 + 1 + 2); - if (loginPacketSize <= 0 || loginEncryptPacketSize <= 0) { - System.out.println("Zero or negative login size."); - session.close(); - return false; - } - } else { - in.rewind(); - return false; - } - if (loginPacketSize <= in.remaining()) { - int magic = in.get() & 0xff; - int version = in.getUnsignedShort(); - if (magic != 255) { - // System.out.println("Wrong magic id."); - session.close(); - return false; - } - if (version != 1) { - // Dont Add Anything - } - @SuppressWarnings("unused") - int lowMem = in.get() & 0xff; - for (int i = 0; i < 9; i++) { - in.getInt(); - } - loginEncryptPacketSize--; - if(loginEncryptPacketSize != (in.get() & 0xff)) { - System.out.println("Encrypted size mismatch."); - session.close(); - return false; - } - byte[] encryptionBytes = new byte[loginEncryptPacketSize]; - in.get(encryptionBytes); - ByteBuffer rsaBuffer = ByteBuffer.wrap(new BigInteger(encryptionBytes).modPow(RSA_EXPONENT, RSA_MODULUS).toByteArray()); - if((rsaBuffer.get() & 0xff) != 10) { - System.out.println("Encrypted id != 10."); - session.close(); - return false; - } - long clientSessionKey = rsaBuffer.getLong(); - long serverSessionKey = rsaBuffer.getLong(); - int uid = rsaBuffer.getInt(); - if(uid != 314268572) { - session.close(); - return false; - } - String name = readRS2String(rsaBuffer); - String pass = readRS2String(rsaBuffer); - int sessionKey[] = new int[4]; - sessionKey[0] = (int) (clientSessionKey >> 32); - sessionKey[1] = (int) clientSessionKey; - sessionKey[2] = (int) (serverSessionKey >> 32); - sessionKey[3] = (int) serverSessionKey; - ISAACRandomGen inC = new ISAACRandomGen(sessionKey); - for (int i = 0; i < 4; i++) - sessionKey[i] += 50; - ISAACRandomGen outC = new ISAACRandomGen(sessionKey); - load(session, uid, name, pass, inC, outC, version); - session.getFilterChain().remove("protocolFilter"); - session.getFilterChain().addLast("protocolFilter", new ProtocolCodecFilter(new GameCodecFactory(inC))); - return true; - } else { - in.rewind(); - return false; - } - } - } - return false; - } - - - private synchronized void load(final IoSession session, final int uid, - String name, String pass, final ISAACRandomGen inC, - ISAACRandomGen outC, int version) { - session.setAttribute("opcode", -1); - session.setAttribute("size", -1); - int returnCode = 2; - - name = name.trim(); - name = name.toLowerCase(); - // pass = pass.toLowerCase(); - - String hostName = ((InetSocketAddress) session.getRemoteAddress()) - .getAddress().getHostName(); - - //if (version != 1) { - //returnCode = 31; - //d} - - if (HostBlacklist.isBlocked(hostName)) { - returnCode = 11; - } - - if (!name.matches("[A-Za-z0-9 ]+")) { - returnCode = 4; - } - - if (name.length() > 12) { - returnCode = 8; - } - - Client cl = new Client(session, -1); - cl.playerName = name; - cl.playerName2 = cl.playerName; - cl.playerPass = pass; - - cl.setInStreamDecryption(inC); - cl.setOutStreamDecryption(outC); - cl.outStream.packetEncryption = outC; - cl.saveCharacter = false; - char first = name.charAt(0); - cl.properName = Character.toUpperCase(first) - + name.substring(1, name.length()); - - if (Connection.isNamedBanned(cl.playerName)) { - returnCode = 4; - } - - - if (PlayerHandler.isPlayerOn(name)) { - returnCode = 5; - } - - if (PlayerHandler.playerCount >= Constants.MAX_PLAYERS) { - returnCode = 7; - } - - if (Server.UpdateServer) { - returnCode = 14; - } - - if (returnCode == 2) { - int load = PlayerSave.loadGame(cl, cl.playerName, cl.playerPass); - if (load == 0) { - cl.addStarter = true; - } - if (load == 3) { - returnCode = 3; - cl.saveFile = false; - } else { - for (int i = 0; i < cl.playerEquipment.length; i++) { - if (cl.playerEquipment[i] == 0) { - cl.playerEquipment[i] = -1; - cl.playerEquipmentN[i] = 0; - } - } - if (!Server.playerHandler.newPlayerClient(cl)) { - returnCode = 7; - cl.saveFile = false; - } else { - cl.saveFile = true; - } - } - } - - cl.packetType = -1; - cl.packetSize = 0; - - StaticPacketBuilder bldr = new StaticPacketBuilder(); - bldr.setBare(true); - bldr.addByte((byte) returnCode); - if (returnCode == 2) { - cl.saveCharacter = true; - if (cl.playerRights == 3) { - bldr.addByte((byte) 2); - } else { - bldr.addByte((byte) cl.playerRights); - } - } else { - bldr.addByte((byte) 0); - } - bldr.addByte((byte) 0); - cl.isActive = true; - Packet pkt = bldr.toPacket(); - session.setAttachment(cl); - session.write(pkt).addListener(new IoFutureListener() { - - @Override - public void operationComplete(IoFuture arg0) { - session.getFilterChain().remove("protocolFilter"); - session.getFilterChain().addFirst("protocolFilter", - new ProtocolCodecFilter(new GameCodecFactory(inC))); - } - }); - } - - private synchronized String readRS2String(ByteBuffer in) { - StringBuilder sb = new StringBuilder(); - byte b; - while ((b = in.get()) != 10) { - sb.append((char) b); - } - return sb.toString(); - } - - /** - * Releases the buffer used by the given session. - * - * @param session - * The session for which to release the buffer - * @throws Exception - * if failed to dispose all resources - */ - @Override - public void dispose(IoSession session) throws Exception { - super.dispose(session); - } - -} +package com.rebotted.net; + +import java.math.BigInteger; +import java.net.InetSocketAddress; + +import org.apache.mina.common.ByteBuffer; +import org.apache.mina.common.IoFuture; +import org.apache.mina.common.IoFutureListener; +import org.apache.mina.common.IoSession; +import org.apache.mina.filter.codec.CumulativeProtocolDecoder; +import org.apache.mina.filter.codec.ProtocolCodecFilter; +import org.apache.mina.filter.codec.ProtocolDecoderOutput; + +import com.rebotted.Connection; +import com.rebotted.GameConstants; +import com.rebotted.GameEngine; +import com.rebotted.game.players.Client; +import com.rebotted.game.players.PlayerHandler; +import com.rebotted.game.players.PlayerSave; +import com.rebotted.util.HostBlacklist; +import com.rebotted.util.ISAACRandomGen; + +/** + * Login protocol decoder. + * + * @author Graham + * @author Ryan / Lmctruck30 <- login Protocol fixes + */ + +public class RS2LoginProtocolDecoder extends CumulativeProtocolDecoder { + + private static final BigInteger RSA_MODULUS = new BigInteger("91553247461173033466542043374346300088148707506479543786501537350363031301992107112953015516557748875487935404852620239974482067336878286174236183516364787082711186740254168914127361643305190640280157664988536979163450791820893999053469529344247707567448479470137716627440246788713008490213212272520901741443"); + private static final BigInteger RSA_EXPONENT = new BigInteger("33280025241734061313051117678670856264399753710527826596057587687835856000539511539311834363046145710983857746766009612538140077973762171163294453513440619295457626227183742315140865830778841533445402605660729039310637444146319289077374748018792349647460850308384280105990607337322160553135806205784213241305"); + + + /** + * Parses the data in the provided byte buffer and writes it to + * out as a Packet. + * + * @param session + * The IoSession the data was read from + * @param in + * The buffer + * @param out + * The decoder output stream to which to write the + * Packet + * @return Whether enough data was available to create a packet + */ + @Override + public boolean doDecode(IoSession session, ByteBuffer in, + ProtocolDecoderOutput out) { + synchronized (session) { + Object loginStageObj = session.getAttribute("LOGIN_STAGE"); + int loginStage = 0; + if (loginStageObj != null) { + loginStage = (Integer) loginStageObj; + } + // Logger.log("recv login packet, stage: "+loginStage); + switch (loginStage) { + case 0: + if (2 <= in.remaining()) { + int protocol = in.get() & 0xff; + @SuppressWarnings("unused") + int nameHash = in.get() & 0xff; + if (protocol == 14) { + long serverSessionKey = ((long) (java.lang.Math + .random() * 99999999D) << 32) + + (long) (java.lang.Math.random() * 99999999D); + StaticPacketBuilder s1Response = new StaticPacketBuilder(); + s1Response + .setBare(true) + .addBytes(new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 }) + .addByte((byte) 0).addLong(serverSessionKey); + session.setAttribute("SERVER_SESSION_KEY", + serverSessionKey); + session.write(s1Response.toPacket()); + session.setAttribute("LOGIN_STAGE", 1); + } + return true; + } else { + in.rewind(); + return false; + } + case 1: + @SuppressWarnings("unused") + int loginType = -1, + loginPacketSize = -1, + loginEncryptPacketSize = -1; + if (2 <= in.remaining()) { + loginType = in.get() & 0xff; // should be 16 or 18 + loginPacketSize = in.get() & 0xff; + loginEncryptPacketSize = loginPacketSize - (36 + 1 + 1 + 2); + if (loginPacketSize <= 0 || loginEncryptPacketSize <= 0) { + System.out.println("Zero or negative login size."); + session.close(); + return false; + } + } else { + in.rewind(); + return false; + } + if (loginPacketSize <= in.remaining()) { + int magic = in.get() & 0xff; + int version = in.getUnsignedShort(); + if (magic != 255) { + // System.out.println("Wrong magic id."); + session.close(); + return false; + } + if (version != 1) { + // Dont Add Anything + } + @SuppressWarnings("unused") + int lowMem = in.get() & 0xff; + for (int i = 0; i < 9; i++) { + in.getInt(); + } + loginEncryptPacketSize--; + if(loginEncryptPacketSize != (in.get() & 0xff)) { + System.out.println("Encrypted size mismatch."); + session.close(); + return false; + } + byte[] encryptionBytes = new byte[loginEncryptPacketSize]; + in.get(encryptionBytes); + ByteBuffer rsaBuffer = ByteBuffer.wrap(new BigInteger(encryptionBytes).modPow(RSA_EXPONENT, RSA_MODULUS).toByteArray()); + if((rsaBuffer.get() & 0xff) != 10) { + System.out.println("Encrypted id != 10."); + session.close(); + return false; + } + long clientSessionKey = rsaBuffer.getLong(); + long serverSessionKey = rsaBuffer.getLong(); + int uid = rsaBuffer.getInt(); + if(uid != 314268572) { + session.close(); + return false; + } + String name = readRS2String(rsaBuffer); + String pass = readRS2String(rsaBuffer); + int sessionKey[] = new int[4]; + sessionKey[0] = (int) (clientSessionKey >> 32); + sessionKey[1] = (int) clientSessionKey; + sessionKey[2] = (int) (serverSessionKey >> 32); + sessionKey[3] = (int) serverSessionKey; + ISAACRandomGen inC = new ISAACRandomGen(sessionKey); + for (int i = 0; i < 4; i++) + sessionKey[i] += 50; + ISAACRandomGen outC = new ISAACRandomGen(sessionKey); + load(session, uid, name, pass, inC, outC, version); + session.getFilterChain().remove("protocolFilter"); + session.getFilterChain().addLast("protocolFilter", new ProtocolCodecFilter(new GameCodecFactory(inC))); + return true; + } else { + in.rewind(); + return false; + } + } + } + return false; + } + + + private synchronized void load(final IoSession session, final int uid, + String name, String pass, final ISAACRandomGen inC, + ISAACRandomGen outC, int version) { + session.setAttribute("opcode", -1); + session.setAttribute("size", -1); + int returnCode = 2; + + name = name.trim(); + name = name.toLowerCase(); + // pass = pass.toLowerCase(); + + String hostName = ((InetSocketAddress) session.getRemoteAddress()) + .getAddress().getHostName(); + + //if (version != 1) { + //returnCode = 31; + //d} + + if (HostBlacklist.isBlocked(hostName)) { + returnCode = 11; + } + + if (!name.matches("[A-Za-z0-9 ]+")) { + returnCode = 4; + } + + if (name.length() > 12) { + returnCode = 8; + } + + Client cl = new Client(session, -1); + cl.playerName = name; + cl.playerName2 = cl.playerName; + cl.playerPass = pass; + + cl.setInStreamDecryption(inC); + cl.setOutStreamDecryption(outC); + cl.outStream.packetEncryption = outC; + cl.saveCharacter = false; + char first = name.charAt(0); + cl.properName = Character.toUpperCase(first) + + name.substring(1, name.length()); + + if (Connection.isNamedBanned(cl.playerName)) { + returnCode = 4; + } + + + if (PlayerHandler.isPlayerOn(name)) { + returnCode = 5; + } + + if (PlayerHandler.playerCount >= GameConstants.MAX_PLAYERS) { + returnCode = 7; + } + + if (GameEngine.UpdateServer) { + returnCode = 14; + } + + if (returnCode == 2) { + int load = PlayerSave.loadGame(cl, cl.playerName, cl.playerPass); + if (load == 0) { + cl.addStarter = true; + } + if (load == 3) { + returnCode = 3; + cl.saveFile = false; + } else { + for (int i = 0; i < cl.playerEquipment.length; i++) { + if (cl.playerEquipment[i] == 0) { + cl.playerEquipment[i] = -1; + cl.playerEquipmentN[i] = 0; + } + } + if (!GameEngine.playerHandler.newPlayerClient(cl)) { + returnCode = 7; + cl.saveFile = false; + } else { + cl.saveFile = true; + } + } + } + + cl.packetType = -1; + cl.packetSize = 0; + + StaticPacketBuilder bldr = new StaticPacketBuilder(); + bldr.setBare(true); + bldr.addByte((byte) returnCode); + if (returnCode == 2) { + cl.saveCharacter = true; + if (cl.playerRights == 3) { + bldr.addByte((byte) 2); + } else { + bldr.addByte((byte) cl.playerRights); + } + } else { + bldr.addByte((byte) 0); + } + bldr.addByte((byte) 0); + cl.isActive = true; + Packet pkt = bldr.toPacket(); + session.setAttachment(cl); + session.write(pkt).addListener(new IoFutureListener() { + + @Override + public void operationComplete(IoFuture arg0) { + session.getFilterChain().remove("protocolFilter"); + session.getFilterChain().addFirst("protocolFilter", + new ProtocolCodecFilter(new GameCodecFactory(inC))); + } + }); + } + + private synchronized String readRS2String(ByteBuffer in) { + StringBuilder sb = new StringBuilder(); + byte b; + while ((b = in.get()) != 10) { + sb.append((char) b); + } + return sb.toString(); + } + + /** + * Releases the buffer used by the given session. + * + * @param session + * The session for which to release the buffer + * @throws Exception + * if failed to dispose all resources + */ + @Override + public void dispose(IoSession session) throws Exception { + super.dispose(session); + } + +} diff --git a/2006Redone Server/src/redone/net/RS2ProtocolDecoder.java b/2006Redone Server/src/com/rebotted/net/RS2ProtocolDecoder.java similarity index 92% rename from 2006Redone Server/src/redone/net/RS2ProtocolDecoder.java rename to 2006Redone Server/src/com/rebotted/net/RS2ProtocolDecoder.java index 4ab759f7..fddd751e 100644 --- a/2006Redone Server/src/redone/net/RS2ProtocolDecoder.java +++ b/2006Redone Server/src/com/rebotted/net/RS2ProtocolDecoder.java @@ -1,145 +1,145 @@ -package redone.net; - -import org.apache.mina.common.ByteBuffer; -import org.apache.mina.common.IoSession; -import org.apache.mina.filter.codec.CumulativeProtocolDecoder; -import org.apache.mina.filter.codec.ProtocolDecoderOutput; - -import redone.game.players.Client; -import redone.util.ISAACRandomGen; - -public class RS2ProtocolDecoder extends CumulativeProtocolDecoder { - - private final ISAACRandomGen isaac; - - /** - * To make sure only the CodecFactory can initialise us. - */ - protected RS2ProtocolDecoder(ISAACRandomGen isaac) { - this.isaac = isaac; - } - - /** - * Decodes a message. - * - * @param session - * @param in - * @param out - * @return - */ - @Override - protected boolean doDecode(IoSession session, ByteBuffer in, - ProtocolDecoderOutput out) throws Exception { - synchronized (session) { - /* - * Fetch the ISAAC cipher for this session. - */ - // ISAACRandomGen inCipher = ((Player) - // session.getAttribute("player")).getInStreamDecryption(); - - /* - * Fetch any cached opcodes and sizes, reset to -1 if not present. - */ - int opcode = (Integer) session.getAttribute("opcode"); - int size = (Integer) session.getAttribute("size"); - - /* - * If the opcode is not present. - */ - if (opcode == -1) { - /* - * Check if it can be read. - */ - if (in.remaining() >= 1) { - /* - * Read and decrypt the opcode. - */ - opcode = in.get() & 0xFF; - opcode = opcode - isaac.getNextKey() & 0xFF; - - /* - * Find the packet size. - */ - size = Client.PACKET_SIZES[opcode]; - - /* - * Set the cached opcode and size. - */ - session.setAttribute("opcode", opcode); - session.setAttribute("size", size); - } else { - /* - * We need to wait for more data. - */ - return false; - } - } - - /* - * If the packet is variable-length. - */ - if (size == -1) { - /* - * Check if the size can be read. - */ - if (in.remaining() >= 1) { - /* - * Read the packet size and cache it. - */ - size = in.get() & 0xFF; - session.setAttribute("size", size); - } else { - /* - * We need to wait for more data. - */ - return false; - } - } - - /* - * If the packet payload (data) can be read. - */ - if (in.remaining() >= size) { - /* - * Read it. - */ - byte[] data = new byte[size]; - in.get(data); - ByteBuffer payload = ByteBuffer.allocate(data.length); - payload.put(data); - payload.flip(); - - /* - * Produce and write the packet object. - */ - out.write(new Packet(session, opcode, data)); - - /* - * Reset the cached opcode and sizes. - */ - session.setAttribute("opcode", -1); - session.setAttribute("size", -1); - - /* - * Indicate we are ready to read another packet. - */ - return true; - } - - /* - * We need to wait for more data. - */ - return false; - } - } - - @Override - /** - * Releases resources used by this decoder. - * @param session - */ - public void dispose(IoSession session) throws Exception { - super.dispose(session); - } - -} +package com.rebotted.net; + +import org.apache.mina.common.ByteBuffer; +import org.apache.mina.common.IoSession; +import org.apache.mina.filter.codec.CumulativeProtocolDecoder; +import org.apache.mina.filter.codec.ProtocolDecoderOutput; + +import com.rebotted.game.players.Client; +import com.rebotted.util.ISAACRandomGen; + +public class RS2ProtocolDecoder extends CumulativeProtocolDecoder { + + private final ISAACRandomGen isaac; + + /** + * To make sure only the CodecFactory can initialise us. + */ + protected RS2ProtocolDecoder(ISAACRandomGen isaac) { + this.isaac = isaac; + } + + /** + * Decodes a message. + * + * @param session + * @param in + * @param out + * @return + */ + @Override + protected boolean doDecode(IoSession session, ByteBuffer in, + ProtocolDecoderOutput out) throws Exception { + synchronized (session) { + /* + * Fetch the ISAAC cipher for this session. + */ + // ISAACRandomGen inCipher = ((Player) + // session.getAttribute("player")).getInStreamDecryption(); + + /* + * Fetch any cached opcodes and sizes, reset to -1 if not present. + */ + int opcode = (Integer) session.getAttribute("opcode"); + int size = (Integer) session.getAttribute("size"); + + /* + * If the opcode is not present. + */ + if (opcode == -1) { + /* + * Check if it can be read. + */ + if (in.remaining() >= 1) { + /* + * Read and decrypt the opcode. + */ + opcode = in.get() & 0xFF; + opcode = opcode - isaac.getNextKey() & 0xFF; + + /* + * Find the packet size. + */ + size = Client.PACKET_SIZES[opcode]; + + /* + * Set the cached opcode and size. + */ + session.setAttribute("opcode", opcode); + session.setAttribute("size", size); + } else { + /* + * We need to wait for more data. + */ + return false; + } + } + + /* + * If the packet is variable-length. + */ + if (size == -1) { + /* + * Check if the size can be read. + */ + if (in.remaining() >= 1) { + /* + * Read the packet size and cache it. + */ + size = in.get() & 0xFF; + session.setAttribute("size", size); + } else { + /* + * We need to wait for more data. + */ + return false; + } + } + + /* + * If the packet payload (data) can be read. + */ + if (in.remaining() >= size) { + /* + * Read it. + */ + byte[] data = new byte[size]; + in.get(data); + ByteBuffer payload = ByteBuffer.allocate(data.length); + payload.put(data); + payload.flip(); + + /* + * Produce and write the packet object. + */ + out.write(new Packet(session, opcode, data)); + + /* + * Reset the cached opcode and sizes. + */ + session.setAttribute("opcode", -1); + session.setAttribute("size", -1); + + /* + * Indicate we are ready to read another packet. + */ + return true; + } + + /* + * We need to wait for more data. + */ + return false; + } + } + + @Override + /** + * Releases resources used by this decoder. + * @param session + */ + public void dispose(IoSession session) throws Exception { + super.dispose(session); + } + +} diff --git a/2006Redone Server/src/redone/net/RS2ProtocolEncoder.java b/2006Redone Server/src/com/rebotted/net/RS2ProtocolEncoder.java similarity index 95% rename from 2006Redone Server/src/redone/net/RS2ProtocolEncoder.java rename to 2006Redone Server/src/com/rebotted/net/RS2ProtocolEncoder.java index d16b05d6..032c05f5 100644 --- a/2006Redone Server/src/redone/net/RS2ProtocolEncoder.java +++ b/2006Redone Server/src/com/rebotted/net/RS2ProtocolEncoder.java @@ -1,82 +1,82 @@ -package redone.net; - -import org.apache.mina.common.ByteBuffer; -import org.apache.mina.common.IoSession; -import org.apache.mina.filter.codec.ProtocolEncoder; -import org.apache.mina.filter.codec.ProtocolEncoderOutput; - -public class RS2ProtocolEncoder implements ProtocolEncoder { - - /** - * Only CodecFactory can create us. - */ - protected RS2ProtocolEncoder() { - } - - @Override - /** - * Encodes a message. - * @param session - * @param message - * @param out - */ - public void encode(IoSession session, Object message, - ProtocolEncoderOutput out) throws Exception { - try { - synchronized (session) { - Packet p = (Packet) message; - byte[] data = p.getData(); - int dataLength = p.getLength(); - ByteBuffer buffer; - if (!p.isBare()) { - buffer = ByteBuffer.allocate(dataLength + 3); - int id = p.getId(); - buffer.put((byte) id); - if (p.getSize() != Packet.Size.Fixed) { // variable length - // Logger.log("variable length: id="+id+",dataLength="+dataLength); - if (p.getSize() == Packet.Size.VariableByte) { - if (dataLength > 255) { - // then we can represent - // with 8 bits! - throw new IllegalArgumentException( - "Tried to send packet length " - + dataLength - + " in 8 bits [pid=" - + p.getId() + "]"); - } - buffer.put((byte) dataLength); - } else if (p.getSize() == Packet.Size.VariableShort) { - if (dataLength > 65535) { - // then we can represent - // with 16 bits! - throw new IllegalArgumentException( - "Tried to send packet length " - + dataLength - + " in 16 bits [pid=" - + p.getId() + "]"); - } - buffer.put((byte) (dataLength >> 8)); - buffer.put((byte) dataLength); - } - } - } else { - buffer = ByteBuffer.allocate(dataLength); - } - buffer.put(data, 0, dataLength); - buffer.flip(); - out.write(buffer); - } - } catch (Exception err) { - err.printStackTrace(); - } - } - - @Override - /** - * Releases resources used by this encoder. - * @param session - */ - public void dispose(IoSession session) throws Exception { - } - -} +package com.rebotted.net; + +import org.apache.mina.common.ByteBuffer; +import org.apache.mina.common.IoSession; +import org.apache.mina.filter.codec.ProtocolEncoder; +import org.apache.mina.filter.codec.ProtocolEncoderOutput; + +public class RS2ProtocolEncoder implements ProtocolEncoder { + + /** + * Only CodecFactory can create us. + */ + protected RS2ProtocolEncoder() { + } + + @Override + /** + * Encodes a message. + * @param session + * @param message + * @param out + */ + public void encode(IoSession session, Object message, + ProtocolEncoderOutput out) throws Exception { + try { + synchronized (session) { + Packet p = (Packet) message; + byte[] data = p.getData(); + int dataLength = p.getLength(); + ByteBuffer buffer; + if (!p.isBare()) { + buffer = ByteBuffer.allocate(dataLength + 3); + int id = p.getId(); + buffer.put((byte) id); + if (p.getSize() != Packet.Size.Fixed) { // variable length + // Logger.log("variable length: id="+id+",dataLength="+dataLength); + if (p.getSize() == Packet.Size.VariableByte) { + if (dataLength > 255) { + // then we can represent + // with 8 bits! + throw new IllegalArgumentException( + "Tried to send packet length " + + dataLength + + " in 8 bits [pid=" + + p.getId() + "]"); + } + buffer.put((byte) dataLength); + } else if (p.getSize() == Packet.Size.VariableShort) { + if (dataLength > 65535) { + // then we can represent + // with 16 bits! + throw new IllegalArgumentException( + "Tried to send packet length " + + dataLength + + " in 16 bits [pid=" + + p.getId() + "]"); + } + buffer.put((byte) (dataLength >> 8)); + buffer.put((byte) dataLength); + } + } + } else { + buffer = ByteBuffer.allocate(dataLength); + } + buffer.put(data, 0, dataLength); + buffer.flip(); + out.write(buffer); + } + } catch (Exception err) { + err.printStackTrace(); + } + } + + @Override + /** + * Releases resources used by this encoder. + * @param session + */ + public void dispose(IoSession session) throws Exception { + } + +} diff --git a/2006Redone Server/src/redone/net/StaticPacketBuilder.java b/2006Redone Server/src/com/rebotted/net/StaticPacketBuilder.java similarity index 95% rename from 2006Redone Server/src/redone/net/StaticPacketBuilder.java rename to 2006Redone Server/src/com/rebotted/net/StaticPacketBuilder.java index 96389986..8f1669db 100644 --- a/2006Redone Server/src/redone/net/StaticPacketBuilder.java +++ b/2006Redone Server/src/com/rebotted/net/StaticPacketBuilder.java @@ -1,385 +1,385 @@ -package redone.net; - -/** - * A mutable sequence of bytes used to construct the immutable - * Packet objects. By default, methods use big endian byte - * ordering. - */ -public class StaticPacketBuilder implements PacketBuilder { - - /** - * Default capacity - */ - private static final int DEFAULT_SIZE = 32; - /** - * The payload buffer - */ - private byte[] payload; - /** - * Current number of bytes used in the buffer - */ - private int curLength; - /** - * ID of the packet - */ - private int id; - /** - * Current index into the buffer by bits - */ - private int bitPosition = 0; - private Packet.Size size = Packet.Size.Fixed; - /** - * Whether this packet does not use the standard packet header - */ - private boolean bare = false; - - /** - * Bitmasks for addBits() - */ - private static int bitmasks[] = { 0, 0x1, 0x3, 0x7, 0xf, 0x1f, 0x3f, 0x7f, - 0xff, 0x1ff, 0x3ff, 0x7ff, 0xfff, 0x1fff, 0x3fff, 0x7fff, 0xffff, - 0x1ffff, 0x3ffff, 0x7ffff, 0xfffff, 0x1fffff, 0x3fffff, 0x7fffff, - 0xffffff, 0x1ffffff, 0x3ffffff, 0x7ffffff, 0xfffffff, 0x1fffffff, - 0x3fffffff, 0x7fffffff, -1 }; - - /** - * Constructs a packet builder with no data and an initial capacity of - * DEFAULT_SIZE. - * - * @see DEFAULT_SIZE - */ - public StaticPacketBuilder() { - this(DEFAULT_SIZE); - } - - public byte[] getPayload() { - return payload; - } - - /** - * Constructs a packet builder with no data and an initial capacity of - * capacity. - * - * @param capacity - * The initial capacity of the buffer - */ - public StaticPacketBuilder(int capacity) { - payload = new byte[capacity]; - } - - /** - * Ensures that the buffer is at least minimumBytes bytes. - * - * @param minimumCapacity - * The size needed - */ - private void ensureCapacity(int minimumCapacity) { - if (minimumCapacity >= payload.length) { - expandCapacity(minimumCapacity); - } - } - - /** - * Expands the buffer to the specified size. - * - * @param minimumCapacity - * The minimum capacity to which to expand - * @see java.lang.AbstractStringBuilder#expandCapacity(int) - */ - private void expandCapacity(int minimumCapacity) { - int newCapacity = (payload.length + 1) * 2; - if (newCapacity < 0) { - newCapacity = Integer.MAX_VALUE; - } else if (minimumCapacity > newCapacity) { - newCapacity = minimumCapacity; - } - byte[] newPayload = new byte[newCapacity]; - try { - while (curLength > payload.length) { - curLength--; - } - System.arraycopy(payload, 0, newPayload, 0, curLength); - } catch (Exception e) { - - } - payload = newPayload; - } - - /** - * Sets this packet as bare. A bare packet will contain only the payload - * data, rather than having the standard packet header prepended. - * - * @param bare - * Whether this packet is to be sent bare - */ - public StaticPacketBuilder setBare(boolean bare) { - this.bare = bare; - return this; - } - - /** - * Sets the ID for this packet. - * - * @param id - * The ID of the packet - */ - public StaticPacketBuilder setId(int id) { - this.id = id; - return this; - } - - public StaticPacketBuilder setSize(Packet.Size s) { - size = s; - return this; - } - - public StaticPacketBuilder initBitAccess() { - bitPosition = curLength * 8; - return this; - } - - public StaticPacketBuilder finishBitAccess() { - curLength = (bitPosition + 7) / 8; - return this; - } - - /** - * TODO needs a proper description. - */ - public StaticPacketBuilder addBits(int numBits, int value) { - int bytePos = bitPosition >> 3; - int bitOffset = 8 - (bitPosition & 7); - bitPosition += numBits; - curLength = (bitPosition + 7) / 8; - ensureCapacity(curLength); - for (; numBits > bitOffset; bitOffset = 8) { - payload[bytePos] &= ~bitmasks[bitOffset]; // mask out the desired - // area - payload[bytePos++] |= value >> numBits - bitOffset - & bitmasks[bitOffset]; - - numBits -= bitOffset; - } - if (numBits == bitOffset) { - payload[bytePos] &= ~bitmasks[bitOffset]; - payload[bytePos] |= value & bitmasks[bitOffset]; - } else { - payload[bytePos] &= ~(bitmasks[numBits] << bitOffset - numBits); - payload[bytePos] |= (value & bitmasks[numBits]) << bitOffset - - numBits; - } - return this; - } - - /** - * Adds the contents of byte array data to the - * packet. The size of this packet will grow by the length of the provided - * array. - * - * @param data - * The bytes to add to this packet - * @return A reference to this object - */ - public StaticPacketBuilder addBytes(byte[] data) { - return addBytes(data, 0, data.length); - } - - /** - * Adds the contents of byte array data, starting - * at index offset. The size of this packet will grow by - * len bytes. - * - * @param data - * The bytes to add to this packet - * @param offset - * The index of the first byte to append - * @param len - * The number of bytes to append - * @return A reference to this object - */ - public StaticPacketBuilder addBytes(byte[] data, int offset, int len) { - int newLength = curLength + len; - ensureCapacity(newLength); - System.arraycopy(data, offset, payload, curLength, len); - curLength = newLength; - return this; - } - - public StaticPacketBuilder addLEShortA(int i) { - ensureCapacity(curLength + 2); - addByte((byte) (i + 128), false); - addByte((byte) (i >> 8), false); - return this; - } - - public StaticPacketBuilder addShortA(int i) { - ensureCapacity(curLength + 2); - addByte((byte) (i >> 8), false); - addByte((byte) (i + 128), false); - return this; - } - - /** - * Adds a byte to the data buffer. The size of this packet will - * grow by one byte. - * - * @param val - * The byte value to add - * @return A reference to this object - */ - public StaticPacketBuilder addByte(byte val) { - return addByte(val, true); - } - - public StaticPacketBuilder addByteA(int i) { - return addByte((byte) (i + 128), true); - } - - /** - * Adds a byte to the data buffer. The size of this packet will - * grow by one byte. - * - * @param val - * The byte value to add - * @param checkCapacity - * Whether the buffer capacity should be checked - * @return A reference to this object - */ - private StaticPacketBuilder addByte(byte val, boolean checkCapacity) { - if (checkCapacity) { - ensureCapacity(curLength + 1); - } - payload[curLength++] = val; - return this; - } - - /** - * Adds a short to the data stream. The size of this packet - * will grow by two bytes. - * - * @param val - * The short value to add - * @return A reference to this object - */ - public StaticPacketBuilder addShort(int val) { - ensureCapacity(curLength + 2); - addByte((byte) (val >> 8), false); - addByte((byte) val, false); - return this; - } - - public StaticPacketBuilder addLEShort(int val) { - ensureCapacity(curLength + 2); - addByte((byte) val, false); - addByte((byte) (val >> 8), false); - return this; - } - - public StaticPacketBuilder setShort(int val, int offset) { - payload[offset++] = (byte) (val >> 8); - payload[offset++] = (byte) val; - if (curLength < offset + 2) { - curLength += 2; - } - return this; - } - - /** - * Adds a int to the data stream. The size of this packet will - * grow by four bytes. - * - * @param val - * The int value to add - * @return A reference to this object - */ - public StaticPacketBuilder addInt(int val) { - ensureCapacity(curLength + 4); - addByte((byte) (val >> 24), false); - addByte((byte) (val >> 16), false); - addByte((byte) (val >> 8), false); - addByte((byte) val, false); - return this; - } - - public StaticPacketBuilder addInt1(int val) { - ensureCapacity(curLength + 4); - addByte((byte) (val >> 8), false); - addByte((byte) val, false); - addByte((byte) (val >> 24), false); - addByte((byte) (val >> 16), false); - return this; - } - - public StaticPacketBuilder addInt2(int val) { - ensureCapacity(curLength + 4); - addByte((byte) (val >> 16), false); - addByte((byte) (val >> 24), false); - addByte((byte) val, false); - addByte((byte) (val >> 8), false); - return this; - } - - public StaticPacketBuilder addLEInt(int val) { - ensureCapacity(curLength + 4); - addByte((byte) val, false); - addByte((byte) (val >> 8), false); - addByte((byte) (val >> 16), false); - addByte((byte) (val >> 24), false); - return this; - } - - /** - * Adds a long to the data stream. The size of this packet will - * grow by eight bytes. - * - * @param val - * The long value to add - * @return A reference to this object - */ - public StaticPacketBuilder addLong(long val) { - addInt((int) (val >> 32)); - addInt((int) (val & -1L)); - return this; - } - - public StaticPacketBuilder addLELong(long val) { - addLEInt((int) (val & -1L)); - addLEInt((int) (val >> 32)); - return this; - } - - @SuppressWarnings("deprecation") - public StaticPacketBuilder addString(String s) { - ensureCapacity(curLength + s.length() + 1); - s.getBytes(0, s.length(), payload, curLength); - curLength += s.length(); - payload[curLength++] = 0; - return this; - } - - public int getLength() { - return curLength; - } - - /** - * Returns a Packet object for the data contained in this - * builder. - * - * @return A Packet object - */ - public Packet toPacket() { - byte[] data = new byte[curLength]; - System.arraycopy(payload, 0, data, 0, curLength); - return new Packet(null, id, data, bare, size); - } - - public StaticPacketBuilder addByteC(int val) { - addByte((byte) -val); - return this; - } - - public StaticPacketBuilder addByteS(int val) { - addByte((byte) (128 - val)); - return this; - } -} +package com.rebotted.net; + +/** + * A mutable sequence of bytes used to construct the immutable + * Packet objects. By default, methods use big endian byte + * ordering. + */ +public class StaticPacketBuilder implements PacketBuilder { + + /** + * Default capacity + */ + private static final int DEFAULT_SIZE = 32; + /** + * The payload buffer + */ + private byte[] payload; + /** + * Current number of bytes used in the buffer + */ + private int curLength; + /** + * ID of the packet + */ + private int id; + /** + * Current index into the buffer by bits + */ + private int bitPosition = 0; + private Packet.Size size = Packet.Size.Fixed; + /** + * Whether this packet does not use the standard packet header + */ + private boolean bare = false; + + /** + * Bitmasks for addBits() + */ + private static int bitmasks[] = { 0, 0x1, 0x3, 0x7, 0xf, 0x1f, 0x3f, 0x7f, + 0xff, 0x1ff, 0x3ff, 0x7ff, 0xfff, 0x1fff, 0x3fff, 0x7fff, 0xffff, + 0x1ffff, 0x3ffff, 0x7ffff, 0xfffff, 0x1fffff, 0x3fffff, 0x7fffff, + 0xffffff, 0x1ffffff, 0x3ffffff, 0x7ffffff, 0xfffffff, 0x1fffffff, + 0x3fffffff, 0x7fffffff, -1 }; + + /** + * Constructs a packet builder with no data and an initial capacity of + * DEFAULT_SIZE. + * + * @see DEFAULT_SIZE + */ + public StaticPacketBuilder() { + this(DEFAULT_SIZE); + } + + public byte[] getPayload() { + return payload; + } + + /** + * Constructs a packet builder with no data and an initial capacity of + * capacity. + * + * @param capacity + * The initial capacity of the buffer + */ + public StaticPacketBuilder(int capacity) { + payload = new byte[capacity]; + } + + /** + * Ensures that the buffer is at least minimumBytes bytes. + * + * @param minimumCapacity + * The size needed + */ + private void ensureCapacity(int minimumCapacity) { + if (minimumCapacity >= payload.length) { + expandCapacity(minimumCapacity); + } + } + + /** + * Expands the buffer to the specified size. + * + * @param minimumCapacity + * The minimum capacity to which to expand + * @see java.lang.AbstractStringBuilder#expandCapacity(int) + */ + private void expandCapacity(int minimumCapacity) { + int newCapacity = (payload.length + 1) * 2; + if (newCapacity < 0) { + newCapacity = Integer.MAX_VALUE; + } else if (minimumCapacity > newCapacity) { + newCapacity = minimumCapacity; + } + byte[] newPayload = new byte[newCapacity]; + try { + while (curLength > payload.length) { + curLength--; + } + System.arraycopy(payload, 0, newPayload, 0, curLength); + } catch (Exception e) { + + } + payload = newPayload; + } + + /** + * Sets this packet as bare. A bare packet will contain only the payload + * data, rather than having the standard packet header prepended. + * + * @param bare + * Whether this packet is to be sent bare + */ + public StaticPacketBuilder setBare(boolean bare) { + this.bare = bare; + return this; + } + + /** + * Sets the ID for this packet. + * + * @param id + * The ID of the packet + */ + public StaticPacketBuilder setId(int id) { + this.id = id; + return this; + } + + public StaticPacketBuilder setSize(Packet.Size s) { + size = s; + return this; + } + + public StaticPacketBuilder initBitAccess() { + bitPosition = curLength * 8; + return this; + } + + public StaticPacketBuilder finishBitAccess() { + curLength = (bitPosition + 7) / 8; + return this; + } + + /** + * TODO needs a proper description. + */ + public StaticPacketBuilder addBits(int numBits, int value) { + int bytePos = bitPosition >> 3; + int bitOffset = 8 - (bitPosition & 7); + bitPosition += numBits; + curLength = (bitPosition + 7) / 8; + ensureCapacity(curLength); + for (; numBits > bitOffset; bitOffset = 8) { + payload[bytePos] &= ~bitmasks[bitOffset]; // mask out the desired + // area + payload[bytePos++] |= value >> numBits - bitOffset + & bitmasks[bitOffset]; + + numBits -= bitOffset; + } + if (numBits == bitOffset) { + payload[bytePos] &= ~bitmasks[bitOffset]; + payload[bytePos] |= value & bitmasks[bitOffset]; + } else { + payload[bytePos] &= ~(bitmasks[numBits] << bitOffset - numBits); + payload[bytePos] |= (value & bitmasks[numBits]) << bitOffset + - numBits; + } + return this; + } + + /** + * Adds the contents of byte array data to the + * packet. The size of this packet will grow by the length of the provided + * array. + * + * @param data + * The bytes to add to this packet + * @return A reference to this object + */ + public StaticPacketBuilder addBytes(byte[] data) { + return addBytes(data, 0, data.length); + } + + /** + * Adds the contents of byte array data, starting + * at index offset. The size of this packet will grow by + * len bytes. + * + * @param data + * The bytes to add to this packet + * @param offset + * The index of the first byte to append + * @param len + * The number of bytes to append + * @return A reference to this object + */ + public StaticPacketBuilder addBytes(byte[] data, int offset, int len) { + int newLength = curLength + len; + ensureCapacity(newLength); + System.arraycopy(data, offset, payload, curLength, len); + curLength = newLength; + return this; + } + + public StaticPacketBuilder addLEShortA(int i) { + ensureCapacity(curLength + 2); + addByte((byte) (i + 128), false); + addByte((byte) (i >> 8), false); + return this; + } + + public StaticPacketBuilder addShortA(int i) { + ensureCapacity(curLength + 2); + addByte((byte) (i >> 8), false); + addByte((byte) (i + 128), false); + return this; + } + + /** + * Adds a byte to the data buffer. The size of this packet will + * grow by one byte. + * + * @param val + * The byte value to add + * @return A reference to this object + */ + public StaticPacketBuilder addByte(byte val) { + return addByte(val, true); + } + + public StaticPacketBuilder addByteA(int i) { + return addByte((byte) (i + 128), true); + } + + /** + * Adds a byte to the data buffer. The size of this packet will + * grow by one byte. + * + * @param val + * The byte value to add + * @param checkCapacity + * Whether the buffer capacity should be checked + * @return A reference to this object + */ + private StaticPacketBuilder addByte(byte val, boolean checkCapacity) { + if (checkCapacity) { + ensureCapacity(curLength + 1); + } + payload[curLength++] = val; + return this; + } + + /** + * Adds a short to the data stream. The size of this packet + * will grow by two bytes. + * + * @param val + * The short value to add + * @return A reference to this object + */ + public StaticPacketBuilder addShort(int val) { + ensureCapacity(curLength + 2); + addByte((byte) (val >> 8), false); + addByte((byte) val, false); + return this; + } + + public StaticPacketBuilder addLEShort(int val) { + ensureCapacity(curLength + 2); + addByte((byte) val, false); + addByte((byte) (val >> 8), false); + return this; + } + + public StaticPacketBuilder setShort(int val, int offset) { + payload[offset++] = (byte) (val >> 8); + payload[offset++] = (byte) val; + if (curLength < offset + 2) { + curLength += 2; + } + return this; + } + + /** + * Adds a int to the data stream. The size of this packet will + * grow by four bytes. + * + * @param val + * The int value to add + * @return A reference to this object + */ + public StaticPacketBuilder addInt(int val) { + ensureCapacity(curLength + 4); + addByte((byte) (val >> 24), false); + addByte((byte) (val >> 16), false); + addByte((byte) (val >> 8), false); + addByte((byte) val, false); + return this; + } + + public StaticPacketBuilder addInt1(int val) { + ensureCapacity(curLength + 4); + addByte((byte) (val >> 8), false); + addByte((byte) val, false); + addByte((byte) (val >> 24), false); + addByte((byte) (val >> 16), false); + return this; + } + + public StaticPacketBuilder addInt2(int val) { + ensureCapacity(curLength + 4); + addByte((byte) (val >> 16), false); + addByte((byte) (val >> 24), false); + addByte((byte) val, false); + addByte((byte) (val >> 8), false); + return this; + } + + public StaticPacketBuilder addLEInt(int val) { + ensureCapacity(curLength + 4); + addByte((byte) val, false); + addByte((byte) (val >> 8), false); + addByte((byte) (val >> 16), false); + addByte((byte) (val >> 24), false); + return this; + } + + /** + * Adds a long to the data stream. The size of this packet will + * grow by eight bytes. + * + * @param val + * The long value to add + * @return A reference to this object + */ + public StaticPacketBuilder addLong(long val) { + addInt((int) (val >> 32)); + addInt((int) (val & -1L)); + return this; + } + + public StaticPacketBuilder addLELong(long val) { + addLEInt((int) (val & -1L)); + addLEInt((int) (val >> 32)); + return this; + } + + @SuppressWarnings("deprecation") + public StaticPacketBuilder addString(String s) { + ensureCapacity(curLength + s.length() + 1); + s.getBytes(0, s.length(), payload, curLength); + curLength += s.length(); + payload[curLength++] = 0; + return this; + } + + public int getLength() { + return curLength; + } + + /** + * Returns a Packet object for the data contained in this + * builder. + * + * @return A Packet object + */ + public Packet toPacket() { + byte[] data = new byte[curLength]; + System.arraycopy(payload, 0, data, 0, curLength); + return new Packet(null, id, data, bare, size); + } + + public StaticPacketBuilder addByteC(int val) { + addByte((byte) -val); + return this; + } + + public StaticPacketBuilder addByteS(int val) { + addByte((byte) (128 - val)); + return this; + } +} diff --git a/2006Redone Server/src/redone/net/packets/PacketHandler.java b/2006Redone Server/src/com/rebotted/net/packets/PacketHandler.java similarity index 54% rename from 2006Redone Server/src/redone/net/packets/PacketHandler.java rename to 2006Redone Server/src/com/rebotted/net/packets/PacketHandler.java index c933b340..c4b085c6 100644 --- a/2006Redone Server/src/redone/net/packets/PacketHandler.java +++ b/2006Redone Server/src/com/rebotted/net/packets/PacketHandler.java @@ -1,176 +1,175 @@ -package redone.net.packets; - -import redone.Constants; -import redone.game.dialogues.Dialogue; -import redone.game.players.Client; -import redone.net.packets.impl.AttackPlayer; -import redone.net.packets.impl.Bank10; -import redone.net.packets.impl.Bank5; -import redone.net.packets.impl.BankAll; -import redone.net.packets.impl.BankX1; -import redone.net.packets.impl.BankX2; -import redone.net.packets.impl.ChallengePlayer; -import redone.net.packets.impl.ChangeAppearance; -import redone.net.packets.impl.ChangeRegions; -import redone.net.packets.impl.Chat; -import redone.net.packets.impl.ClanChat; -import redone.net.packets.impl.ClickItem; -import redone.net.packets.impl.ClickNPC; -import redone.net.packets.impl.ClickObject; -import redone.net.packets.impl.ClickTab; -import redone.net.packets.impl.ClickingButtons; -import redone.net.packets.impl.ClickingInGame; -import redone.net.packets.impl.ClickingStuff; -import redone.net.packets.impl.Commands; -import redone.net.packets.impl.DropItem; -import redone.net.packets.impl.FollowPlayer; -import redone.net.packets.impl.IdleLogout; -import redone.net.packets.impl.ItemClick2; -import redone.net.packets.impl.ItemClick2OnGroundItem; -import redone.net.packets.impl.ItemClick3; -import redone.net.packets.impl.ItemOnGroundItem; -import redone.net.packets.impl.ItemOnItem; -import redone.net.packets.impl.ItemOnNpc; -import redone.net.packets.impl.ItemOnObject; -import redone.net.packets.impl.ItemOnPlayer; -import redone.net.packets.impl.MagicOnFloorItems; -import redone.net.packets.impl.MagicOnItems; -import redone.net.packets.impl.MoveItems; -import redone.net.packets.impl.PickupItem; -import redone.net.packets.impl.PrivateMessaging; -import redone.net.packets.impl.RemoveItem; -import redone.net.packets.impl.Report; -import redone.net.packets.impl.SilentPacket; -import redone.net.packets.impl.Trade; -import redone.net.packets.impl.Walking; -import redone.net.packets.impl.WearItem; - -public class PacketHandler { - - private static PacketType packetId[] = new PacketType[256]; - - static { - - SilentPacket u = new SilentPacket(); - packetId[3] = u; - packetId[202] = u; - packetId[77] = u; - packetId[86] = u; - packetId[78] = u; - packetId[36] = u; - packetId[226] = u; - packetId[246] = u; - packetId[148] = u; - packetId[183] = u; - packetId[230] = u; - packetId[136] = u; - packetId[189] = u; - packetId[152] = u; - packetId[200] = u; - packetId[85] = u; - packetId[165] = u; - packetId[238] = u; - packetId[150] = u; - packetId[60] = new ClanChat(); - packetId[120] = new ClickTab(); - packetId[14] = new ItemOnPlayer(); - packetId[40] = new Dialogue(); - ClickObject co = new ClickObject(); - packetId[132] = co; - packetId[252] = co; - packetId[70] = co; - packetId[234] = co; - packetId[57] = new ItemOnNpc(); - ClickNPC cn = new ClickNPC(); - packetId[72] = cn; - packetId[131] = cn; - packetId[155] = cn; - packetId[17] = cn; - packetId[21] = cn; - packetId[218] = new Report(); - packetId[16] = new ItemClick2(); - packetId[75] = new ItemClick3(); - packetId[122] = new ClickItem(); - packetId[241] = new ClickingInGame(); - packetId[4] = new Chat(); - packetId[236] = new PickupItem(); - packetId[87] = new DropItem(); - packetId[185] = new ClickingButtons(); - packetId[130] = new ClickingStuff(); - packetId[103] = new Commands(); - packetId[214] = new MoveItems(); - packetId[237] = new MagicOnItems(); - packetId[181] = new MagicOnFloorItems(); - packetId[202] = new IdleLogout(); - AttackPlayer ap = new AttackPlayer(); - packetId[73] = ap; - packetId[249] = ap; - packetId[128] = new ChallengePlayer(); - packetId[139] = new Trade(); - packetId[39] = new FollowPlayer(); - packetId[41] = new WearItem(); - packetId[145] = new RemoveItem(); - packetId[117] = new Bank5(); - packetId[43] = new Bank10(); - packetId[129] = new BankAll(); - packetId[101] = new ChangeAppearance(); - PrivateMessaging pm = new PrivateMessaging(); - packetId[188] = pm; - packetId[126] = pm; - packetId[215] = pm; - packetId[59] = pm; - packetId[95] = pm; - packetId[133] = pm; - packetId[135] = new BankX1(); - packetId[208] = new BankX2(); - Walking w = new Walking(); - packetId[98] = w; - packetId[164] = w; - packetId[248] = w; - packetId[53] = new ItemOnItem(); - packetId[192] = new ItemOnObject(); - packetId[25] = new ItemOnGroundItem(); - ChangeRegions cr = new ChangeRegions(); - packetId[121] = cr; - packetId[210] = cr; - packetId[253] = new ItemClick2OnGroundItem(); - // packetId[ContinueDialoguePacketHandler.CONTINUE] = new - // ContinueDialoguePacketHandler(); - } - - /*public static void processPacket(Client c, int packetType, int packetSize) { - if (packetType == -1) { - return; - } - PacketType p = packetId[packetType]; - if (p != null) { - try { - // System.out.println("packet: " + packetType); - p.processPacket(c, packetType, packetSize); - } catch (Exception e) { - e.printStackTrace(); - } - } else { - System.out.println("Unhandled packet type: " + packetType - + " - size: " + packetSize); - } - }*/ - - public static void processPacket(Client c, int packetType, int packetSize) { - PacketType p = packetId[packetType]; - if(p != null && packetType > 0 && packetType < 257 && packetType == c.packetType && packetSize == c.packetSize) { - if (Constants.sendServerPackets && c.playerRights == 3) { - c.getActionSender().sendMessage("PacketType: " + packetType + ". PacketSize: " + packetSize + "."); - } - try { - p.processPacket(c, packetType, packetSize); - } catch(Exception e) { - e.printStackTrace(); - } - } else { - c.disconnected = true; - System.out.println(c.playerName + "is sending invalid PacketType: " + packetType + ". PacketSize: " + packetSize); - } - } - -} +package com.rebotted.net.packets; + +import com.rebotted.GameConstants; +import com.rebotted.game.dialogues.Dialogue; +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; +import com.rebotted.net.packets.impl.AttackPlayer; +import com.rebotted.net.packets.impl.Bank10; +import com.rebotted.net.packets.impl.Bank5; +import com.rebotted.net.packets.impl.BankAll; +import com.rebotted.net.packets.impl.BankX1; +import com.rebotted.net.packets.impl.BankX2; +import com.rebotted.net.packets.impl.ChallengePlayer; +import com.rebotted.net.packets.impl.ChangeAppearance; +import com.rebotted.net.packets.impl.ChangeRegions; +import com.rebotted.net.packets.impl.Chat; +import com.rebotted.net.packets.impl.ClickItem; +import com.rebotted.net.packets.impl.ClickNPC; +import com.rebotted.net.packets.impl.ClickObject; +import com.rebotted.net.packets.impl.ClickTab; +import com.rebotted.net.packets.impl.ClickingButtons; +import com.rebotted.net.packets.impl.ClickingInGame; +import com.rebotted.net.packets.impl.ClickingStuff; +import com.rebotted.net.packets.impl.Commands; +import com.rebotted.net.packets.impl.DropItem; +import com.rebotted.net.packets.impl.FollowPlayer; +import com.rebotted.net.packets.impl.IdleLogout; +import com.rebotted.net.packets.impl.ItemClick2; +import com.rebotted.net.packets.impl.ItemClick2OnGroundItem; +import com.rebotted.net.packets.impl.ItemClick3; +import com.rebotted.net.packets.impl.ItemOnGroundItem; +import com.rebotted.net.packets.impl.ItemOnItem; +import com.rebotted.net.packets.impl.ItemOnNpc; +import com.rebotted.net.packets.impl.ItemOnObject; +import com.rebotted.net.packets.impl.ItemOnPlayer; +import com.rebotted.net.packets.impl.MagicOnFloorItems; +import com.rebotted.net.packets.impl.MagicOnItems; +import com.rebotted.net.packets.impl.MoveItems; +import com.rebotted.net.packets.impl.PickupItem; +import com.rebotted.net.packets.impl.PrivateMessaging; +import com.rebotted.net.packets.impl.RemoveItem; +import com.rebotted.net.packets.impl.Report; +import com.rebotted.net.packets.impl.SilentPacket; +import com.rebotted.net.packets.impl.Trade; +import com.rebotted.net.packets.impl.Walking; +import com.rebotted.net.packets.impl.WearItem; + +public class PacketHandler { + + private static PacketType packetId[] = new PacketType[256]; + + static { + + SilentPacket u = new SilentPacket(); + packetId[3] = u; + packetId[202] = u; + packetId[77] = u; + packetId[86] = u; + packetId[78] = u; + packetId[36] = u; + packetId[226] = u; + packetId[246] = u; + packetId[148] = u; + packetId[183] = u; + packetId[230] = u; + packetId[136] = u; + packetId[189] = u; + packetId[152] = u; + packetId[200] = u; + packetId[85] = u; + packetId[165] = u; + packetId[238] = u; + packetId[150] = u; + packetId[120] = new ClickTab(); + packetId[14] = new ItemOnPlayer(); + packetId[40] = new Dialogue(); + ClickObject co = new ClickObject(); + packetId[132] = co; + packetId[252] = co; + packetId[70] = co; + packetId[234] = co; + packetId[57] = new ItemOnNpc(); + ClickNPC cn = new ClickNPC(); + packetId[72] = cn; + packetId[131] = cn; + packetId[155] = cn; + packetId[17] = cn; + packetId[21] = cn; + packetId[218] = new Report(); + packetId[16] = new ItemClick2(); + packetId[75] = new ItemClick3(); + packetId[122] = new ClickItem(); + packetId[241] = new ClickingInGame(); + packetId[4] = new Chat(); + packetId[236] = new PickupItem(); + packetId[87] = new DropItem(); + packetId[185] = new ClickingButtons(); + packetId[130] = new ClickingStuff(); + packetId[103] = new Commands(); + packetId[214] = new MoveItems(); + packetId[237] = new MagicOnItems(); + packetId[181] = new MagicOnFloorItems(); + packetId[202] = new IdleLogout(); + AttackPlayer ap = new AttackPlayer(); + packetId[73] = ap; + packetId[249] = ap; + packetId[128] = new ChallengePlayer(); + packetId[139] = new Trade(); + packetId[39] = new FollowPlayer(); + packetId[41] = new WearItem(); + packetId[145] = new RemoveItem(); + packetId[117] = new Bank5(); + packetId[43] = new Bank10(); + packetId[129] = new BankAll(); + packetId[101] = new ChangeAppearance(); + PrivateMessaging pm = new PrivateMessaging(); + packetId[188] = pm; + packetId[126] = pm; + packetId[215] = pm; + packetId[59] = pm; + packetId[95] = pm; + packetId[133] = pm; + packetId[135] = new BankX1(); + packetId[208] = new BankX2(); + Walking w = new Walking(); + packetId[98] = w; + packetId[164] = w; + packetId[248] = w; + packetId[53] = new ItemOnItem(); + packetId[192] = new ItemOnObject(); + packetId[25] = new ItemOnGroundItem(); + ChangeRegions cr = new ChangeRegions(); + packetId[121] = cr; + packetId[210] = cr; + packetId[253] = new ItemClick2OnGroundItem(); + // packetId[ContinueDialoguePacketHandler.CONTINUE] = new + // ContinueDialoguePacketHandler(); + } + + /*public static void processPacket(Client c, int packetType, int packetSize) { + if (packetType == -1) { + return; + } + PacketType p = packetId[packetType]; + if (p != null) { + try { + // System.out.println("packet: " + packetType); + p.processPacket(c, packetType, packetSize); + } catch (Exception e) { + e.printStackTrace(); + } + } else { + System.out.println("Unhandled packet type: " + packetType + + " - size: " + packetSize); + } + }*/ + + public static void processPacket(Player player, int packetType, int packetSize) { + PacketType p = packetId[packetType]; + if(p != null && packetType > 0 && packetType < 257 && packetType == player.packetType && packetSize == player.packetSize) { + if (GameConstants.sendServerPackets && player.playerRights == 3) { + player.getPacketSender().sendMessage("PacketType: " + packetType + ". PacketSize: " + packetSize + "."); + } + try { + p.processPacket(player, packetType, packetSize); + } catch(Exception e) { + e.printStackTrace(); + } + } else { + player.disconnected = true; + System.out.println(player.playerName + "is sending invalid PacketType: " + packetType + ". PacketSize: " + packetSize); + } + } + +} diff --git a/2006Redone Server/src/com/rebotted/net/packets/PacketType.java b/2006Redone Server/src/com/rebotted/net/packets/PacketType.java new file mode 100644 index 00000000..475551aa --- /dev/null +++ b/2006Redone Server/src/com/rebotted/net/packets/PacketType.java @@ -0,0 +1,8 @@ +package com.rebotted.net.packets; + +import com.rebotted.game.players.Player; + +public interface PacketType { + + public void processPacket(Player player, int packetType, int packetSize); +} diff --git a/2006Redone Server/src/redone/net/packets/impl/AttackPlayer.java b/2006Redone Server/src/com/rebotted/net/packets/impl/AttackPlayer.java similarity index 77% rename from 2006Redone Server/src/redone/net/packets/impl/AttackPlayer.java rename to 2006Redone Server/src/com/rebotted/net/packets/impl/AttackPlayer.java index f427bc08..29f39ff4 100644 --- a/2006Redone Server/src/redone/net/packets/impl/AttackPlayer.java +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/AttackPlayer.java @@ -1,311 +1,298 @@ -package redone.net.packets.impl; - -import redone.Constants; -import redone.game.content.combat.magic.CastOnOther; -import redone.game.content.combat.magic.MagicData; -import redone.game.content.combat.range.RangeData; -import redone.game.items.ItemAssistant; -import redone.game.players.Client; -import redone.game.players.PlayerHandler; -import redone.net.packets.PacketType; - -/** - * Attack Player - **/ -public class AttackPlayer implements PacketType { - - public static final int ATTACK_PLAYER = 73, MAGE_PLAYER = 249; - - @Override - public void processPacket(Client c, int packetType, int packetSize) { - c.endCurrentTask(); - c.playerIndex = 0; - c.npcIndex = 0; - switch (packetType) { - - /** - * Attack player - **/ - case ATTACK_PLAYER: - c.playerIndex = c.getInStream().readSignedWordBigEndian(); - if (PlayerHandler.players[c.playerIndex] == null) { - break; - } - - if (c.inDuelArena() && !c.duelingArena()) { - c.getChallengePlayer().processPacket(c, packetType, packetSize); - } - - if (c.respawnTimer > 0) { - break; - } - - if (c.autocastId > 0) { - c.autocasting = true; - } - - if (c.isBotting == true) { - c.getActionSender().sendMessage("You can't attack players, until you confirm you are not botting."); - c.getActionSender().sendMessage("If you need to you can type ::amibotting, to see if your botting."); - return; - } - - if (!c.autocasting && c.spellId > 0) { - c.spellId = 0; - } - c.mageFollow = false; - c.spellId = 0; - c.usingMagic = false; - boolean usingBow = false; - boolean usingOtherRangeWeapons = false; - boolean usingArrows = false; - boolean usingCross = c.playerEquipment[c.playerWeapon] == 9185; - for (int bowId : RangeData.BOWS) { - if (c.playerEquipment[c.playerWeapon] == bowId) { - usingBow = true; - for (int arrowId : RangeData.ARROWS) { - if (c.playerEquipment[c.playerArrows] == arrowId) { - usingArrows = true; - } - } - } - } - for (int otherRangeId : RangeData.OTHER_RANGE_WEAPONS) { - if (c.playerEquipment[c.playerWeapon] == otherRangeId) { - usingOtherRangeWeapons = true; - } - } - if (c.duelStatus == 5) { - if (c.duelCount > 0) { - c.getActionSender().sendMessage( - "The duel hasn't started yet!"); - c.playerIndex = 0; - return; - } - if (c.duelRule[9]) { - boolean canUseWeapon = false; - for (int funWeapon : Constants.FUN_WEAPONS) { - if (c.playerEquipment[c.playerWeapon] == funWeapon) { - canUseWeapon = true; - } - } - if (!canUseWeapon) { - c.getActionSender().sendMessage( - "You can only use fun weapons in this duel!"); - return; - } - } - - if (c.duelRule[2] && (usingBow || usingOtherRangeWeapons)) { - c.getActionSender().sendMessage( - "Range has been disabled in this duel!"); - return; - } - if (c.duelRule[3] && !usingBow && !usingOtherRangeWeapons) { - c.getActionSender().sendMessage( - "Melee has been disabled in this duel!"); - return; - } - } - - if ((usingBow || c.autocasting) - && c.goodDistance(c.getX(), c.getY(), - PlayerHandler.players[c.playerIndex].getX(), - PlayerHandler.players[c.playerIndex].getY(), 6)) { - c.usingBow = true; - c.stopMovement(); - } - - if (usingOtherRangeWeapons - && c.goodDistance(c.getX(), c.getY(), - PlayerHandler.players[c.playerIndex].getX(), - PlayerHandler.players[c.playerIndex].getY(), 3)) { - c.usingRangeWeapon = true; - c.stopMovement(); - } - if (!usingBow) { - c.usingBow = false; - } - if (!usingOtherRangeWeapons) { - c.usingRangeWeapon = false; - } - - if (!usingCross && !usingArrows && usingBow - && c.playerEquipment[c.playerWeapon] < 4212 - && c.playerEquipment[c.playerWeapon] > 4223) { - c.getActionSender().sendMessage( - "You have run out of arrows!"); - return; - } - if (RangeData.correctBowAndArrows(c) < c.playerEquipment[c.playerArrows] - && Constants.CORRECT_ARROWS - && usingBow - && !RangeData.usingCrystalBow(c) - && c.playerEquipment[c.playerWeapon] != 9185) { - c.getActionSender().sendMessage( - "You can't use " - + ItemAssistant.getItemName( - c.playerEquipment[c.playerArrows]) - .toLowerCase() - + "s with a " - + ItemAssistant.getItemName( - c.playerEquipment[c.playerWeapon]) - .toLowerCase() + "."); - c.stopMovement(); - c.getCombatAssistant().resetPlayerAttack(); - return; - } - if (c.playerEquipment[c.playerWeapon] == 9185 - && !c.getCombatAssistant().properBolts()) { - c.getActionSender().sendMessage( - "You must use bolts with a crossbow."); - c.stopMovement(); - c.getCombatAssistant().resetPlayerAttack(); - return; - } - if (c.getCombatAssistant().checkReqs()) { - c.followId = c.playerIndex; - if (!c.usingMagic && !usingBow && !usingOtherRangeWeapons) { - c.followDistance = 1; - c.getPlayerAssistant().followPlayer(); - } - if (c.attackTimer <= 0) { - // c.getPacketDispatcher().sendMessage("Tried to attack..."); - // c.getCombat().attackPlayer(c.playerIndex); - // c.attackTimer++; - } - } - break; - - /** - * Attack player with magic - **/ - case MAGE_PLAYER: - if (!c.mageAllowed) { - c.mageAllowed = true; - break; - } - if (c.isBotting == true) { - c.getActionSender().sendMessage("You can't mage players, until you confirm you are not botting."); - c.getActionSender().sendMessage("If you need to you can type ::amibotting, to see if your botting."); - return; - } - // c.usingSpecial = false; - // c.getItems().updateSpecialBar(); - - c.playerIndex = c.getInStream().readSignedWordA(); - int castingSpellId = c.getInStream().readSignedWordBigEndian(); - c.castingSpellId = castingSpellId; - c.usingMagic = false; - - boolean teleother = CastOnOther.castOnOtherSpells(castingSpellId); - - if (PlayerHandler.players[c.playerIndex] == null) { - break; - } - - if (c.respawnTimer > 0) { - break; - } - - if (c.playerRights == 3) { - c.getActionSender().sendMessage( - "Casting Spell id: " + castingSpellId + "."); - } - - if (teleother) { - if (c.inTrade) { - c.getTrading().declineTrade(true); - } - if (c.inWild() - && c.wildLevel > Constants.NO_TELEPORT_WILD_LEVEL) { - c.getActionSender().sendMessage( - "You can't teleport above level " - + Constants.NO_TELEPORT_WILD_LEVEL - + " in the wilderness."); - break; - } - } - - switch (c.castingSpellId) { - case 12425: - CastOnOther.teleOtherDistance(c, 0, c.playerIndex); - break; - case 12435: - CastOnOther.teleOtherDistance(c, 1, c.playerIndex); - break; - case 12455: - CastOnOther.teleOtherDistance(c, 2, c.playerIndex); - break; - } - - if (teleother) { - c.stopMovement(); - c.getCombatAssistant().resetPlayerAttack(); - } - - for (int i = 0; i < MagicData.MAGIC_SPELLS.length; i++) { - if (castingSpellId == MagicData.MAGIC_SPELLS[i][0]) { - c.spellId = i; - c.usingMagic = true; - break; - } - } - - if (c.autocasting) { - c.autocasting = false; - } - - if (!teleother) { - if (!c.getCombatAssistant().checkReqs()) { - break; - } - - if (c.duelStatus == 5) { - if (c.duelCount > 0) { - c.getActionSender().sendMessage( - "The duel hasn't started yet!"); - c.playerIndex = 0; - return; - } - if (c.duelRule[4]) { - c.getActionSender().sendMessage( - "Magic has been disabled in this duel!"); - return; - } - } - - for (int r = 0; r < c.REDUCE_SPELLS.length; r++) { // reducing - // spells, - // confuse - // etc - if (PlayerHandler.players[c.playerIndex].REDUCE_SPELLS[r] == MagicData.MAGIC_SPELLS[c.spellId][0]) { - if (System.currentTimeMillis() - - PlayerHandler.players[c.playerIndex].reduceSpellDelay[r] < PlayerHandler.players[c.playerIndex].REDUCE_SPELL_TIME[r]) { - c.getActionSender() - .sendMessage( - "That player is currently immune to this spell."); - c.usingMagic = false; - c.stopMovement(); - c.getCombatAssistant().resetPlayerAttack(); - } - break; - } - } - - if (System.currentTimeMillis() - - PlayerHandler.players[c.playerIndex].teleBlockDelay < PlayerHandler.players[c.playerIndex].teleBlockLength - && MagicData.MAGIC_SPELLS[c.spellId][0] == 12445) { - c.getActionSender().sendMessage( - "That player is already affected by this spell."); - c.usingMagic = false; - c.stopMovement(); - c.getCombatAssistant().resetPlayerAttack(); - } - } - break; - } - - } - -} +package com.rebotted.net.packets.impl; + +import com.rebotted.GameConstants; +import com.rebotted.game.content.combat.magic.CastOnOther; +import com.rebotted.game.content.combat.magic.MagicData; +import com.rebotted.game.content.combat.range.RangeData; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerHandler; +import com.rebotted.net.packets.PacketType; + +/** + * Attack Player + **/ +public class AttackPlayer implements PacketType { + + public static final int ATTACK_PLAYER = 73, MAGE_PLAYER = 249; + + @Override + public void processPacket(Player c, int packetType, int packetSize) { + c.endCurrentTask(); + c.playerIndex = 0; + c.npcIndex = 0; + switch (packetType) { + + /** + * Attack player + **/ + case ATTACK_PLAYER: + c.playerIndex = c.getInStream().readSignedWordBigEndian(); + if (PlayerHandler.players[c.playerIndex] == null) { + break; + } + + if (c.inDuelArena() && !c.duelingArena()) { + c.getChallengePlayer().processPacket(c, packetType, packetSize); + } + + if (c.respawnTimer > 0) { + break; + } + + if (c.autocastId > 0) { + c.autocasting = true; + } + + if (!c.autocasting && c.spellId > 0) { + c.spellId = 0; + } + c.mageFollow = false; + c.spellId = 0; + c.usingMagic = false; + boolean usingBow = false; + boolean usingOtherRangeWeapons = false; + boolean usingArrows = false; + boolean usingCross = c.playerEquipment[c.playerWeapon] == 9185; + for (int bowId : RangeData.BOWS) { + if (c.playerEquipment[c.playerWeapon] == bowId) { + usingBow = true; + for (int arrowId : RangeData.ARROWS) { + if (c.playerEquipment[c.playerArrows] == arrowId) { + usingArrows = true; + } + } + } + } + for (int otherRangeId : RangeData.OTHER_RANGE_WEAPONS) { + if (c.playerEquipment[c.playerWeapon] == otherRangeId) { + usingOtherRangeWeapons = true; + } + } + if (c.duelStatus == 5) { + if (c.duelCount > 0) { + c.getPacketSender().sendMessage( + "The duel hasn't started yet!"); + c.playerIndex = 0; + return; + } + if (c.duelRule[9]) { + boolean canUseWeapon = false; + for (int funWeapon : GameConstants.FUN_WEAPONS) { + if (c.playerEquipment[c.playerWeapon] == funWeapon) { + canUseWeapon = true; + } + } + if (!canUseWeapon) { + c.getPacketSender().sendMessage( + "You can only use fun weapons in this duel!"); + return; + } + } + + if (c.duelRule[2] && (usingBow || usingOtherRangeWeapons)) { + c.getPacketSender().sendMessage( + "Range has been disabled in this duel!"); + return; + } + if (c.duelRule[3] && !usingBow && !usingOtherRangeWeapons) { + c.getPacketSender().sendMessage( + "Melee has been disabled in this duel!"); + return; + } + } + + if ((usingBow || c.autocasting) + && c.goodDistance(c.getX(), c.getY(), + PlayerHandler.players[c.playerIndex].getX(), + PlayerHandler.players[c.playerIndex].getY(), 6)) { + c.usingBow = true; + c.stopMovement(); + } + + if (usingOtherRangeWeapons + && c.goodDistance(c.getX(), c.getY(), + PlayerHandler.players[c.playerIndex].getX(), + PlayerHandler.players[c.playerIndex].getY(), 3)) { + c.usingRangeWeapon = true; + c.stopMovement(); + } + if (!usingBow) { + c.usingBow = false; + } + if (!usingOtherRangeWeapons) { + c.usingRangeWeapon = false; + } + + if (!usingCross && !usingArrows && usingBow + && c.playerEquipment[c.playerWeapon] < 4212 + && c.playerEquipment[c.playerWeapon] > 4223) { + c.getPacketSender().sendMessage( + "You have run out of arrows!"); + return; + } + if (RangeData.correctBowAndArrows(c) < c.playerEquipment[c.playerArrows] + && GameConstants.CORRECT_ARROWS + && usingBow + && !RangeData.usingCrystalBow(c) + && c.playerEquipment[c.playerWeapon] != 9185) { + c.getPacketSender().sendMessage( + "You can't use " + + ItemAssistant.getItemName( + c.playerEquipment[c.playerArrows]) + .toLowerCase() + + "s with a " + + ItemAssistant.getItemName( + c.playerEquipment[c.playerWeapon]) + .toLowerCase() + "."); + c.stopMovement(); + c.getCombatAssistant().resetPlayerAttack(); + return; + } + if (c.playerEquipment[c.playerWeapon] == 9185 + && !c.getCombatAssistant().properBolts()) { + c.getPacketSender().sendMessage( + "You must use bolts with a crossbow."); + c.stopMovement(); + c.getCombatAssistant().resetPlayerAttack(); + return; + } + if (c.getCombatAssistant().checkReqs()) { + c.followId = c.playerIndex; + if (!c.usingMagic && !usingBow && !usingOtherRangeWeapons) { + c.followDistance = 1; + c.getPlayerAssistant().followPlayer(); + } + if (c.attackTimer <= 0) { + // c.getPacketDispatcher().sendMessage("Tried to attack..."); + // c.getCombat().attackPlayer(c.playerIndex); + // c.attackTimer++; + } + } + break; + + /** + * Attack player with magic + **/ + case MAGE_PLAYER: + if (!c.mageAllowed) { + c.mageAllowed = true; + break; + } + + c.playerIndex = c.getInStream().readSignedWordA(); + int castingSpellId = c.getInStream().readSignedWordBigEndian(); + c.castingSpellId = castingSpellId; + c.usingMagic = false; + + boolean teleother = CastOnOther.castOnOtherSpells(castingSpellId); + + if (PlayerHandler.players[c.playerIndex] == null) { + break; + } + + if (c.respawnTimer > 0) { + break; + } + + if (c.playerRights == 3) { + c.getPacketSender().sendMessage( + "Casting Spell id: " + castingSpellId + "."); + } + + if (teleother) { + if (c.inTrade) { + c.getTrading().declineTrade(true); + } + if (c.inWild() + && c.wildLevel > GameConstants.NO_TELEPORT_WILD_LEVEL) { + c.getPacketSender().sendMessage( + "You can't teleport above level " + + GameConstants.NO_TELEPORT_WILD_LEVEL + + " in the wilderness."); + break; + } + } + + switch (c.castingSpellId) { + case 12425: + CastOnOther.teleOtherDistance(c, 0, c.playerIndex); + break; + case 12435: + CastOnOther.teleOtherDistance(c, 1, c.playerIndex); + break; + case 12455: + CastOnOther.teleOtherDistance(c, 2, c.playerIndex); + break; + } + + if (teleother) { + c.stopMovement(); + c.getCombatAssistant().resetPlayerAttack(); + } + + for (int i = 0; i < MagicData.MAGIC_SPELLS.length; i++) { + if (castingSpellId == MagicData.MAGIC_SPELLS[i][0]) { + c.spellId = i; + c.usingMagic = true; + break; + } + } + + if (c.autocasting) { + c.autocasting = false; + } + + if (!teleother) { + if (!c.getCombatAssistant().checkReqs()) { + break; + } + + if (c.duelStatus == 5) { + if (c.duelCount > 0) { + c.getPacketSender().sendMessage( + "The duel hasn't started yet!"); + c.playerIndex = 0; + return; + } + if (c.duelRule[4]) { + c.getPacketSender().sendMessage( + "Magic has been disabled in this duel!"); + return; + } + } + + for (int r = 0; r < c.REDUCE_SPELLS.length; r++) { // reducing + // spells, + // confuse + // etc + if (PlayerHandler.players[c.playerIndex].REDUCE_SPELLS[r] == MagicData.MAGIC_SPELLS[c.spellId][0]) { + if (System.currentTimeMillis() + - PlayerHandler.players[c.playerIndex].reduceSpellDelay[r] < PlayerHandler.players[c.playerIndex].REDUCE_SPELL_TIME[r]) { + c.getPacketSender() + .sendMessage( + "That player is currently immune to this spell."); + c.usingMagic = false; + c.stopMovement(); + c.getCombatAssistant().resetPlayerAttack(); + } + break; + } + } + + if (System.currentTimeMillis() + - PlayerHandler.players[c.playerIndex].teleBlockDelay < PlayerHandler.players[c.playerIndex].teleBlockLength + && MagicData.MAGIC_SPELLS[c.spellId][0] == 12445) { + c.getPacketSender().sendMessage( + "That player is already affected by this spell."); + c.usingMagic = false; + c.stopMovement(); + c.getCombatAssistant().resetPlayerAttack(); + } + } + break; + } + + } + +} diff --git a/2006Redone Server/src/redone/net/packets/impl/Bank10.java b/2006Redone Server/src/com/rebotted/net/packets/impl/Bank10.java similarity index 82% rename from 2006Redone Server/src/redone/net/packets/impl/Bank10.java rename to 2006Redone Server/src/com/rebotted/net/packets/impl/Bank10.java index d2a8dd72..2ddb8be4 100644 --- a/2006Redone Server/src/redone/net/packets/impl/Bank10.java +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/Bank10.java @@ -1,99 +1,99 @@ -package redone.net.packets.impl; - -import redone.game.content.random.PartyRoom; -import redone.game.content.skills.crafting.JewelryMaking; -import redone.game.players.Client; -import redone.net.packets.PacketType; - -/** - * Bank 10 Items - **/ -public class Bank10 implements PacketType { - - @Override - public void processPacket(Client player, int packetType, int packetSize) { - int interfaceId = player.getInStream().readUnsignedWordBigEndian(); - int removeId = player.getInStream().readUnsignedWordA(); - int removeSlot = player.getInStream().readUnsignedWordA(); - player.endCurrentTask(); - switch (interfaceId) { - - case 4233: - case 4239: - case 4245: - JewelryMaking.mouldItem(player, removeId, 10); - break; - - case 1688: - player.getPlayerAssistant().useOperate(removeId); - break; - case 3900: - player.getShopAssistant().buyItem(removeId, removeSlot, 10); - break; - - case 3823: - if(!player.getItemAssistant().playerHasItem(removeId)) { - return; - } - player.getShopAssistant().sellItem(removeId, removeSlot, 10); - player.getItemAssistant().resetItems(3823); - break; - - case 7423: - if (player.storing) { - return; - } - player.getItemAssistant().bankItem(removeId, removeSlot, 10); - player.getItemAssistant().resetItems(7423); - break; - - case 5064: - if(!player.getItemAssistant().playerHasItem(removeId)) { - return; - } - if (player.inPartyRoom) { - PartyRoom.depositItem(player, removeId, 10); - break; - } - if (player.inTrade) { - player.getActionSender().sendMessage("You can't store items while trading!"); - return; - } - player.getItemAssistant().bankItem(removeId, removeSlot, 10); - break; - - case 5382: - player.getItemAssistant().fromBank(removeId, removeSlot, 10); - break; - - case 3322: - if (player.duelStatus <= 0) { - player.getTrading().tradeItem(removeId, removeSlot, 10); - } else { - player.getDueling().stakeItem(removeId, removeSlot, 10); - } - break; - - case 3415: - if (player.duelStatus <= 0) { - player.getTrading().fromTrade(removeId, removeSlot, 10); - } - break; - - case 6669: - player.getDueling().fromDuel(removeId, removeSlot, 10); - break; - - case 1119: - case 1120: - case 1121: - case 1122: - case 1123: - player.getSmithing().readInput(player.playerLevel[player.playerSmithing], - Integer.toString(removeId), player, 10); - break; - - } - } - -} +package com.rebotted.net.packets.impl; + +import com.rebotted.game.content.random.PartyRoom; +import com.rebotted.game.content.skills.crafting.JewelryMaking; +import com.rebotted.game.players.Player; +import com.rebotted.net.packets.PacketType; + +/** + * Bank 10 Items + **/ +public class Bank10 implements PacketType { + + @Override + public void processPacket(Player player, int packetType, int packetSize) { + int interfaceId = player.getInStream().readUnsignedWordBigEndian(); + int removeId = player.getInStream().readUnsignedWordA(); + int removeSlot = player.getInStream().readUnsignedWordA(); + player.endCurrentTask(); + switch (interfaceId) { + + case 4233: + case 4239: + case 4245: + JewelryMaking.mouldItem(player, removeId, 10); + break; + + case 1688: + player.getPlayerAssistant().useOperate(removeId); + break; + case 3900: + player.getShopAssistant().buyItem(removeId, removeSlot, 10); + break; + + case 3823: + if(!player.getItemAssistant().playerHasItem(removeId)) { + return; + } + player.getShopAssistant().sellItem(removeId, removeSlot, 10); + player.getItemAssistant().resetItems(3823); + break; + + case 7423: + if (player.storing) { + return; + } + player.getItemAssistant().bankItem(removeId, removeSlot, 10); + player.getItemAssistant().resetItems(7423); + break; + + case 5064: + if(!player.getItemAssistant().playerHasItem(removeId)) { + return; + } + if (player.inPartyRoom) { + PartyRoom.depositItem(player, removeId, 10); + break; + } + if (player.inTrade) { + player.getPacketSender().sendMessage("You can't store items while trading!"); + return; + } + player.getItemAssistant().bankItem(removeId, removeSlot, 10); + break; + + case 5382: + player.getItemAssistant().fromBank(removeId, removeSlot, 10); + break; + + case 3322: + if (player.duelStatus <= 0) { + player.getTrading().tradeItem(removeId, removeSlot, 10); + } else { + player.getDueling().stakeItem(removeId, removeSlot, 10); + } + break; + + case 3415: + if (player.duelStatus <= 0) { + player.getTrading().fromTrade(removeId, removeSlot, 10); + } + break; + + case 6669: + player.getDueling().fromDuel(removeId, removeSlot, 10); + break; + + case 1119: + case 1120: + case 1121: + case 1122: + case 1123: + player.getSmithing().readInput(player.playerLevel[player.playerSmithing], + Integer.toString(removeId), player, 10); + break; + + } + } + +} diff --git a/2006Redone Server/src/redone/net/packets/impl/Bank5.java b/2006Redone Server/src/com/rebotted/net/packets/impl/Bank5.java similarity index 83% rename from 2006Redone Server/src/redone/net/packets/impl/Bank5.java rename to 2006Redone Server/src/com/rebotted/net/packets/impl/Bank5.java index af483546..77463752 100644 --- a/2006Redone Server/src/redone/net/packets/impl/Bank5.java +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/Bank5.java @@ -1,97 +1,97 @@ -package redone.net.packets.impl; - -import redone.game.content.random.PartyRoom; -import redone.game.content.skills.crafting.JewelryMaking; -import redone.game.players.Client; -import redone.net.packets.PacketType; - -/** - * Bank 5 Items - **/ -public class Bank5 implements PacketType { - - @Override - public void processPacket(Client player, int packetType, int packetSize) { - int interfaceId = player.getInStream().readSignedWordBigEndianA(); - int removeId = player.getInStream().readSignedWordBigEndianA(); - int removeSlot = player.getInStream().readSignedWordBigEndian(); - player.endCurrentTask(); - switch (interfaceId) { - - case 4233: - case 4239: - case 4245: - JewelryMaking.mouldItem(player, removeId, 5); - break; - case 3900: - player.getShopAssistant().buyItem(removeId, removeSlot, 1); //this says 1 in BANKx5 but it's banking 5 for real... strange shit. - break; - - case 3823: - if(!player.getItemAssistant().playerHasItem(removeId)) { - return; - } - if (player.inTrade) { - player.getTrading().declineTrade(true); - } - player.getShopAssistant().sellItem(removeId, removeSlot, 1); - break; - - case 7423: - if (player.storing) { - return; - } - player.getItemAssistant().bankItem(removeId, removeSlot, 5); - player.getItemAssistant().resetItems(7423); - break; - - case 5064: - if(!player.getItemAssistant().playerHasItem(removeId)) { - return; - } - if (player.inPartyRoom) { - PartyRoom.depositItem(player, removeId, 5); - break; - } - if (player.inTrade) { - player.getActionSender().sendMessage( - "You can't store items while trading!"); - return; - } - player.getItemAssistant().bankItem(removeId, removeSlot, 5); - break; - - case 5382: - player.getItemAssistant().fromBank(removeId, removeSlot, 5); - break; - - case 3322: - if (player.duelStatus <= 0) { - player.getTrading().tradeItem(removeId, removeSlot, 5); - } else { - player.getDueling().stakeItem(removeId, removeSlot, 5); - } - break; - - case 3415: - if (player.duelStatus <= 0) { - player.getTrading().fromTrade(removeId, removeSlot, 5); - } - break; - - case 6669: - player.getDueling().fromDuel(removeId, removeSlot, 5); - break; - - case 1119: - case 1120: - case 1121: - case 1122: - case 1123: - player.getSmithing().readInput(player.playerLevel[player.playerSmithing], - Integer.toString(removeId), player, 5); - break; - } - } - -} +package com.rebotted.net.packets.impl; + +import com.rebotted.game.content.random.PartyRoom; +import com.rebotted.game.content.skills.crafting.JewelryMaking; +import com.rebotted.game.players.Player; +import com.rebotted.net.packets.PacketType; + +/** + * Bank 5 Items + **/ +public class Bank5 implements PacketType { + + @Override + public void processPacket(Player player, int packetType, int packetSize) { + int interfaceId = player.getInStream().readSignedWordBigEndianA(); + int removeId = player.getInStream().readSignedWordBigEndianA(); + int removeSlot = player.getInStream().readSignedWordBigEndian(); + player.endCurrentTask(); + switch (interfaceId) { + + case 4233: + case 4239: + case 4245: + JewelryMaking.mouldItem(player, removeId, 5); + break; + case 3900: + player.getShopAssistant().buyItem(removeId, removeSlot, 1); //this says 1 in BANKx5 but it's banking 5 for real... strange shit. + break; + + case 3823: + if(!player.getItemAssistant().playerHasItem(removeId)) { + return; + } + if (player.inTrade) { + player.getTrading().declineTrade(true); + } + player.getShopAssistant().sellItem(removeId, removeSlot, 1); + break; + + case 7423: + if (player.storing) { + return; + } + player.getItemAssistant().bankItem(removeId, removeSlot, 5); + player.getItemAssistant().resetItems(7423); + break; + + case 5064: + if(!player.getItemAssistant().playerHasItem(removeId)) { + return; + } + if (player.inPartyRoom) { + PartyRoom.depositItem(player, removeId, 5); + break; + } + if (player.inTrade) { + player.getPacketSender().sendMessage( + "You can't store items while trading!"); + return; + } + player.getItemAssistant().bankItem(removeId, removeSlot, 5); + break; + + case 5382: + player.getItemAssistant().fromBank(removeId, removeSlot, 5); + break; + + case 3322: + if (player.duelStatus <= 0) { + player.getTrading().tradeItem(removeId, removeSlot, 5); + } else { + player.getDueling().stakeItem(removeId, removeSlot, 5); + } + break; + + case 3415: + if (player.duelStatus <= 0) { + player.getTrading().fromTrade(removeId, removeSlot, 5); + } + break; + + case 6669: + player.getDueling().fromDuel(removeId, removeSlot, 5); + break; + + case 1119: + case 1120: + case 1121: + case 1122: + case 1123: + player.getSmithing().readInput(player.playerLevel[player.playerSmithing], + Integer.toString(removeId), player, 5); + break; + } + } + +} diff --git a/2006Redone Server/src/redone/net/packets/impl/BankAll.java b/2006Redone Server/src/com/rebotted/net/packets/impl/BankAll.java similarity index 87% rename from 2006Redone Server/src/redone/net/packets/impl/BankAll.java rename to 2006Redone Server/src/com/rebotted/net/packets/impl/BankAll.java index 8cbe575c..9abe0528 100644 --- a/2006Redone Server/src/redone/net/packets/impl/BankAll.java +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/BankAll.java @@ -1,144 +1,143 @@ -package redone.net.packets.impl; - -import redone.game.content.random.PartyRoom; -import redone.game.items.GameItem; -import redone.game.items.Item; -import redone.game.players.Client; -import redone.game.players.Player; -import redone.net.packets.PacketType; - -/** - * Bank All Items - **/ -public class BankAll implements PacketType { - - @Override - public void processPacket(Client player, int packetType, int packetSize) { - int removeSlot = player.getInStream().readUnsignedWordA(); - int interfaceId = player.getInStream().readUnsignedWord(); - int removeId = player.getInStream().readUnsignedWordA(); - player.endCurrentTask(); - switch (interfaceId) { - // buy x - case 3900: - player.outStream.createFrame(27); - player.xRemoveSlot = removeSlot; - player.xRemoveId = removeId; - player.xInterfaceId = interfaceId; - break; - - // sell x - case 3823: - if(!player.getItemAssistant().playerHasItem(removeId)) { - return; - } - player.outStream.createFrame(27); - player.xRemoveSlot = removeSlot; - player.xRemoveId = removeId; - player.xInterfaceId = interfaceId; - break; - - case 7423: - if (player.storing) { - - return; - } - player.getItemAssistant().bankItem(player.playerItems[removeSlot], - removeSlot, player.playerItemsN[removeSlot]); - player.getItemAssistant().resetItems(7423); - break; - - case 5064: - if(!player.getItemAssistant().playerHasItem(removeId)) { - return; - } - if (player.inPartyRoom) { - PartyRoom.depositItem(player, removeId, player.getItemAssistant() - .itemAmount(player.playerItems[removeSlot])); - break; - } - if (player.inTrade) { - player.getActionSender().sendMessage( - "You can't store items while trading!"); - return; - } - if (Item.itemStackable[removeId]) { - player.getItemAssistant().bankItem(player.playerItems[removeSlot], - removeSlot, player.playerItemsN[removeSlot]); - } else { - player.getItemAssistant().bankItem( - player.playerItems[removeSlot], - removeSlot, - player.getItemAssistant().itemAmount( - player.playerItems[removeSlot])); - } - break; - - case 5382: - player.getItemAssistant().fromBank(player.bankItems[removeSlot], removeSlot, - player.bankItemsN[removeSlot]); - break; - - case 3322: - if (player.duelStatus <= 0) { - if (Item.itemStackable[removeId]) { - player.getTrading().tradeItem(removeId, removeSlot, - player.playerItemsN[removeSlot]); - } else { - player.getTrading().tradeItem(removeId, removeSlot, 28); - } - } else { - if (Item.itemStackable[removeId] || Item.itemIsNote[removeId]) { - player.getDueling().stakeItem(removeId, removeSlot, - player.playerItemsN[removeSlot]); - } else { - player.getDueling().stakeItem(removeId, removeSlot, 28); - } - } - break; - - case 3415: - if (player.duelStatus <= 0) { - if (Item.itemStackable[removeId]) { - for (GameItem item : player.getTrading().offeredItems) { - if (item.id == removeId) { - player.getTrading() - .fromTrade( - removeId, - removeSlot, - player.getTrading().offeredItems - .get(removeSlot).amount); - } - } - } else { - for (GameItem item : player.getTrading().offeredItems) { - if (item.id == removeId) { - player.getTrading().fromTrade(removeId, removeSlot, 28); - } - } - } - } - break; - - case 6669: - if (Item.itemStackable[removeId] || Item.itemIsNote[removeId]) { - for (GameItem item : player.getDueling().stakedItems) { - if (item.id == removeId) { - player.getDueling() - .fromDuel( - removeId, - removeSlot, - player.getDueling().stakedItems - .get(removeSlot).amount); - } - } - - } else { - player.getDueling().fromDuel(removeId, removeSlot, 28); - } - break; - - } - } - -} +package com.rebotted.net.packets.impl; + +import com.rebotted.game.content.random.PartyRoom; +import com.rebotted.game.items.GameItem; +import com.rebotted.game.items.Item; +import com.rebotted.game.players.Player; +import com.rebotted.net.packets.PacketType; + +/** + * Bank All Items + **/ +public class BankAll implements PacketType { + + @Override + public void processPacket(Player player, int packetType, int packetSize) { + int removeSlot = player.getInStream().readUnsignedWordA(); + int interfaceId = player.getInStream().readUnsignedWord(); + int removeId = player.getInStream().readUnsignedWordA(); + player.endCurrentTask(); + switch (interfaceId) { + // buy x + case 3900: + player.outStream.createFrame(27); + player.xRemoveSlot = removeSlot; + player.xRemoveId = removeId; + player.xInterfaceId = interfaceId; + break; + + // sell x + case 3823: + if(!player.getItemAssistant().playerHasItem(removeId)) { + return; + } + player.outStream.createFrame(27); + player.xRemoveSlot = removeSlot; + player.xRemoveId = removeId; + player.xInterfaceId = interfaceId; + break; + + case 7423: + if (player.storing) { + + return; + } + player.getItemAssistant().bankItem(player.playerItems[removeSlot], + removeSlot, player.playerItemsN[removeSlot]); + player.getItemAssistant().resetItems(7423); + break; + + case 5064: + if(!player.getItemAssistant().playerHasItem(removeId)) { + return; + } + if (player.inPartyRoom) { + PartyRoom.depositItem(player, removeId, player.getItemAssistant() + .itemAmount(player.playerItems[removeSlot])); + break; + } + if (player.inTrade) { + player.getPacketSender().sendMessage( + "You can't store items while trading!"); + return; + } + if (Item.itemStackable[removeId]) { + player.getItemAssistant().bankItem(player.playerItems[removeSlot], + removeSlot, player.playerItemsN[removeSlot]); + } else { + player.getItemAssistant().bankItem( + player.playerItems[removeSlot], + removeSlot, + player.getItemAssistant().itemAmount( + player.playerItems[removeSlot])); + } + break; + + case 5382: + player.getItemAssistant().fromBank(player.bankItems[removeSlot], removeSlot, + player.bankItemsN[removeSlot]); + break; + + case 3322: + if (player.duelStatus <= 0) { + if (Item.itemStackable[removeId]) { + player.getTrading().tradeItem(removeId, removeSlot, + player.playerItemsN[removeSlot]); + } else { + player.getTrading().tradeItem(removeId, removeSlot, 28); + } + } else { + if (Item.itemStackable[removeId] || Item.itemIsNote[removeId]) { + player.getDueling().stakeItem(removeId, removeSlot, + player.playerItemsN[removeSlot]); + } else { + player.getDueling().stakeItem(removeId, removeSlot, 28); + } + } + break; + + case 3415: + if (player.duelStatus <= 0) { + if (Item.itemStackable[removeId]) { + for (GameItem item : player.getTrading().offeredItems) { + if (item.id == removeId) { + player.getTrading() + .fromTrade( + removeId, + removeSlot, + player.getTrading().offeredItems + .get(removeSlot).amount); + } + } + } else { + for (GameItem item : player.getTrading().offeredItems) { + if (item.id == removeId) { + player.getTrading().fromTrade(removeId, removeSlot, 28); + } + } + } + } + break; + + case 6669: + if (Item.itemStackable[removeId] || Item.itemIsNote[removeId]) { + for (GameItem item : player.getDueling().stakedItems) { + if (item.id == removeId) { + player.getDueling() + .fromDuel( + removeId, + removeSlot, + player.getDueling().stakedItems + .get(removeSlot).amount); + } + } + + } else { + player.getDueling().fromDuel(removeId, removeSlot, 28); + } + break; + + } + } + +} diff --git a/2006Redone Server/src/redone/net/packets/impl/BankX1.java b/2006Redone Server/src/com/rebotted/net/packets/impl/BankX1.java similarity index 78% rename from 2006Redone Server/src/redone/net/packets/impl/BankX1.java rename to 2006Redone Server/src/com/rebotted/net/packets/impl/BankX1.java index 95db1d27..ea1a895e 100644 --- a/2006Redone Server/src/redone/net/packets/impl/BankX1.java +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/BankX1.java @@ -1,36 +1,36 @@ -package redone.net.packets.impl; - -import redone.game.players.Client; -import redone.net.packets.PacketType; - -/** - * Bank X Items - **/ -public class BankX1 implements PacketType { - - public static final int PART1 = 135; - public static final int PART2 = 208; - public int XremoveSlot, XinterfaceID, XremoveID, Xamount; - - @Override - public void processPacket(Client c, int packetType, int packetSize) { - c.endCurrentTask(); - if (packetType == 135) { - c.xRemoveSlot = c.getInStream().readSignedWordBigEndian(); - c.xInterfaceId = c.getInStream().readUnsignedWordA(); - c.xRemoveId = c.getInStream().readSignedWordBigEndian(); - } - else { - if (c.xInterfaceId == 7423) { - c.getItemAssistant().bankItem(c.xRemoveId, c.xRemoveSlot, Xamount);// Depo 1 - c.getItemAssistant().resetItems(7423); - } - } - if (packetType == PART1) { - synchronized (c) { - c.getOutStream().createFrame(27); - } - } - - } -} +package com.rebotted.net.packets.impl; + +import com.rebotted.game.players.Player; +import com.rebotted.net.packets.PacketType; + +/** + * Bank X Items + **/ +public class BankX1 implements PacketType { + + public static final int PART1 = 135; + public static final int PART2 = 208; + public int XremoveSlot, XinterfaceID, XremoveID, Xamount; + + @Override + public void processPacket(Player c, int packetType, int packetSize) { + c.endCurrentTask(); + if (packetType == 135) { + c.xRemoveSlot = c.getInStream().readSignedWordBigEndian(); + c.xInterfaceId = c.getInStream().readUnsignedWordA(); + c.xRemoveId = c.getInStream().readSignedWordBigEndian(); + } + else { + if (c.xInterfaceId == 7423) { + c.getItemAssistant().bankItem(c.xRemoveId, c.xRemoveSlot, Xamount);// Depo 1 + c.getItemAssistant().resetItems(7423); + } + } + if (packetType == PART1) { + synchronized (c) { + c.getOutStream().createFrame(27); + } + } + + } +} diff --git a/2006Redone Server/src/redone/net/packets/impl/BankX2.java b/2006Redone Server/src/com/rebotted/net/packets/impl/BankX2.java similarity index 84% rename from 2006Redone Server/src/redone/net/packets/impl/BankX2.java rename to 2006Redone Server/src/com/rebotted/net/packets/impl/BankX2.java index 8d15ebdd..a5a16d2a 100644 --- a/2006Redone Server/src/redone/net/packets/impl/BankX2.java +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/BankX2.java @@ -1,74 +1,74 @@ -package redone.net.packets.impl; - -import redone.game.content.random.PartyRoom; -import redone.game.players.Client; -import redone.net.packets.PacketType; - -/** - * Bank X Items - **/ -public class BankX2 implements PacketType { - - @Override - public void processPacket(Client player, int packetType, int packetSize) { - player.endCurrentTask(); - int Xamount = player.getInStream().readDWord(); - if (Xamount < 0) { - Xamount = player.getItemAssistant().getItemAmount(player.xRemoveId); - } - if (Xamount == 0) { - Xamount = 1; - } - switch (player.xInterfaceId) { - case 5064: - if (player.inPartyRoom) { - PartyRoom.depositItem(player, player.xRemoveId, player.getItemAssistant().itemAmount(player.playerItems[player.xRemoveSlot])); - break; - } - if (player.inTrade) { - player.getActionSender().sendMessage("You can't store items while trading!"); - return; - } - player.getItemAssistant().bankItem(player.playerItems[player.xRemoveSlot], player.xRemoveSlot, Xamount); - break; - - case 5382: - player.getItemAssistant().fromBank(player.bankItems[player.xRemoveSlot], player.xRemoveSlot, Xamount); - break; - - case 7423: - if (player.storing) { - return; - } - player.getItemAssistant().bankItem(player.playerItems[player.xRemoveSlot], player.xRemoveSlot, Xamount); - player.getItemAssistant().resetItems(7423); - break; - - case 3322: - if (player.duelStatus <= 0) { - player.getTrading().tradeItem(player.xRemoveId, player.xRemoveSlot, Xamount); - } else { - player.getDueling().stakeItem(player.xRemoveId, player.xRemoveSlot, Xamount); - } - break; - - case 3415: - if (player.duelStatus <= 0) { - player.getTrading().fromTrade(player.xRemoveId, player.xRemoveSlot, Xamount); - } - break; - - case 6669: - player.getDueling().fromDuel(player.xRemoveId, player.xRemoveSlot, Xamount); - break; - - case 3900: - player.getShopAssistant().buyItem(player.xRemoveId, player.xRemoveSlot, Xamount); - break; - - case 3823: - player.getShopAssistant().sellItem(player.xRemoveId, player.xRemoveSlot, Xamount); - break; - } - } -} +package com.rebotted.net.packets.impl; + +import com.rebotted.game.content.random.PartyRoom; +import com.rebotted.game.players.Player; +import com.rebotted.net.packets.PacketType; + +/** + * Bank X Items + **/ +public class BankX2 implements PacketType { + + @Override + public void processPacket(Player player, int packetType, int packetSize) { + player.endCurrentTask(); + int Xamount = player.getInStream().readDWord(); + if (Xamount < 0) { + Xamount = player.getItemAssistant().getItemAmount(player.xRemoveId); + } + if (Xamount == 0) { + Xamount = 1; + } + switch (player.xInterfaceId) { + case 5064: + if (player.inPartyRoom) { + PartyRoom.depositItem(player, player.xRemoveId, player.getItemAssistant().itemAmount(player.playerItems[player.xRemoveSlot])); + break; + } + if (player.inTrade) { + player.getPacketSender().sendMessage("You can't store items while trading!"); + return; + } + player.getItemAssistant().bankItem(player.playerItems[player.xRemoveSlot], player.xRemoveSlot, Xamount); + break; + + case 5382: + player.getItemAssistant().fromBank(player.bankItems[player.xRemoveSlot], player.xRemoveSlot, Xamount); + break; + + case 7423: + if (player.storing) { + return; + } + player.getItemAssistant().bankItem(player.playerItems[player.xRemoveSlot], player.xRemoveSlot, Xamount); + player.getItemAssistant().resetItems(7423); + break; + + case 3322: + if (player.duelStatus <= 0) { + player.getTrading().tradeItem(player.xRemoveId, player.xRemoveSlot, Xamount); + } else { + player.getDueling().stakeItem(player.xRemoveId, player.xRemoveSlot, Xamount); + } + break; + + case 3415: + if (player.duelStatus <= 0) { + player.getTrading().fromTrade(player.xRemoveId, player.xRemoveSlot, Xamount); + } + break; + + case 6669: + player.getDueling().fromDuel(player.xRemoveId, player.xRemoveSlot, Xamount); + break; + + case 3900: + player.getShopAssistant().buyItem(player.xRemoveId, player.xRemoveSlot, Xamount); + break; + + case 3823: + player.getShopAssistant().sellItem(player.xRemoveId, player.xRemoveSlot, Xamount); + break; + } + } +} diff --git a/2006Redone Server/src/com/rebotted/net/packets/impl/ChallengePlayer.java b/2006Redone Server/src/com/rebotted/net/packets/impl/ChallengePlayer.java new file mode 100644 index 00000000..9e4267c9 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/ChallengePlayer.java @@ -0,0 +1,30 @@ +package com.rebotted.net.packets.impl; + +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerHandler; +import com.rebotted.net.packets.PacketType; + +/** + * Challenge Player + **/ +public class ChallengePlayer implements PacketType { + + @Override + public void processPacket(Player c, int packetType, int packetSize) { + switch (packetType) { + case 128: + int answerPlayer = c.getInStream().readUnsignedWord(); + if(PlayerHandler.players[answerPlayer] == null || answerPlayer == c.playerId) + return; + + if (c.duelingArena() || c.duelStatus == 5) { + c.getPacketSender().sendMessage("You can't challenge inside the arena!"); + return; + } + if (c.inDuelArena()) { + c.getDueling().requestDuel(answerPlayer); + } + break; + } + } +} diff --git a/2006Redone Server/src/redone/net/packets/impl/ChangeAppearance.java b/2006Redone Server/src/com/rebotted/net/packets/impl/ChangeAppearance.java similarity index 87% rename from 2006Redone Server/src/redone/net/packets/impl/ChangeAppearance.java rename to 2006Redone Server/src/com/rebotted/net/packets/impl/ChangeAppearance.java index 1bab54c2..7007bd54 100644 --- a/2006Redone Server/src/redone/net/packets/impl/ChangeAppearance.java +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/ChangeAppearance.java @@ -1,91 +1,90 @@ -package redone.net.packets.impl; - -import redone.game.players.Client; -import redone.net.packets.PacketType; - -/** - * Change appearance - **/ - -public class ChangeAppearance implements PacketType { - - private static final int[][] MALE_VALUES = { { 0, 8 }, // head - { 10, 17 }, // jaw - { 18, 25 }, // torso - { 26, 31 }, // arms - { 33, 34 }, // hands - { 36, 40 }, // legs - { 42, 43 }, // feet - }; - - private static final int[][] FEMALE_VALUES = { { 45, 54 }, // head - { -1, -1 }, // jaw - { 56, 60 }, // torso - { 61, 65 }, // arms - { 67, 68 }, // hands - { 70, 77 }, // legs - { 79, 80 }, // feet - }; - - private static final int[][] ALLOWED_COLORS = { { 0, 11 }, // hair color - { 0, 15 }, // torso color - { 0, 15 }, // legs color - { 0, 5 }, // feet color - { 0, 7 } // skin color - }; - - @Override - public void processPacket(final Client client, final int packetType, - final int packetSize) { - final int gender = client.getInStream().readSignedByte(); - - if (gender != 0 && gender != 1) { - return; - } - - final int[] apperances = new int[MALE_VALUES.length]; // apperance's - // value - // check - for (int i = 0; i < apperances.length; i++) { - int value = client.getInStream().readSignedByte(); - if (value < (gender == 0 ? MALE_VALUES[i][0] : FEMALE_VALUES[i][0]) - || value > (gender == 0 ? MALE_VALUES[i][1] - : FEMALE_VALUES[i][1])) { - value = gender == 0 ? MALE_VALUES[i][0] : FEMALE_VALUES[i][0]; - } - apperances[i] = value; - } - - final int[] colors = new int[ALLOWED_COLORS.length]; // color value - // check - for (int i = 0; i < colors.length; i++) { - int value = client.getInStream().readSignedByte(); - if (value < ALLOWED_COLORS[i][0] || value > ALLOWED_COLORS[i][1]) { - value = ALLOWED_COLORS[i][0]; - } - colors[i] = value; - } - - if (client.canChangeAppearance) { - client.playerAppearance[0] = gender; // gender - client.playerAppearance[1] = apperances[0]; // head - client.playerAppearance[2] = apperances[2]; // torso - client.playerAppearance[3] = apperances[3]; // arms - client.playerAppearance[4] = apperances[4]; // hands - client.playerAppearance[5] = apperances[5]; // legs - client.playerAppearance[6] = apperances[6]; // feet - client.playerAppearance[7] = apperances[1]; // beard - client.playerAppearance[8] = colors[0]; // hair colour - client.playerAppearance[9] = colors[1]; // torso colour - client.playerAppearance[10] = colors[2]; // legs colour - client.playerAppearance[11] = colors[3]; // feet colour - client.playerAppearance[12] = colors[4]; // skin colour - - client.endCurrentTask(); - client.getPlayerAssistant().removeAllWindows(); - client.getPlayerAssistant().requestUpdates(); - client.canChangeAppearance = false; - } - } - -} +package com.rebotted.net.packets.impl; + +import com.rebotted.game.players.Player; +import com.rebotted.net.packets.PacketType; + +/** + * Change appearance + **/ + +public class ChangeAppearance implements PacketType { + + private static final int[][] MALE_VALUES = { { 0, 8 }, // head + { 10, 17 }, // jaw + { 18, 25 }, // torso + { 26, 31 }, // arms + { 33, 34 }, // hands + { 36, 40 }, // legs + { 42, 43 }, // feet + }; + + private static final int[][] FEMALE_VALUES = { { 45, 54 }, // head + { -1, -1 }, // jaw + { 56, 60 }, // torso + { 61, 65 }, // arms + { 67, 68 }, // hands + { 70, 77 }, // legs + { 79, 80 }, // feet + }; + + private static final int[][] ALLOWED_COLORS = { { 0, 11 }, // hair color + { 0, 15 }, // torso color + { 0, 15 }, // legs color + { 0, 5 }, // feet color + { 0, 7 } // skin color + }; + + @Override + public void processPacket(final Player client, final int packetType, final int packetSize) { + final int gender = client.getInStream().readSignedByte(); + + if (gender != 0 && gender != 1) { + return; + } + + final int[] apperances = new int[MALE_VALUES.length]; // apperance's + // value + // check + for (int i = 0; i < apperances.length; i++) { + int value = client.getInStream().readSignedByte(); + if (value < (gender == 0 ? MALE_VALUES[i][0] : FEMALE_VALUES[i][0]) + || value > (gender == 0 ? MALE_VALUES[i][1] + : FEMALE_VALUES[i][1])) { + value = gender == 0 ? MALE_VALUES[i][0] : FEMALE_VALUES[i][0]; + } + apperances[i] = value; + } + + final int[] colors = new int[ALLOWED_COLORS.length]; // color value + // check + for (int i = 0; i < colors.length; i++) { + int value = client.getInStream().readSignedByte(); + if (value < ALLOWED_COLORS[i][0] || value > ALLOWED_COLORS[i][1]) { + value = ALLOWED_COLORS[i][0]; + } + colors[i] = value; + } + + if (client.canChangeAppearance) { + client.playerAppearance[0] = gender; // gender + client.playerAppearance[1] = apperances[0]; // head + client.playerAppearance[2] = apperances[2]; // torso + client.playerAppearance[3] = apperances[3]; // arms + client.playerAppearance[4] = apperances[4]; // hands + client.playerAppearance[5] = apperances[5]; // legs + client.playerAppearance[6] = apperances[6]; // feet + client.playerAppearance[7] = apperances[1]; // beard + client.playerAppearance[8] = colors[0]; // hair colour + client.playerAppearance[9] = colors[1]; // torso colour + client.playerAppearance[10] = colors[2]; // legs colour + client.playerAppearance[11] = colors[3]; // feet colour + client.playerAppearance[12] = colors[4]; // skin colour + + client.endCurrentTask(); + client.getPacketSender().closeAllWindows(); + client.getPlayerAssistant().requestUpdates(); + client.canChangeAppearance = false; + } + } + +} diff --git a/2006Redone Server/src/com/rebotted/net/packets/impl/ChangeRegions.java b/2006Redone Server/src/com/rebotted/net/packets/impl/ChangeRegions.java new file mode 100644 index 00000000..da224321 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/ChangeRegions.java @@ -0,0 +1,35 @@ +package com.rebotted.net.packets.impl; + +import com.rebotted.GameConstants; +import com.rebotted.GameEngine; +import com.rebotted.game.content.music.Music; +import com.rebotted.game.globalworldobjects.Doors; +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; +import com.rebotted.net.packets.PacketType; +import com.rebotted.world.GlobalDropsHandler; + +/** + * Change Regions + */ +public class ChangeRegions implements PacketType { + + @Override + public void processPacket(Player c, int packetType, int packetSize) { + if (GameConstants.SOUND && c.musicOn) { + Music.playMusic(c); + } + GameEngine.objectHandler.updateObjects(c);//testing + Doors.getSingleton().load(); + GameEngine.itemHandler.reloadItems(c); + GameEngine.objectManager.loadObjects(c); + GlobalDropsHandler.reset(c); + c.getPlayerAssistant().removeObjects();// testing + c.saveFile = true; + if (c.skullTimer > 0) { + c.isSkulled = true; + c.headIconPk = 0; + c.getPlayerAssistant().requestUpdates(); + } + } +} diff --git a/2006Redone Server/src/redone/net/packets/impl/Chat.java b/2006Redone Server/src/com/rebotted/net/packets/impl/Chat.java similarity index 66% rename from 2006Redone Server/src/redone/net/packets/impl/Chat.java rename to 2006Redone Server/src/com/rebotted/net/packets/impl/Chat.java index 53b7ab35..7f85e619 100644 --- a/2006Redone Server/src/redone/net/packets/impl/Chat.java +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/Chat.java @@ -1,32 +1,31 @@ -package redone.net.packets.impl; - -import redone.Connection; -import redone.game.players.Client; -import redone.game.players.antimacro.AntiSpam; -import redone.net.packets.PacketType; -import redone.util.Misc; - -/** - * Chat - **/ -public class Chat implements PacketType { - - @Override - public void processPacket(Client player, int packetType, int packetSize) { - player.setChatTextEffects(player.getInStream().readUnsignedByteS()); - player.setChatTextColor(player.getInStream().readUnsignedByteS()); - player.setChatTextSize((byte) (player.packetSize - 2)); - player.inStream.readBytes_reverseA(player.getChatText(), player.getChatTextSize(), 0); - ReportHandler.addText(player.playerName, player.getChatText(), packetSize - 2); - String word = Misc.textUnpack(player.getChatText(), player.packetSize - 2).toLowerCase(); - if (AntiSpam.blockedWords(player, word, true) && !Connection.isMuted(player)) { - player.setChatTextUpdateRequired(true); - } - //System.out.println(word); - if (Connection.isMuted(player)) { - player.getActionSender().sendMessage("You are muted and can't speak."); - player.setChatTextUpdateRequired(false); - return; - } - } -} +package com.rebotted.net.packets.impl; + +import com.rebotted.Connection; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.antimacro.AntiSpam; +import com.rebotted.net.packets.PacketType; +import com.rebotted.util.Misc; + +/** + * Chat + **/ +public class Chat implements PacketType { + + @Override + public void processPacket(Player player, int packetType, int packetSize) { + player.setChatTextEffects(player.getInStream().readUnsignedByteS()); + player.setChatTextColor(player.getInStream().readUnsignedByteS()); + player.setChatTextSize((byte) (player.packetSize - 2)); + player.inStream.readBytes_reverseA(player.getChatText(), player.getChatTextSize(), 0); + ReportHandler.addText(player.playerName, player.getChatText(), packetSize - 2); + String word = Misc.textUnpack(player.getChatText(), player.packetSize - 2).toLowerCase(); + if (AntiSpam.blockedWords(player, word, true) && !Connection.isMuted(player)) { + player.setChatTextUpdateRequired(true); + } + if (Connection.isMuted(player)) { + player.getPacketSender().sendMessage("You are muted and can't speak."); + player.setChatTextUpdateRequired(false); + return; + } + } +} diff --git a/2006Redone Server/src/redone/net/packets/impl/ClickItem.java b/2006Redone Server/src/com/rebotted/net/packets/impl/ClickItem.java similarity index 77% rename from 2006Redone Server/src/redone/net/packets/impl/ClickItem.java rename to 2006Redone Server/src/com/rebotted/net/packets/impl/ClickItem.java index 52a71968..63049df2 100644 --- a/2006Redone Server/src/redone/net/packets/impl/ClickItem.java +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/ClickItem.java @@ -1,303 +1,296 @@ -package redone.net.packets.impl; - -import redone.Constants; -import redone.Server; -import redone.game.content.consumables.Beverages; -import redone.game.content.consumables.Kebabs; -import redone.game.content.consumables.Beverages.beverageData; -import redone.game.content.minigames.TreasureTrails; -import redone.game.content.minigames.castlewars.CastleWars; -import redone.game.content.skills.core.Prayer; -import redone.game.content.skills.herblore.Herblore; -import redone.game.items.ItemAssistant; -import redone.game.items.impl.ExperienceLamp; -import redone.game.items.impl.Flowers; -import redone.game.players.Client; -import redone.net.packets.PacketType; -import redone.util.GameLogger; -import redone.util.Misc; - -/** - * Clicking an item, bury bone, eat food etc - **/ -public class ClickItem implements PacketType { - - @Override - public void processPacket(Client player, int packetType, int packetSize) { - player.endCurrentTask(); - player.getInStream().readSignedWordBigEndianA(); - int itemSlot = player.getInStream().readUnsignedWordA(); - int itemId = player.getInStream().readUnsignedWordBigEndian(); - if (itemId != player.playerItems[itemSlot] - 1) { - return; - } - if(!player.getItemAssistant().playerHasItem(itemId, 1)) { - return; - } - if (itemId == 6) { - player.getCannon().placeCannon(); - } - if (player.isBotting) { - player.getActionSender().sendMessage("You can't click items until you confirm you aren't botting."); - player.getActionSender().sendMessage("If you need to you can type ::amibotting, to see if your botting."); - return; - } - String itemName = ItemAssistant.getItemName(itemId).toLowerCase(); - if (player.getPlayerAssistant().isPlayer()) { - GameLogger.writeLog(player.playerName, "clickitem", player.playerName + " clicked item " + itemName + ""); - } - if (!CastleWars.deleteCastleWarsItems(player, itemId)) { - return; - } - if(CastleWars.isInCw(player) && itemId == 4053) { - player.getItemAssistant().deleteItem(4053, player.getItemAssistant().getItemSlot(4053), 1); - //npc id, x, y, height, walk, hp, maxhit, att, def - Server.npcHandler.spawnNpc2(1532, player.absX, player.absY, player.heightLevel, 0, 200, 0, 0, 100); - player.getActionSender().sendMessage("You setup a barricade."); - } else if (!CastleWars.isInCw(player) && itemId == 4053) { - player.getActionSender().sendMessage("You need to be in castlewars to drop a barricade."); - player.getItemAssistant().deleteItem(itemId, player.getItemAssistant().getItemAmount(itemId)); - } - if (itemId >= 5509 && itemId <= 5514) { - int pouch = -1; - int a = itemId; - if (a == 5509) { - pouch = 0; - } - if (a == 5510) { - pouch = 1; - } - if (a == 5512) { - pouch = 2; - } - if (a == 5514) { - pouch = 3; - } - player.getPlayerAssistant().fillPouch(pouch); - return; - } - switch (itemId) { - - case 407: - if (Misc.random(1) == 0) { - player.getItemAssistant().addItem(409, 1); - player.getItemAssistant().deleteItem(407, 1); - } else { - if (Misc.random(1) == 0) { - player.getItemAssistant().addItem(411, 1); - player.getItemAssistant().deleteItem(409, 1); - } else if (Misc.random(1) == 1) { - player.getItemAssistant().addItem(413, 1); - player.getItemAssistant().deleteItem(407, 1); - } - } - break; - - case 2329: - player.getItemAssistant().deleteItem(2329, 1); - player.getItemAssistant().addItem(2313, 1); - break; - - case 550: - player.getPlayerAssistant().showMap(); - break; - - case 583: - Server.trawler.bail(player); - break; - case 585: - Server.trawler.emptyBucket(player); - break; - - case 33: - player.getItemAssistant().deleteItem(itemId, 1); - player.getItemAssistant().addItem(36, 1); - break; - - case 32: - player.getItemAssistant().deleteItem(itemId, 1); - player.getItemAssistant().addItem(38, 1); - break; - - case 594: - player.getItemAssistant().deleteItem(itemId, 1); - player.getItemAssistant().addItem(596, 1); - break; - - case 4550: - player.getItemAssistant().deleteItem(itemId, 1); - player.getItemAssistant().addItem(4548, 1); - break; - - case 4537: - player.getItemAssistant().deleteItem(itemId, 1); - player.getItemAssistant().addItem(4539, 1); - break; - - case 1971: - Kebabs.eat(player, itemSlot); - break; - - case 2528: - case 4447: - ExperienceLamp.rubLamp(player, itemId); - break; - - case 2677: - if (Constants.CLUES_ENABLED) - { - player.getItemAssistant().deleteItem(itemId, 1); - TreasureTrails.addClueReward(player, 0); - } - break; - - case 2678: - if (Constants.CLUES_ENABLED) { - player.getItemAssistant().deleteItem(itemId, 1); - TreasureTrails.addClueReward(player, 1); - } - break; - - case 2679: - if (Constants.CLUES_ENABLED) - { - player.getItemAssistant().deleteItem(itemId, 1); - TreasureTrails.addClueReward(player, 2); - } - break; - - case 299: - new Flowers(player); - player.dialogueAction = 21; - break; - - case 4155:// enchanted gem - player.getDialogueHandler().sendOption4("How many kills do I have left?", - "Who are you?", "Where are you located?", - "How many slayer points do I have?"); - player.dialogueAction = 145; - break; - - case 3691: - player.getItemAssistant().deleteItem(3691, 1); - player.getItemAssistant().addItem(3690, 1); - player.getPlayerAssistant().startTeleport(2661, 3310, 0, "modern"); - break; - - // case 2528: - // ExperienceLamp.showInterface(c); - // break; - - case 5070: - player.getActionSender().sendMessage("You search the nest."); - player.getItemAssistant().addItem(5076, 1); - player.getItemAssistant().deleteItem(itemId, 1); - player.getItemAssistant().addItem(5075, 1); - break; - - case 5071: - player.getActionSender().sendMessage("You search the nest."); - player.getItemAssistant().addItem(5078, 1); - player.getItemAssistant().deleteItem(itemId, 1); - player.getItemAssistant().addItem(5075, 1); - break; - - case 5072: - player.getActionSender().sendMessage("You search the nest."); - player.getItemAssistant().addItem(5077, 1); - player.getItemAssistant().deleteItem(itemId, 1); - player.getItemAssistant().addItem(5075, 1); - break; - - case 5073: - player.getItemAssistant().handleTreeSeeds(itemId); - break; - - case 5074: - player.getItemAssistant().handleRings(itemId); - break; - - case 7413: - player.getItemAssistant().handleNonTreeSeeds(itemId); - break; - - case 2297: - player.getItemAssistant().addItem(2299, 1); - player.getItemAssistant().deleteItem(2297, 1); - break; - - case 2299: - player.getItemAssistant().deleteItem(2299, 1); - break; - - case 2301: - player.getItemAssistant().addItem(2303, 1); - player.getItemAssistant().deleteItem(2301, 1); - break; - - case 2303: - player.getItemAssistant().deleteItem(2303, 1); - break; - - case 2520: - player.forcedChat("Come on Dobbin, we can win the race!"); - player.startAnimation(918); - break; - case 2522: - player.forcedChat("Come on Dobbin, we can win the race!"); - player.startAnimation(919); - break; - case 2524: - player.forcedChat("Hi-ho Silver, and away!"); - player.startAnimation(920); - break; - case 2526: - player.forcedChat("Neahhhyyy! Giddy-up horsey!"); - player.startAnimation(921); - break; - - case 405: - player.getItemAssistant().addCasketRewards(itemId); - break; - - case 433: - player.getDialogueHandler().sendStatement("Visit the city of the white knights."); - player.nextChat = 0; - player.isBanking = false; - break; - - case 2714: - player.getItemAssistant().deleteItem(itemId, 1); - player.getItemAssistant().addItem(995, 450); - player.getItemAssistant().addItem(1639, 1); - player.getItemAssistant().addItem(1635, 1); - player.pirateTreasure = 6; - break; - } - - for (final beverageData b : beverageData.values()) { - if (itemId == b.getBev()) { - Beverages.drinkBeverage(player, itemId, itemSlot); - } - } - - if (player.getFood().isFood(itemId)) { - player.getFood().eat(itemId, itemSlot); - } - if (Prayer.playerBones(player, itemId)) { - Prayer.buryBones(player, itemId, itemSlot); - } - if (player.getPotions().isPotion(itemId)) { - player.getPotions().handlePotion(itemId, itemSlot); - } - if (Herblore.isHerb(itemId)) { - Herblore.handleHerbCleaning(player, itemId, itemSlot); - return; - } - if (itemId == 952) { - player.getBarrows().spadeDigging(); - return; - } - } - -} +package com.rebotted.net.packets.impl; + +import com.rebotted.GameConstants; +import com.rebotted.GameEngine; +import com.rebotted.game.content.consumables.Beverages; +import com.rebotted.game.content.consumables.Kebabs; +import com.rebotted.game.content.consumables.Beverages.beverageData; +import com.rebotted.game.content.minigames.TreasureTrails; +import com.rebotted.game.content.minigames.castlewars.CastleWars; +import com.rebotted.game.content.skills.core.Prayer; +import com.rebotted.game.content.skills.herblore.Herblore; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.items.impl.ExperienceLamp; +import com.rebotted.game.items.impl.Flowers; +import com.rebotted.game.players.Player; +import com.rebotted.net.packets.PacketType; +import com.rebotted.util.GameLogger; +import com.rebotted.util.Misc; + +/** + * Clicking an item, bury bone, eat food etc + **/ +public class ClickItem implements PacketType { + + @Override + public void processPacket(Player player, int packetType, int packetSize) { + player.endCurrentTask(); + player.getInStream().readSignedWordBigEndianA(); + int itemSlot = player.getInStream().readUnsignedWordA(); + int itemId = player.getInStream().readUnsignedWordBigEndian(); + if (itemId != player.playerItems[itemSlot] - 1) { + return; + } + if(!player.getItemAssistant().playerHasItem(itemId, 1)) { + return; + } + if (itemId == 6) { + player.getCannon().placeCannon(); + } + String itemName = ItemAssistant.getItemName(itemId).toLowerCase(); + if (player.getPlayerAssistant().isPlayer()) { + GameLogger.writeLog(player.playerName, "clickitem", player.playerName + " clicked item " + itemName + ""); + } + if (!CastleWars.deleteCastleWarsItems(player, itemId)) { + return; + } + if(CastleWars.isInCw(player) && itemId == 4053) { + player.getItemAssistant().deleteItem(4053, player.getItemAssistant().getItemSlot(4053), 1); + //npc id, x, y, height, walk, hp, maxhit, att, def + GameEngine.npcHandler.spawnNpc2(1532, player.absX, player.absY, player.heightLevel, 0, 200, 0, 0, 100); + player.getPacketSender().sendMessage("You setup a barricade."); + } else if (!CastleWars.isInCw(player) && itemId == 4053) { + player.getPacketSender().sendMessage("You need to be in castlewars to drop a barricade."); + player.getItemAssistant().deleteItem(itemId, player.getItemAssistant().getItemAmount(itemId)); + } + if (itemId >= 5509 && itemId <= 5514) { + int pouch = -1; + int a = itemId; + if (a == 5509) { + pouch = 0; + } + if (a == 5510) { + pouch = 1; + } + if (a == 5512) { + pouch = 2; + } + if (a == 5514) { + pouch = 3; + } + player.getPlayerAssistant().fillPouch(pouch); + return; + } + switch (itemId) { + + case 407: + if (Misc.random(1) == 0) { + player.getItemAssistant().addItem(409, 1); + player.getItemAssistant().deleteItem(407, 1); + } else { + if (Misc.random(1) == 0) { + player.getItemAssistant().addItem(411, 1); + player.getItemAssistant().deleteItem(409, 1); + } else if (Misc.random(1) == 1) { + player.getItemAssistant().addItem(413, 1); + player.getItemAssistant().deleteItem(407, 1); + } + } + break; + + case 2329: + player.getItemAssistant().deleteItem(2329, 1); + player.getItemAssistant().addItem(2313, 1); + break; + + case 550: + player.getPlayerAssistant().showMap(); + break; + + case 583: + GameEngine.trawler.bail(player); + break; + case 585: + GameEngine.trawler.emptyBucket(player); + break; + + case 33: + player.getItemAssistant().deleteItem(itemId, 1); + player.getItemAssistant().addItem(36, 1); + break; + + case 32: + player.getItemAssistant().deleteItem(itemId, 1); + player.getItemAssistant().addItem(38, 1); + break; + + case 594: + player.getItemAssistant().deleteItem(itemId, 1); + player.getItemAssistant().addItem(596, 1); + break; + + case 4550: + player.getItemAssistant().deleteItem(itemId, 1); + player.getItemAssistant().addItem(4548, 1); + break; + + case 4537: + player.getItemAssistant().deleteItem(itemId, 1); + player.getItemAssistant().addItem(4539, 1); + break; + + case 1971: + Kebabs.eat(player, itemSlot); + break; + + case 2528: + case 4447: + ExperienceLamp.rubLamp(player, itemId); + break; + + case 2677: + if (GameConstants.CLUES_ENABLED) { + player.getItemAssistant().deleteItem(itemId, 1); + TreasureTrails.addClueReward(player, 0); + } + break; + + case 2678: + if (GameConstants.CLUES_ENABLED) { + player.getItemAssistant().deleteItem(itemId, 1); + TreasureTrails.addClueReward(player, 1); + } + break; + + case 2679: + if (GameConstants.CLUES_ENABLED) { + player.getItemAssistant().deleteItem(itemId, 1); + TreasureTrails.addClueReward(player, 2); + } + break; + + case 299: + new Flowers(player); + player.dialogueAction = 21; + break; + + case 4155:// enchanted gem + player.getDialogueHandler().sendOption4("How many kills do I have left?", + "Who are you?", "Where are you located?", + "How many slayer points do I have?"); + player.dialogueAction = 145; + break; + + case 3691: + player.getItemAssistant().deleteItem(3691, 1); + player.getItemAssistant().addItem(3690, 1); + player.getPlayerAssistant().startTeleport(2661, 3310, 0, "modern"); + break; + + // case 2528: + // ExperienceLamp.showInterface(c); + // break; + + case 5070: + player.getPacketSender().sendMessage("You search the nest."); + player.getItemAssistant().addItem(5076, 1); + player.getItemAssistant().deleteItem(itemId, 1); + player.getItemAssistant().addItem(5075, 1); + break; + + case 5071: + player.getPacketSender().sendMessage("You search the nest."); + player.getItemAssistant().addItem(5078, 1); + player.getItemAssistant().deleteItem(itemId, 1); + player.getItemAssistant().addItem(5075, 1); + break; + + case 5072: + player.getPacketSender().sendMessage("You search the nest."); + player.getItemAssistant().addItem(5077, 1); + player.getItemAssistant().deleteItem(itemId, 1); + player.getItemAssistant().addItem(5075, 1); + break; + + case 5073: + player.getItemAssistant().handleTreeSeeds(itemId); + break; + + case 5074: + player.getItemAssistant().handleRings(itemId); + break; + + case 7413: + player.getItemAssistant().handleNonTreeSeeds(itemId); + break; + + case 2297: + player.getItemAssistant().addItem(2299, 1); + player.getItemAssistant().deleteItem(2297, 1); + break; + + case 2299: + player.getItemAssistant().deleteItem(2299, 1); + break; + + case 2301: + player.getItemAssistant().addItem(2303, 1); + player.getItemAssistant().deleteItem(2301, 1); + break; + + case 2303: + player.getItemAssistant().deleteItem(2303, 1); + break; + + case 2520: + player.forcedChat("Come on Dobbin, we can win the race!"); + player.startAnimation(918); + break; + case 2522: + player.forcedChat("Come on Dobbin, we can win the race!"); + player.startAnimation(919); + break; + case 2524: + player.forcedChat("Hi-ho Silver, and away!"); + player.startAnimation(920); + break; + case 2526: + player.forcedChat("Neahhhyyy! Giddy-up horsey!"); + player.startAnimation(921); + break; + + case 405: + player.getItemAssistant().addCasketRewards(itemId); + break; + + case 433: + player.getDialogueHandler().sendStatement("Visit the city of the white knights."); + player.nextChat = 0; + player.isBanking = false; + break; + + case 2714: + player.getItemAssistant().deleteItem(itemId, 1); + player.getItemAssistant().addItem(995, 450); + player.getItemAssistant().addItem(1639, 1); + player.getItemAssistant().addItem(1635, 1); + player.pirateTreasure = 6; + break; + } + + for (final beverageData b : beverageData.values()) { + if (itemId == b.getBev()) { + Beverages.drinkBeverage(player, itemId, itemSlot); + } + } + + if (player.getFood().isFood(itemId)) { + player.getFood().eat(itemId, itemSlot); + } + if (Prayer.playerBones(player, itemId)) { + Prayer.buryBones(player, itemId, itemSlot); + } + if (player.getPotions().isPotion(itemId)) { + player.getPotions().handlePotion(itemId, itemSlot); + } + if (Herblore.isHerb(itemId)) { + Herblore.handleHerbCleaning(player, itemId, itemSlot); + return; + } + if (itemId == 952) { + player.getBarrows().spadeDigging(); + return; + } + } + +} diff --git a/2006Redone Server/src/redone/net/packets/impl/ClickNPC.java b/2006Redone Server/src/com/rebotted/net/packets/impl/ClickNPC.java similarity index 88% rename from 2006Redone Server/src/redone/net/packets/impl/ClickNPC.java rename to 2006Redone Server/src/com/rebotted/net/packets/impl/ClickNPC.java index 92a33790..b4b80539 100644 --- a/2006Redone Server/src/redone/net/packets/impl/ClickNPC.java +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/ClickNPC.java @@ -1,364 +1,364 @@ -package redone.net.packets.impl; - -import redone.Constants; -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.content.combat.magic.MagicData; -import redone.game.content.combat.range.RangeData; -import redone.game.content.skills.thieving.Pickpocket; -import redone.game.items.ItemAssistant; -import redone.game.npcs.NpcHandler; -import redone.game.players.Client; -import redone.net.packets.PacketType; - -/** - * Click NPC - */ -public class ClickNPC implements PacketType { - - public static final int ATTACK_NPC = 72, MAGE_NPC = 131, FIRST_CLICK = 155, - SECOND_CLICK = 17, THIRD_CLICK = 21; - - @Override - public void processPacket(final Client client, int packetType, int packetSize) { - client.npcIndex = 0; - client.npcClickIndex = 0; - client.playerIndex = 0; - client.clickNpcType = 0; - client.getPlayerAssistant().resetFollow(); - client.getCombatAssistant().resetPlayerAttack(); - client.getPlayerAssistant().requestUpdates(); - client.endCurrentTask(); - switch (packetType) { - - /** - * Attack npc melee or range - **/ - case ATTACK_NPC: - if (client.tutorialProgress == 24) { - client.getActionSender().chatbox(6180); - client.getDialogueHandler() - .chatboxText( - client, - "While you are fighting you will see a bar over your head. The", - "bar shows how much health you have left. Your opponent will", - "have one too. You will continue to attack the rat until it's dead", - "or you do something else.", - "Sit back and watch"); - client.getActionSender().chatbox(6179); - - } - if (client.tutorialProgress == 33) { - client.getActionSender() - .sendMessage( - "You can't range these chickens you have to mage them!"); - return; - } - if (!client.mageAllowed) { - client.mageAllowed = true; - client.getActionSender().sendMessage("I can't reach that."); - break; - } - client.npcIndex = client.getInStream().readUnsignedWordA(); - if (NpcHandler.npcs[client.npcIndex] == null) { - client.npcIndex = 0; - break; - } - if (NpcHandler.npcs[client.npcIndex].MaxHP == 0) { - client.npcIndex = 0; - break; - } - if (NpcHandler.npcs[client.npcIndex] == null) { - break; - } - if (client.autocastId > 0) { - client.autocasting = true; - } - if (!client.autocasting && client.spellId > 0) { - client.spellId = 0; - } - client.faceUpdate(client.npcIndex); - client.usingMagic = false; - boolean usingBow = false; - boolean usingOtherRangeWeapons = false; - boolean usingArrows = false; - boolean usingCross = client.playerEquipment[client.playerWeapon] == 9185; - if (client.playerEquipment[client.playerWeapon] >= 4214 - && client.playerEquipment[client.playerWeapon] <= 4223) { - usingBow = true; - } - for (int bowId : RangeData.BOWS) { - if (client.playerEquipment[client.playerWeapon] == bowId) { - usingBow = true; - for (int arrowId : RangeData.ARROWS) { - if (client.playerEquipment[client.playerArrows] == arrowId) { - usingArrows = true; - } - } - } - } - for (int otherRangeId : RangeData.OTHER_RANGE_WEAPONS) { - if (client.playerEquipment[client.playerWeapon] == otherRangeId) { - usingOtherRangeWeapons = true; - } - } - if ((usingBow || client.autocasting) - && client.goodDistance(client.getX(), client.getY(), - NpcHandler.npcs[client.npcIndex].getX(), - NpcHandler.npcs[client.npcIndex].getY(), 7)) { - client.stopMovement(); - } - - if (usingOtherRangeWeapons - && client.goodDistance(client.getX(), client.getY(), - NpcHandler.npcs[client.npcIndex].getX(), - NpcHandler.npcs[client.npcIndex].getY(), 4)) { - client.stopMovement(); - } - if (!usingCross && !usingArrows && usingBow - && client.playerEquipment[client.playerWeapon] < 4212 - && client.playerEquipment[client.playerWeapon] > 4223 && !usingCross) { - client.getActionSender().sendMessage( - "You have run out of arrows!"); - break; - } - if (RangeData.correctBowAndArrows(client) < client.playerEquipment[client.playerArrows] - && Constants.CORRECT_ARROWS - && usingBow - && !RangeData.usingCrystalBow(client) - && client.playerEquipment[client.playerWeapon] != 9185) { - client.getActionSender().sendMessage( - "You can't use " - + ItemAssistant.getItemName( - client.playerEquipment[client.playerArrows]) - .toLowerCase() - + "s with a " - + ItemAssistant.getItemName( - client.playerEquipment[client.playerWeapon]) - .toLowerCase() + "."); - client.stopMovement(); - client.getCombatAssistant().resetPlayerAttack(); - return; - } - if (client.playerEquipment[client.playerWeapon] == 9185 - && !client.getCombatAssistant().properBolts()) { - client.getActionSender().sendMessage( - "You must use bolts with a crossbow."); - client.stopMovement(); - client.getCombatAssistant().resetPlayerAttack(); - return; - } - - if (client.followId > 0) { - client.getPlayerAssistant().resetFollow(); - } - if (client.attackTimer <= 0) { - client.getCombatAssistant().attackNpc(client.npcIndex); - client.attackTimer++; - } - - break; - - /** - * Attack npc with magic - **/ - case MAGE_NPC: - if (client.tutorialProgress == 33) { - client.getActionSender().chatbox(6180); - client.getDialogueHandler() - .chatboxText( - client, - "", - "All you need to do is move on to the mainland. Just speak", - "with Terrova and he'll teleport you to Lumbridge Castle.", - "", "You have almost completed the tutorial!"); - client.getActionSender().chatbox(6179); - // c.getDialogues().sendStatement4("You have almost completed the tutorial!", - // "All you need to do is move on to the mainland. Just speak", - // "with Terrova and he'll teleport you to Lumbridge.", ""); - client.tutorialProgress = 34; - client.getActionSender().createArrow(1, 9); - } - if (!client.mageAllowed) { - client.mageAllowed = true; - client.getActionSender().sendMessage("I can't reach that."); - break; - } - // c.usingSpecial = false; - // c.getItems().updateSpecialBar(); - - client.npcIndex = client.getInStream().readSignedWordBigEndianA(); - int castingSpellId = client.getInStream().readSignedWordA(); - client.usingMagic = false; - - if (NpcHandler.npcs[client.npcIndex] == null) { - break; - } - - if (NpcHandler.npcs[client.npcIndex].MaxHP == 0 - || NpcHandler.npcs[client.npcIndex].npcType == 944) { - client.getActionSender().sendMessage( - "You can't attack this npc."); - break; - } - - for (int i = 0; i < MagicData.MAGIC_SPELLS.length; i++) { - if (castingSpellId == MagicData.MAGIC_SPELLS[i][0]) { - client.spellId = i; - client.usingMagic = true; - break; - } - } - - if (client.autocasting) { - client.autocasting = false; - } - - if (client.usingMagic) { - if (client.goodDistance(client.getX(), client.getY(), - NpcHandler.npcs[client.npcIndex].getX(), - NpcHandler.npcs[client.npcIndex].getY(), 6)) { - client.stopMovement(); - } - if (client.attackTimer <= 0) { - client.getCombatAssistant().attackNpc(client.npcIndex); - client.attackTimer++; - } - } - - break; - - case FIRST_CLICK: - client.npcClickIndex = client.inStream.readSignedWordBigEndian(); - client.npcType = NpcHandler.npcs[client.npcClickIndex].npcType; - if (client.goodDistance(NpcHandler.npcs[client.npcClickIndex].getX(), - NpcHandler.npcs[client.npcClickIndex].getY(), client.getX(), - client.getY(), 2)) { - client.turnPlayerTo(NpcHandler.npcs[client.npcClickIndex].getX(), - NpcHandler.npcs[client.npcClickIndex].getY()); - NpcHandler.npcs[client.npcClickIndex].facePlayer(client.playerId); - client.getNpcs().firstClickNpc(client.npcType); - } else { - client.clickNpcType = 1; - CycleEventHandler.getSingleton().addEvent(client, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (client.clickNpcType == 1 - && NpcHandler.npcs[client.npcClickIndex] != null) { - if (client.goodDistance(client.getX(), client.getY(), - NpcHandler.npcs[client.npcClickIndex].getX(), - NpcHandler.npcs[client.npcClickIndex].getY(), 1)) { - client.turnPlayerTo( - NpcHandler.npcs[client.npcClickIndex].getX(), - NpcHandler.npcs[client.npcClickIndex].getY()); - NpcHandler.npcs[client.npcClickIndex] - .facePlayer(client.playerId); - client.getNpcs().firstClickNpc(client.npcType); - container.stop(); - } - } - if (client.clickNpcType == 0 || client.clickNpcType > 1) { - container.stop(); - } - } - - @Override - public void stop() { - client.clickNpcType = 0; - } - }, 1); - } - break; - - case SECOND_CLICK: - client.npcClickIndex = client.inStream.readUnsignedWordBigEndianA(); - client.npcType = NpcHandler.npcs[client.npcClickIndex].npcType; - if (client.goodDistance(NpcHandler.npcs[client.npcClickIndex].getX(), - NpcHandler.npcs[client.npcClickIndex].getY(), client.getX(), - client.getY(), 2)) { - client.turnPlayerTo(NpcHandler.npcs[client.npcClickIndex].getX(), - NpcHandler.npcs[client.npcClickIndex].getY()); - NpcHandler.npcs[client.npcClickIndex].facePlayer(client.playerId); - client.getNpcs().secondClickNpc(client.npcType); - if (Pickpocket.isNPC(client, client.npcType)) { - Pickpocket.attemptPickpocket(client, client.npcType); - return; - } - } else { - client.clickNpcType = 2; - CycleEventHandler.getSingleton().addEvent(client, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (client.clickNpcType == 2 - && NpcHandler.npcs[client.npcClickIndex] != null) { - if (client.goodDistance(client.getX(), client.getY(), - NpcHandler.npcs[client.npcClickIndex].getX(), - NpcHandler.npcs[client.npcClickIndex].getY(), 1)) { - client.turnPlayerTo( - NpcHandler.npcs[client.npcClickIndex].getX(), - NpcHandler.npcs[client.npcClickIndex].getY()); - NpcHandler.npcs[client.npcClickIndex] - .facePlayer(client.playerId); - client.getNpcs().secondClickNpc(client.npcType); - container.stop(); - } - } - if (client.clickNpcType < 2 || client.clickNpcType > 2) { - container.stop(); - } - } - - @Override - public void stop() { - client.clickNpcType = 0; - } - }, 1); - } - break; - - case THIRD_CLICK: - client.npcClickIndex = client.inStream.readSignedWord(); - client.npcType = NpcHandler.npcs[client.npcClickIndex].npcType; - if (client.goodDistance(NpcHandler.npcs[client.npcClickIndex].getX(), - NpcHandler.npcs[client.npcClickIndex].getY(), client.getX(), - client.getY(), 2)) { - client.turnPlayerTo(NpcHandler.npcs[client.npcClickIndex].getX(), - NpcHandler.npcs[client.npcClickIndex].getY()); - NpcHandler.npcs[client.npcClickIndex].facePlayer(client.playerId); - client.getNpcs().thirdClickNpc(client.npcType); - } else { - client.clickNpcType = 3; - CycleEventHandler.getSingleton().addEvent(client, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (client.clickNpcType == 3 - && NpcHandler.npcs[client.npcClickIndex] != null) { - if (client.goodDistance(client.getX(), client.getY(), - NpcHandler.npcs[client.npcClickIndex].getX(), - NpcHandler.npcs[client.npcClickIndex].getY(), 1)) { - client.turnPlayerTo( - NpcHandler.npcs[client.npcClickIndex].getX(), - NpcHandler.npcs[client.npcClickIndex].getY()); - NpcHandler.npcs[client.npcClickIndex] - .facePlayer(client.playerId); - client.getNpcs().thirdClickNpc(client.npcType); - container.stop(); - } - } - if (client.clickNpcType < 3) { - container.stop(); - } - } - - @Override - public void stop() { - client.clickNpcType = 0; - } - }, 1); - } - break; - } - - } -} +package com.rebotted.net.packets.impl; + +import com.rebotted.GameConstants; +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.content.combat.magic.MagicData; +import com.rebotted.game.content.combat.range.RangeData; +import com.rebotted.game.content.skills.thieving.Pickpocket; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.game.players.Player; +import com.rebotted.net.packets.PacketType; + +/** + * Click NPC + */ +public class ClickNPC implements PacketType { + + public static final int ATTACK_NPC = 72, MAGE_NPC = 131, FIRST_CLICK = 155, + SECOND_CLICK = 17, THIRD_CLICK = 21; + + @Override + public void processPacket(final Player client, int packetType, int packetSize) { + client.npcIndex = 0; + client.npcClickIndex = 0; + client.playerIndex = 0; + client.clickNpcType = 0; + client.getPlayerAssistant().resetFollow(); + client.getCombatAssistant().resetPlayerAttack(); + client.getPlayerAssistant().requestUpdates(); + client.endCurrentTask(); + switch (packetType) { + + /** + * Attack npc melee or range + **/ + case ATTACK_NPC: + if (client.tutorialProgress == 24) { + client.getPacketSender().chatbox(6180); + client.getDialogueHandler() + .chatboxText( + client, + "While you are fighting you will see a bar over your head. The", + "bar shows how much health you have left. Your opponent will", + "have one too. You will continue to attack the rat until it's dead", + "or you do something else.", + "Sit back and watch"); + client.getPacketSender().chatbox(6179); + + } + if (client.tutorialProgress == 33) { + client.getPacketSender() + .sendMessage( + "You can't range these chickens you have to mage them!"); + return; + } + if (!client.mageAllowed) { + client.mageAllowed = true; + client.getPacketSender().sendMessage("I can't reach that."); + break; + } + client.npcIndex = client.getInStream().readUnsignedWordA(); + if (NpcHandler.npcs[client.npcIndex] == null) { + client.npcIndex = 0; + break; + } + if (NpcHandler.npcs[client.npcIndex].MaxHP == 0) { + client.npcIndex = 0; + break; + } + if (NpcHandler.npcs[client.npcIndex] == null) { + break; + } + if (client.autocastId > 0) { + client.autocasting = true; + } + if (!client.autocasting && client.spellId > 0) { + client.spellId = 0; + } + client.faceUpdate(client.npcIndex); + client.usingMagic = false; + boolean usingBow = false; + boolean usingOtherRangeWeapons = false; + boolean usingArrows = false; + boolean usingCross = client.playerEquipment[client.playerWeapon] == 9185; + if (client.playerEquipment[client.playerWeapon] >= 4214 + && client.playerEquipment[client.playerWeapon] <= 4223) { + usingBow = true; + } + for (int bowId : RangeData.BOWS) { + if (client.playerEquipment[client.playerWeapon] == bowId) { + usingBow = true; + for (int arrowId : RangeData.ARROWS) { + if (client.playerEquipment[client.playerArrows] == arrowId) { + usingArrows = true; + } + } + } + } + for (int otherRangeId : RangeData.OTHER_RANGE_WEAPONS) { + if (client.playerEquipment[client.playerWeapon] == otherRangeId) { + usingOtherRangeWeapons = true; + } + } + if ((usingBow || client.autocasting) + && client.goodDistance(client.getX(), client.getY(), + NpcHandler.npcs[client.npcIndex].getX(), + NpcHandler.npcs[client.npcIndex].getY(), 7)) { + client.stopMovement(); + } + + if (usingOtherRangeWeapons + && client.goodDistance(client.getX(), client.getY(), + NpcHandler.npcs[client.npcIndex].getX(), + NpcHandler.npcs[client.npcIndex].getY(), 4)) { + client.stopMovement(); + } + if (!usingCross && !usingArrows && usingBow + && client.playerEquipment[client.playerWeapon] < 4212 + && client.playerEquipment[client.playerWeapon] > 4223 && !usingCross) { + client.getPacketSender().sendMessage( + "You have run out of arrows!"); + break; + } + if (RangeData.correctBowAndArrows(client) < client.playerEquipment[client.playerArrows] + && GameConstants.CORRECT_ARROWS + && usingBow + && !RangeData.usingCrystalBow(client) + && client.playerEquipment[client.playerWeapon] != 9185) { + client.getPacketSender().sendMessage( + "You can't use " + + ItemAssistant.getItemName( + client.playerEquipment[client.playerArrows]) + .toLowerCase() + + "s with a " + + ItemAssistant.getItemName( + client.playerEquipment[client.playerWeapon]) + .toLowerCase() + "."); + client.stopMovement(); + client.getCombatAssistant().resetPlayerAttack(); + return; + } + if (client.playerEquipment[client.playerWeapon] == 9185 + && !client.getCombatAssistant().properBolts()) { + client.getPacketSender().sendMessage( + "You must use bolts with a crossbow."); + client.stopMovement(); + client.getCombatAssistant().resetPlayerAttack(); + return; + } + + if (client.followId > 0) { + client.getPlayerAssistant().resetFollow(); + } + if (client.attackTimer <= 0) { + client.getCombatAssistant().attackNpc(client.npcIndex); + client.attackTimer++; + } + + break; + + /** + * Attack npc with magic + **/ + case MAGE_NPC: + if (client.tutorialProgress == 33) { + client.getPacketSender().chatbox(6180); + client.getDialogueHandler() + .chatboxText( + client, + "", + "All you need to do is move on to the mainland. Just speak", + "with Terrova and he'll teleport you to Lumbridge Castle.", + "", "You have almost completed the tutorial!"); + client.getPacketSender().chatbox(6179); + // c.getDialogues().sendStatement4("You have almost completed the tutorial!", + // "All you need to do is move on to the mainland. Just speak", + // "with Terrova and he'll teleport you to Lumbridge.", ""); + client.tutorialProgress = 34; + client.getPacketSender().createArrow(1, 9); + } + if (!client.mageAllowed) { + client.mageAllowed = true; + client.getPacketSender().sendMessage("I can't reach that."); + break; + } + // c.usingSpecial = false; + // c.getItems().updateSpecialBar(); + + client.npcIndex = client.getInStream().readSignedWordBigEndianA(); + int castingSpellId = client.getInStream().readSignedWordA(); + client.usingMagic = false; + + if (NpcHandler.npcs[client.npcIndex] == null) { + break; + } + + if (NpcHandler.npcs[client.npcIndex].MaxHP == 0 + || NpcHandler.npcs[client.npcIndex].npcType == 944) { + client.getPacketSender().sendMessage( + "You can't attack this npc."); + break; + } + + for (int i = 0; i < MagicData.MAGIC_SPELLS.length; i++) { + if (castingSpellId == MagicData.MAGIC_SPELLS[i][0]) { + client.spellId = i; + client.usingMagic = true; + break; + } + } + + if (client.autocasting) { + client.autocasting = false; + } + + if (client.usingMagic) { + if (client.goodDistance(client.getX(), client.getY(), + NpcHandler.npcs[client.npcIndex].getX(), + NpcHandler.npcs[client.npcIndex].getY(), 6)) { + client.stopMovement(); + } + if (client.attackTimer <= 0) { + client.getCombatAssistant().attackNpc(client.npcIndex); + client.attackTimer++; + } + } + + break; + + case FIRST_CLICK: + client.npcClickIndex = client.inStream.readSignedWordBigEndian(); + client.npcType = NpcHandler.npcs[client.npcClickIndex].npcType; + if (client.goodDistance(NpcHandler.npcs[client.npcClickIndex].getX(), + NpcHandler.npcs[client.npcClickIndex].getY(), client.getX(), + client.getY(), 2)) { + client.turnPlayerTo(NpcHandler.npcs[client.npcClickIndex].getX(), + NpcHandler.npcs[client.npcClickIndex].getY()); + NpcHandler.npcs[client.npcClickIndex].facePlayer(client.playerId); + client.getNpcs().firstClickNpc(client.npcType); + } else { + client.clickNpcType = 1; + CycleEventHandler.getSingleton().addEvent(client, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (client.clickNpcType == 1 + && NpcHandler.npcs[client.npcClickIndex] != null) { + if (client.goodDistance(client.getX(), client.getY(), + NpcHandler.npcs[client.npcClickIndex].getX(), + NpcHandler.npcs[client.npcClickIndex].getY(), 1)) { + client.turnPlayerTo( + NpcHandler.npcs[client.npcClickIndex].getX(), + NpcHandler.npcs[client.npcClickIndex].getY()); + NpcHandler.npcs[client.npcClickIndex] + .facePlayer(client.playerId); + client.getNpcs().firstClickNpc(client.npcType); + container.stop(); + } + } + if (client.clickNpcType == 0 || client.clickNpcType > 1) { + container.stop(); + } + } + + @Override + public void stop() { + client.clickNpcType = 0; + } + }, 1); + } + break; + + case SECOND_CLICK: + client.npcClickIndex = client.inStream.readUnsignedWordBigEndianA(); + client.npcType = NpcHandler.npcs[client.npcClickIndex].npcType; + if (client.goodDistance(NpcHandler.npcs[client.npcClickIndex].getX(), + NpcHandler.npcs[client.npcClickIndex].getY(), client.getX(), + client.getY(), 2)) { + client.turnPlayerTo(NpcHandler.npcs[client.npcClickIndex].getX(), + NpcHandler.npcs[client.npcClickIndex].getY()); + NpcHandler.npcs[client.npcClickIndex].facePlayer(client.playerId); + client.getNpcs().secondClickNpc(client.npcType); + if (Pickpocket.isNPC(client, client.npcType)) { + Pickpocket.attemptPickpocket(client, client.npcType); + return; + } + } else { + client.clickNpcType = 2; + CycleEventHandler.getSingleton().addEvent(client, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (client.clickNpcType == 2 + && NpcHandler.npcs[client.npcClickIndex] != null) { + if (client.goodDistance(client.getX(), client.getY(), + NpcHandler.npcs[client.npcClickIndex].getX(), + NpcHandler.npcs[client.npcClickIndex].getY(), 1)) { + client.turnPlayerTo( + NpcHandler.npcs[client.npcClickIndex].getX(), + NpcHandler.npcs[client.npcClickIndex].getY()); + NpcHandler.npcs[client.npcClickIndex] + .facePlayer(client.playerId); + client.getNpcs().secondClickNpc(client.npcType); + container.stop(); + } + } + if (client.clickNpcType < 2 || client.clickNpcType > 2) { + container.stop(); + } + } + + @Override + public void stop() { + client.clickNpcType = 0; + } + }, 1); + } + break; + + case THIRD_CLICK: + client.npcClickIndex = client.inStream.readSignedWord(); + client.npcType = NpcHandler.npcs[client.npcClickIndex].npcType; + if (client.goodDistance(NpcHandler.npcs[client.npcClickIndex].getX(), + NpcHandler.npcs[client.npcClickIndex].getY(), client.getX(), + client.getY(), 2)) { + client.turnPlayerTo(NpcHandler.npcs[client.npcClickIndex].getX(), + NpcHandler.npcs[client.npcClickIndex].getY()); + NpcHandler.npcs[client.npcClickIndex].facePlayer(client.playerId); + client.getNpcs().thirdClickNpc(client.npcType); + } else { + client.clickNpcType = 3; + CycleEventHandler.getSingleton().addEvent(client, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (client.clickNpcType == 3 + && NpcHandler.npcs[client.npcClickIndex] != null) { + if (client.goodDistance(client.getX(), client.getY(), + NpcHandler.npcs[client.npcClickIndex].getX(), + NpcHandler.npcs[client.npcClickIndex].getY(), 1)) { + client.turnPlayerTo( + NpcHandler.npcs[client.npcClickIndex].getX(), + NpcHandler.npcs[client.npcClickIndex].getY()); + NpcHandler.npcs[client.npcClickIndex] + .facePlayer(client.playerId); + client.getNpcs().thirdClickNpc(client.npcType); + container.stop(); + } + } + if (client.clickNpcType < 3) { + container.stop(); + } + } + + @Override + public void stop() { + client.clickNpcType = 0; + } + }, 1); + } + break; + } + + } +} diff --git a/2006Redone Server/src/com/rebotted/net/packets/impl/ClickObject.java b/2006Redone Server/src/com/rebotted/net/packets/impl/ClickObject.java new file mode 100644 index 00000000..8b266228 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/ClickObject.java @@ -0,0 +1,489 @@ +package com.rebotted.net.packets.impl; + +import java.util.function.Consumer; +import com.rebotted.GameEngine; +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.content.minigames.castlewars.CastleWarObjects; +import com.rebotted.game.content.minigames.castlewars.CastleWars; +import com.rebotted.game.content.skills.core.Woodcutting; +import com.rebotted.game.content.skills.thieving.Stalls; +import com.rebotted.game.globalworldobjects.Doors; +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.game.objects.Objects; +import com.rebotted.game.players.Player; +import com.rebotted.net.packets.PacketType; +import com.rebotted.world.clip.Region; + +public class ClickObject implements PacketType { + + public static final int FIRST_CLICK = 132, SECOND_CLICK = 252, + THIRD_CLICK = 70, FOURTH_CLICK = 234; + + public void onObjectReached(Player player, Consumer consumer) { + if (System.currentTimeMillis() - player.clickDelay < 300) + return; + player.clickDelay = System.currentTimeMillis(); + + final int objectX = player.objectX; + final int objectY = player.objectY; + final int objectId = player.objectId; + + Objects object = Region.getObject(objectId, objectX, objectY, player.heightLevel); + if (object == null) { + // Since most content is coded poorly we will have to assume the object is valid + // but we won't know the face direction, so some objects will behave incorrectly + // if the object size is not equal on both axes and the face + // is not set to zero. The proper fix would be when an object is removed or added + // they are added into the region configuration properly so we can retrieve + // the object at runtime. This will suffice for now. + object = new Objects(objectId, objectX, objectY, player.heightLevel, 0, 10, 0); + } + + int[] size = object.getObjectSize(); + + CycleEvent objectWalkToEvent = new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (objectX != player.objectX || objectY != player.objectY || objectId != player.objectId) { + container.stop(); + return; + } + + int x = player.absX; + int y = player.absY; + int xMin = objectX - 1; + int xMax = xMin + size[0] + 1; + int yMin = objectY - 1; + int yMax = yMin + size[1] + 1; + + if (x >= xMin && y >= yMin && x <= xMax && y <= yMax) { + consumer.accept(player); + container.stop(); + } + } + + @Override + public void stop() {} + }; + + player.startCurrentTask(1, objectWalkToEvent); + objectWalkToEvent.execute(player.getCurrentTask()); // cheap hax for instant event execution, since we don't support it + } + + @Override + public void processPacket(final Player player, int packetType, int packetSize) { + player.clickObjectType = player.objectX = player.objectId = player.objectY = 0; + player.getPlayerAssistant().resetFollow(); + player.getCombatAssistant().resetPlayerAttack(); + player.getPlayerAssistant().requestUpdates(); + player.endCurrentTask(); + switch (packetType) { + + case FIRST_CLICK: + player.objectX = player.getInStream().readSignedWordBigEndianA(); + player.objectId = player.getInStream().readUnsignedWord(); + player.objectY = player.getInStream().readUnsignedWordA(); + onObjectReached(player, (p) -> completeObjectClick(p, 1)); + break; + + case SECOND_CLICK: + player.objectId = player.getInStream().readUnsignedWordBigEndianA(); + player.objectY = player.getInStream().readSignedWordBigEndian(); + player.objectX = player.getInStream().readUnsignedWordA(); + onObjectReached(player, (p) -> completeObjectClick(p, 2)); + break; + + case THIRD_CLICK: // 'F' + player.objectX = player.getInStream().readSignedWordBigEndian(); + player.objectY = player.getInStream().readUnsignedWord(); + player.objectId = player.getInStream().readUnsignedWordBigEndianA(); + onObjectReached(player, (p) -> completeObjectClick(p, 3)); + break; + + + case FOURTH_CLICK: + player.objectX = player.getInStream().readSignedWordBigEndianA(); + player.objectId = player.getInStream().readUnsignedWordA(); + player.objectY = player.getInStream().readUnsignedWordBigEndianA(); + onObjectReached(player, (p) -> completeObjectClick(p, 4)); + break; + } + } + + public void completeObjectClick(final Player p, int objectOption) { + p.turnPlayerTo(p.objectX, p.objectY); + + switch (objectOption) { + case 1: + if (p.playerRights == 3 || p.debugMode) { + p.getPacketSender().sendMessage("ObjectId: " + p.objectId + " ObjectX: " + p.objectX + " ObjectY: " + p.objectY + " Objectclick = 1, Xoff: " + (p.getX() - p.objectX) + " Yoff: " + (p.getY() - p.objectY)); + } + + //todo: check if it's a door before fire handle + Doors.getSingleton().handleDoor(p.objectId, p.objectX, p.objectY, p.heightLevel, p); + + /*if (client.performingAction) { + return; + }*/ + + if (Stalls.isObject(p.objectId)) { + Stalls.attemptStall(p, p.objectId, p.objectX, p.objectX); + return; + } + + if (p.teleTimer > 0) { + p.getPacketSender().sendMessage( + "You cannot use objects while teleporting."); + return; + } + if (Math.abs(p.getX() - p.objectX) > 25 || Math.abs(p.getY() - p.objectY) > 25) { + p.resetWalkingQueue(); + break; + } + switch (p.objectId) { + case 1276: + Woodcutting.startWoodcutting(p, 0, p.objectX, p.objectY, p.clickObjectType); + break; + case 1278: + Woodcutting.startWoodcutting(p, 1, p.objectX, p.objectY, p.clickObjectType); + break; + case 1286: + Woodcutting.startWoodcutting(p, 2, p.objectX, p.objectY, p.clickObjectType); + break; + case 1281: + Woodcutting.startWoodcutting(p, 3, p.objectX, p.objectY, p.clickObjectType); + break; + case 1308: + Woodcutting.startWoodcutting(p, 4, p.objectX, p.objectY, p.clickObjectType); + break; + case 5552: + Woodcutting.startWoodcutting(p, 5, p.objectX, p.objectY, p.clickObjectType); + break; + case 1307: + Woodcutting.startWoodcutting(p, 6, p.objectX, p.objectY, p.clickObjectType); + break; + case 1309: + Woodcutting.startWoodcutting(p, 7, p.objectX, p.objectY, p.clickObjectType); + break; + case 1306: + Woodcutting.startWoodcutting(p, 8, p.objectX, p.objectY, p.clickObjectType); + break; + case 5551: + Woodcutting.startWoodcutting(p, 9, p.objectX, p.objectY, p.clickObjectType); + break; + case 5553: + Woodcutting.startWoodcutting(p, 10, p.objectX, p.objectY, p.clickObjectType); + break; + case 3033: + Woodcutting.startWoodcutting(p, 11, p.objectX, p.objectY, p.clickObjectType); + break; + case 3037: + Woodcutting.startWoodcutting(p, 12, p.objectX, p.objectY, p.clickObjectType); + break; + case 1282: + Woodcutting.startWoodcutting(p, 13, p.objectX, p.objectY, p.clickObjectType); + break; + case 1383: + Woodcutting.startWoodcutting(p, 14, p.objectX, p.objectY, p.clickObjectType); + break; + case 2023: + Woodcutting.startWoodcutting(p, 15, p.objectX, p.objectY, p.clickObjectType); + break; + case 1319: + Woodcutting.startWoodcutting(p, 16, p.objectX, p.objectY, p.clickObjectType); + break; + case 1318: + Woodcutting.startWoodcutting(p, 17, p.objectX, p.objectY, p.clickObjectType); + break; + case 1315: + Woodcutting.startWoodcutting(p, 18, p.objectX, p.objectY, p.clickObjectType); + break; + case 1316: + Woodcutting.startWoodcutting(p, 19, p.objectX, p.objectY, p.clickObjectType); + break; + case 1332: + Woodcutting.startWoodcutting(p, 20, p.objectX, p.objectY, p.clickObjectType); + break; + + case 1292: + if (p.spiritTree == false && p.clickedTree == true) { + p.getPacketSender().sendMessage("You have already spawned a tree spirit."); + return; + } + if (p.spiritTree == false && p.clickedTree == false) { + p.getPacketSender().sendMessage("You attempt to chop the tree, and a tree spirit appears."); + NpcHandler.spawnNpc(p, 655, p.getX(), p.getY(), 0, 0, 225, 20, 80, 80, true, false); + p.clickedTree = true; + } else if (p.spiritTree == true) { + Woodcutting.startWoodcutting(p, 21, p.objectX, p.objectY, p.clickObjectType); + } + break; + + case 1294: + case 1293: + case 1317: + p.getPlayerAssistant().spiritTree(); + break; + + case 2164: + case 2165: + GameEngine.trawler.fixNet(p); + break; + + case 4462: + case 4460: + case 4461: + case 4463: + case 4464: + case 4459: + if (!CastleWars.isInCw(p)) { + p.getPacketSender().sendMessage("You have to be in castle wars to use these objects."); + CastleWars.resetPlayer(p); + return; + } + CastleWarObjects.handleObject(p, p.objectId, p.objectX, p.objectY); + break; + + case 2513: + p.getRangersGuild().fireAtTarget(); + break; + + case 8930: + p.fade(1975, 4409, 3); + break; + case 8929: + p.fade(2442, 10147, 0); + break; + + case 1568: + if (p.objectX == 2399 && p.objectY == 3099) { + p.getPacketSender() + .object(9472, 2399, 3099, 0, 10); + } + if (p.objectX == 2400 && p.objectY == 3108) { + p.getPacketSender() + .object(9472, 2400, 3108, 2, 10); + } + break; + + case 4437: + if (p.getItemAssistant().playerHasItem(1265, 1)) { + p.getPacketSender().sendMessage( + "You start to break up the rocks..."); + p.startAnimation(625); + CycleEventHandler.getSingleton().addEvent(p, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + container.stop(); + p.startAnimation(65535); + } + + @Override + public void stop() { + p.getPacketSender().object(-1, + p.objectX, p.objectY, 0, 10); + p.getPacketSender().object(4438, + p.objectX, p.objectY, 0, 10); + p.getPacketSender().sendMessage( + "You break up the rocks."); + } + }, 3); + } + break; + + case 4438: + if (p.getItemAssistant().playerHasItem(1265, 1)) { + p.getPacketSender().sendMessage( + "You start to break up the rocks..."); + p.startAnimation(625); + CycleEventHandler.getSingleton().addEvent(p, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + stop(); + p.startAnimation(65535); + } + + @Override + public void stop() { + p.getPacketSender().object(-1, + p.objectX, p.objectY, 0, 10); + p.getPacketSender().sendMessage( + "You break up the rocks."); + } + }, 3); + } + break; + + case 4448: + if (p.getItemAssistant().playerHasItem(1265, 1)) { + p.getPacketSender().sendMessage( + "You start to mine the wall..."); + p.startAnimation(625); + CycleEventHandler.getSingleton().addEvent(p, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + stop(); + p.startAnimation(65535); + p.getPacketSender().sendMessage( + "You collapse the cave wall."); + } + + @Override + public void stop() { + if ((p.objectX == 2390 || p.objectX == 2393) + && (p.objectY == 9503 || p.objectY == 9500)) { // east + // cave + // side + p.getPacketSender().object(-1, 2391, + 9501, 0, 10); + p.getPacketSender().object(4437, 2391, + 9501, 0, 10); + CastleWars.collapseCave(1); + } + if ((p.objectX == 2399 || p.objectX == 2402) + && (p.objectY == 9511 || p.objectY == 9514)) { // north + // cave + // side + p.getPacketSender().object(-1, 2400, + 9512, 1, 10); + p.getPacketSender().object(4437, 2400, + 9512, 1, 10); + CastleWars.collapseCave(0); + } + if ((p.objectX == 2408 || p.objectX == 2411) + && (p.objectY == 9502 || p.objectY == 9505)) { // west + // cave + // side + p.getPacketSender().object(-1, 2409, + 9503, 0, 10); + p.getPacketSender().object(4437, 2409, + 9503, 0, 10); + CastleWars.collapseCave(3); + } + if ((p.objectX == 2400 || p.objectX == 2403) + && (p.objectY == 9496 || p.objectY == 9493)) { // south + // cave + // side + p.getPacketSender().object(-1, 2401, + 9494, 1, 10); + p.getPacketSender().object(4437, 2401, + 9494, 1, 10); + CastleWars.collapseCave(2); + } + } + }, 3); + } + break; + + case 1733: + if (p.objectX == 3058 && p.objectY == 3376) { + p.getPlayerAssistant().movePlayer(3058, 9776, 0); + } else if (p.objectX == 2603 && p.objectY == 3078) { + } + break; + + case 55: + if (p.objectX == 3061 && p.objectY == 3374) { + p.getPlayerAssistant().movePlayer(3058, 9776, 0); + } + break; + + case 9472: + if (p.objectX == 2399 && p.objectY == 3099) { + p.startAnimation(828); + p.stopMovement(); + p.resetWalkingQueue(); + p.getPlayerAssistant().requestUpdates(); + p.getPacketSender().closeAllWindows(); + CycleEventHandler.getSingleton().addEvent(p, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + container.stop(); + p.startAnimation(65535); + p.getPlayerAssistant().movePlayer(2400, 9507, + 0); + } + + @Override + public void stop() { + + } + }, 1); + } + if (p.objectX == 2400 && p.objectY == 3108) { + p.startAnimation(828); + p.stopMovement(); + p.resetWalkingQueue(); + p.getPlayerAssistant().requestUpdates(); + p.getPacketSender().closeAllWindows(); + CycleEventHandler.getSingleton().addEvent(p, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + stop(); + p.startAnimation(65535); + p.getPlayerAssistant().movePlayer(2399, 9500, 0); + } + + @Override + public void stop() { + + } + }, 1); + } + break; + + case 4387: + CastleWars.addToWaitRoom(p, 1); // saradomin + break; + + case 4388: + CastleWars.addToWaitRoom(p, 2); // zamorak + break; + + case 4408: + CastleWars.addToWaitRoom(p, 3); // guthix + break; + + case 4389: // sara + case 4390: // zammy waiting room portal + CastleWars.leaveWaitingRoom(p); + break; + } + p.getObjects().firstClickObject(p.objectId, p.objectX, p.objectY); + break; + + case 2: + if (p.playerRights == 3) { + p.getPacketSender().sendMessage("ObjectId: " + p.objectId + " ObjectX: " + p.objectX + " ObjectY: " + p.objectY + " Objectclick = 2, Xoff: " + (p.getX() - p.objectX) + " Yoff: " + (p.getY() - p.objectY)); + } + if (Stalls.isObject(p.objectId)) { + Stalls.attemptStall(p, p.objectId, p.objectX, p.objectX); + return; + } + p.getObjects().secondClickObject(p.objectId, p.objectX, p.objectY); + break; + + case 3: // 'F' + if (p.playerRights == 3) { + p.getPacketSender().sendMessage("ObjectId: " + p.objectId + " ObjectX: " + p.objectX + " ObjectY: " + p.objectY + " Objectclick = 3, Xoff: " + (p.getX() - p.objectX) + " Yoff: " + (p.getY() - p.objectY)); + } + + p.getObjects().thirdClickObject(p.objectId, p.objectX, p.objectY); + break; + + + case 4: + if (p.playerRights == 3) { + p.getPacketSender().sendMessage("ObjectId: " + p.objectId + " ObjectX: " + p.objectX + " ObjectY: " + p.objectY + " Objectclick = 4, Xoff: " + (p.getX() - p.objectX) + " Yoff: " + (p.getY() - p.objectY)); + } + + p.getObjects().fourthClickObject(p.objectId, p.objectX, p.objectY); + break; + } + } + + + +} diff --git a/2006Redone Server/src/redone/net/packets/impl/ClickTab.java b/2006Redone Server/src/com/rebotted/net/packets/impl/ClickTab.java similarity index 76% rename from 2006Redone Server/src/redone/net/packets/impl/ClickTab.java rename to 2006Redone Server/src/com/rebotted/net/packets/impl/ClickTab.java index b0753188..8f6b2bfb 100644 --- a/2006Redone Server/src/redone/net/packets/impl/ClickTab.java +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/ClickTab.java @@ -1,149 +1,149 @@ -package redone.net.packets.impl; - -import redone.game.items.ItemAssistant; -import redone.game.players.Client; -import redone.net.packets.PacketType; - -public class ClickTab implements PacketType { - - @Override - public void processPacket(final Client c, int packetType, int packetSize) { - switch (packetSize) { - case 1:// first part. - if (c.tutorialProgress == 0) { // wrench - c.getActionSender().chatbox(6180); - c.getDialogueHandler() - .chatboxText( - c, - "On the side panel you can now see a variety of options from", - "changing your graphic settings and audio and music volume", - "to selecting whether your player should accept help from", - "other players. Don't worry about these too much for now.", - "@blu@Player controls"); - c.getActionSender().chatbox(6179); - c.tutorialProgress = 1; - } else if (c.tutorialProgress == 3) { // backpack - c.getActionSender().chatbox(6180); - c.getDialogueHandler() - .chatboxText( - c, - "You can click on the backpack icon at any time to view the", - "items that you currently have in your inventory. You will see", - "that you now have an axe in your inventory. Use this to get", - "some logs by clicking on one of the trees in the area.", - "Cut down a tree"); - c.getActionSender().createArrow(3099, 3095, c.getH(), 2); - c.getActionSender().chatbox(6179); - } else if (c.tutorialProgress == 4) { // Skills tab - c.getActionSender().chatbox(6180); - c.getDialogueHandler() - .chatboxText( - c, - "Here you will see how good your skills are. As you move your", - "mouse over any of the icons in this panel, the small yellow", - "popup box will show you the exact amount of experience you", - "have and how much is needed to get to the next level.", - "Your skill stats"); - c.tutorialProgress = 5; - c.getActionSender().chatbox(6179); - c.getActionSender().createArrow(1, 2); - } else if (c.tutorialProgress == 9) { // Music tab - c.getActionSender().chatbox(6180); - c.getDialogueHandler() - .chatboxText( - c, - "From this interface you can control the music that is played.", - "As you explore the world, more of the tunes will become", - "unlocked. Once you've examined this menu use the next door", - "to continue. If you need a recap, talk to the Master Chef", - "The music player"); - c.getActionSender().createArrow(3073, 3090, c.getH(), 2); - c.tutorialProgress = 10; - c.getActionSender().chatbox(6179); - } else if (c.tutorialProgress == 10) { // Emotes aNd running - c.getActionSender().chatbox(6180); - c.getDialogueHandler() - .chatboxText( - c, - "For those situations where words don't quite describe how you", - "feel, try an emote. Go ahead, try one out! You might notice", - "that some of the emotes are grey and cannot be used now.", - "As you progress further into the game you'll gain more.", - "Emotes"); - c.getActionSender().chatbox(6179); - } else if (c.tutorialProgress == 12) { // Quest Tab - c.getActionSender().chatbox(6180); - c.getDialogueHandler() - .chatboxText( - c, - "", - "This is your Quest Journal, a list of all the quests in the game.", - "Talk to the Quest Guide again for an explaination.", - "", "Your Quest Journal"); - c.tutorialProgress = 13; - c.getActionSender().chatbox(6179); - } else if (c.tutorialProgress == 21) { // Worn inventory - c.getActionSender().chatbox(6180); - c.getDialogueHandler() - .chatboxText( - c, - "You can see what items you are wearing in the worn inventory", - "to the left of the screen with their combined statistics on the", - "right. Let's add something. Left click your dagger to 'wield' it.", - "", "Worn interface"); - c.getActionSender().chatbox(6179); - c.tutorialProgress = 22; - } else if (c.tutorialProgress == 23) { // Attack syle tabs - c.getActionSender().chatbox(6180); - c.getDialogueHandler() - .chatboxText( - c, - "From this interface you can select the type of attack your", - "character will use. Different monsters have different", - "weaknesses. If you hover your mouse over the buttons, you", - "will see the type of XP you will receive when using each attack.", - "This is your combat interface"); - c.tutorialProgress = 24; - c.getActionSender().chatbox(6179); - c.getItemAssistant() - .sendWeapon( - c.playerEquipment[c.playerWeapon], - ItemAssistant - .getItemName(c.playerEquipment[c.playerWeapon])); - c.getActionSender().createArrow(3111, 9518, c.getH(), 2); - } else if (c.tutorialProgress == 29) { // Prayer - c.getDialogueHandler().sendDialogues(3092, 222); - } else if (c.tutorialProgress == 30) { // friends tab - c.getActionSender().chatbox(6180); - c.getDialogueHandler() - .chatboxText( - c, - "This will be explaing by Brother Brace shortly, but first click", - "on the other flashing face to the right of your screen.", - "", "", "This is your friends list"); - c.getActionSender().setSidebarInterface(9, 5715); - c.getActionSender().flashSideBarIcon(-9); - c.tutorialProgress = 31; - c.getActionSender().chatbox(6179); - } else if (c.tutorialProgress == 31) { // ignores tab - c.getActionSender().chatbox(6180); - c.getDialogueHandler() - .chatboxText( - c, - "The two lists - friends and ignore - can be very helpful for", - "keeping track of when your friends are online or for blocking", - "messages from people you simply don't like. Speak with", - "Brother Brace and he will tell you more.", - "This is your ignore list"); - c.getActionSender().chatbox(6179); - } else if (c.tutorialProgress == 32) { // Final magic tab - c.tutorialProgress = 33; - c.getDialogueHandler().sendDialogues(3108, 946); - } - break; - - } - - } - -} +package com.rebotted.net.packets.impl; + +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.players.Player; +import com.rebotted.net.packets.PacketType; + +public class ClickTab implements PacketType { + + @Override + public void processPacket(final Player c, int packetType, int packetSize) { + switch (packetSize) { + case 1:// first part. + if (c.tutorialProgress == 0) { // wrench + c.getPacketSender().chatbox(6180); + c.getDialogueHandler() + .chatboxText( + c, + "On the side panel you can now see a variety of options from", + "changing your graphic settings and audio and music volume", + "to selecting whether your player should accept help from", + "other players. Don't worry about these too much for now.", + "@blu@Player controls"); + c.getPacketSender().chatbox(6179); + c.tutorialProgress = 1; + } else if (c.tutorialProgress == 3) { // backpack + c.getPacketSender().chatbox(6180); + c.getDialogueHandler() + .chatboxText( + c, + "You can click on the backpack icon at any time to view the", + "items that you currently have in your inventory. You will see", + "that you now have an axe in your inventory. Use this to get", + "some logs by clicking on one of the trees in the area.", + "Cut down a tree"); + c.getPacketSender().createArrow(3099, 3095, c.getH(), 2); + c.getPacketSender().chatbox(6179); + } else if (c.tutorialProgress == 4) { // Skills tab + c.getPacketSender().chatbox(6180); + c.getDialogueHandler() + .chatboxText( + c, + "Here you will see how good your skills are. As you move your", + "mouse over any of the icons in this panel, the small yellow", + "popup box will show you the exact amount of experience you", + "have and how much is needed to get to the next level.", + "Your skill stats"); + c.tutorialProgress = 5; + c.getPacketSender().chatbox(6179); + c.getPacketSender().createArrow(1, 2); + } else if (c.tutorialProgress == 9) { // Music tab + c.getPacketSender().chatbox(6180); + c.getDialogueHandler() + .chatboxText( + c, + "From this interface you can control the music that is played.", + "As you explore the world, more of the tunes will become", + "unlocked. Once you've examined this menu use the next door", + "to continue. If you need a recap, talk to the Master Chef", + "The music player"); + c.getPacketSender().createArrow(3073, 3090, c.getH(), 2); + c.tutorialProgress = 10; + c.getPacketSender().chatbox(6179); + } else if (c.tutorialProgress == 10) { // Emotes aNd running + c.getPacketSender().chatbox(6180); + c.getDialogueHandler() + .chatboxText( + c, + "For those situations where words don't quite describe how you", + "feel, try an emote. Go ahead, try one out! You might notice", + "that some of the emotes are grey and cannot be used now.", + "As you progress further into the game you'll gain more.", + "Emotes"); + c.getPacketSender().chatbox(6179); + } else if (c.tutorialProgress == 12) { // Quest Tab + c.getPacketSender().chatbox(6180); + c.getDialogueHandler() + .chatboxText( + c, + "", + "This is your Quest Journal, a list of all the quests in the game.", + "Talk to the Quest Guide again for an explaination.", + "", "Your Quest Journal"); + c.tutorialProgress = 13; + c.getPacketSender().chatbox(6179); + } else if (c.tutorialProgress == 21) { // Worn inventory + c.getPacketSender().chatbox(6180); + c.getDialogueHandler() + .chatboxText( + c, + "You can see what items you are wearing in the worn inventory", + "to the left of the screen with their combined statistics on the", + "right. Let's add something. Left click your dagger to 'wield' it.", + "", "Worn interface"); + c.getPacketSender().chatbox(6179); + c.tutorialProgress = 22; + } else if (c.tutorialProgress == 23) { // Attack syle tabs + c.getPacketSender().chatbox(6180); + c.getDialogueHandler() + .chatboxText( + c, + "From this interface you can select the type of attack your", + "character will use. Different monsters have different", + "weaknesses. If you hover your mouse over the buttons, you", + "will see the type of XP you will receive when using each attack.", + "This is your combat interface"); + c.tutorialProgress = 24; + c.getPacketSender().chatbox(6179); + c.getItemAssistant() + .sendWeapon( + c.playerEquipment[c.playerWeapon], + ItemAssistant + .getItemName(c.playerEquipment[c.playerWeapon])); + c.getPacketSender().createArrow(3111, 9518, c.getH(), 2); + } else if (c.tutorialProgress == 29) { // Prayer + c.getDialogueHandler().sendDialogues(3092, 222); + } else if (c.tutorialProgress == 30) { // friends tab + c.getPacketSender().chatbox(6180); + c.getDialogueHandler() + .chatboxText( + c, + "This will be explaing by Brother Brace shortly, but first click", + "on the other flashing face to the right of your screen.", + "", "", "This is your friends list"); + c.getPacketSender().setSidebarInterface(9, 5715); + c.getPacketSender().flashSideBarIcon(-9); + c.tutorialProgress = 31; + c.getPacketSender().chatbox(6179); + } else if (c.tutorialProgress == 31) { // ignores tab + c.getPacketSender().chatbox(6180); + c.getDialogueHandler() + .chatboxText( + c, + "The two lists - friends and ignore - can be very helpful for", + "keeping track of when your friends are online or for blocking", + "messages from people you simply don't like. Speak with", + "Brother Brace and he will tell you more.", + "This is your ignore list"); + c.getPacketSender().chatbox(6179); + } else if (c.tutorialProgress == 32) { // Final magic tab + c.tutorialProgress = 33; + c.getDialogueHandler().sendDialogues(3108, 946); + } + break; + + } + + } + +} diff --git a/2006Redone Server/src/redone/net/packets/impl/ClickingButtons.java b/2006Redone Server/src/com/rebotted/net/packets/impl/ClickingButtons.java similarity index 85% rename from 2006Redone Server/src/redone/net/packets/impl/ClickingButtons.java rename to 2006Redone Server/src/com/rebotted/net/packets/impl/ClickingButtons.java index 3abfeffd..aef326e8 100644 --- a/2006Redone Server/src/redone/net/packets/impl/ClickingButtons.java +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/ClickingButtons.java @@ -1,2651 +1,2604 @@ -package redone.net.packets.impl; - -import redone.Constants; -import redone.Server; -import redone.game.content.combat.Specials; -import redone.game.content.combat.magic.CastOnOther; -import redone.game.content.combat.magic.MagicData; -import redone.game.content.combat.magic.MagicTeleports; -import redone.game.content.combat.prayer.ActivatePrayers; -import redone.game.content.music.Music; -import redone.game.content.music.sound.SoundList; -import redone.game.content.quests.QuestAssistant; -import redone.game.content.random.PartyRoom; -import redone.game.content.randomevents.SandwhichLady; -import redone.game.content.skills.cooking.Cooking; -import redone.game.content.skills.cooking.CookingTutorialIsland; -import redone.game.content.skills.crafting.JewelryMaking; -import redone.game.content.skills.crafting.LeatherMaking; -import redone.game.content.skills.crafting.Pottery; -import redone.game.content.skills.crafting.Spinning; -import redone.game.content.skills.crafting.Tanning; -import redone.game.content.skills.crafting.CraftingData.tanningData; -import redone.game.content.skills.fletching.LogCutting; -import redone.game.content.skills.herblore.Herblore; -import redone.game.content.skills.smithing.SilverCrafting; -import redone.game.content.skills.smithing.Smelting; -import redone.game.content.traveling.GnomeGlider; -import redone.game.items.GameItem; -import redone.game.items.ItemAssistant; -import redone.game.items.impl.ExperienceLamp; -import redone.game.items.impl.Flowers; -import redone.game.items.impl.LightSources; -import redone.game.items.impl.Teles; -import redone.game.objects.impl.Climbing; -import redone.game.players.Client; -import redone.game.players.PlayerHandler; -import redone.net.packets.PacketType; -import redone.util.Misc; - -/** - * Clicking most buttons - **/ -public class ClickingButtons implements PacketType { - - @Override - public void processPacket(final Client player, int packetType, int packetSize) { - int actionButtonId = Misc.hexToInt(player.getInStream().buffer, 0, packetSize); - player.getGlassBlowing().handleActionButtin(actionButtonId); - GnomeGlider.flightButtons(player, actionButtonId); - player.getEmoteHandler().startEmote(actionButtonId); - QuestAssistant.questButtons(player, actionButtonId); - LogCutting.handleClick(player, actionButtonId); - Smelting.getBar(player, actionButtonId); - ExperienceLamp.buttons(player, actionButtonId); - Herblore.handleHerbloreButtons(player, actionButtonId); - LeatherMaking.craftLeather(player, actionButtonId); - SandwhichLady.handleOptions(player, actionButtonId); - SilverCrafting.makeSilver(player, actionButtonId, 0); - Climbing.handleLadderButtons(player, actionButtonId); - Specials.specialClicking(player, actionButtonId); - if (player.musicOn == true) { - player.getPlayList().handleButton(actionButtonId); - } - - for (tanningData t : tanningData.values()) { - if (actionButtonId == t.getButtonId(actionButtonId)) { - Tanning.tanHide(player, actionButtonId); - } - } - if (player.isDead) { - return; - } - - if (player.playerRights == 3) { - player.getActionSender().sendMessage( - player.playerName + " - actionbutton: " + actionButtonId); - } - - if (player.isAutoButton(actionButtonId)) { - player.assignAutocast(actionButtonId); - } - - switch (actionButtonId) { - - - case 71074: - if (player.clanId >= 0) { - if (Server.clanChat.clans[player.clanId].owner - .equalsIgnoreCase(player.playerName)) { - Server.clanChat - .sendLootShareMessage( - player.clanId, - "Lootshare has been toggled to " - + (!Server.clanChat.clans[player.clanId].lootshare ? "on" - : "off") - + " by the clan leader."); - Server.clanChat.clans[player.clanId].lootshare = !Server.clanChat.clans[player.clanId].lootshare; - } else - player.getActionSender().sendMessage("Only the owner of the clan has the power to do that."); - } - break; - case 70212: - if (player.clanId > -1) - Server.clanChat.leaveClan(player.playerId, player.clanId); - else - player.getActionSender().sendMessage("You are not in a clan."); - break; - case 62137: - if (player.clanId >= 0) { - player.getActionSender().sendMessage("You are already in a clan."); - break; - } - if (player.getOutStream() != null) { - player.getOutStream().createFrame(187); - player.flushOutStream(); - } - break; - - case 55096: - player.getPlayerAssistant().removeAllWindows(); - player.droppedItem = -1; - break; - - case 55095: - player.getItemAssistant().destroyItem(player.droppedItem); - player.droppedItem = -1; - break; - - case 50235: - MagicTeleports.paddewwaTeleport(player); - break; - - case 50245: - MagicTeleports.senntisenTeleport(player); - break; - - case 50253: - MagicTeleports.kharyllTeleport(player); - break; - - case 51005: - MagicTeleports.lassarTeleport(player); - break; - - case 51013: - MagicTeleports.dareeyakTeleport(player); - break; - - case 51023: - MagicTeleports.carrallangarTeleport(player); - break; - - case 51031: - MagicTeleports.annakarlTeleport(player); - break; - - case 51039: - MagicTeleports.ghorrockTeleport(player); - break; - - case 4140: - MagicTeleports.varrockTeleport(player); - break; - - case 4143: - MagicTeleports.lumbridgeTeleport(player); - break; - - case 4146: - MagicTeleports.faladorTeleport(player); - break; - - case 4150: - MagicTeleports.camelotTeleport(player); - break; - - case 6004: - MagicTeleports.ardougneTeleport(player); - break; - - case 6005: - MagicTeleports.watchTowerTeleport(player); - break; - - case 29031: - MagicTeleports.trollhiemTeleport(player); - break; - - case 72038: - MagicTeleports.apeAtollTeleport(player); - break; - - /** - * End of Modern Teleports - */ - - case 4135: - if (player.inTrade) { - player.getActionSender().sendMessage( - "You can't do this in trade!"); - return; - } - if (player.playerLevel[6] < 15) { - player.getPlayerAssistant() - .sendFrame126( - "You need a magic level of @blu@15 @bla@to cast bones to bananas", - 357); - player.getPlayerAssistant().sendChatInterface(356); - return; - } - if (!player.getItemAssistant().playerHasItem(526, 1)) { - player.getActionSender().sendMessage( - "You don't have any bones!"); - return; - } - if (!player.getItemAssistant().playerHasItem(561, 1) - || !player.getItemAssistant().playerHasItem(555, 2) - || !player.getItemAssistant().playerHasItem(557, 2)) { - player.getPlayerAssistant() - .sendFrame126( - "You do not have the correct runes to cast this spell.", - 357); - player.getPlayerAssistant().sendChatInterface(356); - return; - } - if (System.currentTimeMillis() - player.boneDelay > 2000) { - player.getItemAssistant().deleteItem(561, 1); - player.getItemAssistant().deleteItem(557, 2); - player.getItemAssistant().deleteItem(555, 2); - player.getPlayerAssistant().addSkillXP(40, 6); - player.getPlayerAssistant().refreshSkill(6); - player.startAnimation(722); - player.gfx100(141); - player.getPlayerAssistant().sendFrame106(6); - player.getActionSender().sendSound( - SoundList.BONES_TO_BANNAS, 100, 0); - player.boneDelay = System.currentTimeMillis(); - do { - player.getItemAssistant().deleteItem(526, 1); - player.getItemAssistant().addItem(1963, 1); - } while (player.getItemAssistant().playerHasItem(526, 1)); - } - break; - - case 62005: - if (player.inTrade) { - player.getActionSender().sendMessage( - "You can't do this in trade!"); - return; - } - if (player.playerLevel[6] < 60) { - player.getPlayerAssistant() - .sendFrame126( - "You need a magic level of @blu@60 @blu@ to cast bones to peaches.", - 357); - player.getPlayerAssistant().sendChatInterface(356); - return; - } - if (!player.getItemAssistant().playerHasItem(526, 1)) { - player.getActionSender().sendMessage( - "You don't have any bones!"); - return; - } - if (!player.getItemAssistant().playerHasItem(561, 2) - || !player.getItemAssistant().playerHasItem(555, 4) - || !player.getItemAssistant().playerHasItem(557, 4)) { - player.getPlayerAssistant() - .sendFrame126( - "You do not have the correct runes to cast this spell.", - 357); - player.getPlayerAssistant().sendChatInterface(356); - return; - } - if (System.currentTimeMillis() - player.boneDelay > 2000) { - player.getItemAssistant().deleteItem(561, 2); - player.getItemAssistant().deleteItem(557, 4); - player.getItemAssistant().deleteItem(555, 4); - player.getPlayerAssistant().addSkillXP(40, 6); - player.getPlayerAssistant().refreshSkill(6); - player.startAnimation(722); - player.gfx100(311); - player.getPlayerAssistant().sendFrame106(6); - player.boneDelay = System.currentTimeMillis(); - do { - player.getItemAssistant().deleteItem(526, 1); - player.getItemAssistant().addItem(6883, 1); - } while (player.getItemAssistant().playerHasItem(526, 1)); - } - break; - - case 14067: - player.canChangeAppearance = false; - break; - - case 34185: - case 34193: - case 34189: - if (player.clickedSpinning == true) { - Spinning.getAmount(player, 1); - } - break; - - case 34184: - case 34188: - case 34192: - if (player.clickedSpinning == true) { - Spinning.getAmount(player, 5); - } - break; - - case 34183: - case 34187: - case 34191: - if (player.clickedSpinning == true) { - Spinning.getAmount(player, 10); - } - break; - - case 34182: - case 34186: - case 34190: - if (player.clickedSpinning == true) { - Spinning.getAmount(player, 28); - } - break; - - /* - * Item on interface 5 - */ - // item 1 - case 34245: - if (player.showedUnfire == true) { - Pottery.makeUnfire(player, 1787, 6.3, 1, 1); - } - if (player.showedFire == true) { - Pottery.makeFire(player, 1787, 1931, 1, 6.3, 1); - } - break; - case 34244: - if (player.showedUnfire == true) { - Pottery.makeUnfire(player, 1787, 6.3, 1, 5); - } - if (player.showedFire == true) { - Pottery.makeFire(player, 1787, 1931, 1, 6.3, 5); - } - break; - case 34243: - if (player.showedUnfire == true) { - Pottery.makeUnfire(player, 1787, 6.3, 1, 10); - } - if (player.showedFire == true) { - Pottery.makeFire(player, 1787, 1931, 1, 6.3, 10); - } - break; - case 34242: - if (player.showedUnfire == true) { - Pottery.makeUnfire(player, 1787, 6.3, 1, 28); - } - if (player.showedFire == true) { - Pottery.makeFire(player, 1787, 1931, 1, 6.3, 28); - } - break; - // item 2 - case 34249: - if (player.showedUnfire == true) { - Pottery.makeUnfire(player, 1789, 15, 7, 1); - } - if (player.showedFire == true) { - Pottery.makeFire(player, 1789, 2313, 7, 10, 1); - } - break; - case 34248: - if (player.showedUnfire == true) { - Pottery.makeUnfire(player, 1789, 15, 7, 5); - } - if (player.showedFire == true) { - Pottery.makeFire(player, 1789, 2313, 7, 10, 5); - } - break; - case 34247: - if (player.showedUnfire == true) { - Pottery.makeUnfire(player, 1789, 15, 7, 10); - } - if (player.showedFire == true) { - Pottery.makeFire(player, 1789, 2313, 7, 10, 10); - } - break; - case 34246: - if (player.showedUnfire == true) { - Pottery.makeUnfire(player, 1789, 15, 7, 28); - } - if (player.showedFire == true) { - Pottery.makeFire(player, 1789, 2313, 7, 10, 28); - } - break; - // item 3 - case 34253: - if (player.showedUnfire == true) { - Pottery.makeUnfire(player, 1791, 18, 8, 1); - } - if (player.showedFire == true) { - Pottery.makeFire(player, 1791, 1923, 8, 15, 1); - } - break; - case 34252: - if (player.showedUnfire == true) { - Pottery.makeUnfire(player, 1791, 18, 8, 5); - } - if (player.showedFire == true) { - Pottery.makeFire(player, 1791, 1923, 8, 15, 5); - } - break; - case 34251: - if (player.showedUnfire == true) { - Pottery.makeUnfire(player, 1791, 18, 8, 10); - } - if (player.showedFire == true) { - Pottery.makeFire(player, 1791, 1923, 8, 15, 10); - } - break; - case 34250: - if (player.showedUnfire == true) { - Pottery.makeUnfire(player, 1791, 18, 8, 28); - } - if (player.showedFire == true) { - Pottery.makeFire(player, 1791, 1923, 8, 15, 28); - } - break; - - case 23132: - player.getPlayerAssistant().closeAllWindows(); - player.isBotting = false; - player.getActionSender().sendMessage("You are not botting."); - break; - - case 9118: - player.getPlayerAssistant().closeAllWindows(); - break; - - case 49022: - CastOnOther.teleOtherLocation(player, player.teleotherType, false); - break; - - case 49024: - CastOnOther.teleOtherLocation(player, player.teleotherType, true); - break; - - case 8100: - player.playerAppearance[7] = 11; // beard 11: long - player.getPlayerAssistant().requestUpdates(); - break; - - case 8101: - player.playerAppearance[7] = 10; // beard 10: goatee - player.getPlayerAssistant().requestUpdates(); - break; - - case 8102: - player.playerAppearance[7] = 13; // beard 13: mustache - player.getPlayerAssistant().requestUpdates(); - break; - - case 8103: - player.playerAppearance[7] = 15; // beard 15: Chin strap - player.getPlayerAssistant().requestUpdates(); - break; - - case 8104: - player.playerAppearance[7] = 17; // beard 17: Barbarian beard? - player.getPlayerAssistant().requestUpdates(); - break; - - case 8105: - player.playerAppearance[7] = 12; // beard 12: Egyptian beard? - player.getPlayerAssistant().requestUpdates(); - break; - - case 8106: - player.playerAppearance[7] = 14; // beard 14: Clean shaven - player.getPlayerAssistant().requestUpdates(); - break; - - case 8107: - player.playerAppearance[7] = 16; // beard 16: Goatee + Chin - // strap - player.getPlayerAssistant().requestUpdates(); - break; - - case 8088: - player.playerAppearance[8] = 0; // hair/beard color: Dark-brown - player.getPlayerAssistant().requestUpdates(); - break; - - case 8089: - player.playerAppearance[8] = 1; // hair/beard color: White - player.getPlayerAssistant().requestUpdates(); - break; - - case 8090: - player.playerAppearance[8] = 2; // hair/beard color: Gray - player.getPlayerAssistant().requestUpdates(); - break; - - case 8091: - player.playerAppearance[8] = 3; // hair/beard color: Black - player.getPlayerAssistant().requestUpdates(); - break; - - case 8092: - player.playerAppearance[8] = 4; // hair/beard color: Orange - player.getPlayerAssistant().requestUpdates(); - break; - - case 8093: - player.playerAppearance[8] = 5; // hair/beard color: Blonde - player.getPlayerAssistant().requestUpdates(); - break; - - case 8094: - player.playerAppearance[8] = 6; // hair/beard color: Light-brown - player.getPlayerAssistant().requestUpdates(); - break; - - case 8095: - player.playerAppearance[8] = 7; // hair/beard color: Brown - player.getPlayerAssistant().requestUpdates(); - break; - - case 8096: - player.playerAppearance[8] = 8; // hair/beard color: Cyan - player.getPlayerAssistant().requestUpdates(); - break; - - case 8097: - player.playerAppearance[8] = 9; // hair/beard color: Green - player.getPlayerAssistant().requestUpdates(); - break; - - case 8098: - player.playerAppearance[8] = 10; // hair/beard color: Red - player.getPlayerAssistant().requestUpdates(); - break; - - case 8099: - player.playerAppearance[8] = 11; // hair/beard color: Pink - player.getPlayerAssistant().requestUpdates(); - break; - - case 10229: - player.playerAppearance[1] = 0; // 0: Bald - player.getPlayerAssistant().requestUpdates(); - break; - - case 10230: - player.playerAppearance[1] = 1; // 1: Dreadlocks - player.getPlayerAssistant().requestUpdates(); - break; - - case 10231: - player.playerAppearance[1] = 2; // 2: Long hair - player.getPlayerAssistant().requestUpdates(); - break; - - case 10232: - player.playerAppearance[1] = 3; // 3: Medium hair - player.getPlayerAssistant().requestUpdates(); - break; - - case 10233: - player.playerAppearance[1] = 4; // 4: Monk - player.getPlayerAssistant().requestUpdates(); - break; - - case 10234: - player.playerAppearance[1] = 5; // 5: Comb-over - player.getPlayerAssistant().requestUpdates(); - break; - - case 10235: - player.playerAppearance[1] = 6; // 6: Close-cropped - player.getPlayerAssistant().requestUpdates(); - break; - - case 10236: - player.playerAppearance[1] = 7; // Wild spikes - player.getPlayerAssistant().requestUpdates(); - break; - - case 10237: - player.playerAppearance[1] = 8; // Spikes - player.getPlayerAssistant().requestUpdates(); - break; - - case 10217: - player.playerAppearance[8] = 0; // hair/beard color: Dark-brown - player.getPlayerAssistant().requestUpdates(); - break; - - case 10218: - player.playerAppearance[8] = 1; // hair/beard color: White - player.getPlayerAssistant().requestUpdates(); - break; - - case 10219: - player.playerAppearance[8] = 2; // hair/beard color: Gray - player.getPlayerAssistant().requestUpdates(); - break; - - case 10220: - player.playerAppearance[8] = 3; // hair/beard color: Black - player.getPlayerAssistant().requestUpdates(); - break; - - case 10221: - player.playerAppearance[8] = 4; // hair/beard color: Orange - player.getPlayerAssistant().requestUpdates(); - break; - - case 10222: - player.playerAppearance[8] = 5; // hair/beard color: Blonde - player.getPlayerAssistant().requestUpdates(); - break; - - case 10223: - player.playerAppearance[8] = 6; // hair/beard color: Light-brown - player.getPlayerAssistant().requestUpdates(); - break; - - case 10224: - player.playerAppearance[8] = 7; // hair/beard color: Brown - player.getPlayerAssistant().requestUpdates(); - break; - - case 10225: - player.playerAppearance[8] = 8; // hair/beard color: Cyan - player.getPlayerAssistant().requestUpdates(); - break; - - case 10226: - player.playerAppearance[8] = 9; // hair/beard color: Green - player.getPlayerAssistant().requestUpdates(); - break; - - case 10227: - player.playerAppearance[8] = 10; // hair/beard color: Red - player.getPlayerAssistant().requestUpdates(); - break; - - case 10228: - player.playerAppearance[8] = 11; // hair/beard color: Pink - player.getPlayerAssistant().requestUpdates(); - break; - - case 10193: - player.getItemAssistant().deleteItem(995, 2000); - player.getPlayerAssistant().removeAllWindows(); - break; - - case 8065: - player.getItemAssistant().deleteItem(995, 2000); - player.getPlayerAssistant().removeAllWindows(); - break; - /** End of Hairdresser buttons */ - - case 3166: - case 3165: - case 3164: - case 3163: - Music.playMusic(player); - player.musicOn = true; - break; - - case 3162: - if (player.musicOn == true) { - player.musicOn = false; - } else { - player.getActionSender().sendMessage("Your music is already turned off."); - } - break; - - case 8198: - PartyRoom.accept(player); - break; - - case 53152: - if (player.tutorialProgress < 36) { - CookingTutorialIsland.getAmount(player, 1); - } else { - Cooking.cookItem(player, player.cookingItem, 1, - player.cookingObject); - } - break; - - case 53151: - if (player.tutorialProgress < 36) { - CookingTutorialIsland.getAmount(player, 5); - } else { - Cooking.cookItem(player, player.cookingItem, 5, - player.cookingObject); - } - break; - - case 53150: - if (player.tutorialProgress < 36) { - CookingTutorialIsland.getAmount(player, 10); - } else { - Cooking.cookItem(player, player.cookingItem, 10, player.cookingObject); - } - break; - - case 53149: - if (player.tutorialProgress < 36) { - CookingTutorialIsland.getAmount(player, 28); - } else { - Cooking.cookItem(player, player.cookingItem, 28, - player.cookingObject); - } - break; - - case 58074: - player.getBankPin().closeBankPin(); - break; - - case 58073: - if (player.hasBankpin && !player.requestPinDelete) { - player.requestPinDelete = true; - player.getBankPin().dateRequested(); - player.getBankPin().dateExpired(); - player.getDialogueHandler().sendDialogues(1017, 1); - player.getActionSender() - .sendMessage( - "[Notice] A PIN delete has been requested. Your PIN will be deleted in " - + player.getBankPin().recovery_Delay - + " days."); - player.getActionSender().sendMessage( - "To cancel this change just type in the correct PIN."); - } else { - player.getActionSender() - .sendMessage( - "[Notice] Your PIN is already pending deletion. Please wait the entire 2 days."); - player.getPlayerAssistant().closeAllWindows(); - } - break; - - case 58025: - case 58026: - case 58027: - case 58028: - case 58029: - case 58030: - case 58031: - case 58032: - case 58033: - case 58034: - player.getBankPin().bankPinEnter(actionButtonId); - break; - - case 58230: - if (!player.hasBankpin) { - player.getBankPin().openPin(); - } else if (player.hasBankpin && player.enterdBankpin) { - player.getBankPin().resetBankPin(); - player.getActionSender().sendMessage( - "Your PIN has been deleted as requested."); - } else { - player.getActionSender() - .sendMessage( - "Please enter your Bank Pin before requesting a delete."); - player.getActionSender() - .sendMessage( - "You can do this by simply opening your bank. This is to verify it's really you."); - player.getPlayerAssistant().closeAllWindows(); - } - break; - - case 34142: // tab 1 - player.getSkillInterfaces().menuCompilation(1); - break; - - case 34119: // tab 2 - player.getSkillInterfaces().menuCompilation(2); - break; - - case 34120: // tab 3 - player.getSkillInterfaces().menuCompilation(3); - break; - - case 34123: // tab 4 - player.getSkillInterfaces().menuCompilation(4); - break; - - case 34133: // tab 5 - player.getSkillInterfaces().menuCompilation(5); - break; - - case 34136: // tab 6 - player.getSkillInterfaces().menuCompilation(6); - break; - - case 34139: // tab 7 - player.getSkillInterfaces().menuCompilation(7); - break; - - case 34155: // tab 8 - player.getSkillInterfaces().menuCompilation(8); - break; - - case 34158: // tab 9 - player.getSkillInterfaces().menuCompilation(9); - break; - - case 34161: // tab 10 - player.getSkillInterfaces().menuCompilation(10); - break; - - case 59199: // tab 11 - player.getSkillInterfaces().menuCompilation(11); - break; - - case 59202: // tab 12 - player.getSkillInterfaces().menuCompilation(12); - break; - case 59203: // tab 13 - player.getSkillInterfaces().menuCompilation(13); - break; - - case 33206: // attack - player.getSkillInterfaces().attackComplex(1); - player.getSkillInterfaces().selected = 0; - break; - case 33209: // strength - player.getSkillInterfaces().strengthComplex(1); - player.getSkillInterfaces().selected = 1; - break; - case 33212: // Defence - player.getSkillInterfaces().defenceComplex(1); - player.getSkillInterfaces().selected = 2; - break; - case 33215: // range - player.getSkillInterfaces().rangedComplex(1); - player.getSkillInterfaces().selected = 3; - break; - case 33218: // prayer - player.getSkillInterfaces().prayerComplex(1); - player.getSkillInterfaces().selected = 4; - break; - case 33221: // mage - player.getSkillInterfaces().magicComplex(1); - player.getSkillInterfaces().selected = 5; - break; - case 33224: // runecrafting - player.getSkillInterfaces().runecraftingComplex(1); - player.getSkillInterfaces().selected = 6; - break; - case 33207: // hp - player.getSkillInterfaces().hitpointsComplex(1); - player.getSkillInterfaces().selected = 7; - break; - case 33210: // agility - player.getSkillInterfaces().agilityComplex(1); - player.getSkillInterfaces().selected = 8; - break; - case 33213: // herblore - player.getSkillInterfaces().herbloreComplex(1); - player.getSkillInterfaces().selected = 9; - break; - case 33216: // theiving - player.getSkillInterfaces().thievingComplex(1); - player.getSkillInterfaces().selected = 10; - break; - case 33219: // crafting - player.getSkillInterfaces().craftingComplex(1); - player.getSkillInterfaces().selected = 11; - break; - case 33222: // fletching - player.getSkillInterfaces().fletchingComplex(1); - player.getSkillInterfaces().selected = 12; - break; - case 47130:// slayer - player.getSkillInterfaces().slayerComplex(1); - player.getSkillInterfaces().selected = 13; - break; - case 33208: // mining - player.getSkillInterfaces().miningComplex(1); - player.getSkillInterfaces().selected = 14; - break; - case 33211: // smithing - player.getSkillInterfaces().smithingComplex(1); - player.getSkillInterfaces().selected = 15; - break; - case 33214: // fishing - player.getSkillInterfaces().fishingComplex(1); - player.getSkillInterfaces().selected = 16; - break; - case 33217: // cooking - player.getSkillInterfaces().cookingComplex(1); - player.getSkillInterfaces().selected = 17; - break; - case 33220: // firemaking - player.getSkillInterfaces().firemakingComplex(1); - player.getSkillInterfaces().selected = 18; - break; - case 33223: // woodcut - player.getSkillInterfaces().woodcuttingComplex(1); - player.getSkillInterfaces().selected = 19; - break; - case 54104: // farming - player.getSkillInterfaces().farmingComplex(1); - player.getSkillInterfaces().selected = 20; - break; - - case 151: - if (player.autoRet == 1) { - player.autoRet = 0; - player.getPlayerAssistant().sendConfig(172, 1); - } else { - player.getActionSender().sendMessage("Your auto retaliate is already turned off."); - } - break; - - case 150: - if (player.autoRet == 0) { - player.autoRet = 1; - player.getPlayerAssistant().sendConfig(172, 0); - } else { - player.getActionSender().sendMessage("Your auto retaliate is already turned on."); - } - break; - - // 1st tele option - case 9190: - if (player.dialogueAction == 10) { - player.getPlayerAssistant().spellTeleport(2845, 4832, 0); - player.dialogueAction = -1; - } else if (player.dialogueAction == 11) { - player.getPlayerAssistant().spellTeleport(2786, 4839, 0); - player.dialogueAction = -1; - } else if (player.dialogueAction == 12) { - player.getPlayerAssistant().spellTeleport(2398, 4841, 0); - player.dialogueAction = -1; - } - break; - - // mining - 3046,9779,0 - // smithing - 3079,9502,0 - - // 2nd tele option - case 9191: - if (player.dialogueAction == 10) { - player.getPlayerAssistant().spellTeleport(2796, 4818, 0); - player.dialogueAction = -1; - } else if (player.dialogueAction == 11) { - player.getPlayerAssistant().spellTeleport(2527, 4833, 0); - player.dialogueAction = -1; - } else if (player.dialogueAction == 12) { - player.getPlayerAssistant().spellTeleport(2464, 4834, 0); - player.dialogueAction = -1; - } - break; - // 3rd tele option - - case 9192: - if (player.dialogueAction == 10) { - player.getPlayerAssistant().spellTeleport(2713, 4836, 0); - player.dialogueAction = -1; - } else if (player.dialogueAction == 11) { - player.getPlayerAssistant().spellTeleport(2162, 4833, 0); - player.dialogueAction = -1; - } else if (player.dialogueAction == 12) { - player.getPlayerAssistant().spellTeleport(2207, 4836, 0); - player.dialogueAction = -1; - } - break; - // 4th tele option - case 9193: - if (player.dialogueAction == 10) { - player.getPlayerAssistant().spellTeleport(2660, 4839, 0); - player.dialogueAction = -1; - } - break; - // 5th tele option - case 9194: - if (player.dialogueAction == 10 || player.dialogueAction == 11) { - player.dialogueId++; - player.getDialogueHandler().sendDialogues(player.dialogueId, 0); - } else if (player.dialogueAction == 12) { - player.dialogueId = 17; - player.getDialogueHandler().sendDialogues(player.dialogueId, 0); - } - break; - - case 58253: - // c.getPA().showInterface(15106); - player.getItemAssistant().writeBonus(); - break; - - case 59004: - player.getPlayerAssistant().removeAllWindows(); - break; - - case 1093: - case 1094: - case 1097: - if (player.autocastId > 0) { - player.getPlayerAssistant().resetAutocast(); - } else { - if (player.playerMagicBook == 1) { - if (player.playerEquipment[player.playerWeapon] == 4675) { - player.getActionSender().setSidebarInterface(0, - 1689); - } else { - player.getActionSender() - .sendMessage( - "You can't autocast ancients without an ancient staff."); - } - } else if (player.playerMagicBook == 0) { - if (player.playerEquipment[player.playerWeapon] == 4170) { - player.getActionSender().setSidebarInterface(0, - 12050); - } else { - player.getActionSender().setSidebarInterface(0, - 1829); - } - } - - } - break; - - case 9167: - switch (player.dialogueAction) { - case 63: - player.getDialogueHandler().sendDialogues(166, player.npcType); - return; - case 64: - player.getDialogueHandler().sendDialogues(173, player.npcType); - return; - case 60: - player.getDialogueHandler().sendDialogues(277, player.npcType); - return; - case 61: - player.getDialogueHandler().sendDialogues(295, player.npcType); - return; - case 129: - player.getDialogueHandler().sendDialogues(231, player.npcType); - return; - case 58: - player.getDialogueHandler().sendDialogues(540, player.npcType); - return; - case 68: - player.getDialogueHandler().sendDialogues(39, player.npcType); - return; - case 124: - player.getDialogueHandler().sendDialogues(194, player.npcType); - return; - case 230: - player.getDialogueHandler().sendDialogues(1053, player.npcType); - return; - case 251: - player.getPlayerAssistant().openUpBank(); - player.nextChat = 0; - return; - case 144: - player.getDialogueHandler().sendDialogues(1314, player.npcType); - return; - case 502: - player.getDialogueHandler().sendDialogues(1026, player.npcType); - return; - case 1301: // first option haircut. - player.getDialogueHandler().sendDialogues(1302, 598); - return; - case 53: - if (player.objectId == 1293 || player.objectId == 1317) { - player.getPlayerAssistant().startTeleport(2542, 3169, 0, "modern"); - } else { - player.getActionSender().sendMessage("You can't teleport there, because you are already there!"); - player.getPlayerAssistant().closeAllWindows(); - } - return; - case 159: - player.getDialogueHandler().sendDialogues(3161, player.npcType); - return; - case 167: - player.getDialogueHandler().sendDialogues(1343, player.npcType); - return; - case 222: - player.getDialogueHandler().sendDialogues(911, player.npcType); - player.dialogueAction = -1; - return; - case 182: - player.getDialogueHandler().sendNpcChat1("No, I was hoping someone could help me find it though.", player.talkingNpc, "Squire"); - player.nextChat = 0; - return; - case 188: - player.getDialogueHandler().sendDialogues(3129, 945); - return; - case 185: - player.getDialogueHandler().sendDialogues(629, player.npcType); - return; - case 186: // Shield of Arrav - player.getDialogueHandler().sendDialogues(629, player.npcType); - return; - } - player.dialogueAction = 0; - player.getPlayerAssistant().removeAllWindows(); - break; - - case 9168: - switch (player.dialogueAction) { - case 63: - player.getDialogueHandler().sendDialogues(167, player.npcType); - return; - case 64: - player.getDialogueHandler().sendDialogues(174, player.npcType); - return; - case 60: - player.getDialogueHandler().sendDialogues(279, player.npcType); - return; - case 61: - player.getDialogueHandler().sendDialogues(297, player.npcType); - return; - case 124: - player.getDialogueHandler().sendDialogues(192, player.npcType); - return; - case 126: - player.getDialogueHandler().sendDialogues(203, player.npcType); - return; - case 58: - player.getDialogueHandler().sendDialogues(538, player.npcType); - return; - case 68: - player.getDialogueHandler().sendDialogues(40, player.npcType); - return; - case 230: - player.getDialogueHandler().sendDialogues(1049, player.npcType); - break; - case 251: - player.getBankPin().bankPinSettings(); - player.nextChat = 0; - return; - case 502: - player.getDialogueHandler().sendDialogues(1022, player.npcType); - return; - case 1301: - player.getDialogueHandler().sendDialogues(1308, 598); - return; - case 144: - player.getDialogueHandler().sendDialogues(1315, player.npcType); - return; - case 53: - if (player.objectId == 1294 || player.objectId == 1317) { - player.getPlayerAssistant().startTeleport(2461, 3444, 0, - "modern"); - } else { - player.getActionSender().sendMessage("You can't teleport there, because you are already there!"); - player.getPlayerAssistant().closeAllWindows(); - } - return; - case 159: - player.getDialogueHandler().sendDialogues(3195, player.npcType); - return; - case 167: - player.getDialogueHandler().sendDialogues(1344, player.npcType); - return; - case 222: - player.getDialogueHandler().sendDialogues(912, player.npcType); - player.dialogueAction = -1; - return; - case 182: - player.getDialogueHandler().sendDialogues(615, player.npcType); - return; - case 188: - player.getDialogueHandler().sendDialogues(3130, 945); - return; - case 185: - player.getDialogueHandler().sendDialogues(628, player.npcType); - return; - case 186: // Shield of Arrav - player.getDialogueHandler().sendDialogues(628, player.npcType); - return; - } - player.dialogueAction = 0; - player.getPlayerAssistant().removeAllWindows(); - break; - - case 9169: - switch (player.dialogueAction) { - case 63: - player.getDialogueHandler().sendDialogues(168, player.npcType); - return; - case 64: - player.getDialogueHandler().sendDialogues(175, player.npcType); - return; - case 60: - player.getDialogueHandler().sendDialogues(278, player.npcType); - return; - case 61: - player.getDialogueHandler().sendDialogues(296, player.npcType); - return; - case 53: - if (player.objectId == 1294 || player.objectId == 1293) { - player.getPlayerAssistant().startTeleport(3179, 3507, 0, - "modern"); - } else { - player.getActionSender().sendMessage("You can't teleport there, because you are already there!"); - player.getPlayerAssistant().closeAllWindows(); - } - return; - case 129: - player.getDialogueHandler().sendDialogues(232, player.npcType); - return; - case 126: - player.getDialogueHandler().sendDialogues(204, player.npcType); - return; - case 144: - player.getDialogueHandler().sendDialogues(1316, player.npcType); - return; - case 124: - player.getDialogueHandler().sendDialogues(3193, 741); - return; - case 58: - player.getDialogueHandler().sendDialogues(539, player.npcType); - return; - case 68: - player.getDialogueHandler().sendDialogues(41, player.npcType); - return; - case 230: - player.getDialogueHandler().sendDialogues(1050, player.npcType); - break; - case 251: - player.getDialogueHandler().sendDialogues(1015, 494); - return; - case 502: - player.getDialogueHandler().sendDialogues(1025, player.npcType); - return; - case 1301: - player.getDialogueHandler().sendDialogues(1306, 598); - return; - case 222: - player.getDialogueHandler().sendDialogues(913, player.npcType); - player.dialogueAction = -1; - return; - case 167: - player.getDialogueHandler().sendDialogues(1342, player.npcType); - return; - case 159: - player.getDialogueHandler().sendDialogues(3160, player.npcType); - return; - case 182: - player.getDialogueHandler().sendNpcChat1("Of course he is angry...", player.talkingNpc, "Squire"); - player.nextChat = 0; - return; - case 188: - player.getDialogueHandler().sendDialogues(3131, 945); - return; - case 185: - player.getDialogueHandler().sendDialogues(630, player.npcType); - return; - case 186: // Shield of Arrav - player.getDialogueHandler().sendDialogues(691, player.npcType); - return; - } - player.dialogueAction = 0; - player.getPlayerAssistant().removeAllWindows(); - break; - - case 9157:// barrows tele to tunnels - if (player.dialogueAction == 1) { - int r = 4; - // int r = Misc.random(3); - - switch (r) { - case 0: - player.getPlayerAssistant().movePlayer(3534, 9677, 0); - break; - - case 1: - player.getPlayerAssistant().movePlayer(3534, 9712, 0); - break; - - case 2: - player.getPlayerAssistant().movePlayer(3568, 9712, 0); - break; - - case 3: - player.getPlayerAssistant().movePlayer(3568, 9677, 0); - break; - case 4: - player.getPlayerAssistant().movePlayer(3551, 9694, 0); - break; - } - } else if (player.dialogueAction == 2) { - player.getPlayerAssistant().movePlayer(2507, 4717, 0); - } else if (player.dialogueAction == 7) { - player.getPlayerAssistant().startTeleport(3088, 3933, 0, "modern"); - player.getActionSender().sendMessage( - "NOTE: You are now in the wilderness..."); - } else if (player.dialogueAction == 8) { - player.getPlayerAssistant().resetBarrows(); - player.getActionSender().sendMessage( - "Your barrows have been reset."); - } else if (player.dialogueAction == 29) { - player.getDialogueHandler().sendDialogues(480, player.npcType); - return; - } else if (player.dialogueAction == 30) { - player.getDialogueHandler().sendDialogues(488, player.npcType); - return; - } else if (player.dialogueAction == 34) { - player.getDialogueHandler().sendDialogues(361, player.npcType); - return; - } else if (player.dialogueAction == 50) { - player.getPlayerAssistant().startTeleport(2898, 3562, 0, - "modern"); - Teles.necklaces(player); - return; - } else if (player.dialogueAction == 55) { - player.getDialogueHandler().sendDialogues(91, player.npcType); - return; - } else if (player.dialogueAction == 56) { - player.getDialogueHandler().sendDialogues(96, player.npcType); - return; - } else if (player.dialogueAction == 57) { - player.getDialogueHandler().sendDialogues(57, player.npcType); - return; - } else if (player.dialogueAction == 3222) { - player.getBarrows().checkCoffins(); - player.getPlayerAssistant().removeAllWindows(); - return; - } else if (player.dialogueAction == 3218) { - player.getDialogueHandler().sendDialogues(3219, 0); - return; - } else if (player.dialogueAction == 65) { - player.getDialogueHandler().sendDialogues(179, player.npcType); - return; - } else if (player.dialogueAction == 66) { - player.getDialogueHandler().sendDialogues(182, player.npcType); - return; - } else if (player.dialogueAction == 67) { - player.getDialogueHandler().sendDialogues(36, player.npcType); - return; - } else if (player.dialogueAction == 68) { - player.getDialogueHandler().sendDialogues(587, player.npcType); - return; - } else if (player.dialogueAction == 70) { - player.getDialogueHandler().sendDialogues(1009, player.npcType); - return; - } else if (player.dialogueAction == 71) { - player.getDialogueHandler().sendDialogues(556, player.npcType); - return; - } else if (player.dialogueAction == 72) { - player.getDialogueHandler().sendDialogues(563, player.npcType); - return; - } else if (player.dialogueAction == 73) { - player.getDialogueHandler().sendDialogues(579, player.npcType); - return; - } else if (player.dialogueAction == 74) { - player.getDialogueHandler().sendDialogues(534, player.npcType); - return; - } else if (player.dialogueAction == 90) { - player.getDialogueHandler().sendDialogues(12, player.npcType); - return; - } else if (player.dialogueAction == 91) { - player.getDialogueHandler().sendDialogues(16, player.npcType); - return; - } else if (player.dialogueAction == 92) { - player.getDialogueHandler().sendDialogues(9, player.npcType); - return; - } else if (player.dialogueAction == 93) { - player.getDialogueHandler().sendDialogues(23, player.npcType); - return; - } else if (player.dialogueAction == 118) { - player.getDialogueHandler().sendDialogues(394, player.npcType); - return; - } else if (player.dialogueAction == 119) { - player.getDialogueHandler().sendDialogues(399, player.npcType); - return; - } else if (player.dialogueAction == 120) { - player.getDialogueHandler().sendDialogues(406, player.npcType); - return; - } else if (player.dialogueAction == 121) { - player.getDialogueHandler().sendDialogues(438, player.npcType); - return; - } else if (player.dialogueAction == 125) { - player.getDialogueHandler().sendDialogues(154, player.npcType); - return; - } else if (player.dialogueAction == 127) { - player.getDialogueHandler().sendDialogues(210, player.npcType); - return; - } else if (player.dialogueAction == 128) { - player.getDialogueHandler().sendDialogues(223, player.npcType); - return; - } else if (player.dialogueAction == 130) { - player.getDialogueHandler().sendDialogues(594, player.npcType); - return; - } else if (player.dialogueAction == 132) { - player.getDialogueHandler().sendDialogues(1013, player.npcType); - } else if (player.dialogueAction == 133) { - player.getDialogueHandler().sendDialogues(1016, player.npcType); - } else if (player.dialogueAction == 140) { - player.getDialogueHandler().sendDialogues(198, player.npcType); - return; - } else if (player.dialogueAction == 141) { - player.getDialogueHandler().sendDialogues(1020, player.npcType); - return; - } else if (player.dialogueAction == 143) { - player.getDialogueHandler().sendDialogues(1232, player.npcType); - return; - } else if (player.dialogueAction == 168) { - player.getDialogueHandler().sendDialogues(476, player.npcType); - return; - } else if (player.dialogueAction == 508) { - player.getDialogueHandler().sendDialogues(1026, player.npcType); - return; - } else if (player.dialogueAction == 855) { - player.getItemAssistant().removeAllItems(); - } else if (player.dialogueAction == 146) { - player.getDialogueHandler().sendDialogues(1325, player.npcType); - return; - } else if (player.dialogueAction == 177) { - player.getDialogueHandler().sendDialogues(1376, player.npcType); - return; - } else if (player.dialogueAction == 151) { - player.getDialogueHandler().sendDialogues(2998, player.npcType); - return; - } else if (player.dialogueAction == 152) { - player.getDialogueHandler().sendDialogues(3121, player.npcType); - return; - } else if (player.dialogueAction == 154) { - player.getDialogueHandler().sendDialogues(3137, player.npcType); - return; - } else if (player.dialogueAction == 155) { - player.getDialogueHandler().sendDialogues(3142, player.npcType); - return; - } else if (player.dialogueAction == 156) { - player.getDialogueHandler().sendDialogues(3147, player.npcType); - return; - } else if (player.dialogueAction == 157) { - player.getDialogueHandler().sendDialogues(3153, player.npcType); - return; - } else if (player.dialogueAction == 158) { - player.getDialogueHandler().sendDialogues(3156, player.npcType); - return; - } else if (player.dialogueAction == 3111) { - player.getDialogueHandler().sendDialogues(3112, 946); - return; - } else if (player.dialogueAction == 162) { - player.getDialogueHandler().sendDialogues(3170, player.npcType); - return; - } else if (player.dialogueAction == 163) { - player.getDialogueHandler().sendDialogues(3129, player.npcType); - return; - } else if (player.dialogueAction == 164) { - player.getDialogueHandler().sendDialogues(3177, 510); - return; - } else if (player.dialogueAction == 165) { - player.getDialogueHandler().sendDialogues(3182, 510); - return; - } else if (player.dialogueAction == 166) { - player.getDialogueHandler().sendDialogues(1340, player.npcType); - return; - } else if (player.dialogueAction == 170) { - player.getDialogueHandler().sendDialogues(1348, player.npcType); - return; - } else if (player.dialogueAction == 171) { - player.getDialogueHandler().sendDialogues(1352, player.npcType); - return; - } else if (player.dialogueAction == 172) { - player.getDialogueHandler().sendDialogues(1355, player.npcType); - return; - } else if (player.dialogueAction == 173) { - player.getDialogueHandler().sendDialogues(1360, player.npcType); - return; - } else if (player.dialogueAction == 175) { - player.getDialogueHandler().sendDialogues(3192, player.npcType); - return; - } else if (player.dialogueAction == 176) { - player.getDialogueHandler().sendDialogues(1372, player.npcType); - return; - } else if (player.dialogueAction == 178) { - player.getDialogueHandler().sendDialogues(3186, player.npcType); - return; - } else if (player.dialogueAction == 179) { - player.getDialogueHandler().sendDialogues(1380, player.npcType); - return; - } else if (player.dialogueAction == 180) { - player.getDialogueHandler().sendDialogues(3197, player.npcType); - return; - } else if (player.dialogueAction == 181) { - player.getDialogueHandler().sendDialogues(612, player.npcType); - return; - } else if (player.dialogueAction == 183) { - player.getDialogueHandler().sendDialogues(620, player.npcType); - return; - } else if (player.dialogueAction == 184) { - player.getDialogueHandler().sendDialogues(624, player.npcType); - return; - } else if (player.dialogueAction == 3204) { - player.getItemAssistant().deleteItem(1929, 1); - player.getItemAssistant().deleteItem(1933, 1); - player.getItemAssistant().addItem(1953, 1); - player.getItemAssistant().addItem(1925, 1); - player.getItemAssistant().addItem(1931, 1); - player.getPlayerAssistant().addSkillXP(1, player.playerCooking); - player.nextChat = 0; - } else if (player.dialogueAction == 3205) { - player.getItemAssistant().deleteItem(1933, 1); - player.getItemAssistant().deleteItem(1937, 1); - player.getItemAssistant().addItem(1953, 1); - player.getItemAssistant().addItem(1925, 1); - player.getItemAssistant().addItem(1935, 1); - player.getPlayerAssistant().addSkillXP(1, player.playerCooking); - player.nextChat = 0; - } else if (player.dialogueAction == 189) { - player.getDialogueHandler().sendDialogues(3210, player.npcType); - return; - } else if (player.dialogueAction == 161) {// rod - player.getPlayerAssistant().startTeleport(3313, 3234, 0, "modern"); - Teles.necklaces(player); - return; - } - player.dialogueAction = 0; - player.getPlayerAssistant().removeAllWindows(); - break; - - case 9158: - if (player.dialogueAction == 8) { - player.getPlayerAssistant().fixAllBarrows(); - } else if (player.dialogueAction == 29) { - player.getDialogueHandler().sendDialogues(481, player.npcType); - return; - } else if (player.dialogueAction == 34) { - player.getDialogueHandler().sendDialogues(359, player.npcType); - return; - } else if (player.dialogueAction == 50) { - player.getPlayerAssistant().startTeleport(2545, 3569, 0, "modern"); - Teles.necklaces(player); - return; - } else if (player.dialogueAction == 55) { - player.getDialogueHandler().sendDialogues(92, player.npcType); - return; - } else if (player.dialogueAction == 56) { - player.getDialogueHandler().sendDialogues(95, player.npcType); - return; - } else if (player.dialogueAction == 74) { - player.getDialogueHandler().sendDialogues(535, player.npcType); - return; - } else if (player.dialogueAction == 57) { - player.getDialogueHandler().sendDialogues(58, player.npcType); - return; - } else if (player.dialogueAction == 62) { - player.getDialogueHandler().sendDialogues(309, player.npcType); - return; - } else if (player.dialogueAction == 67) { - player.getDialogueHandler().sendDialogues(35, player.npcType); - return; - } else if (player.dialogueAction == 68) { - player.getDialogueHandler().sendDialogues(586, player.npcType); - return; - } else if (player.dialogueAction == 71) { - player.getDialogueHandler().sendDialogues(582, player.npcType); - return; - } else if (player.dialogueAction == 72) { - player.getDialogueHandler().sendDialogues(562, player.npcType); - return; - } else if (player.dialogueAction == 73) { - player.getDialogueHandler().sendDialogues(580, player.npcType); - return; - } else if (player.dialogueAction == 90) { - player.getDialogueHandler().sendDialogues(13, player.npcType); - return; - } else if (player.dialogueAction == 91) { - player.getDialogueHandler().sendDialogues(17, player.npcType); - return; - } else if (player.dialogueAction == 118) { - player.getDialogueHandler().sendDialogues(392, player.npcType); - return; - } else if (player.dialogueAction == 119) { - player.getDialogueHandler().sendDialogues(404, player.npcType); - return; - } else if (player.dialogueAction == 120) { - player.getDialogueHandler().sendDialogues(404, player.npcType); - return; - } else if (player.dialogueAction == 121) { - player.getDialogueHandler().sendDialogues(437, player.npcType); - return; - } else if (player.dialogueAction == 125) { - player.getDialogueHandler().sendDialogues(163, player.npcType); - return; - } else if (player.dialogueAction == 130) { - player.getDialogueHandler().sendDialogues(593, player.npcType); - return; - } else if (player.dialogueAction == 131) { - JewelryMaking.mouldInterface(player); - return; - } else if (player.dialogueAction == 141) { - player.getDialogueHandler().sendDialogues(1021, player.npcType); - return; - } else if (player.dialogueAction == 143) { - player.getDialogueHandler().sendDialogues(1233, player.npcType); - return; - } else if (player.dialogueAction == 161) {// rod - player.getPlayerAssistant().startTeleport(2441, 3090, 0, "modern"); - Teles.necklaces(player); - return; - } else if (player.dialogueAction == 508) { - player.getDialogueHandler().sendDialogues(1025, player.npcType); - return; - } else if (player.dialogueAction == 146) { - player.getDialogueHandler().sendDialogues(1324, player.npcType); - return; - } else if (player.dialogueAction == 177) { - player.getDialogueHandler().sendDialogues(1375, player.npcType); - return; - } else if (player.dialogueAction == 21) { - Flowers.harvestFlower(player, Flowers.lastObject); - player.getPlayerAssistant().removeAllWindows(); - } else if (player.dialogueAction == 3111) { - player.getDialogueHandler().sendDialogues(3117, 946); - return; - } else if (player.dialogueAction == 152) { - player.getDialogueHandler().sendDialogues(3120, player.npcType); - return; - } else if (player.dialogueAction == 151) { - player.getDialogueHandler().sendDialogues(3000, player.npcType); - player.getPlayerAssistant().removeAllWindows(); - return; - } else if (player.dialogueAction == 154) { - player.getDialogueHandler().sendDialogues(3135, player.npcType); - return; - } else if (player.dialogueAction == 155) { - player.getDialogueHandler().sendDialogues(3141, player.npcType); - return; - } else if (player.dialogueAction == 156) { - player.getDialogueHandler().sendDialogues(3146, player.npcType); - return; - } else if (player.dialogueAction == 157) { - player.getDialogueHandler().sendDialogues(3152, player.npcType); - return; - } else if (player.dialogueAction == 158) { - player.getDialogueHandler().sendDialogues(3157, player.npcType); - return; - } else if (player.dialogueAction == 162) { - player.getDialogueHandler().sendDialogues(3169, player.npcType); - return; - } else if (player.dialogueAction == 163) { - player.getDialogueHandler().sendDialogues(3131, player.npcType); - return; - } else if (player.dialogueAction == 164) { - player.getDialogueHandler().sendDialogues(3175, player.npcType); - return; - } else if (player.dialogueAction == 165) { - player.getDialogueHandler().sendDialogues(3180, player.npcType); - return; - } else if (player.dialogueAction == 166) { - player.getDialogueHandler().sendDialogues(1339, player.npcType); - return; - } else if (player.dialogueAction == 168) { - player.getDialogueHandler().sendDialogues(1337, player.npcType); - return; - } else if (player.dialogueAction == 170) { - player.getDialogueHandler().sendDialogues(1347, player.npcType); - return; - } else if (player.dialogueAction == 171) { - player.getDialogueHandler().sendDialogues(1351, player.npcType); - return; - } else if (player.dialogueAction == 172) { - player.getDialogueHandler().sendDialogues(1356, player.npcType); - return; - } else if (player.dialogueAction == 173) { - player.getDialogueHandler().sendDialogues(1361, player.npcType); - return; - } else if (player.dialogueAction == 175) { - player.getDialogueHandler().sendDialogues(3191, player.npcType); - return; - } else if (player.dialogueAction == 176) { - player.getDialogueHandler().sendDialogues(1371, player.npcType); - return; - } else if (player.dialogueAction == 178) { - player.getDialogueHandler().sendDialogues(3185, player.npcType); - return; - } else if (player.dialogueAction == 179) { - player.getDialogueHandler().sendDialogues(1381, player.npcType); - return; - } else if (player.dialogueAction == 180) { - player.getDialogueHandler().sendDialogues(3199, player.npcType); - return; - } else if (player.dialogueAction == 181) { - player.getDialogueHandler().sendNpcChat1("No I like my job as Squire, I just need some help.", player.talkingNpc, "Squire"); - player.nextChat = 0; - return; - } else if (player.dialogueAction == 183) { - player.getDialogueHandler().sendPlayerChat1("Well I hope you find it soon."); - player.nextChat = 0; - return; - } else if (player.dialogueAction == 184) { - player.getDialogueHandler().sendPlayerChat1("No, I've got lots of mining work to do."); - player.nextChat = 0; - return; - } else if (player.dialogueAction == 3204) { - player.getItemAssistant().deleteItem(1929, 1); - player.getItemAssistant().deleteItem(1933, 1); - player.getItemAssistant().addItem(2307, 1); - player.getItemAssistant().addItem(1925, 1); - player.getItemAssistant().addItem(1931, 1); - player.getPlayerAssistant().addSkillXP(1, player.playerCooking); - player.nextChat = 0; - } else if (player.dialogueAction == 3205) { - player.getItemAssistant().deleteItem(1933, 1); - player.getItemAssistant().deleteItem(1937, 1); - player.getItemAssistant().addItem(1953, 1); - player.getItemAssistant().addItem(1925, 1); - player.getItemAssistant().addItem(1935, 1); - player.getPlayerAssistant().addSkillXP(1, player.playerCooking); - player.nextChat = 0; - } else if (player.dialogueAction == 189) { - player.getDialogueHandler().sendDialogues(3212, player.npcType); - return; - } - player.dialogueAction = 0; - player.getPlayerAssistant().removeAllWindows(); - break; - - case 9178: - if (player.dialogueAction == 2) { - player.getPlayerAssistant().startTeleport(3428, 3538, 0, "modern"); - } - if (player.dialogueAction == 122 && player.objectId == 12164 || player.objectId == 12163 || player.objectId == 12166) {//barb - player.getPlayerAssistant().startTeleport(3112, 3410, 0, "modern"); - } else if (player.objectId == 12165) { - if (player.dialogueAction == 122) { - player.getActionSender().sendMessage("You can't take the canoe to barbarian village because you're already there!"); - player.getPlayerAssistant().handleCanoe(); - } - } - if (player.dialogueAction == 4) { - player.getPlayerAssistant().startTeleport(3565, 3314, 0, - "modern"); - } - if (player.dialogueAction == 3) { - player.getPlayerAssistant().startTeleport(3088, 3500, 0, - "modern"); - } - if (player.dialogueAction == 31) { - player.getDialogueHandler().sendDialogues(500, player.npcType); - } - if (player.dialogueAction == 32) { - player.getDialogueHandler().sendDialogues(340, player.npcType); - } - if (player.dialogueAction == 33) { - player.getDialogueHandler().sendDialogues(354, player.npcType); - } - if (player.dialogueAction == 35) { - player.getDialogueHandler().sendDialogues(378, player.npcType); - } - if (player.dialogueAction == 51) { - player.getPlayerAssistant().gloryTeleport(3088, 3500, 0, - "modern"); - } - Teles.necklaces(player); - if (player.dialogueAction == 52) { - player.getDialogueHandler().sendDialogues(52, player.npcType); - } - if (player.dialogueAction == 1000) { - player.getDialogueHandler().sendDialogues(3524,player.npcType); - } - if (player.dialogueAction == 69) { - player.getDialogueHandler().sendDialogues(1005, player.npcType); - } - if (player.dialogueAction == 228) { - player.getDialogueHandler().sendDialogues(1045, player.npcType); - } - /* - * if (client.dialogueAction == 142) - * client.getDialogues().handleDialogues(1231, client.npcType); - */ - if (player.dialogueAction == 145) { - player.getDialogueHandler().sendDialogues(1318, player.SlayerMaster); - } - if (player.dialogueAction == 153) { - player.getDialogueHandler().sendDialogues(3123, player.npcType); - } - if (player.dialogueAction == 160) { - player.getDialogueHandler().sendDialogues(3164, player.npcType); - } - if (player.dialogueAction == 142) { - player.getDialogueHandler().sendDialogues(1234, player.npcType); - } - if (player.dialogueAction == 485) { - player.getRangersGuild().buyArrows(); - } - if (player.dialogueAction == 700) { - player.getDialogueHandler().sendDialogues(28, player.npcType); - } - break; - - case 9179: - if (player.dialogueAction == 2) { - player.getPlayerAssistant().startTeleport(2884, 3395, 0, "modern"); - } - if (player.dialogueAction == 122 && player.objectId == 12163 || player.objectId == 12165 || player.objectId == 12166) {//champ - player.getPlayerAssistant().startTeleport(3203, 3343, 0, "modern"); - } else if (player.objectId == 12164) { - if (player.dialogueAction == 122) { - player.getActionSender().sendMessage("You can't take the canoe to the Champion Guild because you're already there!"); - player.getPlayerAssistant().handleCanoe(); - } - } - if (player.dialogueAction == 4) { - player.getPlayerAssistant().startTeleport(2444, 5170, 0, "modern"); - } - if (player.dialogueAction == 3) { - player.getPlayerAssistant().startTeleport(3243, 3513, 0, "modern"); - } - if (player.dialogueAction == 31) { - player.getDialogueHandler().sendDialogues(502, player.npcType); - } - if (player.dialogueAction == 32) { - player.getDialogueHandler().sendDialogues(341, player.npcType); - } - if (player.dialogueAction == 33) { - player.getDialogueHandler().sendDialogues(356, player.npcType); - } - if (player.dialogueAction == 35) { - player.getDialogueHandler().sendDialogues(376, player.npcType); - } - if (player.dialogueAction == 51) { - player.getPlayerAssistant().gloryTeleport(3293, 3174, 0, "modern"); - } - Teles.necklaces(player); - if (player.dialogueAction == 52) { - player.getDialogueHandler().sendDialogues(64, player.npcType); - } - if (player.dialogueAction == 1000) { - player.getDialogueHandler().sendDialogues(3523, player.npcType); - } - if (player.dialogueAction == 69) { - player.getDialogueHandler().sendDialogues(500002, player.npcType); - } - if (player.dialogueAction == 228) { - player.getDialogueHandler().sendDialogues(1042, player.npcType); - } - if (player.dialogueAction == 145) { - player.getDialogueHandler().sendDialogues(1319, player.SlayerMaster); - } - if (player.dialogueAction == 153) { - player.getDialogueHandler().sendDialogues(3124, player.npcType); - } - if (player.dialogueAction == 160) { - player.getDialogueHandler().sendDialogues(3164, player.npcType); - } - if (player.dialogueAction == 142) { - player.getDialogueHandler().sendDialogues(1235, player.npcType); - } - if (player.dialogueAction == 485) { - player.getRangersGuild().exchangePoints(); - } - if (player.dialogueAction == 700) { - player.getDialogueHandler().sendDialogues(29, player.npcType); - } - break; - - case 9180: - if (player.dialogueAction == 2) { - player.getPlayerAssistant().startTeleport(2471, 10137, 0, "modern"); - } - if (player.dialogueAction == 69) { - player.getDialogueHandler().sendDialogues(500003, player.npcType); - } - if (player.dialogueAction == 122 && player.objectId == 12164 || player.objectId == 12165 || player.objectId == 12166) {//lumby - player.getPlayerAssistant().startTeleport(3243, 3237, 0, "modern"); - } else if (player.objectId == 12163) { - if (player.dialogueAction == 122) { - player.getActionSender().sendMessage("You can't take the canoe to Lumbridge because you're already there!"); - player.getPlayerAssistant().handleCanoe(); - } - } - if (player.dialogueAction == 3) { - player.getPlayerAssistant().startTeleport(3363, 3676, 0, "modern"); - } - if (player.dialogueAction == 4) { - player.getPlayerAssistant().startTeleport(2659, 2676, 0, "modern"); - } - if (player.dialogueAction == 31) { - player.getDialogueHandler().sendDialogues(501, player.npcType); - } - if (player.dialogueAction == 32) { - player.getDialogueHandler().sendDialogues(342, player.npcType); - } - if (player.dialogueAction == 33) { - player.getDialogueHandler().sendDialogues(355, player.npcType); - } - if (player.dialogueAction == 35) { - player.getDialogueHandler().sendDialogues(377, player.npcType); - } - if (player.dialogueAction == 51) { - player.getPlayerAssistant().gloryTeleport(2911, 3152, 0, "modern"); - } - Teles.necklaces(player); - if (player.dialogueAction == 52) { - player.getDialogueHandler().sendDialogues(65, player.npcType); - } - if (player.dialogueAction == 1000) { - player.getDialogueHandler().sendDialogues(3523,player.npcType); - } - if (player.dialogueAction == 700) { - player.getDialogueHandler().sendDialogues(30, player.npcType); - } - if (player.dialogueAction == 228) { - player.getDialogueHandler().sendDialogues(1041, player.npcType); - } - if (player.dialogueAction == 145) { - player.getDialogueHandler().sendDialogues(1320, player.SlayerMaster); - } - if (player.dialogueAction == 153) { - player.getDialogueHandler().sendDialogues(3125, player.npcType); - } - if (player.dialogueAction == 160) { - player.getDialogueHandler().sendDialogues(3165, player.npcType); - } - if (player.dialogueAction == 142) { - player.getDialogueHandler().sendDialogues(1236, player.npcType); - } - if (player.dialogueAction == 485) { - player.getRangersGuild().howAmIDoing(); - } - if (player.dialogueAction == 69) { - player.getDialogueHandler().sendDialogues(1003, player.npcType); - } - break; - - case 9181: - if (player.dialogueAction == 2) { - player.getPlayerAssistant().startTeleport(2669, 3714, 0, "modern"); - } - if (player.dialogueAction == 69) { - player.getDialogueHandler().sendDialogues(500004, player.npcType); - } - if (player.dialogueAction == 122 && player.objectId == 12163 || player.objectId == 12164 || player.objectId == 12165) {//edge - player.getPlayerAssistant().startTeleport(3132, 3509, 0, "modern"); - } else if (player.objectId == 12166) { - if (player.dialogueAction == 122) { - player.getActionSender().sendMessage("You can't take the canoe to Edgeville because you're already there!"); - player.getPlayerAssistant().handleCanoe(); - } - } - if (player.dialogueAction == 3) { - player.getPlayerAssistant().startTeleport(2540, 4716, 0, - "modern"); - } - if (player.dialogueAction == 51) { - player.getPlayerAssistant().gloryTeleport(3103, 3249, 0, - "modern"); - } - Teles.necklaces(player); - if (player.dialogueAction == 52) { - player.getDialogueHandler().sendDialogues(63, player.npcType); - } - if (player.dialogueAction == 1000) { - player.getDialogueHandler().sendDialogues(3523, player.npcType); - } - if (player.dialogueAction == 700) { - player.getDialogueHandler().sendDialogues(31, player.npcType); - } - if (player.dialogueAction == 69) { - player.getDialogueHandler().sendDialogues(1004, player.npcType); - } - if (player.dialogueAction == 228) { - player.getDialogueHandler().sendDialogues(1038, player.npcType); - } - if (player.dialogueAction == 145) { - player.getDialogueHandler().sendDialogues(1321, player.SlayerMaster); - } - if (player.dialogueAction == 153) { - player.getDialogueHandler().sendDialogues(3126, player.npcType); - } - if (player.dialogueAction == 160) { - player.getDialogueHandler().sendDialogues(3166, player.npcType); - } - if (player.dialogueAction == 142) { - player.getDialogueHandler().sendDialogues(1231, player.npcType); - } - if (player.dialogueAction == 485) { - player.getPlayerAssistant().closeAllWindows(); - } - if (player.dialogueAction == 700) { - player.getDialogueHandler().sendDialogues(28, player.npcType); - } - break; - - /** Dueling **/ - case 26065: // no forfeit - case 26040: - player.duelSlot = -1; - player.getDueling().selectRule(0); - break; - - case 26066: // no movement - case 26048: - player.duelSlot = -1; - player.getDueling().selectRule(1); - break; - - case 26069: // no range - case 26042: - player.duelSlot = -1; - player.getDueling().selectRule(2); - break; - - case 26070: // no melee - case 26043: - player.duelSlot = -1; - player.getDueling().selectRule(3); - break; - - case 26071: // no mage - case 26041: - player.duelSlot = -1; - player.getDueling().selectRule(4); - break; - - case 26072: // no drinks - case 26045: - player.duelSlot = -1; - player.getDueling().selectRule(5); - break; - - case 26073: // no food - case 26046: - player.duelSlot = -1; - player.getDueling().selectRule(6); - break; - - case 26074: // no prayer - case 26047: - player.duelSlot = -1; - player.getDueling().selectRule(7); - break; - - case 26076: // obsticals - case 26075: - player.duelSlot = -1; - player.getDueling().selectRule(8); - break; - - case 2158: // fun weapons - case 2157: - player.duelSlot = -1; - player.getDueling().selectRule(9); - break; - - case 30136: // sp attack - case 30137: - player.duelSlot = -1; - player.getDueling().selectRule(10); - break; - - case 53245: // no helm - player.duelSlot = 0; - player.getDueling().selectRule(11); - break; - - case 53246: // no cape - player.duelSlot = 1; - player.getDueling().selectRule(12); - break; - - case 53247: // no ammy - player.duelSlot = 2; - player.getDueling().selectRule(13); - break; - - case 53249: // no weapon. - player.duelSlot = 3; - player.getDueling().selectRule(14); - break; - - case 53250: // no body - player.duelSlot = 4; - player.getDueling().selectRule(15); - break; - - case 53251: // no shield - player.duelSlot = 5; - player.getDueling().selectRule(16); - break; - - case 53252: // no legs - player.duelSlot = 7; - player.getDueling().selectRule(17); - break; - - case 53255: // no gloves - player.duelSlot = 9; - player.getDueling().selectRule(18); - break; - - case 53254: // no boots - player.duelSlot = 10; - player.getDueling().selectRule(19); - break; - - case 53253: // no rings - player.duelSlot = 12; - player.getDueling().selectRule(20); - break; - - case 53248: // no arrows - player.duelSlot = 13; - player.getDueling().selectRule(21); - break; - - case 26018: - if (player.inDuelArena()) { - Client opponent = (Client) PlayerHandler.players[player.duelingWith]; - if (opponent == null) { - player.getDueling().declineDuel(); - return; - } - - if (player.duelRule[2] && player.duelRule[3] - && player.duelRule[4]) { - player.getActionSender() - .sendMessage( - "You won't be able to attack the player with the rules you have set."); - break; - } - player.duelStatus = 2; - if (player.duelStatus == 2) { - player.getPlayerAssistant().sendFrame126( - "Waiting for other player...", 6684); - opponent.getPlayerAssistant().sendFrame126( - "Other player has accepted.", 6684); - } - if (opponent.duelStatus == 2) { - opponent.getPlayerAssistant().sendFrame126( - "Waiting for other player...", 6684); - player.getPlayerAssistant().sendFrame126( - "Other player has accepted.", 6684); - } - - if (player.duelStatus == 2 && opponent.duelStatus == 2) { - player.duelStatus = 3; - opponent.duelStatus = 3; - player.getDueling().confirmDuel(); - opponent.getDueling().confirmDuel(); - } - } else { - Client o = (Client) PlayerHandler.players[player.duelingWith]; - player.getDueling().declineDuel(); - o.getDueling().declineDuel(); - player.getActionSender().sendMessage( - "You can't stake out of the Duel Arena."); - } - break; - - case 25120: - if (player.inDuelArena()) { - if (player.duelStatus == 5) { - break; - } - Client o1 = (Client) PlayerHandler.players[player.duelingWith]; - if (o1 == null) { - player.getDueling().declineDuel(); - return; - } - - player.duelStatus = 4; - if (o1.duelStatus == 4 && player.duelStatus == 4) { - player.getDueling().startDuel(); - o1.getDueling().startDuel(); - o1.duelCount = 4; - player.duelCount = 4; - player.duelDelay = System.currentTimeMillis(); - o1.duelDelay = System.currentTimeMillis(); - } else { - player.getPlayerAssistant().sendFrame126( - "Waiting for other player...", 6571); - o1.getPlayerAssistant().sendFrame126( - "Other player has accepted", 6571); - } - } else { - Client o = (Client) PlayerHandler.players[player.duelingWith]; - player.getDueling().declineDuel(); - o.getDueling().declineDuel(); - player.getActionSender().sendMessage( - "You can't stake out of the Duel Arena."); - } - break; - - /* - * if (System.currentTimeMillis() - duelDelay > 800 && duelCount > 0) { - * if (duelCount != 1) { forcedChat("" + (--duelCount)); duelDelay = - * System.currentTimeMillis(); } else { damageTaken = new - * int[Config.MAX_PLAYERS]; forcedChat("FIGHT!"); duelCount = 0; } } - */ - - case 4169: // god spell charge - player.usingMagic = true; - if (!player.getCombatAssistant().checkMagicReqs(48)) { - break; - } - - if (System.currentTimeMillis() - player.godSpellDelay < Constants.GOD_SPELL_CHARGE) { - player.getActionSender().sendMessage( - "You still feel the charge in your body!"); - break; - } - player.godSpellDelay = System.currentTimeMillis(); - player.getActionSender().sendMessage( - "You feel charged with a magical power!"); - player.gfx100(MagicData.MAGIC_SPELLS[48][3]); - player.startAnimation(MagicData.MAGIC_SPELLS[48][2]); - player.usingMagic = false; - break; - - case 153: - if (player.tutorialProgress == 11) { - player.getDialogueHandler().sendDialogues(3041, 0); - } - player.getPlayerAssistant().sendConfig(173, 1); - player.isRunning2 = true; - break; - - case 152: - /*if (client.performingAction) { - return; - }*/ - player.isRunning2 = false; - player.getPlayerAssistant().sendConfig(173, 0); - break; - - case 9154: - player.logout(); - break; - - case 21010: - if (player.isBanking) { - player.takeAsNote = true; - } else { - player.getActionSender().sendMessage("You must be banking to do this!"); - } - break; - - case 21011: - if (player.isBanking) { - player.takeAsNote = false; - } else { - player.getActionSender().sendMessage("You must be banking to do this!"); - } - break; - - case 9125: // Accurate - case 6221: // range accurate - case 22228: // punch (unarmed) - case 48010: // flick (whip) - case 21200: // spike (pickaxe) - case 1080: // bash (staff) - case 6168: // chop (axe) - case 6236: // accurate (long bow) - case 17102: // accurate (darts) - case 8234: // stab (dagger) - case 14218: // mace - case 14221: // mace - player.fightMode = 0;// attack - if (player.playerName.equalsIgnoreCase("andrew")) { - player.getActionSender().sendMessage("Fight mode = 0."); - } - if (player.autocasting) { - player.getPlayerAssistant().resetAutocast(); - } - break; - - case 9126: // Defensive - case 48008: // deflect (whip) - case 22229: // block (unarmed) - case 21201: // block (pickaxe) - case 1078: // focus - block (staff) - case 6169: // block (axe) - case 33019: // fend (hally) - case 18078: // block (spear) - case 8235: // block (dagger) - case 14219: // mace - player.fightMode = 1;// def - if (player.playerName.equalsIgnoreCase("andrew")) { - player.getActionSender().sendMessage("Fight mode = 1."); - } - if (player.autocasting) { - player.getPlayerAssistant().resetAutocast(); - } - break; - - case 9128: // Aggressive - case 6220: // range rapid - case 22230: // kick (unarmed) - case 21203: // impale (pickaxe) - case 21202: // smash (pickaxe) - case 1079: // pound (staff) - case 6171: // hack (axe) - case 6170: // smash (axe) - case 33020: // swipe (hally) - case 6235: // rapid (long bow) - case 17101: // repid (darts) - case 8237: // lunge (dagger) - case 8236: // slash (dagger) - case 14220: // mace - player.fightMode = 2;// shared - if (player.playerName.equalsIgnoreCase("andrew")) { - player.getActionSender().sendMessage("Fight mode = 2."); - } - if (player.autocasting) { - player.getPlayerAssistant().resetAutocast(); - } - break; - - case 9127: // Controlled - case 48009: // lash (whip) - case 33018: // jab (hally) - case 6234: // longrange (long bow) - case 6219: // longrange - case 18077: // lunge (spear) - case 18080: // swipe (spear) - case 18079: // pound (spear) - case 17100: // longrange (darts) - player.fightMode = 3;// block - if (player.playerName.equalsIgnoreCase("andrew")) { - player.getActionSender().sendMessage("Fight mode = 3."); - } - if (player.autocasting) { - player.getPlayerAssistant().resetAutocast(); - } - break; - - - /** Prayers **/ - case 21233: // thick skin - ActivatePrayers.activatePrayer(player, 0); - break; - case 21234: // burst of str - ActivatePrayers.activatePrayer(player, 1); - break; - case 21235: // charity of thought - ActivatePrayers.activatePrayer(player, 2); - break; - case 70080: // range - ActivatePrayers.activatePrayer(player, 3); - break; - case 70082: // mage - ActivatePrayers.activatePrayer(player, 4); - break; - case 21236: // rockskin - ActivatePrayers.activatePrayer(player, 5); - break; - case 21237: // super human - ActivatePrayers.activatePrayer(player, 6); - break; - case 21238: // improved reflexes - ActivatePrayers.activatePrayer(player, 7); - break; - case 21239: // hawk eye - ActivatePrayers.activatePrayer(player, 8); - break; - case 21240: - ActivatePrayers.activatePrayer(player, 9); - break; - case 21241: // protect Item - ActivatePrayers.activatePrayer(player, 10); - break; - case 70084: // 26 range - ActivatePrayers.activatePrayer(player, 11); - break; - case 70086: // 27 mage - ActivatePrayers.activatePrayer(player, 12); - break; - case 21242: // steel skin - ActivatePrayers.activatePrayer(player, 13); - break; - case 21243: // ultimate str - ActivatePrayers.activatePrayer(player, 14); - break; - case 21244: // incredible reflex - ActivatePrayers.activatePrayer(player, 15); - break; - case 21245: // protect from magic - ActivatePrayers.activatePrayer(player, 16); - break; - case 21246: // protect from range - ActivatePrayers.activatePrayer(player, 17); - break; - case 21247: // protect from melee - ActivatePrayers.activatePrayer(player, 18); - break; - case 70088: // 44 range - ActivatePrayers.activatePrayer(player, 19); - break; - case 70090: // 45 mystic - ActivatePrayers.activatePrayer(player, 20); - break; - case 2171: // retrui - ActivatePrayers.activatePrayer(player, 21); - break; - case 2172: // redem - ActivatePrayers.activatePrayer(player, 22); - break; - case 2173: // smite - ActivatePrayers.activatePrayer(player, 23); - break; - case 70092: // chiv - ActivatePrayers.activatePrayer(player, 24); - break; - case 70094: // piety - ActivatePrayers.activatePrayer(player, 25); - break; - - case 13092: - if (System.currentTimeMillis() - player.lastButton < 400) { - - player.lastButton = System.currentTimeMillis(); - - break; - - } else { - - player.lastButton = System.currentTimeMillis(); - - } - Client ot = (Client) PlayerHandler.players[player.tradeWith]; - if (ot == null || !ot.inTrade) { - player.getTrading().declineTrade(); - player.getActionSender().sendMessage( - "Trade declined as the other player has disconnected."); - ot.getTrading().declineTrade(); - ot.getActionSender().sendMessage( - "Trade declined as you disconnected."); - break; - } - player.getPlayerAssistant().sendFrame126( - "Waiting for other player...", 3431); - ot.getPlayerAssistant().sendFrame126("Other player has accepted", - 3431); - player.goodTrade = true; - ot.goodTrade = true; - - for (GameItem item : player.getTrading().offeredItems) { - if (item.id > 0) { - if (ot.getItemAssistant().freeSlots() < player.getTrading().offeredItems - .size()) { - player.getActionSender().sendMessage( - ot.playerName - + " only has " - + ot.getItemAssistant().freeSlots() - + " free slots, please remove " - + (player.getTrading().offeredItems - .size() - ot.getItemAssistant() - .freeSlots()) + " items."); - ot.getActionSender().sendMessage( - player.playerName - + " has to remove " - + (player.getTrading().offeredItems - .size() - ot.getItemAssistant() - .freeSlots()) - + " items or you could offer them " - + (player.getTrading().offeredItems - .size() - ot.getItemAssistant() - .freeSlots()) + " items."); - player.goodTrade = false; - ot.goodTrade = false; - player.getPlayerAssistant().sendFrame126( - "Not enough inventory space...", 3431); - ot.getPlayerAssistant().sendFrame126( - "Not enough inventory space...", 3431); - break; - } else { - player.getPlayerAssistant().sendFrame126( - "Waiting for other player...", 3431); - ot.getPlayerAssistant().sendFrame126( - "Other player has accepted", 3431); - player.goodTrade = true; - ot.goodTrade = true; - } - } - } - if (player.inTrade && !player.tradeConfirmed && ot.goodTrade - && player.goodTrade) { - player.tradeConfirmed = true; - if (ot.tradeConfirmed) { - player.getTrading().confirmScreen(); - ot.getTrading().confirmScreen(); - break; - } - - } - - break; - - case 13218: - if (System.currentTimeMillis() - player.lastButton < 400) { - - player.lastButton = System.currentTimeMillis(); - - break; - - } else { - - player.lastButton = System.currentTimeMillis(); - - } - player.tradeAccepted = true; - Client ot1 = (Client) PlayerHandler.players[player.tradeWith]; - if (ot1 == null) { - player.getTrading().declineTrade(); - player.getActionSender().sendMessage( - "Trade declined as the other player has disconnected."); - break; - } - - if (player.inTrade && player.tradeConfirmed && ot1.tradeConfirmed - && !player.tradeConfirmed2) { - player.tradeConfirmed2 = true; - if (ot1.tradeConfirmed2) { - player.acceptedTrade = true; - ot1.acceptedTrade = true; - player.getTrading().giveItems(); - ot1.getTrading().giveItems(); - //here - player.getActionSender().sendMessage( - "@red@Trade completed."); - ot1.getActionSender().sendMessage( - "@red@Trade completed."); - break; - } - ot1.getPlayerAssistant().sendFrame126( - "Other player has accepted.", 3535); - player.getPlayerAssistant().sendFrame126( - "Waiting for other player...", 3535); - } - - break; - /* Player Options */ - case 74176: - if (!player.mouseButton) { - player.mouseButton = true; - player.getPlayerAssistant().sendConfig(500, 1); - player.getPlayerAssistant().sendConfig(170, 1); - } else if (player.mouseButton) { - player.mouseButton = false; - player.getPlayerAssistant().sendConfig(500, 0); - player.getPlayerAssistant().sendConfig(170, 0); - } - break; - case 3189: - if (player.splitChat == false) { - player.getPlayerAssistant().sendConfig(502, 1); - player.getPlayerAssistant().sendConfig(287, 1); - player.splitChat = true; - } else if (player.splitChat == true) { - player.getPlayerAssistant().sendConfig(502, 0); - player.getPlayerAssistant().sendConfig(287, 0); - player.splitChat = false; - } - break; - case 74180: - if (!player.chatEffects) { - player.chatEffects = true; - player.getPlayerAssistant().sendConfig(501, 1); - player.getPlayerAssistant().sendConfig(171, 0); - } else { - player.chatEffects = false; - player.getPlayerAssistant().sendConfig(501, 0); - player.getPlayerAssistant().sendConfig(171, 1); - } - break; - case 74188: - if (!player.acceptAid) { - player.acceptAid = true; - player.getPlayerAssistant().sendConfig(503, 1); - player.getPlayerAssistant().sendConfig(427, 1); - } else { - player.acceptAid = false; - player.getPlayerAssistant().sendConfig(503, 0); - player.getPlayerAssistant().sendConfig(427, 0); - } - break; - case 74192: - if (!player.isRunning2) { - player.isRunning2 = true; - player.getPlayerAssistant().sendConfig(504, 1); - player.getPlayerAssistant().sendConfig(173, 1); - } else { - player.isRunning2 = false; - player.getPlayerAssistant().sendConfig(504, 0); - player.getPlayerAssistant().sendConfig(173, 0); - } - break; - - //case 74201:// brightness1 - case 3138: - LightSources.brightness1(player); - break; - - //case 74203:// brightness2 - case 3140: - LightSources.brightness2(player); - break; - - //case 74204:// brightness3 - case 3142: - LightSources.brightness3(player); - break; - - //case 74205:// brightness4 - case 3144: - LightSources.brightness4(player); - break; - - case 74206:// area1 - player.getPlayerAssistant().sendConfig(509, 1); - player.getPlayerAssistant().sendConfig(510, 0); - player.getPlayerAssistant().sendConfig(511, 0); - player.getPlayerAssistant().sendConfig(512, 0); - break; - case 74207:// area2 - player.getPlayerAssistant().sendConfig(509, 0); - player.getPlayerAssistant().sendConfig(510, 1); - player.getPlayerAssistant().sendConfig(511, 0); - player.getPlayerAssistant().sendConfig(512, 0); - break; - case 74208:// area3 - player.getPlayerAssistant().sendConfig(509, 0); - player.getPlayerAssistant().sendConfig(510, 0); - player.getPlayerAssistant().sendConfig(511, 1); - player.getPlayerAssistant().sendConfig(512, 0); - break; - case 74209:// area4 - player.getPlayerAssistant().sendConfig(509, 0); - player.getPlayerAssistant().sendConfig(510, 0); - player.getPlayerAssistant().sendConfig(511, 0); - player.getPlayerAssistant().sendConfig(512, 1); - break; - - case 24017: - player.getPlayerAssistant().resetAutocast(); - player.getItemAssistant() - .sendWeapon( - player.playerEquipment[player.playerWeapon], - ItemAssistant - .getItemName(player.playerEquipment[player.playerWeapon])); - break; - - } - } - -} +package com.rebotted.net.packets.impl; + +import com.rebotted.GameConstants; +import com.rebotted.game.content.combat.Specials; +import com.rebotted.game.content.combat.magic.CastOnOther; +import com.rebotted.game.content.combat.magic.MagicData; +import com.rebotted.game.content.combat.magic.MagicTeleports; +import com.rebotted.game.content.combat.prayer.ActivatePrayers; +import com.rebotted.game.content.music.Music; +import com.rebotted.game.content.music.sound.SoundList; +import com.rebotted.game.content.quests.QuestAssistant; +import com.rebotted.game.content.random.PartyRoom; +import com.rebotted.game.content.randomevents.SandwhichLady; +import com.rebotted.game.content.skills.cooking.Cooking; +import com.rebotted.game.content.skills.cooking.CookingTutorialIsland; +import com.rebotted.game.content.skills.crafting.JewelryMaking; +import com.rebotted.game.content.skills.crafting.LeatherMaking; +import com.rebotted.game.content.skills.crafting.Pottery; +import com.rebotted.game.content.skills.crafting.Spinning; +import com.rebotted.game.content.skills.crafting.Tanning; +import com.rebotted.game.content.skills.crafting.CraftingData.tanningData; +import com.rebotted.game.content.skills.fletching.LogCutting; +import com.rebotted.game.content.skills.herblore.Herblore; +import com.rebotted.game.content.skills.smithing.SilverCrafting; +import com.rebotted.game.content.skills.smithing.Smelting; +import com.rebotted.game.content.traveling.GnomeGlider; +import com.rebotted.game.items.GameItem; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.items.impl.ExperienceLamp; +import com.rebotted.game.items.impl.Flowers; +import com.rebotted.game.items.impl.LightSources; +import com.rebotted.game.items.impl.Teles; +import com.rebotted.game.objects.impl.Climbing; +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerHandler; +import com.rebotted.net.packets.PacketType; +import com.rebotted.util.Misc; + +/** + * Clicking most buttons + **/ +public class ClickingButtons implements PacketType { + + @Override + public void processPacket(final Player player, int packetType, int packetSize) { + int actionButtonId = Misc.hexToInt(player.getInStream().buffer, 0, packetSize); + player.getGlassBlowing().handleActionButtin(actionButtonId); + GnomeGlider.flightButtons(player, actionButtonId); + player.getEmoteHandler().startEmote(actionButtonId); + QuestAssistant.questButtons(player, actionButtonId); + LogCutting.handleClick(player, actionButtonId); + Smelting.getBar(player, actionButtonId); + ExperienceLamp.buttons(player, actionButtonId); + Herblore.handleHerbloreButtons(player, actionButtonId); + LeatherMaking.craftLeather(player, actionButtonId); + SandwhichLady.handleOptions(player, actionButtonId); + SilverCrafting.makeSilver(player, actionButtonId, 0); + Climbing.handleLadderButtons(player, actionButtonId); + Specials.specialClicking(player, actionButtonId); + if (player.musicOn == true) { + player.getPlayList().handleButton(actionButtonId); + } + + for (tanningData t : tanningData.values()) { + if (actionButtonId == t.getButtonId(actionButtonId)) { + Tanning.tanHide(player, actionButtonId); + } + } + if (player.isDead) { + return; + } + + if (player.playerRights == 3) { + player.getPacketSender().sendMessage( + player.playerName + " - actionbutton: " + actionButtonId); + } + + if (player.isAutoButton(actionButtonId)) { + player.assignAutocast(actionButtonId); + } + + switch (actionButtonId) { + + + case 55096: + player.getPacketSender().closeAllWindows(); + player.droppedItem = -1; + break; + + case 55095: + player.getItemAssistant().destroyItem(player.droppedItem); + player.droppedItem = -1; + break; + + case 50235: + MagicTeleports.paddewwaTeleport(player); + break; + + case 50245: + MagicTeleports.senntisenTeleport(player); + break; + + case 50253: + MagicTeleports.kharyllTeleport(player); + break; + + case 51005: + MagicTeleports.lassarTeleport(player); + break; + + case 51013: + MagicTeleports.dareeyakTeleport(player); + break; + + case 51023: + MagicTeleports.carrallangarTeleport(player); + break; + + case 51031: + MagicTeleports.annakarlTeleport(player); + break; + + case 51039: + MagicTeleports.ghorrockTeleport(player); + break; + + case 4140: + MagicTeleports.varrockTeleport(player); + break; + + case 4143: + MagicTeleports.lumbridgeTeleport(player); + break; + + case 4146: + MagicTeleports.faladorTeleport(player); + break; + + case 4150: + MagicTeleports.camelotTeleport(player); + break; + + case 6004: + MagicTeleports.ardougneTeleport(player); + break; + + case 6005: + MagicTeleports.watchTowerTeleport(player); + break; + + case 29031: + MagicTeleports.trollhiemTeleport(player); + break; + + case 72038: + MagicTeleports.apeAtollTeleport(player); + break; + + /** + * End of Modern Teleports + */ + + case 4135: + if (player.inTrade) { + player.getPacketSender().sendMessage( + "You can't do this in trade!"); + return; + } + if (player.playerLevel[6] < 15) { + player.getPacketSender().sendFrame126( + "You need a magic level of @blu@15 @bla@to cast bones to bananas", + 357); + player.getPacketSender().sendChatInterface(356); + return; + } + if (!player.getItemAssistant().playerHasItem(526, 1)) { + player.getPacketSender().sendMessage( + "You don't have any bones!"); + return; + } + if (!player.getItemAssistant().playerHasItem(561, 1) + || !player.getItemAssistant().playerHasItem(555, 2) + || !player.getItemAssistant().playerHasItem(557, 2)) { + player.getPacketSender().sendFrame126("You do not have the correct runes to cast this spell.", 357); + player.getPacketSender().sendChatInterface(356); + return; + } + if (System.currentTimeMillis() - player.boneDelay > 2000) { + player.getItemAssistant().deleteItem(561, 1); + player.getItemAssistant().deleteItem(557, 2); + player.getItemAssistant().deleteItem(555, 2); + player.getPlayerAssistant().addSkillXP(40, 6); + player.getPlayerAssistant().refreshSkill(6); + player.startAnimation(722); + player.gfx100(141); + player.getPacketSender().sendFrame106(6); + player.getPacketSender().sendSound( + SoundList.BONES_TO_BANNAS, 100, 0); + player.boneDelay = System.currentTimeMillis(); + do { + player.getItemAssistant().deleteItem(526, 1); + player.getItemAssistant().addItem(1963, 1); + } while (player.getItemAssistant().playerHasItem(526, 1)); + } + break; + + case 62005: + if (player.inTrade) { + player.getPacketSender().sendMessage( + "You can't do this in trade!"); + return; + } + if (player.playerLevel[6] < 60) { + player.getPacketSender().sendFrame126("You need a magic level of @blu@60 @blu@ to cast bones to peaches.", 357); + player.getPacketSender().sendChatInterface(356); + return; + } + if (!player.getItemAssistant().playerHasItem(526, 1)) { + player.getPacketSender().sendMessage( + "You don't have any bones!"); + return; + } + if (!player.getItemAssistant().playerHasItem(561, 2) + || !player.getItemAssistant().playerHasItem(555, 4) + || !player.getItemAssistant().playerHasItem(557, 4)) { + player.getPacketSender().sendFrame126( + "You do not have the correct runes to cast this spell.", + 357); + player.getPacketSender().sendChatInterface(356); + return; + } + if (System.currentTimeMillis() - player.boneDelay > 2000) { + player.getItemAssistant().deleteItem(561, 2); + player.getItemAssistant().deleteItem(557, 4); + player.getItemAssistant().deleteItem(555, 4); + player.getPlayerAssistant().addSkillXP(40, 6); + player.getPlayerAssistant().refreshSkill(6); + player.startAnimation(722); + player.gfx100(311); + player.getPacketSender().sendFrame106(6); + player.boneDelay = System.currentTimeMillis(); + do { + player.getItemAssistant().deleteItem(526, 1); + player.getItemAssistant().addItem(6883, 1); + } while (player.getItemAssistant().playerHasItem(526, 1)); + } + break; + + case 14067: + player.canChangeAppearance = false; + break; + + case 34185: + case 34193: + case 34189: + if (player.clickedSpinning == true) { + Spinning.getAmount(player, 1); + } + break; + + case 34184: + case 34188: + case 34192: + if (player.clickedSpinning == true) { + Spinning.getAmount(player, 5); + } + break; + + case 34183: + case 34187: + case 34191: + if (player.clickedSpinning == true) { + Spinning.getAmount(player, 10); + } + break; + + case 34182: + case 34186: + case 34190: + if (player.clickedSpinning == true) { + Spinning.getAmount(player, 28); + } + break; + + /* + * Item on interface 5 + */ + // item 1 + case 34245: + if (player.showedUnfire == true) { + Pottery.makeUnfire(player, 1787, 6.3, 1, 1); + } + if (player.showedFire == true) { + Pottery.makeFire(player, 1787, 1931, 1, 6.3, 1); + } + break; + case 34244: + if (player.showedUnfire == true) { + Pottery.makeUnfire(player, 1787, 6.3, 1, 5); + } + if (player.showedFire == true) { + Pottery.makeFire(player, 1787, 1931, 1, 6.3, 5); + } + break; + case 34243: + if (player.showedUnfire == true) { + Pottery.makeUnfire(player, 1787, 6.3, 1, 10); + } + if (player.showedFire == true) { + Pottery.makeFire(player, 1787, 1931, 1, 6.3, 10); + } + break; + case 34242: + if (player.showedUnfire == true) { + Pottery.makeUnfire(player, 1787, 6.3, 1, 28); + } + if (player.showedFire == true) { + Pottery.makeFire(player, 1787, 1931, 1, 6.3, 28); + } + break; + // item 2 + case 34249: + if (player.showedUnfire == true) { + Pottery.makeUnfire(player, 1789, 15, 7, 1); + } + if (player.showedFire == true) { + Pottery.makeFire(player, 1789, 2313, 7, 10, 1); + } + break; + case 34248: + if (player.showedUnfire == true) { + Pottery.makeUnfire(player, 1789, 15, 7, 5); + } + if (player.showedFire == true) { + Pottery.makeFire(player, 1789, 2313, 7, 10, 5); + } + break; + case 34247: + if (player.showedUnfire == true) { + Pottery.makeUnfire(player, 1789, 15, 7, 10); + } + if (player.showedFire == true) { + Pottery.makeFire(player, 1789, 2313, 7, 10, 10); + } + break; + case 34246: + if (player.showedUnfire == true) { + Pottery.makeUnfire(player, 1789, 15, 7, 28); + } + if (player.showedFire == true) { + Pottery.makeFire(player, 1789, 2313, 7, 10, 28); + } + break; + // item 3 + case 34253: + if (player.showedUnfire == true) { + Pottery.makeUnfire(player, 1791, 18, 8, 1); + } + if (player.showedFire == true) { + Pottery.makeFire(player, 1791, 1923, 8, 15, 1); + } + break; + case 34252: + if (player.showedUnfire == true) { + Pottery.makeUnfire(player, 1791, 18, 8, 5); + } + if (player.showedFire == true) { + Pottery.makeFire(player, 1791, 1923, 8, 15, 5); + } + break; + case 34251: + if (player.showedUnfire == true) { + Pottery.makeUnfire(player, 1791, 18, 8, 10); + } + if (player.showedFire == true) { + Pottery.makeFire(player, 1791, 1923, 8, 15, 10); + } + break; + case 34250: + if (player.showedUnfire == true) { + Pottery.makeUnfire(player, 1791, 18, 8, 28); + } + if (player.showedFire == true) { + Pottery.makeFire(player, 1791, 1923, 8, 15, 28); + } + break; + + case 9118: + player.getPacketSender().closeAllWindows(); + break; + + case 49022: + CastOnOther.teleOtherLocation(player, player.teleotherType, false); + break; + + case 49024: + CastOnOther.teleOtherLocation(player, player.teleotherType, true); + break; + + case 8100: + player.playerAppearance[7] = 11; // beard 11: long + player.getPlayerAssistant().requestUpdates(); + break; + + case 8101: + player.playerAppearance[7] = 10; // beard 10: goatee + player.getPlayerAssistant().requestUpdates(); + break; + + case 8102: + player.playerAppearance[7] = 13; // beard 13: mustache + player.getPlayerAssistant().requestUpdates(); + break; + + case 8103: + player.playerAppearance[7] = 15; // beard 15: Chin strap + player.getPlayerAssistant().requestUpdates(); + break; + + case 8104: + player.playerAppearance[7] = 17; // beard 17: Barbarian beard? + player.getPlayerAssistant().requestUpdates(); + break; + + case 8105: + player.playerAppearance[7] = 12; // beard 12: Egyptian beard? + player.getPlayerAssistant().requestUpdates(); + break; + + case 8106: + player.playerAppearance[7] = 14; // beard 14: Clean shaven + player.getPlayerAssistant().requestUpdates(); + break; + + case 8107: + player.playerAppearance[7] = 16; // beard 16: Goatee + Chin + // strap + player.getPlayerAssistant().requestUpdates(); + break; + + case 8088: + player.playerAppearance[8] = 0; // hair/beard color: Dark-brown + player.getPlayerAssistant().requestUpdates(); + break; + + case 8089: + player.playerAppearance[8] = 1; // hair/beard color: White + player.getPlayerAssistant().requestUpdates(); + break; + + case 8090: + player.playerAppearance[8] = 2; // hair/beard color: Gray + player.getPlayerAssistant().requestUpdates(); + break; + + case 8091: + player.playerAppearance[8] = 3; // hair/beard color: Black + player.getPlayerAssistant().requestUpdates(); + break; + + case 8092: + player.playerAppearance[8] = 4; // hair/beard color: Orange + player.getPlayerAssistant().requestUpdates(); + break; + + case 8093: + player.playerAppearance[8] = 5; // hair/beard color: Blonde + player.getPlayerAssistant().requestUpdates(); + break; + + case 8094: + player.playerAppearance[8] = 6; // hair/beard color: Light-brown + player.getPlayerAssistant().requestUpdates(); + break; + + case 8095: + player.playerAppearance[8] = 7; // hair/beard color: Brown + player.getPlayerAssistant().requestUpdates(); + break; + + case 8096: + player.playerAppearance[8] = 8; // hair/beard color: Cyan + player.getPlayerAssistant().requestUpdates(); + break; + + case 8097: + player.playerAppearance[8] = 9; // hair/beard color: Green + player.getPlayerAssistant().requestUpdates(); + break; + + case 8098: + player.playerAppearance[8] = 10; // hair/beard color: Red + player.getPlayerAssistant().requestUpdates(); + break; + + case 8099: + player.playerAppearance[8] = 11; // hair/beard color: Pink + player.getPlayerAssistant().requestUpdates(); + break; + + case 10229: + player.playerAppearance[1] = 0; // 0: Bald + player.getPlayerAssistant().requestUpdates(); + break; + + case 10230: + player.playerAppearance[1] = 1; // 1: Dreadlocks + player.getPlayerAssistant().requestUpdates(); + break; + + case 10231: + player.playerAppearance[1] = 2; // 2: Long hair + player.getPlayerAssistant().requestUpdates(); + break; + + case 10232: + player.playerAppearance[1] = 3; // 3: Medium hair + player.getPlayerAssistant().requestUpdates(); + break; + + case 10233: + player.playerAppearance[1] = 4; // 4: Monk + player.getPlayerAssistant().requestUpdates(); + break; + + case 10234: + player.playerAppearance[1] = 5; // 5: Comb-over + player.getPlayerAssistant().requestUpdates(); + break; + + case 10235: + player.playerAppearance[1] = 6; // 6: Close-cropped + player.getPlayerAssistant().requestUpdates(); + break; + + case 10236: + player.playerAppearance[1] = 7; // Wild spikes + player.getPlayerAssistant().requestUpdates(); + break; + + case 10237: + player.playerAppearance[1] = 8; // Spikes + player.getPlayerAssistant().requestUpdates(); + break; + + case 10217: + player.playerAppearance[8] = 0; // hair/beard color: Dark-brown + player.getPlayerAssistant().requestUpdates(); + break; + + case 10218: + player.playerAppearance[8] = 1; // hair/beard color: White + player.getPlayerAssistant().requestUpdates(); + break; + + case 10219: + player.playerAppearance[8] = 2; // hair/beard color: Gray + player.getPlayerAssistant().requestUpdates(); + break; + + case 10220: + player.playerAppearance[8] = 3; // hair/beard color: Black + player.getPlayerAssistant().requestUpdates(); + break; + + case 10221: + player.playerAppearance[8] = 4; // hair/beard color: Orange + player.getPlayerAssistant().requestUpdates(); + break; + + case 10222: + player.playerAppearance[8] = 5; // hair/beard color: Blonde + player.getPlayerAssistant().requestUpdates(); + break; + + case 10223: + player.playerAppearance[8] = 6; // hair/beard color: Light-brown + player.getPlayerAssistant().requestUpdates(); + break; + + case 10224: + player.playerAppearance[8] = 7; // hair/beard color: Brown + player.getPlayerAssistant().requestUpdates(); + break; + + case 10225: + player.playerAppearance[8] = 8; // hair/beard color: Cyan + player.getPlayerAssistant().requestUpdates(); + break; + + case 10226: + player.playerAppearance[8] = 9; // hair/beard color: Green + player.getPlayerAssistant().requestUpdates(); + break; + + case 10227: + player.playerAppearance[8] = 10; // hair/beard color: Red + player.getPlayerAssistant().requestUpdates(); + break; + + case 10228: + player.playerAppearance[8] = 11; // hair/beard color: Pink + player.getPlayerAssistant().requestUpdates(); + break; + + case 10193: + player.getItemAssistant().deleteItem(995, 2000); + player.getPacketSender().closeAllWindows(); + break; + + case 8065: + player.getItemAssistant().deleteItem(995, 2000); + player.getPacketSender().closeAllWindows(); + break; + /** End of Hairdresser buttons */ + + case 3166: + case 3165: + case 3164: + case 3163: + Music.playMusic(player); + player.musicOn = true; + break; + + case 3162: + if (player.musicOn == true) { + player.musicOn = false; + } else { + player.getPacketSender().sendMessage("Your music is already turned off."); + } + break; + + case 8198: + PartyRoom.accept(player); + break; + + case 53152: + if (player.tutorialProgress < 36) { + CookingTutorialIsland.getAmount(player, 1); + } else { + Cooking.cookItem(player, player.cookingItem, 1, + player.cookingObject); + } + break; + + case 53151: + if (player.tutorialProgress < 36) { + CookingTutorialIsland.getAmount(player, 5); + } else { + Cooking.cookItem(player, player.cookingItem, 5, + player.cookingObject); + } + break; + + case 53150: + if (player.tutorialProgress < 36) { + CookingTutorialIsland.getAmount(player, 10); + } else { + Cooking.cookItem(player, player.cookingItem, 10, player.cookingObject); + } + break; + + case 53149: + if (player.tutorialProgress < 36) { + CookingTutorialIsland.getAmount(player, 28); + } else { + Cooking.cookItem(player, player.cookingItem, 28, + player.cookingObject); + } + break; + + case 58074: + player.getBankPin().closeBankPin(); + break; + + case 58073: + if (player.hasBankpin && !player.requestPinDelete) { + player.requestPinDelete = true; + player.getBankPin().dateRequested(); + player.getBankPin().dateExpired(); + player.getDialogueHandler().sendDialogues(1017, 1); + player.getPacketSender() + .sendMessage( + "[Notice] A PIN delete has been requested. Your PIN will be deleted in " + + player.getBankPin().recovery_Delay + + " days."); + player.getPacketSender().sendMessage( + "To cancel this change just type in the correct PIN."); + } else { + player.getPacketSender() + .sendMessage( + "[Notice] Your PIN is already pending deletion. Please wait the entire 2 days."); + player.getPacketSender().closeAllWindows(); + } + break; + + case 58025: + case 58026: + case 58027: + case 58028: + case 58029: + case 58030: + case 58031: + case 58032: + case 58033: + case 58034: + player.getBankPin().bankPinEnter(actionButtonId); + break; + + case 58230: + if (!player.hasBankpin) { + player.getBankPin().openPin(); + } else if (player.hasBankpin && player.enterdBankpin) { + player.getBankPin().resetBankPin(); + player.getPacketSender().sendMessage( + "Your PIN has been deleted as requested."); + } else { + player.getPacketSender() + .sendMessage( + "Please enter your Bank Pin before requesting a delete."); + player.getPacketSender() + .sendMessage( + "You can do this by simply opening your bank. This is to verify it's really you."); + player.getPacketSender().closeAllWindows(); + } + break; + + case 34142: // tab 1 + player.getSkillInterfaces().menuCompilation(1); + break; + + case 34119: // tab 2 + player.getSkillInterfaces().menuCompilation(2); + break; + + case 34120: // tab 3 + player.getSkillInterfaces().menuCompilation(3); + break; + + case 34123: // tab 4 + player.getSkillInterfaces().menuCompilation(4); + break; + + case 34133: // tab 5 + player.getSkillInterfaces().menuCompilation(5); + break; + + case 34136: // tab 6 + player.getSkillInterfaces().menuCompilation(6); + break; + + case 34139: // tab 7 + player.getSkillInterfaces().menuCompilation(7); + break; + + case 34155: // tab 8 + player.getSkillInterfaces().menuCompilation(8); + break; + + case 34158: // tab 9 + player.getSkillInterfaces().menuCompilation(9); + break; + + case 34161: // tab 10 + player.getSkillInterfaces().menuCompilation(10); + break; + + case 59199: // tab 11 + player.getSkillInterfaces().menuCompilation(11); + break; + + case 59202: // tab 12 + player.getSkillInterfaces().menuCompilation(12); + break; + case 59203: // tab 13 + player.getSkillInterfaces().menuCompilation(13); + break; + + case 33206: // attack + player.getSkillInterfaces().attackComplex(1); + player.getSkillInterfaces().selected = 0; + break; + case 33209: // strength + player.getSkillInterfaces().strengthComplex(1); + player.getSkillInterfaces().selected = 1; + break; + case 33212: // Defence + player.getSkillInterfaces().defenceComplex(1); + player.getSkillInterfaces().selected = 2; + break; + case 33215: // range + player.getSkillInterfaces().rangedComplex(1); + player.getSkillInterfaces().selected = 3; + break; + case 33218: // prayer + player.getSkillInterfaces().prayerComplex(1); + player.getSkillInterfaces().selected = 4; + break; + case 33221: // mage + player.getSkillInterfaces().magicComplex(1); + player.getSkillInterfaces().selected = 5; + break; + case 33224: // runecrafting + player.getSkillInterfaces().runecraftingComplex(1); + player.getSkillInterfaces().selected = 6; + break; + case 33207: // hp + player.getSkillInterfaces().hitpointsComplex(1); + player.getSkillInterfaces().selected = 7; + break; + case 33210: // agility + player.getSkillInterfaces().agilityComplex(1); + player.getSkillInterfaces().selected = 8; + break; + case 33213: // herblore + player.getSkillInterfaces().herbloreComplex(1); + player.getSkillInterfaces().selected = 9; + break; + case 33216: // theiving + player.getSkillInterfaces().thievingComplex(1); + player.getSkillInterfaces().selected = 10; + break; + case 33219: // crafting + player.getSkillInterfaces().craftingComplex(1); + player.getSkillInterfaces().selected = 11; + break; + case 33222: // fletching + player.getSkillInterfaces().fletchingComplex(1); + player.getSkillInterfaces().selected = 12; + break; + case 47130:// slayer + player.getSkillInterfaces().slayerComplex(1); + player.getSkillInterfaces().selected = 13; + break; + case 33208: // mining + player.getSkillInterfaces().miningComplex(1); + player.getSkillInterfaces().selected = 14; + break; + case 33211: // smithing + player.getSkillInterfaces().smithingComplex(1); + player.getSkillInterfaces().selected = 15; + break; + case 33214: // fishing + player.getSkillInterfaces().fishingComplex(1); + player.getSkillInterfaces().selected = 16; + break; + case 33217: // cooking + player.getSkillInterfaces().cookingComplex(1); + player.getSkillInterfaces().selected = 17; + break; + case 33220: // firemaking + player.getSkillInterfaces().firemakingComplex(1); + player.getSkillInterfaces().selected = 18; + break; + case 33223: // woodcut + player.getSkillInterfaces().woodcuttingComplex(1); + player.getSkillInterfaces().selected = 19; + break; + case 54104: // farming + player.getSkillInterfaces().farmingComplex(1); + player.getSkillInterfaces().selected = 20; + break; + + case 151: + if (player.autoRet == 1) { + player.autoRet = 0; + player.getPacketSender().sendConfig(172, 1); + } else { + player.getPacketSender().sendMessage("Your auto retaliate is already turned off."); + } + break; + + case 150: + if (player.autoRet == 0) { + player.autoRet = 1; + player.getPacketSender().sendConfig(172, 0); + } else { + player.getPacketSender().sendMessage("Your auto retaliate is already turned on."); + } + break; + + // 1st tele option + case 9190: + if (player.dialogueAction == 10) { + player.getPlayerAssistant().spellTeleport(2845, 4832, 0); + player.dialogueAction = -1; + } else if (player.dialogueAction == 11) { + player.getPlayerAssistant().spellTeleport(2786, 4839, 0); + player.dialogueAction = -1; + } else if (player.dialogueAction == 12) { + player.getPlayerAssistant().spellTeleport(2398, 4841, 0); + player.dialogueAction = -1; + } + break; + + // mining - 3046,9779,0 + // smithing - 3079,9502,0 + + // 2nd tele option + case 9191: + if (player.dialogueAction == 10) { + player.getPlayerAssistant().spellTeleport(2796, 4818, 0); + player.dialogueAction = -1; + } else if (player.dialogueAction == 11) { + player.getPlayerAssistant().spellTeleport(2527, 4833, 0); + player.dialogueAction = -1; + } else if (player.dialogueAction == 12) { + player.getPlayerAssistant().spellTeleport(2464, 4834, 0); + player.dialogueAction = -1; + } + break; + // 3rd tele option + + case 9192: + if (player.dialogueAction == 10) { + player.getPlayerAssistant().spellTeleport(2713, 4836, 0); + player.dialogueAction = -1; + } else if (player.dialogueAction == 11) { + player.getPlayerAssistant().spellTeleport(2162, 4833, 0); + player.dialogueAction = -1; + } else if (player.dialogueAction == 12) { + player.getPlayerAssistant().spellTeleport(2207, 4836, 0); + player.dialogueAction = -1; + } + break; + // 4th tele option + case 9193: + if (player.dialogueAction == 10) { + player.getPlayerAssistant().spellTeleport(2660, 4839, 0); + player.dialogueAction = -1; + } + break; + // 5th tele option + case 9194: + if (player.dialogueAction == 10 || player.dialogueAction == 11) { + player.dialogueId++; + player.getDialogueHandler().sendDialogues(player.dialogueId, 0); + } else if (player.dialogueAction == 12) { + player.dialogueId = 17; + player.getDialogueHandler().sendDialogues(player.dialogueId, 0); + } + break; + + case 58253: + // c.getPA().showInterface(15106); + player.getItemAssistant().writeBonus(); + break; + + case 59004: + player.getPacketSender().closeAllWindows(); + break; + + case 1093: + case 1094: + case 1097: + if (player.autocastId > 0) { + player.getPlayerAssistant().resetAutocast(); + } else { + if (player.playerMagicBook == 1) { + if (player.playerEquipment[player.playerWeapon] == 4675) { + player.getPacketSender().setSidebarInterface(0, + 1689); + } else { + player.getPacketSender() + .sendMessage( + "You can't autocast ancients without an ancient staff."); + } + } else if (player.playerMagicBook == 0) { + if (player.playerEquipment[player.playerWeapon] == 4170) { + player.getPacketSender().setSidebarInterface(0, + 12050); + } else { + player.getPacketSender().setSidebarInterface(0, + 1829); + } + } + + } + break; + + case 9167: + switch (player.dialogueAction) { + case 63: + player.getDialogueHandler().sendDialogues(166, player.npcType); + return; + case 64: + player.getDialogueHandler().sendDialogues(173, player.npcType); + return; + case 60: + player.getDialogueHandler().sendDialogues(277, player.npcType); + return; + case 61: + player.getDialogueHandler().sendDialogues(295, player.npcType); + return; + case 129: + player.getDialogueHandler().sendDialogues(231, player.npcType); + return; + case 58: + player.getDialogueHandler().sendDialogues(540, player.npcType); + return; + case 68: + player.getDialogueHandler().sendDialogues(39, player.npcType); + return; + case 124: + player.getDialogueHandler().sendDialogues(194, player.npcType); + return; + case 230: + player.getDialogueHandler().sendDialogues(1053, player.npcType); + return; + case 251: + player.getPacketSender().openUpBank(); + player.nextChat = 0; + return; + case 144: + player.getDialogueHandler().sendDialogues(1314, player.npcType); + return; + case 502: + player.getDialogueHandler().sendDialogues(1026, player.npcType); + return; + case 1301: // first option haircut. + player.getDialogueHandler().sendDialogues(1302, 598); + return; + case 53: + if (player.objectId == 1293 || player.objectId == 1317) { + player.getPlayerAssistant().startTeleport(2542, 3169, 0, "modern"); + } else { + player.getPacketSender().sendMessage("You can't teleport there, because you are already there!"); + player.getPacketSender().closeAllWindows(); + } + return; + case 159: + player.getDialogueHandler().sendDialogues(3161, player.npcType); + return; + case 167: + player.getDialogueHandler().sendDialogues(1343, player.npcType); + return; + case 222: + player.getDialogueHandler().sendDialogues(911, player.npcType); + player.dialogueAction = -1; + return; + case 182: + player.getDialogueHandler().sendNpcChat1("No, I was hoping someone could help me find it though.", player.talkingNpc, "Squire"); + player.nextChat = 0; + return; + case 188: + player.getDialogueHandler().sendDialogues(3129, 945); + return; + case 185: + player.getDialogueHandler().sendDialogues(629, player.npcType); + return; + case 186: // Shield of Arrav + player.getDialogueHandler().sendDialogues(629, player.npcType); + return; + } + player.dialogueAction = 0; + player.getPacketSender().closeAllWindows(); + break; + + case 9168: + switch (player.dialogueAction) { + case 63: + player.getDialogueHandler().sendDialogues(167, player.npcType); + return; + case 64: + player.getDialogueHandler().sendDialogues(174, player.npcType); + return; + case 60: + player.getDialogueHandler().sendDialogues(279, player.npcType); + return; + case 61: + player.getDialogueHandler().sendDialogues(297, player.npcType); + return; + case 124: + player.getDialogueHandler().sendDialogues(192, player.npcType); + return; + case 126: + player.getDialogueHandler().sendDialogues(203, player.npcType); + return; + case 58: + player.getDialogueHandler().sendDialogues(538, player.npcType); + return; + case 68: + player.getDialogueHandler().sendDialogues(40, player.npcType); + return; + case 230: + player.getDialogueHandler().sendDialogues(1049, player.npcType); + break; + case 251: + player.getBankPin().bankPinSettings(); + player.nextChat = 0; + return; + case 502: + player.getDialogueHandler().sendDialogues(1022, player.npcType); + return; + case 1301: + player.getDialogueHandler().sendDialogues(1308, 598); + return; + case 144: + player.getDialogueHandler().sendDialogues(1315, player.npcType); + return; + case 53: + if (player.objectId == 1294 || player.objectId == 1317) { + player.getPlayerAssistant().startTeleport(2461, 3444, 0, + "modern"); + } else { + player.getPacketSender().sendMessage("You can't teleport there, because you are already there!"); + player.getPacketSender().closeAllWindows(); + } + return; + case 159: + player.getDialogueHandler().sendDialogues(3195, player.npcType); + return; + case 167: + player.getDialogueHandler().sendDialogues(1344, player.npcType); + return; + case 222: + player.getDialogueHandler().sendDialogues(912, player.npcType); + player.dialogueAction = -1; + return; + case 182: + player.getDialogueHandler().sendDialogues(615, player.npcType); + return; + case 188: + player.getDialogueHandler().sendDialogues(3130, 945); + return; + case 185: + player.getDialogueHandler().sendDialogues(628, player.npcType); + return; + case 186: // Shield of Arrav + player.getDialogueHandler().sendDialogues(628, player.npcType); + return; + } + player.dialogueAction = 0; + player.getPacketSender().closeAllWindows(); + break; + + case 9169: + switch (player.dialogueAction) { + case 63: + player.getDialogueHandler().sendDialogues(168, player.npcType); + return; + case 64: + player.getDialogueHandler().sendDialogues(175, player.npcType); + return; + case 60: + player.getDialogueHandler().sendDialogues(278, player.npcType); + return; + case 61: + player.getDialogueHandler().sendDialogues(296, player.npcType); + return; + case 53: + if (player.objectId == 1294 || player.objectId == 1293) { + player.getPlayerAssistant().startTeleport(3179, 3507, 0, + "modern"); + } else { + player.getPacketSender().sendMessage("You can't teleport there, because you are already there!"); + player.getPacketSender().closeAllWindows(); + } + return; + case 129: + player.getDialogueHandler().sendDialogues(232, player.npcType); + return; + case 126: + player.getDialogueHandler().sendDialogues(204, player.npcType); + return; + case 144: + player.getDialogueHandler().sendDialogues(1316, player.npcType); + return; + case 124: + player.getDialogueHandler().sendDialogues(3193, 741); + return; + case 58: + player.getDialogueHandler().sendDialogues(539, player.npcType); + return; + case 68: + player.getDialogueHandler().sendDialogues(41, player.npcType); + return; + case 230: + player.getDialogueHandler().sendDialogues(1050, player.npcType); + break; + case 251: + player.getDialogueHandler().sendDialogues(1015, 494); + return; + case 502: + player.getDialogueHandler().sendDialogues(1025, player.npcType); + return; + case 1301: + player.getDialogueHandler().sendDialogues(1306, 598); + return; + case 222: + player.getDialogueHandler().sendDialogues(913, player.npcType); + player.dialogueAction = -1; + return; + case 167: + player.getDialogueHandler().sendDialogues(1342, player.npcType); + return; + case 159: + player.getDialogueHandler().sendDialogues(3160, player.npcType); + return; + case 182: + player.getDialogueHandler().sendNpcChat1("Of course he is angry...", player.talkingNpc, "Squire"); + player.nextChat = 0; + return; + case 188: + player.getDialogueHandler().sendDialogues(3131, 945); + return; + case 185: + player.getDialogueHandler().sendDialogues(630, player.npcType); + return; + case 186: // Shield of Arrav + player.getDialogueHandler().sendDialogues(691, player.npcType); + return; + } + player.dialogueAction = 0; + player.getPacketSender().closeAllWindows(); + break; + + case 9157:// barrows tele to tunnels + if (player.dialogueAction == 1) { + int r = 4; + // int r = Misc.random(3); + + switch (r) { + case 0: + player.getPlayerAssistant().movePlayer(3534, 9677, 0); + break; + + case 1: + player.getPlayerAssistant().movePlayer(3534, 9712, 0); + break; + + case 2: + player.getPlayerAssistant().movePlayer(3568, 9712, 0); + break; + + case 3: + player.getPlayerAssistant().movePlayer(3568, 9677, 0); + break; + case 4: + player.getPlayerAssistant().movePlayer(3551, 9694, 0); + break; + } + } else if (player.dialogueAction == 2) { + player.getPlayerAssistant().movePlayer(2507, 4717, 0); + } else if (player.dialogueAction == 7) { + player.getPlayerAssistant().startTeleport(3088, 3933, 0, "modern"); + player.getPacketSender().sendMessage( + "NOTE: You are now in the wilderness..."); + } else if (player.dialogueAction == 8) { + player.getPlayerAssistant().resetBarrows(); + player.getPacketSender().sendMessage( + "Your barrows have been reset."); + } else if (player.dialogueAction == 29) { + player.getDialogueHandler().sendDialogues(480, player.npcType); + return; + } else if (player.dialogueAction == 30) { + player.getDialogueHandler().sendDialogues(488, player.npcType); + return; + } else if (player.dialogueAction == 34) { + player.getDialogueHandler().sendDialogues(361, player.npcType); + return; + } else if (player.dialogueAction == 50) { + player.getPlayerAssistant().startTeleport(2898, 3562, 0, + "modern"); + Teles.necklaces(player); + return; + } else if (player.dialogueAction == 55) { + player.getDialogueHandler().sendDialogues(91, player.npcType); + return; + } else if (player.dialogueAction == 56) { + player.getDialogueHandler().sendDialogues(96, player.npcType); + return; + } else if (player.dialogueAction == 57) { + player.getDialogueHandler().sendDialogues(57, player.npcType); + return; + } else if (player.dialogueAction == 3222) { + player.getBarrows().checkCoffins(); + player.getPacketSender().closeAllWindows(); + return; + } else if (player.dialogueAction == 3218) { + player.getDialogueHandler().sendDialogues(3219, 0); + return; + } else if (player.dialogueAction == 65) { + player.getDialogueHandler().sendDialogues(179, player.npcType); + return; + } else if (player.dialogueAction == 66) { + player.getDialogueHandler().sendDialogues(182, player.npcType); + return; + } else if (player.dialogueAction == 67) { + player.getDialogueHandler().sendDialogues(36, player.npcType); + return; + } else if (player.dialogueAction == 68) { + player.getDialogueHandler().sendDialogues(587, player.npcType); + return; + } else if (player.dialogueAction == 70) { + player.getDialogueHandler().sendDialogues(1009, player.npcType); + return; + } else if (player.dialogueAction == 71) { + player.getDialogueHandler().sendDialogues(556, player.npcType); + return; + } else if (player.dialogueAction == 72) { + player.getDialogueHandler().sendDialogues(563, player.npcType); + return; + } else if (player.dialogueAction == 73) { + player.getDialogueHandler().sendDialogues(579, player.npcType); + return; + } else if (player.dialogueAction == 74) { + player.getDialogueHandler().sendDialogues(534, player.npcType); + return; + } else if (player.dialogueAction == 90) { + player.getDialogueHandler().sendDialogues(12, player.npcType); + return; + } else if (player.dialogueAction == 91) { + player.getDialogueHandler().sendDialogues(16, player.npcType); + return; + } else if (player.dialogueAction == 92) { + player.getDialogueHandler().sendDialogues(9, player.npcType); + return; + } else if (player.dialogueAction == 93) { + player.getDialogueHandler().sendDialogues(23, player.npcType); + return; + } else if (player.dialogueAction == 118) { + player.getDialogueHandler().sendDialogues(394, player.npcType); + return; + } else if (player.dialogueAction == 119) { + player.getDialogueHandler().sendDialogues(399, player.npcType); + return; + } else if (player.dialogueAction == 120) { + player.getDialogueHandler().sendDialogues(406, player.npcType); + return; + } else if (player.dialogueAction == 121) { + player.getDialogueHandler().sendDialogues(438, player.npcType); + return; + } else if (player.dialogueAction == 125) { + player.getDialogueHandler().sendDialogues(154, player.npcType); + return; + } else if (player.dialogueAction == 127) { + player.getDialogueHandler().sendDialogues(210, player.npcType); + return; + } else if (player.dialogueAction == 128) { + player.getDialogueHandler().sendDialogues(223, player.npcType); + return; + } else if (player.dialogueAction == 130) { + player.getDialogueHandler().sendDialogues(594, player.npcType); + return; + } else if (player.dialogueAction == 132) { + player.getDialogueHandler().sendDialogues(1013, player.npcType); + } else if (player.dialogueAction == 133) { + player.getDialogueHandler().sendDialogues(1016, player.npcType); + } else if (player.dialogueAction == 140) { + player.getDialogueHandler().sendDialogues(198, player.npcType); + return; + } else if (player.dialogueAction == 141) { + player.getDialogueHandler().sendDialogues(1020, player.npcType); + return; + } else if (player.dialogueAction == 143) { + player.getDialogueHandler().sendDialogues(1232, player.npcType); + return; + } else if (player.dialogueAction == 168) { + player.getDialogueHandler().sendDialogues(476, player.npcType); + return; + } else if (player.dialogueAction == 508) { + player.getDialogueHandler().sendDialogues(1026, player.npcType); + return; + } else if (player.dialogueAction == 855) { + player.getItemAssistant().removeAllItems(); + } else if (player.dialogueAction == 146) { + player.getDialogueHandler().sendDialogues(1325, player.npcType); + return; + } else if (player.dialogueAction == 177) { + player.getDialogueHandler().sendDialogues(1376, player.npcType); + return; + } else if (player.dialogueAction == 151) { + player.getDialogueHandler().sendDialogues(2998, player.npcType); + return; + } else if (player.dialogueAction == 152) { + player.getDialogueHandler().sendDialogues(3121, player.npcType); + return; + } else if (player.dialogueAction == 154) { + player.getDialogueHandler().sendDialogues(3137, player.npcType); + return; + } else if (player.dialogueAction == 155) { + player.getDialogueHandler().sendDialogues(3142, player.npcType); + return; + } else if (player.dialogueAction == 156) { + player.getDialogueHandler().sendDialogues(3147, player.npcType); + return; + } else if (player.dialogueAction == 157) { + player.getDialogueHandler().sendDialogues(3153, player.npcType); + return; + } else if (player.dialogueAction == 158) { + player.getDialogueHandler().sendDialogues(3156, player.npcType); + return; + } else if (player.dialogueAction == 3111) { + player.getDialogueHandler().sendDialogues(3112, 946); + return; + } else if (player.dialogueAction == 162) { + player.getDialogueHandler().sendDialogues(3170, player.npcType); + return; + } else if (player.dialogueAction == 163) { + player.getDialogueHandler().sendDialogues(3129, player.npcType); + return; + } else if (player.dialogueAction == 164) { + player.getDialogueHandler().sendDialogues(3177, 510); + return; + } else if (player.dialogueAction == 165) { + player.getDialogueHandler().sendDialogues(3182, 510); + return; + } else if (player.dialogueAction == 166) { + player.getDialogueHandler().sendDialogues(1340, player.npcType); + return; + } else if (player.dialogueAction == 170) { + player.getDialogueHandler().sendDialogues(1348, player.npcType); + return; + } else if (player.dialogueAction == 171) { + player.getDialogueHandler().sendDialogues(1352, player.npcType); + return; + } else if (player.dialogueAction == 172) { + player.getDialogueHandler().sendDialogues(1355, player.npcType); + return; + } else if (player.dialogueAction == 173) { + player.getDialogueHandler().sendDialogues(1360, player.npcType); + return; + } else if (player.dialogueAction == 175) { + player.getDialogueHandler().sendDialogues(3192, player.npcType); + return; + } else if (player.dialogueAction == 176) { + player.getDialogueHandler().sendDialogues(1372, player.npcType); + return; + } else if (player.dialogueAction == 178) { + player.getDialogueHandler().sendDialogues(3186, player.npcType); + return; + } else if (player.dialogueAction == 179) { + player.getDialogueHandler().sendDialogues(1380, player.npcType); + return; + } else if (player.dialogueAction == 180) { + player.getDialogueHandler().sendDialogues(3197, player.npcType); + return; + } else if (player.dialogueAction == 181) { + player.getDialogueHandler().sendDialogues(612, player.npcType); + return; + } else if (player.dialogueAction == 183) { + player.getDialogueHandler().sendDialogues(620, player.npcType); + return; + } else if (player.dialogueAction == 184) { + player.getDialogueHandler().sendDialogues(624, player.npcType); + return; + } else if (player.dialogueAction == 3204) { + player.getItemAssistant().deleteItem(1929, 1); + player.getItemAssistant().deleteItem(1933, 1); + player.getItemAssistant().addItem(1953, 1); + player.getItemAssistant().addItem(1925, 1); + player.getItemAssistant().addItem(1931, 1); + player.getPlayerAssistant().addSkillXP(1, player.playerCooking); + player.nextChat = 0; + } else if (player.dialogueAction == 3205) { + player.getItemAssistant().deleteItem(1933, 1); + player.getItemAssistant().deleteItem(1937, 1); + player.getItemAssistant().addItem(1953, 1); + player.getItemAssistant().addItem(1925, 1); + player.getItemAssistant().addItem(1935, 1); + player.getPlayerAssistant().addSkillXP(1, player.playerCooking); + player.nextChat = 0; + } else if (player.dialogueAction == 189) { + player.getDialogueHandler().sendDialogues(3210, player.npcType); + return; + } else if (player.dialogueAction == 161) {// rod + player.getPlayerAssistant().startTeleport(3313, 3234, 0, "modern"); + Teles.necklaces(player); + return; + } + player.dialogueAction = 0; + player.getPacketSender().closeAllWindows(); + break; + + case 9158: + if (player.dialogueAction == 8) { + player.getPlayerAssistant().fixAllBarrows(); + } else if (player.dialogueAction == 29) { + player.getDialogueHandler().sendDialogues(481, player.npcType); + return; + } else if (player.dialogueAction == 34) { + player.getDialogueHandler().sendDialogues(359, player.npcType); + return; + } else if (player.dialogueAction == 50) { + player.getPlayerAssistant().startTeleport(2545, 3569, 0, "modern"); + Teles.necklaces(player); + return; + } else if (player.dialogueAction == 55) { + player.getDialogueHandler().sendDialogues(92, player.npcType); + return; + } else if (player.dialogueAction == 56) { + player.getDialogueHandler().sendDialogues(95, player.npcType); + return; + } else if (player.dialogueAction == 74) { + player.getDialogueHandler().sendDialogues(535, player.npcType); + return; + } else if (player.dialogueAction == 57) { + player.getDialogueHandler().sendDialogues(58, player.npcType); + return; + } else if (player.dialogueAction == 62) { + player.getDialogueHandler().sendDialogues(309, player.npcType); + return; + } else if (player.dialogueAction == 67) { + player.getDialogueHandler().sendDialogues(35, player.npcType); + return; + } else if (player.dialogueAction == 68) { + player.getDialogueHandler().sendDialogues(586, player.npcType); + return; + } else if (player.dialogueAction == 71) { + player.getDialogueHandler().sendDialogues(582, player.npcType); + return; + } else if (player.dialogueAction == 72) { + player.getDialogueHandler().sendDialogues(562, player.npcType); + return; + } else if (player.dialogueAction == 73) { + player.getDialogueHandler().sendDialogues(580, player.npcType); + return; + } else if (player.dialogueAction == 90) { + player.getDialogueHandler().sendDialogues(13, player.npcType); + return; + } else if (player.dialogueAction == 91) { + player.getDialogueHandler().sendDialogues(17, player.npcType); + return; + } else if (player.dialogueAction == 118) { + player.getDialogueHandler().sendDialogues(392, player.npcType); + return; + } else if (player.dialogueAction == 119) { + player.getDialogueHandler().sendDialogues(404, player.npcType); + return; + } else if (player.dialogueAction == 120) { + player.getDialogueHandler().sendDialogues(404, player.npcType); + return; + } else if (player.dialogueAction == 121) { + player.getDialogueHandler().sendDialogues(437, player.npcType); + return; + } else if (player.dialogueAction == 125) { + player.getDialogueHandler().sendDialogues(163, player.npcType); + return; + } else if (player.dialogueAction == 130) { + player.getDialogueHandler().sendDialogues(593, player.npcType); + return; + } else if (player.dialogueAction == 131) { + JewelryMaking.mouldInterface(player); + return; + } else if (player.dialogueAction == 141) { + player.getDialogueHandler().sendDialogues(1021, player.npcType); + return; + } else if (player.dialogueAction == 143) { + player.getDialogueHandler().sendDialogues(1233, player.npcType); + return; + } else if (player.dialogueAction == 161) {// rod + player.getPlayerAssistant().startTeleport(2441, 3090, 0, "modern"); + Teles.necklaces(player); + return; + } else if (player.dialogueAction == 508) { + player.getDialogueHandler().sendDialogues(1025, player.npcType); + return; + } else if (player.dialogueAction == 146) { + player.getDialogueHandler().sendDialogues(1324, player.npcType); + return; + } else if (player.dialogueAction == 177) { + player.getDialogueHandler().sendDialogues(1375, player.npcType); + return; + } else if (player.dialogueAction == 21) { + Flowers.harvestFlower(player, Flowers.lastObject); + player.getPacketSender().closeAllWindows(); + } else if (player.dialogueAction == 3111) { + player.getDialogueHandler().sendDialogues(3117, 946); + return; + } else if (player.dialogueAction == 152) { + player.getDialogueHandler().sendDialogues(3120, player.npcType); + return; + } else if (player.dialogueAction == 151) { + player.getDialogueHandler().sendDialogues(3000, player.npcType); + player.getPacketSender().closeAllWindows(); + return; + } else if (player.dialogueAction == 154) { + player.getDialogueHandler().sendDialogues(3135, player.npcType); + return; + } else if (player.dialogueAction == 155) { + player.getDialogueHandler().sendDialogues(3141, player.npcType); + return; + } else if (player.dialogueAction == 156) { + player.getDialogueHandler().sendDialogues(3146, player.npcType); + return; + } else if (player.dialogueAction == 157) { + player.getDialogueHandler().sendDialogues(3152, player.npcType); + return; + } else if (player.dialogueAction == 158) { + player.getDialogueHandler().sendDialogues(3157, player.npcType); + return; + } else if (player.dialogueAction == 162) { + player.getDialogueHandler().sendDialogues(3169, player.npcType); + return; + } else if (player.dialogueAction == 163) { + player.getDialogueHandler().sendDialogues(3131, player.npcType); + return; + } else if (player.dialogueAction == 164) { + player.getDialogueHandler().sendDialogues(3175, player.npcType); + return; + } else if (player.dialogueAction == 165) { + player.getDialogueHandler().sendDialogues(3180, player.npcType); + return; + } else if (player.dialogueAction == 166) { + player.getDialogueHandler().sendDialogues(1339, player.npcType); + return; + } else if (player.dialogueAction == 168) { + player.getDialogueHandler().sendDialogues(1337, player.npcType); + return; + } else if (player.dialogueAction == 170) { + player.getDialogueHandler().sendDialogues(1347, player.npcType); + return; + } else if (player.dialogueAction == 171) { + player.getDialogueHandler().sendDialogues(1351, player.npcType); + return; + } else if (player.dialogueAction == 172) { + player.getDialogueHandler().sendDialogues(1356, player.npcType); + return; + } else if (player.dialogueAction == 173) { + player.getDialogueHandler().sendDialogues(1361, player.npcType); + return; + } else if (player.dialogueAction == 175) { + player.getDialogueHandler().sendDialogues(3191, player.npcType); + return; + } else if (player.dialogueAction == 176) { + player.getDialogueHandler().sendDialogues(1371, player.npcType); + return; + } else if (player.dialogueAction == 178) { + player.getDialogueHandler().sendDialogues(3185, player.npcType); + return; + } else if (player.dialogueAction == 179) { + player.getDialogueHandler().sendDialogues(1381, player.npcType); + return; + } else if (player.dialogueAction == 180) { + player.getDialogueHandler().sendDialogues(3199, player.npcType); + return; + } else if (player.dialogueAction == 181) { + player.getDialogueHandler().sendNpcChat1("No I like my job as Squire, I just need some help.", player.talkingNpc, "Squire"); + player.nextChat = 0; + return; + } else if (player.dialogueAction == 183) { + player.getDialogueHandler().sendPlayerChat1("Well I hope you find it soon."); + player.nextChat = 0; + return; + } else if (player.dialogueAction == 184) { + player.getDialogueHandler().sendPlayerChat1("No, I've got lots of mining work to do."); + player.nextChat = 0; + return; + } else if (player.dialogueAction == 3204) { + player.getItemAssistant().deleteItem(1929, 1); + player.getItemAssistant().deleteItem(1933, 1); + player.getItemAssistant().addItem(2307, 1); + player.getItemAssistant().addItem(1925, 1); + player.getItemAssistant().addItem(1931, 1); + player.getPlayerAssistant().addSkillXP(1, player.playerCooking); + player.nextChat = 0; + } else if (player.dialogueAction == 3205) { + player.getItemAssistant().deleteItem(1933, 1); + player.getItemAssistant().deleteItem(1937, 1); + player.getItemAssistant().addItem(1953, 1); + player.getItemAssistant().addItem(1925, 1); + player.getItemAssistant().addItem(1935, 1); + player.getPlayerAssistant().addSkillXP(1, player.playerCooking); + player.nextChat = 0; + } else if (player.dialogueAction == 189) { + player.getDialogueHandler().sendDialogues(3212, player.npcType); + return; + } + player.dialogueAction = 0; + player.getPacketSender().closeAllWindows(); + break; + + case 9178: + if (player.dialogueAction == 2) { + player.getPlayerAssistant().startTeleport(3428, 3538, 0, "modern"); + } + if (player.dialogueAction == 122 && player.objectId == 12164 || player.objectId == 12163 || player.objectId == 12166) {//barb + player.getPlayerAssistant().startTeleport(3112, 3410, 0, "modern"); + } else if (player.objectId == 12165) { + if (player.dialogueAction == 122) { + player.getPacketSender().sendMessage("You can't take the canoe to barbarian village because you're already there!"); + player.getPlayerAssistant().handleCanoe(); + } + } + if (player.dialogueAction == 4) { + player.getPlayerAssistant().startTeleport(3565, 3314, 0, + "modern"); + } + if (player.dialogueAction == 3) { + player.getPlayerAssistant().startTeleport(3088, 3500, 0, + "modern"); + } + if (player.dialogueAction == 31) { + player.getDialogueHandler().sendDialogues(500, player.npcType); + } + if (player.dialogueAction == 32) { + player.getDialogueHandler().sendDialogues(340, player.npcType); + } + if (player.dialogueAction == 33) { + player.getDialogueHandler().sendDialogues(354, player.npcType); + } + if (player.dialogueAction == 35) { + player.getDialogueHandler().sendDialogues(378, player.npcType); + } + if (player.dialogueAction == 51) { + player.getPlayerAssistant().gloryTeleport(3088, 3500, 0, + "modern"); + } + Teles.necklaces(player); + if (player.dialogueAction == 52) { + player.getDialogueHandler().sendDialogues(52, player.npcType); + } + if (player.dialogueAction == 1000) { + player.getDialogueHandler().sendDialogues(3524,player.npcType); + } + if (player.dialogueAction == 69) { + player.getDialogueHandler().sendDialogues(1005, player.npcType); + } + if (player.dialogueAction == 228) { + player.getDialogueHandler().sendDialogues(1045, player.npcType); + } + /* + * if (client.dialogueAction == 142) + * client.getDialogues().handleDialogues(1231, client.npcType); + */ + if (player.dialogueAction == 145) { + player.getDialogueHandler().sendDialogues(1318, player.SlayerMaster); + } + if (player.dialogueAction == 153) { + player.getDialogueHandler().sendDialogues(3123, player.npcType); + } + if (player.dialogueAction == 160) { + player.getDialogueHandler().sendDialogues(3164, player.npcType); + } + if (player.dialogueAction == 142) { + player.getDialogueHandler().sendDialogues(1234, player.npcType); + } + if (player.dialogueAction == 485) { + player.getRangersGuild().buyArrows(); + } + if (player.dialogueAction == 700) { + player.getDialogueHandler().sendDialogues(28, player.npcType); + } + break; + + case 9179: + if (player.dialogueAction == 2) { + player.getPlayerAssistant().startTeleport(2884, 3395, 0, "modern"); + } + if (player.dialogueAction == 122 && player.objectId == 12163 || player.objectId == 12165 || player.objectId == 12166) {//champ + player.getPlayerAssistant().startTeleport(3203, 3343, 0, "modern"); + } else if (player.objectId == 12164) { + if (player.dialogueAction == 122) { + player.getPacketSender().sendMessage("You can't take the canoe to the Champion Guild because you're already there!"); + player.getPlayerAssistant().handleCanoe(); + } + } + if (player.dialogueAction == 4) { + player.getPlayerAssistant().startTeleport(2444, 5170, 0, "modern"); + } + if (player.dialogueAction == 3) { + player.getPlayerAssistant().startTeleport(3243, 3513, 0, "modern"); + } + if (player.dialogueAction == 31) { + player.getDialogueHandler().sendDialogues(502, player.npcType); + } + if (player.dialogueAction == 32) { + player.getDialogueHandler().sendDialogues(341, player.npcType); + } + if (player.dialogueAction == 33) { + player.getDialogueHandler().sendDialogues(356, player.npcType); + } + if (player.dialogueAction == 35) { + player.getDialogueHandler().sendDialogues(376, player.npcType); + } + if (player.dialogueAction == 51) { + player.getPlayerAssistant().gloryTeleport(3293, 3174, 0, "modern"); + } + Teles.necklaces(player); + if (player.dialogueAction == 52) { + player.getDialogueHandler().sendDialogues(64, player.npcType); + } + if (player.dialogueAction == 1000) { + player.getDialogueHandler().sendDialogues(3523, player.npcType); + } + if (player.dialogueAction == 69) { + player.getDialogueHandler().sendDialogues(500002, player.npcType); + } + if (player.dialogueAction == 228) { + player.getDialogueHandler().sendDialogues(1042, player.npcType); + } + if (player.dialogueAction == 145) { + player.getDialogueHandler().sendDialogues(1319, player.SlayerMaster); + } + if (player.dialogueAction == 153) { + player.getDialogueHandler().sendDialogues(3124, player.npcType); + } + if (player.dialogueAction == 160) { + player.getDialogueHandler().sendDialogues(3164, player.npcType); + } + if (player.dialogueAction == 142) { + player.getDialogueHandler().sendDialogues(1235, player.npcType); + } + if (player.dialogueAction == 485) { + player.getRangersGuild().exchangePoints(); + } + if (player.dialogueAction == 700) { + player.getDialogueHandler().sendDialogues(29, player.npcType); + } + break; + + case 9180: + if (player.dialogueAction == 2) { + player.getPlayerAssistant().startTeleport(2471, 10137, 0, "modern"); + } + if (player.dialogueAction == 69) { + player.getDialogueHandler().sendDialogues(500003, player.npcType); + } + if (player.dialogueAction == 122 && player.objectId == 12164 || player.objectId == 12165 || player.objectId == 12166) {//lumby + player.getPlayerAssistant().startTeleport(3243, 3237, 0, "modern"); + } else if (player.objectId == 12163) { + if (player.dialogueAction == 122) { + player.getPacketSender().sendMessage("You can't take the canoe to Lumbridge because you're already there!"); + player.getPlayerAssistant().handleCanoe(); + } + } + if (player.dialogueAction == 3) { + player.getPlayerAssistant().startTeleport(3363, 3676, 0, "modern"); + } + if (player.dialogueAction == 4) { + player.getPlayerAssistant().startTeleport(2659, 2676, 0, "modern"); + } + if (player.dialogueAction == 31) { + player.getDialogueHandler().sendDialogues(501, player.npcType); + } + if (player.dialogueAction == 32) { + player.getDialogueHandler().sendDialogues(342, player.npcType); + } + if (player.dialogueAction == 33) { + player.getDialogueHandler().sendDialogues(355, player.npcType); + } + if (player.dialogueAction == 35) { + player.getDialogueHandler().sendDialogues(377, player.npcType); + } + if (player.dialogueAction == 51) { + player.getPlayerAssistant().gloryTeleport(2911, 3152, 0, "modern"); + } + Teles.necklaces(player); + if (player.dialogueAction == 52) { + player.getDialogueHandler().sendDialogues(65, player.npcType); + } + if (player.dialogueAction == 1000) { + player.getDialogueHandler().sendDialogues(3523,player.npcType); + } + if (player.dialogueAction == 700) { + player.getDialogueHandler().sendDialogues(30, player.npcType); + } + if (player.dialogueAction == 228) { + player.getDialogueHandler().sendDialogues(1041, player.npcType); + } + if (player.dialogueAction == 145) { + player.getDialogueHandler().sendDialogues(1320, player.SlayerMaster); + } + if (player.dialogueAction == 153) { + player.getDialogueHandler().sendDialogues(3125, player.npcType); + } + if (player.dialogueAction == 160) { + player.getDialogueHandler().sendDialogues(3165, player.npcType); + } + if (player.dialogueAction == 142) { + player.getDialogueHandler().sendDialogues(1236, player.npcType); + } + if (player.dialogueAction == 485) { + player.getRangersGuild().howAmIDoing(); + } + if (player.dialogueAction == 69) { + player.getDialogueHandler().sendDialogues(1003, player.npcType); + } + break; + + case 9181: + if (player.dialogueAction == 2) { + player.getPlayerAssistant().startTeleport(2669, 3714, 0, "modern"); + } + if (player.dialogueAction == 69) { + player.getDialogueHandler().sendDialogues(500004, player.npcType); + } + if (player.dialogueAction == 122 && player.objectId == 12163 || player.objectId == 12164 || player.objectId == 12165) {//edge + player.getPlayerAssistant().startTeleport(3132, 3509, 0, "modern"); + } else if (player.objectId == 12166) { + if (player.dialogueAction == 122) { + player.getPacketSender().sendMessage("You can't take the canoe to Edgeville because you're already there!"); + player.getPlayerAssistant().handleCanoe(); + } + } + if (player.dialogueAction == 3) { + player.getPlayerAssistant().startTeleport(2540, 4716, 0, + "modern"); + } + if (player.dialogueAction == 51) { + player.getPlayerAssistant().gloryTeleport(3103, 3249, 0, + "modern"); + } + Teles.necklaces(player); + if (player.dialogueAction == 52) { + player.getDialogueHandler().sendDialogues(63, player.npcType); + } + if (player.dialogueAction == 1000) { + player.getDialogueHandler().sendDialogues(3523, player.npcType); + } + if (player.dialogueAction == 700) { + player.getDialogueHandler().sendDialogues(31, player.npcType); + } + if (player.dialogueAction == 69) { + player.getDialogueHandler().sendDialogues(1004, player.npcType); + } + if (player.dialogueAction == 228) { + player.getDialogueHandler().sendDialogues(1038, player.npcType); + } + if (player.dialogueAction == 145) { + player.getDialogueHandler().sendDialogues(1321, player.SlayerMaster); + } + if (player.dialogueAction == 153) { + player.getDialogueHandler().sendDialogues(3126, player.npcType); + } + if (player.dialogueAction == 160) { + player.getDialogueHandler().sendDialogues(3166, player.npcType); + } + if (player.dialogueAction == 142) { + player.getDialogueHandler().sendDialogues(1231, player.npcType); + } + if (player.dialogueAction == 485) { + player.getPacketSender().closeAllWindows(); + } + if (player.dialogueAction == 700) { + player.getDialogueHandler().sendDialogues(28, player.npcType); + } + break; + + /** Dueling **/ + case 26065: // no forfeit + case 26040: + player.duelSlot = -1; + player.getDueling().selectRule(0); + break; + + case 26066: // no movement + case 26048: + player.duelSlot = -1; + player.getDueling().selectRule(1); + break; + + case 26069: // no range + case 26042: + player.duelSlot = -1; + player.getDueling().selectRule(2); + break; + + case 26070: // no melee + case 26043: + player.duelSlot = -1; + player.getDueling().selectRule(3); + break; + + case 26071: // no mage + case 26041: + player.duelSlot = -1; + player.getDueling().selectRule(4); + break; + + case 26072: // no drinks + case 26045: + player.duelSlot = -1; + player.getDueling().selectRule(5); + break; + + case 26073: // no food + case 26046: + player.duelSlot = -1; + player.getDueling().selectRule(6); + break; + + case 26074: // no prayer + case 26047: + player.duelSlot = -1; + player.getDueling().selectRule(7); + break; + + case 26076: // obsticals + case 26075: + player.duelSlot = -1; + player.getDueling().selectRule(8); + break; + + case 2158: // fun weapons + case 2157: + player.duelSlot = -1; + player.getDueling().selectRule(9); + break; + + case 30136: // sp attack + case 30137: + player.duelSlot = -1; + player.getDueling().selectRule(10); + break; + + case 53245: // no helm + player.duelSlot = 0; + player.getDueling().selectRule(11); + break; + + case 53246: // no cape + player.duelSlot = 1; + player.getDueling().selectRule(12); + break; + + case 53247: // no ammy + player.duelSlot = 2; + player.getDueling().selectRule(13); + break; + + case 53249: // no weapon. + player.duelSlot = 3; + player.getDueling().selectRule(14); + break; + + case 53250: // no body + player.duelSlot = 4; + player.getDueling().selectRule(15); + break; + + case 53251: // no shield + player.duelSlot = 5; + player.getDueling().selectRule(16); + break; + + case 53252: // no legs + player.duelSlot = 7; + player.getDueling().selectRule(17); + break; + + case 53255: // no gloves + player.duelSlot = 9; + player.getDueling().selectRule(18); + break; + + case 53254: // no boots + player.duelSlot = 10; + player.getDueling().selectRule(19); + break; + + case 53253: // no rings + player.duelSlot = 12; + player.getDueling().selectRule(20); + break; + + case 53248: // no arrows + player.duelSlot = 13; + player.getDueling().selectRule(21); + break; + + case 26018: + if (player.inDuelArena()) { + Client opponent = (Client) PlayerHandler.players[player.duelingWith]; + if (opponent == null) { + player.getDueling().declineDuel(); + return; + } + + if (player.duelRule[2] && player.duelRule[3] + && player.duelRule[4]) { + player.getPacketSender() + .sendMessage( + "You won't be able to attack the player with the rules you have set."); + break; + } + player.duelStatus = 2; + if (player.duelStatus == 2) { + player.getPacketSender().sendFrame126( + "Waiting for other player...", 6684); + opponent.getPacketSender().sendFrame126( + "Other player has accepted.", 6684); + } + if (opponent.duelStatus == 2) { + opponent.getPacketSender().sendFrame126( + "Waiting for other player...", 6684); + player.getPacketSender().sendFrame126( + "Other player has accepted.", 6684); + } + + if (player.duelStatus == 2 && opponent.duelStatus == 2) { + player.duelStatus = 3; + opponent.duelStatus = 3; + player.getDueling().confirmDuel(); + opponent.getDueling().confirmDuel(); + } + } else { + Client o = (Client) PlayerHandler.players[player.duelingWith]; + player.getDueling().declineDuel(); + o.getDueling().declineDuel(); + player.getPacketSender().sendMessage( + "You can't stake out of the Duel Arena."); + } + break; + + case 25120: + if (player.inDuelArena()) { + if (player.duelStatus == 5) { + break; + } + Client o1 = (Client) PlayerHandler.players[player.duelingWith]; + if (o1 == null) { + player.getDueling().declineDuel(); + return; + } + + player.duelStatus = 4; + if (o1.duelStatus == 4 && player.duelStatus == 4) { + player.getDueling().startDuel(); + o1.getDueling().startDuel(); + o1.duelCount = 4; + player.duelCount = 4; + player.duelDelay = System.currentTimeMillis(); + o1.duelDelay = System.currentTimeMillis(); + } else { + player.getPacketSender().sendFrame126( + "Waiting for other player...", 6571); + o1.getPacketSender().sendFrame126( + "Other player has accepted", 6571); + } + } else { + Client o = (Client) PlayerHandler.players[player.duelingWith]; + player.getDueling().declineDuel(); + o.getDueling().declineDuel(); + player.getPacketSender().sendMessage( + "You can't stake out of the Duel Arena."); + } + break; + + /* + * if (System.currentTimeMillis() - duelDelay > 800 && duelCount > 0) { + * if (duelCount != 1) { forcedChat("" + (--duelCount)); duelDelay = + * System.currentTimeMillis(); } else { damageTaken = new + * int[Config.MAX_PLAYERS]; forcedChat("FIGHT!"); duelCount = 0; } } + */ + + case 4169: // god spell charge + player.usingMagic = true; + if (!player.getCombatAssistant().checkMagicReqs(48)) { + break; + } + + if (System.currentTimeMillis() - player.godSpellDelay < GameConstants.GOD_SPELL_CHARGE) { + player.getPacketSender().sendMessage( + "You still feel the charge in your body!"); + break; + } + player.godSpellDelay = System.currentTimeMillis(); + player.getPacketSender().sendMessage( + "You feel charged with a magical power!"); + player.gfx100(MagicData.MAGIC_SPELLS[48][3]); + player.startAnimation(MagicData.MAGIC_SPELLS[48][2]); + player.usingMagic = false; + break; + + case 153: + if (player.tutorialProgress == 11) { + player.getDialogueHandler().sendDialogues(3041, 0); + } + player.getPacketSender().sendConfig(173, 1); + player.isRunning2 = true; + break; + + case 152: + /*if (client.performingAction) { + return; + }*/ + player.isRunning2 = false; + player.getPacketSender().sendConfig(173, 0); + break; + + case 9154: + player.logout(); + break; + + case 21010: + if (player.isBanking) { + player.takeAsNote = true; + } else { + player.getPacketSender().sendMessage("You must be banking to do this!"); + } + break; + + case 21011: + if (player.isBanking) { + player.takeAsNote = false; + } else { + player.getPacketSender().sendMessage("You must be banking to do this!"); + } + break; + + case 9125: // Accurate + case 6221: // range accurate + case 22228: // punch (unarmed) + case 48010: // flick (whip) + case 21200: // spike (pickaxe) + case 1080: // bash (staff) + case 6168: // chop (axe) + case 6236: // accurate (long bow) + case 17102: // accurate (darts) + case 8234: // stab (dagger) + case 14218: // mace + case 14221: // mace + player.fightMode = 0;// attack + if (player.playerName.equalsIgnoreCase("andrew")) { + player.getPacketSender().sendMessage("Fight mode = 0."); + } + if (player.autocasting) { + player.getPlayerAssistant().resetAutocast(); + } + break; + + case 9126: // Defensive + case 48008: // deflect (whip) + case 22229: // block (unarmed) + case 21201: // block (pickaxe) + case 1078: // focus - block (staff) + case 6169: // block (axe) + case 33019: // fend (hally) + case 18078: // block (spear) + case 8235: // block (dagger) + case 14219: // mace + player.fightMode = 1;// def + if (player.playerName.equalsIgnoreCase("andrew")) { + player.getPacketSender().sendMessage("Fight mode = 1."); + } + if (player.autocasting) { + player.getPlayerAssistant().resetAutocast(); + } + break; + + case 9128: // Aggressive + case 6220: // range rapid + case 22230: // kick (unarmed) + case 21203: // impale (pickaxe) + case 21202: // smash (pickaxe) + case 1079: // pound (staff) + case 6171: // hack (axe) + case 6170: // smash (axe) + case 33020: // swipe (hally) + case 6235: // rapid (long bow) + case 17101: // repid (darts) + case 8237: // lunge (dagger) + case 8236: // slash (dagger) + case 14220: // mace + player.fightMode = 2;// shared + if (player.playerName.equalsIgnoreCase("andrew")) { + player.getPacketSender().sendMessage("Fight mode = 2."); + } + if (player.autocasting) { + player.getPlayerAssistant().resetAutocast(); + } + break; + + case 9127: // Controlled + case 48009: // lash (whip) + case 33018: // jab (hally) + case 6234: // longrange (long bow) + case 6219: // longrange + case 18077: // lunge (spear) + case 18080: // swipe (spear) + case 18079: // pound (spear) + case 17100: // longrange (darts) + player.fightMode = 3;// block + if (player.playerName.equalsIgnoreCase("andrew")) { + player.getPacketSender().sendMessage("Fight mode = 3."); + } + if (player.autocasting) { + player.getPlayerAssistant().resetAutocast(); + } + break; + + + /** Prayers **/ + case 21233: // thick skin + ActivatePrayers.activatePrayer(player, 0); + break; + case 21234: // burst of str + ActivatePrayers.activatePrayer(player, 1); + break; + case 21235: // charity of thought + ActivatePrayers.activatePrayer(player, 2); + break; + case 70080: // range + ActivatePrayers.activatePrayer(player, 3); + break; + case 70082: // mage + ActivatePrayers.activatePrayer(player, 4); + break; + case 21236: // rockskin + ActivatePrayers.activatePrayer(player, 5); + break; + case 21237: // super human + ActivatePrayers.activatePrayer(player, 6); + break; + case 21238: // improved reflexes + ActivatePrayers.activatePrayer(player, 7); + break; + case 21239: // hawk eye + ActivatePrayers.activatePrayer(player, 8); + break; + case 21240: + ActivatePrayers.activatePrayer(player, 9); + break; + case 21241: // protect Item + ActivatePrayers.activatePrayer(player, 10); + break; + case 70084: // 26 range + ActivatePrayers.activatePrayer(player, 11); + break; + case 70086: // 27 mage + ActivatePrayers.activatePrayer(player, 12); + break; + case 21242: // steel skin + ActivatePrayers.activatePrayer(player, 13); + break; + case 21243: // ultimate str + ActivatePrayers.activatePrayer(player, 14); + break; + case 21244: // incredible reflex + ActivatePrayers.activatePrayer(player, 15); + break; + case 21245: // protect from magic + ActivatePrayers.activatePrayer(player, 16); + break; + case 21246: // protect from range + ActivatePrayers.activatePrayer(player, 17); + break; + case 21247: // protect from melee + ActivatePrayers.activatePrayer(player, 18); + break; + case 70088: // 44 range + ActivatePrayers.activatePrayer(player, 19); + break; + case 70090: // 45 mystic + ActivatePrayers.activatePrayer(player, 20); + break; + case 2171: // retrui + ActivatePrayers.activatePrayer(player, 21); + break; + case 2172: // redem + ActivatePrayers.activatePrayer(player, 22); + break; + case 2173: // smite + ActivatePrayers.activatePrayer(player, 23); + break; + case 70092: // chiv + ActivatePrayers.activatePrayer(player, 24); + break; + case 70094: // piety + ActivatePrayers.activatePrayer(player, 25); + break; + + case 13092: + if (System.currentTimeMillis() - player.lastButton < 400) { + + player.lastButton = System.currentTimeMillis(); + + break; + + } else { + + player.lastButton = System.currentTimeMillis(); + + } + Client ot = (Client) PlayerHandler.players[player.tradeWith]; + if (ot == null || !ot.inTrade) { + player.getTrading().declineTrade(); + player.getPacketSender().sendMessage( + "Trade declined as the other player has disconnected."); + ot.getTrading().declineTrade(); + ot.getPacketSender().sendMessage( + "Trade declined as you disconnected."); + break; + } + player.getPacketSender().sendFrame126( + "Waiting for other player...", 3431); + ot.getPacketSender().sendFrame126("Other player has accepted", + 3431); + player.goodTrade = true; + ot.goodTrade = true; + + for (GameItem item : player.getTrading().offeredItems) { + if (item.id > 0) { + if (ot.getItemAssistant().freeSlots() < player.getTrading().offeredItems + .size()) { + player.getPacketSender().sendMessage( + ot.playerName + + " only has " + + ot.getItemAssistant().freeSlots() + + " free slots, please remove " + + (player.getTrading().offeredItems + .size() - ot.getItemAssistant() + .freeSlots()) + " items."); + ot.getPacketSender().sendMessage( + player.playerName + + " has to remove " + + (player.getTrading().offeredItems + .size() - ot.getItemAssistant() + .freeSlots()) + + " items or you could offer them " + + (player.getTrading().offeredItems + .size() - ot.getItemAssistant() + .freeSlots()) + " items."); + player.goodTrade = false; + ot.goodTrade = false; + player.getPacketSender().sendFrame126( + "Not enough inventory space...", 3431); + ot.getPacketSender().sendFrame126( + "Not enough inventory space...", 3431); + break; + } else { + player.getPacketSender().sendFrame126( + "Waiting for other player...", 3431); + ot.getPacketSender().sendFrame126( + "Other player has accepted", 3431); + player.goodTrade = true; + ot.goodTrade = true; + } + } + } + if (player.inTrade && !player.tradeConfirmed && ot.goodTrade + && player.goodTrade) { + player.tradeConfirmed = true; + if (ot.tradeConfirmed) { + player.getTrading().confirmScreen(); + ot.getTrading().confirmScreen(); + break; + } + + } + + break; + + case 13218: + if (System.currentTimeMillis() - player.lastButton < 400) { + + player.lastButton = System.currentTimeMillis(); + + break; + + } else { + + player.lastButton = System.currentTimeMillis(); + + } + player.tradeAccepted = true; + Client ot1 = (Client) PlayerHandler.players[player.tradeWith]; + if (ot1 == null) { + player.getTrading().declineTrade(); + player.getPacketSender().sendMessage( + "Trade declined as the other player has disconnected."); + break; + } + + if (player.inTrade && player.tradeConfirmed && ot1.tradeConfirmed + && !player.tradeConfirmed2) { + player.tradeConfirmed2 = true; + if (ot1.tradeConfirmed2) { + player.acceptedTrade = true; + ot1.acceptedTrade = true; + player.getTrading().giveItems(); + ot1.getTrading().giveItems(); + //here + player.getPacketSender().sendMessage( + "@red@Trade completed."); + ot1.getPacketSender().sendMessage( + "@red@Trade completed."); + break; + } + ot1.getPacketSender().sendFrame126( + "Other player has accepted.", 3535); + player.getPacketSender().sendFrame126( + "Waiting for other player...", 3535); + } + + break; + /* Player Options */ + case 74176: + if (!player.mouseButton) { + player.mouseButton = true; + player.getPacketSender().sendConfig(500, 1); + player.getPacketSender().sendConfig(170, 1); + } else if (player.mouseButton) { + player.mouseButton = false; + player.getPacketSender().sendConfig(500, 0); + player.getPacketSender().sendConfig(170, 0); + } + break; + case 3189: + if (player.splitChat == false) { + player.getPacketSender().sendConfig(502, 1); + player.getPacketSender().sendConfig(287, 1); + player.splitChat = true; + } else if (player.splitChat == true) { + player.getPacketSender().sendConfig(502, 0); + player.getPacketSender().sendConfig(287, 0); + player.splitChat = false; + } + break; + case 74180: + if (!player.chatEffects) { + player.chatEffects = true; + player.getPacketSender().sendConfig(501, 1); + player.getPacketSender().sendConfig(171, 0); + } else { + player.chatEffects = false; + player.getPacketSender().sendConfig(501, 0); + player.getPacketSender().sendConfig(171, 1); + } + break; + case 74188: + if (!player.acceptAid) { + player.acceptAid = true; + player.getPacketSender().sendConfig(503, 1); + player.getPacketSender().sendConfig(427, 1); + } else { + player.acceptAid = false; + player.getPacketSender().sendConfig(503, 0); + player.getPacketSender().sendConfig(427, 0); + } + break; + case 74192: + if (!player.isRunning2) { + player.isRunning2 = true; + player.getPacketSender().sendConfig(504, 1); + player.getPacketSender().sendConfig(173, 1); + } else { + player.isRunning2 = false; + player.getPacketSender().sendConfig(504, 0); + player.getPacketSender().sendConfig(173, 0); + } + break; + + //case 74201:// brightness1 + case 3138: + LightSources.brightness1(player); + break; + + //case 74203:// brightness2 + case 3140: + LightSources.brightness2(player); + break; + + //case 74204:// brightness3 + case 3142: + LightSources.brightness3(player); + break; + + //case 74205:// brightness4 + case 3144: + LightSources.brightness4(player); + break; + + case 74206:// area1 + player.getPacketSender().sendConfig(509, 1); + player.getPacketSender().sendConfig(510, 0); + player.getPacketSender().sendConfig(511, 0); + player.getPacketSender().sendConfig(512, 0); + break; + case 74207:// area2 + player.getPacketSender().sendConfig(509, 0); + player.getPacketSender().sendConfig(510, 1); + player.getPacketSender().sendConfig(511, 0); + player.getPacketSender().sendConfig(512, 0); + break; + case 74208:// area3 + player.getPacketSender().sendConfig(509, 0); + player.getPacketSender().sendConfig(510, 0); + player.getPacketSender().sendConfig(511, 1); + player.getPacketSender().sendConfig(512, 0); + break; + case 74209:// area4 + player.getPacketSender().sendConfig(509, 0); + player.getPacketSender().sendConfig(510, 0); + player.getPacketSender().sendConfig(511, 0); + player.getPacketSender().sendConfig(512, 1); + break; + + case 24017: + player.getPlayerAssistant().resetAutocast(); + player.getItemAssistant() + .sendWeapon( + player.playerEquipment[player.playerWeapon], + ItemAssistant + .getItemName(player.playerEquipment[player.playerWeapon])); + break; + + } + } + +} diff --git a/2006Redone Server/src/com/rebotted/net/packets/impl/ClickingInGame.java b/2006Redone Server/src/com/rebotted/net/packets/impl/ClickingInGame.java new file mode 100644 index 00000000..39d3af56 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/ClickingInGame.java @@ -0,0 +1,16 @@ +package com.rebotted.net.packets.impl; + +import com.rebotted.game.players.Player; +import com.rebotted.net.packets.PacketType; + +/** + * Clicking in game + **/ +public class ClickingInGame implements PacketType { + + @Override + public void processPacket(Player c, int packetType, int packetSize) { + + } + +} diff --git a/2006Redone Server/src/redone/net/packets/impl/ClickingStuff.java b/2006Redone Server/src/com/rebotted/net/packets/impl/ClickingStuff.java similarity index 64% rename from 2006Redone Server/src/redone/net/packets/impl/ClickingStuff.java rename to 2006Redone Server/src/com/rebotted/net/packets/impl/ClickingStuff.java index 3b24b020..c5004c1a 100644 --- a/2006Redone Server/src/redone/net/packets/impl/ClickingStuff.java +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/ClickingStuff.java @@ -1,54 +1,54 @@ -package redone.net.packets.impl; - -import redone.game.players.Client; -import redone.game.players.PlayerHandler; -import redone.net.packets.PacketType; -import redone.util.Misc; - -/** - * Clicking stuff (interfaces) - **/ -public class ClickingStuff implements PacketType { - - @Override - public void processPacket(Client player, int packetType, int packetSize) { - if (player.playerIsBusy()) { - player.playerIsBusy = false; - } - if (player.isBanking) - player.isBanking = false; - if(player.isShopping) - player.isShopping = false; - if (player.inTrade) { - Client opponent = (Client) PlayerHandler.players[player.tradeWith]; - if (!player.acceptedTrade || !opponent.inTrade || opponent == null) { - opponent = (Client) PlayerHandler.players[player.tradeWith]; - opponent.tradeAccepted = false; - player.tradeAccepted = false; - opponent.tradeStatus = 0; - player.tradeStatus = 0; - player.tradeConfirmed = false; - player.tradeConfirmed2 = false; - player.getActionSender().sendMessage("@red@Trade has been declined."); - opponent.getActionSender().sendMessage("@red@Other player has declined the trade."); - Misc.println("trade reset"); - player.getTrading().declineTrade(); - opponent.getTrading().declineTrade(); - } - } - - if(player.openDuel && player.duelStatus >= 1 && player.duelStatus <= 4) { - Client o = (Client) PlayerHandler.players[player.duelingWith]; - if (o != null) - if (player.duelStatus >= 1 && player.duelStatus <= 4) - player.getDueling().declineDuel(); - o.getDueling().declineDuel(); - } - - if (player.duelStatus == 6) { - player.getDueling().claimStakedItems(); - } - - } - -} +package com.rebotted.net.packets.impl; + +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerHandler; +import com.rebotted.net.packets.PacketType; +import com.rebotted.util.Misc; + +/** + * Clicking stuff (interfaces) + **/ +public class ClickingStuff implements PacketType { + + @Override + public void processPacket(Player player, int packetType, int packetSize) { + if (player.playerIsBusy()) { + player.playerIsBusy = false; + } + if (player.isBanking) + player.isBanking = false; + if(player.isShopping) + player.isShopping = false; + if (player.inTrade) { + Player opponent = (Player) PlayerHandler.players[player.tradeWith]; + if (!player.acceptedTrade || !opponent.inTrade || opponent == null) { + opponent = (Player) PlayerHandler.players[player.tradeWith]; + opponent.tradeAccepted = false; + player.tradeAccepted = false; + opponent.tradeStatus = 0; + player.tradeStatus = 0; + player.tradeConfirmed = false; + player.tradeConfirmed2 = false; + player.getPacketSender().sendMessage("@red@Trade has been declined."); + opponent.getPacketSender().sendMessage("@red@Other player has declined the trade."); + Misc.println("trade reset"); + player.getTrading().declineTrade(); + opponent.getTrading().declineTrade(); + } + } + + if(player.openDuel && player.duelStatus >= 1 && player.duelStatus <= 4) { + Player o = (Player) PlayerHandler.players[player.duelingWith]; + if (o != null) + if (player.duelStatus >= 1 && player.duelStatus <= 4) + player.getDueling().declineDuel(); + o.getDueling().declineDuel(); + } + + if (player.duelStatus == 6) { + player.getDueling().claimStakedItems(); + } + + } + +} diff --git a/2006Redone Server/src/redone/net/packets/impl/Commands.java b/2006Redone Server/src/com/rebotted/net/packets/impl/Commands.java similarity index 81% rename from 2006Redone Server/src/redone/net/packets/impl/Commands.java rename to 2006Redone Server/src/com/rebotted/net/packets/impl/Commands.java index 6587ce1f..c66b19c8 100644 --- a/2006Redone Server/src/redone/net/packets/impl/Commands.java +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/Commands.java @@ -1,750 +1,740 @@ -package redone.net.packets.impl; - -import redone.Connection; -import redone.Constants; -import redone.Server; -import redone.game.bots.BotHandler; -import redone.game.items.ItemAssistant; -import redone.game.npcs.NpcHandler; -import redone.game.players.*; -import redone.net.packets.PacketType; -import redone.util.GameLogger; -import redone.util.Misc; -import redone.world.clip.Region; - -import java.util.Arrays; - -import static redone.game.content.combat.magic.MagicTeleports.LUMBRIDGE_X; -import static redone.game.content.combat.magic.MagicTeleports.LUMBRIDGE_Y; -import static redone.util.GameLogger.writeLog; - -public class Commands implements PacketType { - - @Override - public void processPacket(Client player, int packetType, int packetSize) { - String[] messageArr = player.getInStream().readString().split(" "); - String playerCommand = messageArr[0]; - String[] commandArguments = Arrays.copyOfRange(messageArr, 1, messageArr.length); - if ((playerCommand.startsWith("ban") || playerCommand.startsWith("ip") || playerCommand.startsWith("mute") || playerCommand.startsWith("un")) && player.playerRights > 0 && player.playerRights < 4) { - writeLog(player.playerName, "commands", player.playerName + " used command: " + playerCommand); - } - if (player.playerRights >= 0) { - playerCommands(player, playerCommand, commandArguments); - } - if (player.membership || player.playerRights > 1) { - donatorCommands(player, playerCommand, commandArguments); - } - if (player.playerRights >= 1) { - moderatorCommands(player, playerCommand, commandArguments); - } - if (player.playerRights >= 2 && player.playerRights < 4) { - adminCommands(player, playerCommand, commandArguments); - } - if (player.playerRights == 3) { - developerCommands(player, playerCommand, commandArguments); - } - } - - public static void playerCommands(Client player, String playerCommand, String[] arguments) { - switch (playerCommand.toLowerCase()) - { - case "bank": - player.getPlayerAssistant().openUpBank(); - break; - case "claimvote": - if(!Server.ersSecret.equals("")) { - final String playerName = player.playerName; - - com.everythingrs.vote.Vote.service.execute(new Runnable() { - @Override - public void run() { - try { - int currentPoints = player.votePoints; - com.everythingrs.vote.Vote[] reward = com.everythingrs.vote.Vote.reward(Server.ersSecret, playerName, "1", "all"); - if (reward[0].message != null) { - player.getActionSender().sendMessage(reward[0].message); - return; - } - player.votePoints = (currentPoints + reward[0].give_amount); - //player.getActionSender().sendMessage("Thank you for voting! You now have " + reward[0].vote_points + " vote points."); - player.getActionSender().sendMessage( - "Thank you for voting! You now have " + player.votePoints + " vote points."); - } catch (Exception e) { - player.getActionSender().sendMessage("Api Services are currently offline. Please check back shortly"); - e.printStackTrace(); - } - } - - }); - } else { - player.getActionSender().sendMessage("Voting Is Not Enabled"); - } - break; - case "coords": - case "coord": - case "pos": - player.getActionSender().sendMessage("Your coords are [" + player.absX + "," + player.absY + "]"); - break; - case "null": - break; - case "players": - if (PlayerHandler.getPlayerCount() != 1) { - player.getActionSender().sendMessage("There are currently " + PlayerHandler.getPlayerCount() + " players online."); - } else { - player.getActionSender().sendMessage("There is currently " + PlayerHandler.getPlayerCount() + " player online."); - } - break; - case "shop": - BotHandler.playerShop(player); - break; - case "withdrawshop": - case "wshop": - BotHandler.takeCoins(player); - break; - case "closeshop": - case "cshop": - BotHandler.closeShop(player); - break; - case "wealth": - int totalWealth = player.getPlayerAssistant().totalGold(); - player.getActionSender().sendMessage("You currently have " + totalWealth + "gp."); - break; - case "gfx100": - if (arguments.length == 0) - player.getActionSender().sendMessage("Must have 1 argument: ::gfx100 80"); - else - player.gfx100(Integer.parseInt(arguments[0])); - break; - case "gfx0": - if (arguments.length == 0) - player.getActionSender().sendMessage("Must have 1 argument: ::gfx0 80"); - else - player.gfx0(Integer.parseInt(arguments[0])); - break; - case "tele": - if (player.connectedFrom.equals("127.0.0.1")) { - try { - if (arguments.length < 2) { - player.getActionSender().sendMessage("Must specify x, y and optionally z coordinates: ::tele 3222 3218 0"); - return; - } - if (arguments.length == 3) - player.getPlayerAssistant().movePlayer(Integer.parseInt(arguments[0]), Integer.parseInt(arguments[1]), Integer.parseInt(arguments[2])); - else - player.getPlayerAssistant().movePlayer(Integer.parseInt(arguments[0]), Integer.parseInt(arguments[1]), player.heightLevel); - } catch (Exception e) { - player.getActionSender().sendMessage("Invalid coordinates"); - } - } else { - player.getActionSender().sendMessage("Can't tele with ip " + player.connectedFrom); - } - break; - case "close_interface": - player.getPlayerAssistant().closeAllWindows(); - break; - case "commands": - player.getActionSender().sendMessage("::players, ::highscores, ::loc, ::stuck, ::randomtoggle, ::debug, ::togglegfx, ::shop, ::withdrawshop, ::closeshop"); - break; - case "loc": - player.getActionSender().sendMessage(player.absX + "," + player.absY); - break; - case "stuck": - player.getPlayerAssistant().startTeleport(LUMBRIDGE_X, LUMBRIDGE_Y, 0, "modern"); - player.getActionSender().sendMessage("How did you manage that one.."); - player.gfx100(80); - player.startAnimation(404); - break; - case "randomtoggle": - case "togglerandom": - player.randomEventsEnabled = !player.randomEventsEnabled; - player.getActionSender().sendMessage("You will " + (player.randomEventsEnabled ? "now" : "no longer") + " receieve random events."); - break; - case "debug": - case "debugmode": - player.debugMode = !player.debugMode; - player.getActionSender().sendMessage("You will " + (player.debugMode ? "now" : "no longer") + " receieve additional debug information when doing things."); - break; - case "highscores": - for (Player p : PlayerHandler.players) { - if (p == null) { - continue; - } - PlayerSave.saveGame((Client) p); - System.out.println("Saved game for " + p.playerName + "."); - Server.lastMassSave = System.currentTimeMillis(); - } - HighscoresHandler hs = new HighscoresHandler(); - String[] highscores = new String[]{ - "Top 5 Total Level:", - hs.getRank(player, 0, "level"), - hs.getRank(player, 1, "level"), - hs.getRank(player, 2, "level"), - hs.getRank(player, 3, "level"), - hs.getRank(player, 4, "level"), - "", - "Top 5 Wealthiest Players:", - hs.getRank(player, 0, "gold"), - hs.getRank(player, 1, "gold"), - hs.getRank(player, 2, "gold"), - hs.getRank(player, 3, "gold"), - hs.getRank(player, 4, "gold"), - "", - "Top 5 Highest Total Damage:", - hs.getRank(player, 0, "damage"), - hs.getRank(player, 1, "damage"), - hs.getRank(player, 2, "damage"), - hs.getRank(player, 3, "damage"), - hs.getRank(player, 4, "damage"), - }; - - - // Clear all lines - for (int i = 8144; i < 8195; i++) player.getPlayerAssistant().sendFrame126("", i); - - player.getPlayerAssistant().sendFrame126("@dre@Highscores", 8144); - - int lineNumber = 8147; - for (String line : highscores){ - System.out.println(line + " - " + lineNumber); - player.getPlayerAssistant().sendFrame126(line, lineNumber++); - } - player.getPlayerAssistant().showInterface(8134); - - break; - - } - - } - - public static void donatorCommands(Client player, String playerCommand, String[] arguments) { - - } - - public static void moderatorCommands(Client player, String playerCommand, String[] arguments) { - switch (playerCommand.toLowerCase()) { - case "kick": - try { - if (arguments.length == 0) { - player.getActionSender().sendMessage("You must specify a player name: ::kick playername"); - return; - } - String playerToKick = String.join(" ", arguments); - for(Player player2 : PlayerHandler.players) { - if(player2 != null) { - if(player2.playerName.equalsIgnoreCase(playerToKick)) { - Client c2 = (Client)player2; - player.getActionSender().sendMessage("You have kicked " + playerToKick + "."); - c2.disconnected = true; - c2.logout(true); - break; - } - } - } - } catch(Exception e) { - player.getActionSender().sendMessage("Player Must Be Online."); - } - break; - case "yell": - for (int j = 0; j < PlayerHandler.players.length; j++) { - if (PlayerHandler.players[j] != null) { - Client c2 = (Client) PlayerHandler.players[j]; - if (player.playerRights == 1) { - c2.getActionSender().sendMessage("@blu@[Moderator] @bla@" + Misc.optimizeText(player.playerName) + ": " + Misc.optimizeText(String.join(" ", arguments)) + ""); - } else if (player.playerRights == 2) { - c2.getActionSender().sendMessage("@gre@[Administator] @bla@" + Misc.optimizeText(player.playerName) + ": " + Misc.optimizeText(String.join(" ", arguments)) + ""); - } else if (player.playerRights == 3) { - c2.getActionSender().sendMessage("@red@[Developer] @bla@" + Misc.optimizeText(player.playerName) + ": " + Misc.optimizeText(String.join(" ", arguments)) + ""); - } - } - } - break; - - case "mute": - try { - if (arguments.length == 0) { - player.getActionSender().sendMessage("You must specify a player name: ::mute playername"); - return; - } - String playerToBan = String.join(" ", arguments); - Connection.addNameToMuteList(playerToBan); - for (int i = 0; i < Constants.MAX_PLAYERS; i++) { - if (PlayerHandler.players[i] != null) { - if (PlayerHandler.players[i].playerName.equalsIgnoreCase(playerToBan)) { - Client c2 = (Client) PlayerHandler.players[i]; - c2.getActionSender().sendMessage("You have been muted by: " + player.playerName); - break; - } - } - } - } catch (Exception e) { - player.getActionSender().sendMessage("Player Must Be Offline."); - } - break; - - case "ipmute": - try { - if (arguments.length == 0) { - player.getActionSender().sendMessage("You must specify a player name: ::ipmute playername"); - return; - } - String playerToBan = String.join(" ", arguments); - for (int i = 0; i < Constants.MAX_PLAYERS; i++) { - if (PlayerHandler.players[i] != null) { - if (PlayerHandler.players[i].playerName.equalsIgnoreCase(playerToBan)) { - Connection.addIpToMuteList(PlayerHandler.players[i].connectedFrom); - player.getActionSender().sendMessage("You have IP Muted the user: " + PlayerHandler.players[i].playerName); - Client c2 = (Client) PlayerHandler.players[i]; - c2.getActionSender().sendMessage("You have been muted by: " + player.playerName); - break; - } - } - } - } catch (Exception e) { - player.getActionSender().sendMessage("Player Must Be Offline."); - } - break; - - case "unipmute": - try { - if (arguments.length == 0) { - player.getActionSender().sendMessage("You must specify a player name: ::unipmute playername"); - return; - } - String playerToBan = String.join(" ", arguments); - for (int i = 0; i < Constants.MAX_PLAYERS; i++) { - if (PlayerHandler.players[i] != null) { - if (PlayerHandler.players[i].playerName.equalsIgnoreCase(playerToBan)) { - Connection.unIPMuteUser(PlayerHandler.players[i].connectedFrom); - player.getActionSender().sendMessage("You have Un Ip-Muted the user: " + PlayerHandler.players[i].playerName); - break; - } - } - } - } catch (Exception e) { - player.getActionSender().sendMessage("Player Must Be Offline."); - } - break; - - case "unmute": - try { - if (arguments.length == 0) { - player.getActionSender().sendMessage("You must specify a player name: ::unmute playername"); - return; - } - String playerToBan = String.join(" ", arguments); - Connection.unMuteUser(playerToBan); - } catch (Exception e) { - player.getActionSender().sendMessage("Player Must Be Offline."); - } - break; - case "update": - try { - if (arguments.length == 0) { - player.getActionSender().sendMessage("You must specify the amount of time in seconds: ::update 300"); - return; - } - int seconds = Integer.parseInt(arguments[0]); - PlayerHandler.updateSeconds = seconds; - PlayerHandler.updateAnnounced = false; - PlayerHandler.updateRunning = true; - PlayerHandler.updateStartTime = System.currentTimeMillis(); - } catch (Exception e) {} - break; - } - } - - public static void adminCommands(Client player, String playerCommand, String[] arguments) { - switch (playerCommand.toLowerCase()) { - case "clearbank": - player.getItemAssistant().clearBank(); - break; - case "ipban": - try { - if (arguments.length == 0) { - player.getActionSender().sendMessage("You must specify a player name: ::ipban playername"); - return; - } - String playerToBan = String.join(" ", arguments); - for(int i = 0; i < Constants.MAX_PLAYERS; i++) { - if(PlayerHandler.players[i] != null) { - if(PlayerHandler.players[i].playerName.equalsIgnoreCase(playerToBan)) { - Connection.addIpToBanList(PlayerHandler.players[i].connectedFrom); - Connection.addIpToFile(PlayerHandler.players[i].connectedFrom); - player.getActionSender().sendMessage("You have IP banned the user: "+PlayerHandler.players[i].playerName+" with the host: "+PlayerHandler.players[i].connectedFrom); - PlayerHandler.players[i].disconnected = true; - } - } - } - } catch(Exception e) { - player.getActionSender().sendMessage("Player Must Be Offline."); - } - break; - case "ban": - try { - if (arguments.length == 0) { - player.getActionSender().sendMessage("You must specify a player name: ::ban playername"); - return; - } - String playerToBan = String.join(" ", arguments); - Connection.addNameToBanList(playerToBan); - Connection.addNameToFile(playerToBan); - for(int i = 0; i < Constants.MAX_PLAYERS; i++) { - if(PlayerHandler.players[i] != null) { - if(PlayerHandler.players[i].playerName.equalsIgnoreCase(playerToBan)) { - PlayerHandler.players[i].disconnected = true; - } - } - } - } catch(Exception e) { - player.getActionSender().sendMessage("Player Must Be Offline."); - } - break; - case "unban": - try { - if (arguments.length == 0) { - player.getActionSender().sendMessage("You must specify a player name: ::unban playername"); - return; - } - String playerToBan = String.join(" ", arguments); - Connection.removeNameFromBanList(playerToBan); - player.getActionSender().sendMessage(playerToBan + " has been unbanned."); - } catch(Exception e) { - player.getActionSender().sendMessage("Player Must Be Offline."); - } - break; - case "empty": - player.getPlayerAssistant().handleEmpty(); - break; - case "dialogue": - if (arguments.length == 0) { - player.getActionSender().sendMessage("You must specify an id: ::dialogue id"); - return; - } - int npcType = 1552; - int dialogueID = Integer.parseInt(arguments[0]); - player.getDialogueHandler().sendDialogues(dialogueID, npcType); - break; - case "interface": - if (arguments.length == 0) { - player.getActionSender().sendMessage("You must specify an id: ::interface id"); - return; - } - int interfaceID = Integer.parseInt(arguments[0]); - player.getPlayerAssistant().showInterface(interfaceID); - break; - case "gfx": - if (arguments.length == 0) { - player.getActionSender().sendMessage("You must specify an id: ::gfx id"); - return; - } - int gfxID = Integer.parseInt(arguments[0]); - player.gfx0(gfxID); - break; - case "anim": - if (arguments.length == 0) { - player.getActionSender().sendMessage("You must specify an id: ::anim id"); - return; - } - int animationID = Integer.parseInt(arguments[0]); - player.startAnimation(animationID); - player.getPlayerAssistant().requestUpdates(); - break; - case "mypos": - player.getActionSender().sendMessage("X: " + player.absX); - player.getActionSender().sendMessage("Y: " + player.absY); - player.getActionSender().sendMessage("H: " + player.heightLevel); - break; - case "bank": - player.getPlayerAssistant().openUpBank(); - break; - case "xteletome": - case "teletome": - try { - if (arguments.length == 0) { - player.getActionSender().sendMessage("You must specify a player name: ::teletome playername"); - return; - } - String teleToMe = String.join(" ", arguments); - for (int i = 0; i < PlayerHandler.players.length; i++) { - if (PlayerHandler.players[i] != null) { - if (PlayerHandler.players[i].playerName.equalsIgnoreCase(teleToMe)) { - Client p = (Client) PlayerHandler.players[i]; - player.getActionSender().sendMessage(p.playerName + " has been teleported to you."); - p.getPlayerAssistant().movePlayer(player.absX, player.absY, player.heightLevel); - } - } - } - } catch (Exception e) { - player.getActionSender().sendMessage("Player is not online."); - } - break; - case "xteleto": - case "teleto": - if (arguments.length == 0) { - player.getActionSender().sendMessage("You must specify a player name: ::teleto playername"); - return; - } - String teleTo = String.join(" ", arguments); - for (int i = 0; i < PlayerHandler.players.length; i++) { - if (PlayerHandler.players[i] != null) { - if (PlayerHandler.players[i].playerName.equalsIgnoreCase(teleTo)) { - player.getPlayerAssistant().movePlayer(PlayerHandler.players[i].getX(), PlayerHandler.players[i].getY(), PlayerHandler.players[i].heightLevel); - return; - } - } - } - player.getActionSender().sendMessage("Could not find " + teleTo + " they must be online!"); - break; - case "tp": - case "teleport": - case "to": - if (arguments.length <= 2) - player.getPlayerAssistant().movePlayer(Integer.parseInt(arguments[0]), Integer.parseInt(arguments[1]), 0); - else - player.getPlayerAssistant().movePlayer(Integer.parseInt(arguments[0]), Integer.parseInt(arguments[1]), Integer.parseInt(arguments[2])); - break; - case "up": - player.getPlayerAssistant().movePlayer(player.absX, player.absY, player.heightLevel + 1); - player.getActionSender().sendMessage("You are now on height level " + player.heightLevel + "."); - break; - case "up2": - player.getPlayerAssistant().movePlayer(player.absX, player.absY - 6400, player.heightLevel); - player.getActionSender().sendMessage("You are now on height level " + player.heightLevel + "."); - break; - case "down": - player.getPlayerAssistant().movePlayer(player.absX, player.absY, player.heightLevel - 1); - player.getActionSender().sendMessage("You are now on height level " + player.heightLevel + "."); - break; - case "down2": - player.getPlayerAssistant().movePlayer(player.absX, player.absY + 6400, player.heightLevel); - player.getActionSender().sendMessage("You are now on height level " + player.heightLevel + "."); - break; - case "spec": - player.specAmount = 100.0; - break; - case "setlevel": - try { - if (arguments.length < 2) { - player.getActionSender().sendMessage("Must specify a skill and level: ::setlevel 1 99"); - return; - } - int skill = Integer.parseInt(arguments[0]); - int level = Integer.parseInt(arguments[1]); - if (level > 99) { - level = 99; - } else if (level < 0) { - level = 1; - } - player.playerXP[skill] = player.getPlayerAssistant().getXPForLevel(level) + 5; - player.playerLevel[skill] = player.getPlayerAssistant().getLevelForXP(player.playerXP[skill]); - player.getPlayerAssistant().refreshSkill(skill); - player.getPlayerAssistant().levelUp(skill); - } catch (Exception e) {} - break; - case "spellbook": - if (player.inWild()) { - return; - } - if (player.playerMagicBook == 0) { - player.playerMagicBook = 1; - player.getActionSender().setSidebarInterface(6, 12855); - player.getActionSender().sendMessage("An ancient wisdomin fills your mind."); - player.getPlayerAssistant().resetAutocast(); - } else if (player.playerMagicBook == 1) { - player.getActionSender().setSidebarInterface(6, 1151); // modern - player.playerMagicBook = 0; - player.getActionSender().sendMessage("You feel a drain on your memory."); - player.autocastId = -1; - player.getPlayerAssistant().resetAutocast(); - } - break; - case "item": - try { - if (arguments.length == 0) { - player.getActionSender().sendMessage("Must specify an item id: ::item 995 1000"); - return; - } - int newItemID = Integer.parseInt(arguments[0]); - int newItemAmount = arguments.length >= 2 ? Integer.parseInt(arguments[1]) : 1; - if (newItemID <= 10000 && newItemID >= 0) { - player.getItemAssistant().addItem(newItemID, newItemAmount); - if (player.isBusy()) { - player.getPlayerAssistant().closeAllWindows(); - } - player.getActionSender().sendMessage("You spawn " + newItemAmount + " × "+ ItemAssistant.getItemName(newItemID) + "."); - } else { - player.getActionSender().sendMessage("No such item."); - } - } catch (Exception e) {} - break; - case "master": - for (int i = 0; i < 25; i++) { - player.playerLevel[i] = 99; - player.playerXP[i] = player.getPlayerAssistant().getXPForLevel(100); - player.getPlayerAssistant().refreshSkill(i); - } - player.getPlayerAssistant().requestUpdates(); - break; - } - } - - public static void developerCommands(Client player, String playerCommand, String[] arguments) { - switch (playerCommand.toLowerCase()) { - case "clicktotele": - case "ctt": // alias - player.clickToTele = !player.clickToTele; - player.getActionSender().sendMessage("Click to teleport: " + (player.clickToTele ? "Enabled" : "Disabled")); - break; - case "giveadmin": - try { - if (arguments.length == 0) { - player.getActionSender().sendMessage("You must specify a player name: ::giveadmin playername"); - return; - } - String playerToAdmin = String.join(" ", arguments); - for(int i = 0; i < Constants.MAX_PLAYERS; i++) { - if(PlayerHandler.players[i] != null) { - if(PlayerHandler.players[i].playerName.equalsIgnoreCase(playerToAdmin)) { - Client c2 = (Client)PlayerHandler.players[i]; - player.getActionSender().sendMessage("You have given " + playerToAdmin + " admin."); - c2.playerRights = 2; - c2.logout(true); - break; - } - } - } - } catch(Exception e) { - player.getActionSender().sendMessage("Player Must Be Offline."); - } - break; - case "demote": - try { - if (arguments.length == 0) { - player.getActionSender().sendMessage("You must specify a player name: ::demote playername"); - return; - } - String playerToAdmin = String.join(" ", arguments); - for(int i = 0; i < Constants.MAX_PLAYERS; i++) { - if(PlayerHandler.players[i] != null) { - if(PlayerHandler.players[i].playerName.equalsIgnoreCase(playerToAdmin)) { - Client c2 = (Client)PlayerHandler.players[i]; - player.getActionSender().sendMessage("You have demoted " + playerToAdmin + "."); - c2.playerRights = 0; - c2.logout(true); - break; - } - } - } - } catch(Exception e) { - player.getActionSender().sendMessage("Player Must Be Offline."); - } - break; - case "givemod": - try { - if (arguments.length == 0) { - player.getActionSender().sendMessage("You must specify a player name: ::givemod playername"); - return; - } - String playerToMod = String.join(" ", arguments); - for(int i = 0; i < Constants.MAX_PLAYERS; i++) { - if(PlayerHandler.players[i] != null) { - if(PlayerHandler.players[i].playerName.equalsIgnoreCase(playerToMod)) { - Client c2 = (Client)PlayerHandler.players[i]; - player.getActionSender().sendMessage("You have given " + playerToMod + " mod."); - c2.playerRights = 1; - c2.logout(true); - break; - } - } - } - } catch(Exception e) { - player.getActionSender().sendMessage("Player Must Be Offline."); - } - break; - case "object": - if (arguments.length == 0) { - player.getActionSender().sendMessage("You must specify an ID: ::object 1000"); - return; - } - player.getActionSender().object(Integer.parseInt(arguments[0]), player.absX, player.absY, player.heightLevel, 0, 10); - Region.addObject(Integer.parseInt(arguments[0]), player.absX, player.absY, player.heightLevel, 10, 0, false); - break; - case "object2": - if (arguments.length == 0) { - player.getActionSender().sendMessage("You must specify an ID: ::object2 1000"); - return; - } - player.getActionSender().object(Integer.parseInt(arguments[0]), player.absX, player.absY, player.heightLevel, 0, 0); - Region.addObject(Integer.parseInt(arguments[0]), player.absX, player.absY, player.heightLevel, 0, 0, false); - break; - case "npc": - try { - if (arguments.length == 0) { - player.getActionSender().sendMessage("You must specify an ID: ::npc 1000"); - return; - } - int newNPC = Integer.parseInt(arguments[0]), - maxHit = NpcHandler.getNpcListCombat(newNPC) / 10, - attack = NpcHandler.getNpcListCombat(newNPC), - defence = NpcHandler.getNpcListCombat(newNPC); - boolean attackPlayer = NpcHandler.getNpcListCombat(newNPC) > 0; - if (newNPC > 0) { - NpcHandler.spawnNpc(player, newNPC, player.absX, player.absY, player.heightLevel, 0, NpcHandler.getNpcListHP(newNPC), maxHit, attack, defence, attackPlayer, false); - player.getActionSender().sendMessage("You spawn a " + NpcHandler.getNpcListName(newNPC).toLowerCase() + "."); - //player.npcSpawned = newNPC; - } else { - player.getActionSender().sendMessage("Npc " + newNPC + " does not exist."); - } - } catch (Exception e) {} - break; - case "cantattack": - player.npcCanAttack = !player.npcCanAttack; - player.getActionSender().sendMessage("Npcs " + (player.npcCanAttack ? "can" : "can no longer") + " attack you."); - break; - case "sound": - if (arguments.length == 0) { - player.getActionSender().sendMessage("You must specify an ID: ::sound 10"); - return; - } - player.getActionSender().sendSound(Integer.parseInt(arguments[0]), 100, 0); - break; - case "tutprog": - if (arguments.length == 0) { - player.getActionSender().sendMessage("You must specify an ID: ::tutprog 10"); - return; - } - player.tutorialProgress = Integer.parseInt(arguments[0]);; - break; - case "song": - if (arguments.length == 0) { - player.getActionSender().sendMessage("You must specify an ID: ::song 10"); - return; - } - int songID = Integer.parseInt(arguments[0]); - player.getActionSender().sendSong(songID); - break; - case "run": - player.getActionSender().sendMessage("You have refilled your run-energy!"); - player.playerEnergy = 100; - break; - case "runes": - final int amount = 10000; - final int[][] RUNES = { { 554, amount }, { 555, amount }, - { 556, amount }, { 557, amount }, { 558, amount }, - { 559, amount }, { 560, amount }, { 561, amount }, - { 562, amount }, { 563, amount }, { 564, amount }, - { 565, amount }, { 566, amount }, { 1963, 1 }, }; - for (int[] element : RUNES) { - int item = element[0]; - int amountToRecieve = element[1]; - player.getItemAssistant().addItem(item, amountToRecieve); - } - break; - case "sidebars": - player.getPlayerAssistant().sendSidebars(); - break; - } - } - - +package com.rebotted.net.packets.impl; + +import static com.rebotted.game.content.combat.magic.MagicTeleports.LUMBRIDGE_X; +import static com.rebotted.game.content.combat.magic.MagicTeleports.LUMBRIDGE_Y; +import static com.rebotted.util.GameLogger.writeLog; +import java.util.Arrays; +import com.rebotted.Connection; +import com.rebotted.GameConstants; +import com.rebotted.GameEngine; +import com.rebotted.game.bots.BotHandler; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.game.players.*; +import com.rebotted.net.packets.PacketType; +import com.rebotted.util.Misc; +import com.rebotted.world.clip.Region; + +public class Commands implements PacketType { + + @Override + public void processPacket(Player player, int packetType, int packetSize) { + String[] messageArr = player.getInStream().readString().split(" "); + String playerCommand = messageArr[0]; + String[] commandArguments = Arrays.copyOfRange(messageArr, 1, messageArr.length); + if ((playerCommand.startsWith("ban") || playerCommand.startsWith("ip") || playerCommand.startsWith("mute") || playerCommand.startsWith("un")) && player.playerRights > 0 && player.playerRights < 4) { + writeLog(player.playerName, "commands", player.playerName + " used command: " + playerCommand); + } + if (player.playerRights >= 0) { + playerCommands(player, playerCommand, commandArguments); + } + if (player.playerRights >= 1) { + moderatorCommands(player, playerCommand, commandArguments); + } + if (player.playerRights >= 2 && player.playerRights < 4) { + adminCommands(player, playerCommand, commandArguments); + } + if (player.playerRights == 3) { + developerCommands(player, playerCommand, commandArguments); + } + } + + public static void playerCommands(Player player, String playerCommand, String[] arguments) { + switch (playerCommand.toLowerCase()) + { + case "bank": + player.getPacketSender().openUpBank(); + break; + case "claimvote": + if(!GameEngine.ersSecret.equals("")) { + final String playerName = player.playerName; + + com.everythingrs.vote.Vote.service.execute(new Runnable() { + @Override + public void run() { + try { + int currentPoints = player.votePoints; + com.everythingrs.vote.Vote[] reward = com.everythingrs.vote.Vote.reward(GameEngine.ersSecret, playerName, "1", "all"); + if (reward[0].message != null) { + player.getPacketSender().sendMessage(reward[0].message); + return; + } + player.votePoints = (currentPoints + reward[0].give_amount); + //player.getActionSender().sendMessage("Thank you for voting! You now have " + reward[0].vote_points + " vote points."); + player.getPacketSender().sendMessage( + "Thank you for voting! You now have " + player.votePoints + " vote points."); + } catch (Exception e) { + player.getPacketSender().sendMessage("Api Services are currently offline. Please check back shortly"); + e.printStackTrace(); + } + } + + }); + } else { + player.getPacketSender().sendMessage("Voting Is Not Enabled"); + } + break; + case "coords": + case "coord": + case "pos": + player.getPacketSender().sendMessage("Your coords are [" + player.absX + "," + player.absY + "]"); + break; + case "null": + break; + case "players": + if (PlayerHandler.getPlayerCount() != 1) { + player.getPacketSender().sendMessage("There are currently " + PlayerHandler.getPlayerCount() + " players online."); + } else { + player.getPacketSender().sendMessage("There is currently " + PlayerHandler.getPlayerCount() + " player online."); + } + break; + case "shop": + BotHandler.playerShop(player); + break; + case "withdrawshop": + case "wshop": + BotHandler.takeCoins(player); + break; + case "closeshop": + case "cshop": + BotHandler.closeShop(player); + break; + case "wealth": + int totalWealth = player.getPlayerAssistant().totalGold(); + player.getPacketSender().sendMessage("You currently have " + totalWealth + "gp."); + break; + case "gfx100": + if (arguments.length == 0) + player.getPacketSender().sendMessage("Must have 1 argument: ::gfx100 80"); + else + player.gfx100(Integer.parseInt(arguments[0])); + break; + case "gfx0": + if (arguments.length == 0) + player.getPacketSender().sendMessage("Must have 1 argument: ::gfx0 80"); + else + player.gfx0(Integer.parseInt(arguments[0])); + break; + case "tele": + if (player.connectedFrom.equals("127.0.0.1")) { + try { + if (arguments.length < 2) { + player.getPacketSender().sendMessage("Must specify x, y and optionally z coordinates: ::tele 3222 3218 0"); + return; + } + if (arguments.length == 3) + player.getPlayerAssistant().movePlayer(Integer.parseInt(arguments[0]), Integer.parseInt(arguments[1]), Integer.parseInt(arguments[2])); + else + player.getPlayerAssistant().movePlayer(Integer.parseInt(arguments[0]), Integer.parseInt(arguments[1]), player.heightLevel); + } catch (Exception e) { + player.getPacketSender().sendMessage("Invalid coordinates"); + } + } else { + player.getPacketSender().sendMessage("Can't tele with ip " + player.connectedFrom); + } + break; + case "close_interface": + player.getPacketSender().closeAllWindows(); + break; + case "commands": + player.getPacketSender().sendMessage("::players, ::highscores, ::loc, ::stuck, ::randomtoggle, ::debug, ::togglegfx, ::shop, ::withdrawshop, ::closeshop"); + break; + case "loc": + player.getPacketSender().sendMessage(player.absX + "," + player.absY); + break; + case "stuck": + player.getPlayerAssistant().startTeleport(LUMBRIDGE_X, LUMBRIDGE_Y, 0, "modern"); + player.getPacketSender().sendMessage("How did you manage that one.."); + player.gfx100(80); + player.startAnimation(404); + break; + case "randomtoggle": + case "togglerandom": + player.randomEventsEnabled = !player.randomEventsEnabled; + player.getPacketSender().sendMessage("You will " + (player.randomEventsEnabled ? "now" : "no longer") + " receieve random events."); + break; + case "debug": + case "debugmode": + player.debugMode = !player.debugMode; + player.getPacketSender().sendMessage("You will " + (player.debugMode ? "now" : "no longer") + " receieve additional debug information when doing things."); + break; + case "highscores": + for (Player p : PlayerHandler.players) { + if (p == null) { + continue; + } + PlayerSave.saveGame((Client) p); + System.out.println("Saved game for " + p.playerName + "."); + GameEngine.lastMassSave = System.currentTimeMillis(); + } + HighscoresHandler hs = new HighscoresHandler(); + String[] highscores = new String[]{ + "Top 5 Total Level:", + hs.getRank(player, 0, "level"), + hs.getRank(player, 1, "level"), + hs.getRank(player, 2, "level"), + hs.getRank(player, 3, "level"), + hs.getRank(player, 4, "level"), + "", + "Top 5 Wealthiest Players:", + hs.getRank(player, 0, "gold"), + hs.getRank(player, 1, "gold"), + hs.getRank(player, 2, "gold"), + hs.getRank(player, 3, "gold"), + hs.getRank(player, 4, "gold"), + "", + "Top 5 Highest Total Damage:", + hs.getRank(player, 0, "damage"), + hs.getRank(player, 1, "damage"), + hs.getRank(player, 2, "damage"), + hs.getRank(player, 3, "damage"), + hs.getRank(player, 4, "damage"), + }; + + + // Clear all lines + for (int i = 8144; i < 8195; i++) player.getPacketSender().sendFrame126("", i); + + player.getPacketSender().sendFrame126("@dre@Highscores", 8144); + + int lineNumber = 8147; + for (String line : highscores){ + System.out.println(line + " - " + lineNumber); + player.getPacketSender().sendFrame126(line, lineNumber++); + } + player.getPacketSender().showInterface(8134); + + break; + + } + + } + + public static void moderatorCommands(Player player, String playerCommand, String[] arguments) { + switch (playerCommand.toLowerCase()) { + case "kick": + try { + if (arguments.length == 0) { + player.getPacketSender().sendMessage("You must specify a player name: ::kick playername"); + return; + } + String playerToKick = String.join(" ", arguments); + for(Player player2 : PlayerHandler.players) { + if(player2 != null) { + if(player2.playerName.equalsIgnoreCase(playerToKick)) { + Client c2 = (Client)player2; + player.getPacketSender().sendMessage("You have kicked " + playerToKick + "."); + c2.disconnected = true; + c2.logout(true); + break; + } + } + } + } catch(Exception e) { + player.getPacketSender().sendMessage("Player Must Be Online."); + } + break; + case "yell": + for (int j = 0; j < PlayerHandler.players.length; j++) { + if (PlayerHandler.players[j] != null) { + Client c2 = (Client) PlayerHandler.players[j]; + if (player.playerRights == 1) { + c2.getPacketSender().sendMessage("@blu@[Moderator] @bla@" + Misc.optimizeText(player.playerName) + ": " + Misc.optimizeText(String.join(" ", arguments)) + ""); + } else if (player.playerRights == 2) { + c2.getPacketSender().sendMessage("@gre@[Administator] @bla@" + Misc.optimizeText(player.playerName) + ": " + Misc.optimizeText(String.join(" ", arguments)) + ""); + } else if (player.playerRights == 3) { + c2.getPacketSender().sendMessage("@red@[Developer] @bla@" + Misc.optimizeText(player.playerName) + ": " + Misc.optimizeText(String.join(" ", arguments)) + ""); + } + } + } + break; + + case "mute": + try { + if (arguments.length == 0) { + player.getPacketSender().sendMessage("You must specify a player name: ::mute playername"); + return; + } + String playerToBan = String.join(" ", arguments); + Connection.addNameToMuteList(playerToBan); + for (int i = 0; i < GameConstants.MAX_PLAYERS; i++) { + if (PlayerHandler.players[i] != null) { + if (PlayerHandler.players[i].playerName.equalsIgnoreCase(playerToBan)) { + Client c2 = (Client) PlayerHandler.players[i]; + c2.getPacketSender().sendMessage("You have been muted by: " + player.playerName); + break; + } + } + } + } catch (Exception e) { + player.getPacketSender().sendMessage("Player Must Be Offline."); + } + break; + + case "ipmute": + try { + if (arguments.length == 0) { + player.getPacketSender().sendMessage("You must specify a player name: ::ipmute playername"); + return; + } + String playerToBan = String.join(" ", arguments); + for (int i = 0; i < GameConstants.MAX_PLAYERS; i++) { + if (PlayerHandler.players[i] != null) { + if (PlayerHandler.players[i].playerName.equalsIgnoreCase(playerToBan)) { + Connection.addIpToMuteList(PlayerHandler.players[i].connectedFrom); + player.getPacketSender().sendMessage("You have IP Muted the user: " + PlayerHandler.players[i].playerName); + Client c2 = (Client) PlayerHandler.players[i]; + c2.getPacketSender().sendMessage("You have been muted by: " + player.playerName); + break; + } + } + } + } catch (Exception e) { + player.getPacketSender().sendMessage("Player Must Be Offline."); + } + break; + + case "unipmute": + try { + if (arguments.length == 0) { + player.getPacketSender().sendMessage("You must specify a player name: ::unipmute playername"); + return; + } + String playerToBan = String.join(" ", arguments); + for (int i = 0; i < GameConstants.MAX_PLAYERS; i++) { + if (PlayerHandler.players[i] != null) { + if (PlayerHandler.players[i].playerName.equalsIgnoreCase(playerToBan)) { + Connection.unIPMuteUser(PlayerHandler.players[i].connectedFrom); + player.getPacketSender().sendMessage("You have Un Ip-Muted the user: " + PlayerHandler.players[i].playerName); + break; + } + } + } + } catch (Exception e) { + player.getPacketSender().sendMessage("Player Must Be Offline."); + } + break; + + case "unmute": + try { + if (arguments.length == 0) { + player.getPacketSender().sendMessage("You must specify a player name: ::unmute playername"); + return; + } + String playerToBan = String.join(" ", arguments); + Connection.unMuteUser(playerToBan); + } catch (Exception e) { + player.getPacketSender().sendMessage("Player Must Be Offline."); + } + break; + case "update": + try { + if (arguments.length == 0) { + player.getPacketSender().sendMessage("You must specify the amount of time in seconds: ::update 300"); + return; + } + int seconds = Integer.parseInt(arguments[0]); + PlayerHandler.updateSeconds = seconds; + PlayerHandler.updateAnnounced = false; + PlayerHandler.updateRunning = true; + PlayerHandler.updateStartTime = System.currentTimeMillis(); + } catch (Exception e) {} + break; + } + } + + public static void adminCommands(Player player, String playerCommand, String[] arguments) { + switch (playerCommand.toLowerCase()) { + case "clearbank": + player.getItemAssistant().clearBank(); + break; + case "ipban": + try { + if (arguments.length == 0) { + player.getPacketSender().sendMessage("You must specify a player name: ::ipban playername"); + return; + } + String playerToBan = String.join(" ", arguments); + for(int i = 0; i < GameConstants.MAX_PLAYERS; i++) { + if(PlayerHandler.players[i] != null) { + if(PlayerHandler.players[i].playerName.equalsIgnoreCase(playerToBan)) { + Connection.addIpToBanList(PlayerHandler.players[i].connectedFrom); + Connection.addIpToFile(PlayerHandler.players[i].connectedFrom); + player.getPacketSender().sendMessage("You have IP banned the user: "+PlayerHandler.players[i].playerName+" with the host: "+PlayerHandler.players[i].connectedFrom); + PlayerHandler.players[i].disconnected = true; + } + } + } + } catch(Exception e) { + player.getPacketSender().sendMessage("Player Must Be Offline."); + } + break; + case "ban": + try { + if (arguments.length == 0) { + player.getPacketSender().sendMessage("You must specify a player name: ::ban playername"); + return; + } + String playerToBan = String.join(" ", arguments); + Connection.addNameToBanList(playerToBan); + Connection.addNameToFile(playerToBan); + for(int i = 0; i < GameConstants.MAX_PLAYERS; i++) { + if(PlayerHandler.players[i] != null) { + if(PlayerHandler.players[i].playerName.equalsIgnoreCase(playerToBan)) { + PlayerHandler.players[i].disconnected = true; + } + } + } + } catch(Exception e) { + player.getPacketSender().sendMessage("Player Must Be Offline."); + } + break; + case "unban": + try { + if (arguments.length == 0) { + player.getPacketSender().sendMessage("You must specify a player name: ::unban playername"); + return; + } + String playerToBan = String.join(" ", arguments); + Connection.removeNameFromBanList(playerToBan); + player.getPacketSender().sendMessage(playerToBan + " has been unbanned."); + } catch(Exception e) { + player.getPacketSender().sendMessage("Player Must Be Offline."); + } + break; + case "empty": + player.getPlayerAssistant().handleEmpty(); + break; + case "dialogue": + if (arguments.length == 0) { + player.getPacketSender().sendMessage("You must specify an id: ::dialogue id"); + return; + } + int npcType = 1552; + int dialogueID = Integer.parseInt(arguments[0]); + player.getDialogueHandler().sendDialogues(dialogueID, npcType); + break; + case "interface": + if (arguments.length == 0) { + player.getPacketSender().sendMessage("You must specify an id: ::interface id"); + return; + } + int interfaceID = Integer.parseInt(arguments[0]); + player.getPacketSender().showInterface(interfaceID); + break; + case "gfx": + if (arguments.length == 0) { + player.getPacketSender().sendMessage("You must specify an id: ::gfx id"); + return; + } + int gfxID = Integer.parseInt(arguments[0]); + player.gfx0(gfxID); + break; + case "anim": + if (arguments.length == 0) { + player.getPacketSender().sendMessage("You must specify an id: ::anim id"); + return; + } + int animationID = Integer.parseInt(arguments[0]); + player.startAnimation(animationID); + player.getPlayerAssistant().requestUpdates(); + break; + case "mypos": + player.getPacketSender().sendMessage("X: " + player.absX); + player.getPacketSender().sendMessage("Y: " + player.absY); + player.getPacketSender().sendMessage("H: " + player.heightLevel); + break; + case "bank": + player.getPacketSender().openUpBank(); + break; + case "xteletome": + case "teletome": + try { + if (arguments.length == 0) { + player.getPacketSender().sendMessage("You must specify a player name: ::teletome playername"); + return; + } + String teleToMe = String.join(" ", arguments); + for (int i = 0; i < PlayerHandler.players.length; i++) { + if (PlayerHandler.players[i] != null) { + if (PlayerHandler.players[i].playerName.equalsIgnoreCase(teleToMe)) { + Client p = (Client) PlayerHandler.players[i]; + player.getPacketSender().sendMessage(p.playerName + " has been teleported to you."); + p.getPlayerAssistant().movePlayer(player.absX, player.absY, player.heightLevel); + } + } + } + } catch (Exception e) { + player.getPacketSender().sendMessage("Player is not online."); + } + break; + case "xteleto": + case "teleto": + if (arguments.length == 0) { + player.getPacketSender().sendMessage("You must specify a player name: ::teleto playername"); + return; + } + String teleTo = String.join(" ", arguments); + for (int i = 0; i < PlayerHandler.players.length; i++) { + if (PlayerHandler.players[i] != null) { + if (PlayerHandler.players[i].playerName.equalsIgnoreCase(teleTo)) { + player.getPlayerAssistant().movePlayer(PlayerHandler.players[i].getX(), PlayerHandler.players[i].getY(), PlayerHandler.players[i].heightLevel); + return; + } + } + } + player.getPacketSender().sendMessage("Could not find " + teleTo + " they must be online!"); + break; + case "tp": + case "teleport": + case "to": + if (arguments.length <= 2) + player.getPlayerAssistant().movePlayer(Integer.parseInt(arguments[0]), Integer.parseInt(arguments[1]), 0); + else + player.getPlayerAssistant().movePlayer(Integer.parseInt(arguments[0]), Integer.parseInt(arguments[1]), Integer.parseInt(arguments[2])); + break; + case "up": + player.getPlayerAssistant().movePlayer(player.absX, player.absY, player.heightLevel + 1); + player.getPacketSender().sendMessage("You are now on height level " + player.heightLevel + "."); + break; + case "up2": + player.getPlayerAssistant().movePlayer(player.absX, player.absY - 6400, player.heightLevel); + player.getPacketSender().sendMessage("You are now on height level " + player.heightLevel + "."); + break; + case "down": + player.getPlayerAssistant().movePlayer(player.absX, player.absY, player.heightLevel - 1); + player.getPacketSender().sendMessage("You are now on height level " + player.heightLevel + "."); + break; + case "down2": + player.getPlayerAssistant().movePlayer(player.absX, player.absY + 6400, player.heightLevel); + player.getPacketSender().sendMessage("You are now on height level " + player.heightLevel + "."); + break; + case "spec": + player.specAmount = 100.0; + break; + case "setlevel": + try { + if (arguments.length < 2) { + player.getPacketSender().sendMessage("Must specify a skill and level: ::setlevel 1 99"); + return; + } + int skill = Integer.parseInt(arguments[0]); + int level = Integer.parseInt(arguments[1]); + if (level > 99) { + level = 99; + } else if (level < 0) { + level = 1; + } + player.playerXP[skill] = player.getPlayerAssistant().getXPForLevel(level) + 5; + player.playerLevel[skill] = player.getPlayerAssistant().getLevelForXP(player.playerXP[skill]); + player.getPlayerAssistant().refreshSkill(skill); + player.getPlayerAssistant().levelUp(skill); + } catch (Exception e) {} + break; + case "spellbook": + if (player.inWild()) { + return; + } + if (player.playerMagicBook == 0) { + player.playerMagicBook = 1; + player.getPacketSender().setSidebarInterface(6, 12855); + player.getPacketSender().sendMessage("An ancient wisdomin fills your mind."); + player.getPlayerAssistant().resetAutocast(); + } else if (player.playerMagicBook == 1) { + player.getPacketSender().setSidebarInterface(6, 1151); // modern + player.playerMagicBook = 0; + player.getPacketSender().sendMessage("You feel a drain on your memory."); + player.autocastId = -1; + player.getPlayerAssistant().resetAutocast(); + } + break; + case "item": + try { + if (arguments.length == 0) { + player.getPacketSender().sendMessage("Must specify an item id: ::item 995 1000"); + return; + } + int newItemID = Integer.parseInt(arguments[0]); + int newItemAmount = arguments.length >= 2 ? Integer.parseInt(arguments[1]) : 1; + if (newItemID <= 10000 && newItemID >= 0) { + player.getItemAssistant().addItem(newItemID, newItemAmount); + if (player.isBusy()) { + player.getPacketSender().closeAllWindows(); + } + player.getPacketSender().sendMessage("You spawn " + newItemAmount + " × "+ ItemAssistant.getItemName(newItemID) + "."); + } else { + player.getPacketSender().sendMessage("No such item."); + } + } catch (Exception e) {} + break; + case "master": + for (int i = 0; i < 25; i++) { + player.playerLevel[i] = 99; + player.playerXP[i] = player.getPlayerAssistant().getXPForLevel(100); + player.getPlayerAssistant().refreshSkill(i); + } + player.getPlayerAssistant().requestUpdates(); + break; + } + } + + public static void developerCommands(Player player, String playerCommand, String[] arguments) { + switch (playerCommand.toLowerCase()) { + case "clicktotele": + case "ctt": // alias + player.clickToTele = !player.clickToTele; + player.getPacketSender().sendMessage("Click to teleport: " + (player.clickToTele ? "Enabled" : "Disabled")); + break; + case "giveadmin": + try { + if (arguments.length == 0) { + player.getPacketSender().sendMessage("You must specify a player name: ::giveadmin playername"); + return; + } + String playerToAdmin = String.join(" ", arguments); + for(int i = 0; i < GameConstants.MAX_PLAYERS; i++) { + if(PlayerHandler.players[i] != null) { + if(PlayerHandler.players[i].playerName.equalsIgnoreCase(playerToAdmin)) { + Client c2 = (Client)PlayerHandler.players[i]; + player.getPacketSender().sendMessage("You have given " + playerToAdmin + " admin."); + c2.playerRights = 2; + c2.logout(true); + break; + } + } + } + } catch(Exception e) { + player.getPacketSender().sendMessage("Player Must Be Offline."); + } + break; + case "demote": + try { + if (arguments.length == 0) { + player.getPacketSender().sendMessage("You must specify a player name: ::demote playername"); + return; + } + String playerToAdmin = String.join(" ", arguments); + for(int i = 0; i < GameConstants.MAX_PLAYERS; i++) { + if(PlayerHandler.players[i] != null) { + if(PlayerHandler.players[i].playerName.equalsIgnoreCase(playerToAdmin)) { + Client c2 = (Client)PlayerHandler.players[i]; + player.getPacketSender().sendMessage("You have demoted " + playerToAdmin + "."); + c2.playerRights = 0; + c2.logout(true); + break; + } + } + } + } catch(Exception e) { + player.getPacketSender().sendMessage("Player Must Be Offline."); + } + break; + case "givemod": + try { + if (arguments.length == 0) { + player.getPacketSender().sendMessage("You must specify a player name: ::givemod playername"); + return; + } + String playerToMod = String.join(" ", arguments); + for(int i = 0; i < GameConstants.MAX_PLAYERS; i++) { + if(PlayerHandler.players[i] != null) { + if(PlayerHandler.players[i].playerName.equalsIgnoreCase(playerToMod)) { + Client c2 = (Client)PlayerHandler.players[i]; + player.getPacketSender().sendMessage("You have given " + playerToMod + " mod."); + c2.playerRights = 1; + c2.logout(true); + break; + } + } + } + } catch(Exception e) { + player.getPacketSender().sendMessage("Player Must Be Offline."); + } + break; + case "object": + if (arguments.length == 0) { + player.getPacketSender().sendMessage("You must specify an ID: ::object 1000"); + return; + } + player.getPacketSender().object(Integer.parseInt(arguments[0]), player.absX, player.absY, player.heightLevel, 0, 10); + Region.addObject(Integer.parseInt(arguments[0]), player.absX, player.absY, player.heightLevel, 10, 0, false); + break; + case "object2": + if (arguments.length == 0) { + player.getPacketSender().sendMessage("You must specify an ID: ::object2 1000"); + return; + } + player.getPacketSender().object(Integer.parseInt(arguments[0]), player.absX, player.absY, player.heightLevel, 0, 0); + Region.addObject(Integer.parseInt(arguments[0]), player.absX, player.absY, player.heightLevel, 0, 0, false); + break; + case "npc": + try { + if (arguments.length == 0) { + player.getPacketSender().sendMessage("You must specify an ID: ::npc 1000"); + return; + } + int newNPC = Integer.parseInt(arguments[0]), + maxHit = NpcHandler.getNpcListCombat(newNPC) / 10, + attack = NpcHandler.getNpcListCombat(newNPC), + defence = NpcHandler.getNpcListCombat(newNPC); + boolean attackPlayer = NpcHandler.getNpcListCombat(newNPC) > 0; + if (newNPC > 0) { + NpcHandler.spawnNpc(player, newNPC, player.absX, player.absY, player.heightLevel, 0, NpcHandler.getNpcListHP(newNPC), maxHit, attack, defence, attackPlayer, false); + player.getPacketSender().sendMessage("You spawn a " + NpcHandler.getNpcListName(newNPC).toLowerCase() + "."); + //player.npcSpawned = newNPC; + } else { + player.getPacketSender().sendMessage("Npc " + newNPC + " does not exist."); + } + } catch (Exception e) {} + break; + case "cantattack": + player.npcCanAttack = !player.npcCanAttack; + player.getPacketSender().sendMessage("Npcs " + (player.npcCanAttack ? "can" : "can no longer") + " attack you."); + break; + case "sound": + if (arguments.length == 0) { + player.getPacketSender().sendMessage("You must specify an ID: ::sound 10"); + return; + } + player.getPacketSender().sendSound(Integer.parseInt(arguments[0]), 100, 0); + break; + case "tutprog": + if (arguments.length == 0) { + player.getPacketSender().sendMessage("You must specify an ID: ::tutprog 10"); + return; + } + player.tutorialProgress = Integer.parseInt(arguments[0]);; + break; + case "song": + if (arguments.length == 0) { + player.getPacketSender().sendMessage("You must specify an ID: ::song 10"); + return; + } + int songID = Integer.parseInt(arguments[0]); + player.getPacketSender().sendSong(songID); + break; + case "run": + player.getPacketSender().sendMessage("You have refilled your run-energy!"); + player.playerEnergy = 100; + break; + case "runes": + final int amount = 10000; + final int[][] RUNES = { { 554, amount }, { 555, amount }, + { 556, amount }, { 557, amount }, { 558, amount }, + { 559, amount }, { 560, amount }, { 561, amount }, + { 562, amount }, { 563, amount }, { 564, amount }, + { 565, amount }, { 566, amount }, { 1963, 1 }, }; + for (int[] element : RUNES) { + int item = element[0]; + int amountToRecieve = element[1]; + player.getItemAssistant().addItem(item, amountToRecieve); + } + break; + case "sidebars": + player.getPlayerAssistant().sendSidebars(); + break; + } + } + + } \ No newline at end of file diff --git a/2006Redone Server/src/redone/net/packets/impl/DropItem.java b/2006Redone Server/src/com/rebotted/net/packets/impl/DropItem.java similarity index 66% rename from 2006Redone Server/src/redone/net/packets/impl/DropItem.java rename to 2006Redone Server/src/com/rebotted/net/packets/impl/DropItem.java index 4bfccd94..4281a503 100644 --- a/2006Redone Server/src/redone/net/packets/impl/DropItem.java +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/DropItem.java @@ -1,369 +1,364 @@ -package redone.net.packets.impl; - -import redone.Constants; -import redone.Server; -import redone.game.content.minigames.castlewars.CastleWars; -import redone.game.content.music.sound.SoundList; -import redone.game.content.skills.SkillHandler; -import redone.game.content.skills.firemaking.Firemaking; -import redone.game.content.skills.firemaking.LogData; -import redone.game.items.impl.RareProtection; -import redone.game.npcs.impl.Pets; -import redone.game.players.Client; -import redone.net.packets.PacketType; - -/** - * Drop Item - **/ -public class DropItem implements PacketType { - - @Override - public void processPacket(Client player, int packetType, int packetSize) { - int itemId = player.getInStream().readUnsignedWordA(); - player.getInStream().readUnsignedByte(); - player.getInStream().readUnsignedByte(); - int slot = player.getInStream().readUnsignedWordA(); - if (player.isBotting) { - player.getActionSender().sendMessage("You can't drop items, until you confirm you aren't botting."); - player.getActionSender().sendMessage("If you need to you can type ::amibotting, to see if your botting."); - return; - } - if (!player.getItemAssistant().playerHasItem(itemId) || !RareProtection.doOtherDupe(player, itemId) || System.currentTimeMillis() - player.alchDelay < 1800 || player.stopPlayerPacket || System.currentTimeMillis() - player.buryDelay < 1800 || !CastleWars.deleteCastleWarsItems(player, itemId)) { - return; - } - for (LogData logData : LogData.values()) { - if (itemId == logData.getLogId()) { - Firemaking.pickedUpFiremakingLog = false; - } - } - for (LogData logData : LogData.values()) { - if (itemId == logData.getLogId()) { - if (Server.objectManager.objectExists(player.absX, player.absY)) { - player.getActionSender().sendMessage( - "You cannot drop a log here."); - return; - } - } - } - if (player.duelingArena()) { - player.getActionSender().sendMessage( - "You can't drop items inside the arena!"); - return; - } - if (player.inTrade) { - player.getActionSender().sendMessage( - "You can't drop items while trading!"); - return; - } - if (player.hasNpc == true) { - player.getActionSender().sendMessage( - "You already have a pet dropped."); - return; - } - SkillHandler.resetSkills(player); - if (player.tutorialProgress < 36 && Constants.TUTORIAL_ISLAND) { - player.getActionSender().sendMessage( - "You can't drop items on tutorial island!"); - return; - } - - player.endCurrentTask(); - - switch (itemId) { - case 1560: - if (!player.hasNpc) { - Server.npcHandler.spawnNpc3(player, Pets.summonItemId(itemId), - player.absX, player.absY - 1, player.heightLevel, 0, 120, 25, 200, - 200, false, false, true); - player.getItemAssistant().deleteItem(itemId, slot, - player.playerItemsN[slot]); - player.hasNpc = true; - player.getPlayerAssistant().followPlayer(); - player.getActionSender().sendMessage("You drop your Kitten."); - } else { - player.getActionSender().sendMessage( - "You already dropped your Kitten."); - } - break; - case 1559: - if (!player.hasNpc) { - Server.npcHandler.spawnNpc3(player, Pets.summonItemId(itemId), - player.absX, player.absY - 1, player.heightLevel, 0, 120, 25, 200, - 200, false, false, true); - player.getItemAssistant().deleteItem(itemId, slot, - player.playerItemsN[slot]); - player.hasNpc = true; - player.getPlayerAssistant().followPlayer(); - player.getActionSender().sendMessage("You drop your Kitten."); - } else { - player.getActionSender().sendMessage( - "You already dropped your Kitten."); - } - break; - case 1558: - if (!player.hasNpc) { - Server.npcHandler.spawnNpc3(player, Pets.summonItemId(itemId), - player.absX, player.absY - 1, player.heightLevel, 0, 120, 25, 200, - 200, false, false, true); - player.getItemAssistant().deleteItem(itemId, slot, - player.playerItemsN[slot]); - player.hasNpc = true; - player.getPlayerAssistant().followPlayer(); - player.getActionSender().sendMessage("You drop your Kitten."); - } else { - player.getActionSender().sendMessage( - "You already dropped your Kitten."); - } - break; - case 1557: - if (!player.hasNpc) { - Server.npcHandler.spawnNpc3(player, Pets.summonItemId(itemId), - player.absX, player.absY - 1, player.heightLevel, 0, 120, 25, 200, - 200, false, false, true); - player.getItemAssistant().deleteItem(itemId, slot, - player.playerItemsN[slot]); - player.hasNpc = true; - player.getPlayerAssistant().followPlayer(); - player.getActionSender().sendMessage("You drop your Kitten."); - } else { - player.getActionSender().sendMessage( - "You already dropped your Kitten."); - } - break; - case 1556: - if (!player.hasNpc) { - Server.npcHandler.spawnNpc3(player, Pets.summonItemId(itemId), - player.absX, player.absY - 1, player.heightLevel, 0, 120, 25, 200, - 200, false, false, true); - player.getItemAssistant().deleteItem(itemId, slot, - player.playerItemsN[slot]); - player.hasNpc = true; - player.getPlayerAssistant().followPlayer(); - player.getActionSender().sendMessage("You drop your Kitten."); - } else { - player.getActionSender().sendMessage( - "You already dropped your Kitten."); - } - break; - case 1555: - if (!player.hasNpc) { - Server.npcHandler.spawnNpc3(player, Pets.summonItemId(itemId), - player.absX, player.absY - 1, player.heightLevel, 0, 120, 25, 200, - 200, false, false, true); - player.getItemAssistant().deleteItem(itemId, slot, - player.playerItemsN[slot]); - player.hasNpc = true; - player.getPlayerAssistant().followPlayer(); - player.getActionSender().sendMessage("You drop your Kitten."); - } else { - player.getActionSender().sendMessage( - "You already dropped your Kitten."); - } - break; - case 1561: - if (!player.hasNpc) { - Server.npcHandler.spawnNpc3(player, Pets.summonItemId(itemId), - player.absX, player.absY - 1, player.heightLevel, 0, 120, 25, 200, - 200, false, false, true); - player.getItemAssistant().deleteItem(itemId, slot, - player.playerItemsN[slot]); - player.hasNpc = true; - player.getPlayerAssistant().followPlayer(); - player.getActionSender().sendMessage("You drop your Cat."); - } else { - player.getActionSender().sendMessage( - "You already dropped your Cat."); - } - break; - case 1562: - if (!player.hasNpc) { - Server.npcHandler.spawnNpc3(player, Pets.summonItemId(itemId), - player.absX, player.absY - 1, player.heightLevel, 0, 120, 25, 200, - 200, false, false, true); - player.getItemAssistant().deleteItem(itemId, slot, - player.playerItemsN[slot]); - player.hasNpc = true; - player.getPlayerAssistant().followPlayer(); - player.getActionSender().sendMessage("You drop your Cat."); - } else { - player.getActionSender().sendMessage( - "You already dropped your Cat."); - } - break; - case 1563: - if (!player.hasNpc) { - Server.npcHandler.spawnNpc3(player, Pets.summonItemId(itemId), - player.absX, player.absY - 1, player.heightLevel, 0, 120, 25, 200, - 200, false, false, true); - player.getItemAssistant().deleteItem(itemId, slot, - player.playerItemsN[slot]); - player.hasNpc = true; - player.getPlayerAssistant().followPlayer(); - player.getActionSender().sendMessage("You drop your Cat."); - } else { - player.getActionSender().sendMessage( - "You already dropped your Cat."); - } - break; - case 1564: - if (!player.hasNpc) { - Server.npcHandler.spawnNpc3(player, Pets.summonItemId(itemId), - player.absX, player.absY - 1, player.heightLevel, 0, 120, 25, 200, - 200, false, false, true); - player.getItemAssistant().deleteItem(itemId, slot, - player.playerItemsN[slot]); - player.hasNpc = true; - player.getPlayerAssistant().followPlayer(); - player.getActionSender().sendMessage("You drop your Cat."); - } else { - player.getActionSender().sendMessage( - "You already dropped your Cat."); - } - break; - case 1565: - if (!player.hasNpc) { - Server.npcHandler.spawnNpc3(player, Pets.summonItemId(itemId), - player.absX, player.absY - 1, player.heightLevel, 0, 120, 25, 200, - 200, false, false, true); - player.getItemAssistant().deleteItem(itemId, slot, - player.playerItemsN[slot]); - player.hasNpc = true; - player.getPlayerAssistant().followPlayer(); - player.getActionSender().sendMessage("You drop your Cat."); - } else { - player.getActionSender().sendMessage( - "You already dropped your Cat."); - } - break; - case 7583: - if (!player.hasNpc) { - Server.npcHandler.spawnNpc3(player, Pets.summonItemId(itemId), - player.absX, player.absY - 1, player.heightLevel, 0, 120, 25, 200, - 200, false, false, true); - player.getItemAssistant().deleteItem(itemId, slot, - player.playerItemsN[slot]); - player.hasNpc = true; - player.getPlayerAssistant().followPlayer(); - player.getActionSender().sendMessage( - "You drop your Hell Kitten."); - } else { - player.getActionSender().sendMessage( - "You already dropped your Hell Kitten."); - } - break; - case 1566: - if (!player.hasNpc) { - Server.npcHandler.spawnNpc3(player, Pets.summonItemId(itemId), - player.absX, player.absY - 1, player.heightLevel, 0, 120, 25, 200, - 200, false, false, true); - player.getItemAssistant().deleteItem(itemId, slot, - player.playerItemsN[slot]); - player.hasNpc = true; - player.getPlayerAssistant().followPlayer(); - player.getActionSender().sendMessage("You drop your Cat."); - } else { - player.getActionSender().sendMessage( - "You already dropped your Cat."); - } - break; - case 7585: - if (!player.hasNpc) { - Server.npcHandler.spawnNpc3(player, Pets.summonItemId(itemId), - player.absX, player.absY - 1, player.heightLevel, 0, 120, 25, 200, - 200, false, false, true); - player.getItemAssistant().deleteItem(itemId, slot, - player.playerItemsN[slot]); - player.hasNpc = true; - player.getPlayerAssistant().followPlayer(); - player.getActionSender().sendMessage( - "You drop your Hell Kitten."); - } else { - player.getActionSender().sendMessage( - "You already dropped your Hell Kitten."); - } - break; - case 4045: - if (CastleWars.isInCw(player)) { - int explosiveHit = 15; - player.startAnimation(827); - player.getItemAssistant().deleteItem(itemId, slot, player.playerItemsN[slot]); - player.handleHitMask(explosiveHit); - player.dealDamage(explosiveHit); - player.getPlayerAssistant().refreshSkill(3); - player.forcedText = "Ow! That really hurt!"; - player.forcedChatUpdateRequired = true; - player.updateRequired = true; - } else { - player.getItemAssistant().deleteItem(4045, player.getItemAssistant().getItemAmount(4045)); - player.getItemAssistant().deleteItem(4046, player.getItemAssistant().getItemAmount(4046)); - player.getActionSender().sendMessage("You can't do that! Your not in castle wars!"); - } - break; - case 7584: - if (!player.hasNpc) { - Server.npcHandler.spawnNpc3(player, Pets.summonItemId(itemId), - player.absX, player.absY - 1, player.heightLevel, 0, 120, 25, 200, - 200, false, false, true); - player.getItemAssistant().deleteItem(itemId, slot, - player.playerItemsN[slot]); - player.hasNpc = true; - player.getPlayerAssistant().followPlayer(); - player.getActionSender().sendMessage( - "You drop your Hell Kitten."); - } else { - player.getActionSender().sendMessage( - "You already dropped your Hell Kitten."); - } - break; - } - - boolean droppable = true; - /*for (int i : Constants.UNDROPPABLE_ITEMS) { - if (i == itemId) { - droppable = false; - break; - } - }*/ - - for (int p : Pets.CAT_ITEMS) { - if (p == itemId) { - if (player.hasNpc == true) { - droppable = false; - break; - } - } - } - - if (player.playerItemsN[slot] != 0 && itemId != -1 - && player.playerItems[slot] == itemId + 1) { - if (droppable) { - for (int i = 0; i < Constants.DESTROYABLE_ITEMS.length; i++) { - if (itemId == Constants.DESTROYABLE_ITEMS[i]) { - player.droppedItem = itemId; - player.getItemAssistant().destroyInterface(itemId); - return; - } - } - if (player.underAttackBy > 0) { - if (player.getShopAssistant().getItemShopValue(itemId) > 1000) { - player.getActionSender() - .sendMessage( - "You may not drop items worth more than 1000 while in combat."); - return; - } - } - Server.itemHandler.createGroundItem(player, itemId, player.getX(), - player.getY(), player.playerItemsN[slot], player.getId()); - player.getItemAssistant().deleteItem(itemId, slot, - player.playerItemsN[slot]); - if (Constants.SOUND) { - player.getActionSender().sendSound(SoundList.ITEM_DROP, 100, - 0); - } - } else { - player.getActionSender().sendMessage( - "This items cannot be dropped."); - } - } - } -} +package com.rebotted.net.packets.impl; + +import com.rebotted.GameConstants; +import com.rebotted.GameEngine; +import com.rebotted.game.content.minigames.castlewars.CastleWars; +import com.rebotted.game.content.music.sound.SoundList; +import com.rebotted.game.content.skills.SkillHandler; +import com.rebotted.game.content.skills.firemaking.Firemaking; +import com.rebotted.game.content.skills.firemaking.LogData; +import com.rebotted.game.items.impl.RareProtection; +import com.rebotted.game.npcs.impl.Pets; +import com.rebotted.game.players.Player; +import com.rebotted.net.packets.PacketType; + +/** + * Drop Item + **/ +public class DropItem implements PacketType { + + @Override + public void processPacket(Player player, int packetType, int packetSize) { + int itemId = player.getInStream().readUnsignedWordA(); + player.getInStream().readUnsignedByte(); + player.getInStream().readUnsignedByte(); + int slot = player.getInStream().readUnsignedWordA(); + if (!player.getItemAssistant().playerHasItem(itemId) || !RareProtection.doOtherDupe(player, itemId) || System.currentTimeMillis() - player.alchDelay < 1800 || player.stopPlayerPacket || System.currentTimeMillis() - player.buryDelay < 1800 || !CastleWars.deleteCastleWarsItems(player, itemId)) { + return; + } + for (LogData logData : LogData.values()) { + if (itemId == logData.getLogId()) { + Firemaking.pickedUpFiremakingLog = false; + } + } + for (LogData logData : LogData.values()) { + if (itemId == logData.getLogId()) { + if (GameEngine.objectManager.objectExists(player.absX, player.absY)) { + player.getPacketSender().sendMessage( + "You cannot drop a log here."); + return; + } + } + } + if (player.duelingArena()) { + player.getPacketSender().sendMessage( + "You can't drop items inside the arena!"); + return; + } + if (player.inTrade) { + player.getPacketSender().sendMessage( + "You can't drop items while trading!"); + return; + } + if (player.hasNpc == true) { + player.getPacketSender().sendMessage( + "You already have a pet dropped."); + return; + } + SkillHandler.resetSkills(player); + if (player.tutorialProgress < 36 && GameConstants.TUTORIAL_ISLAND) { + player.getPacketSender().sendMessage( + "You can't drop items on tutorial island!"); + return; + } + + player.endCurrentTask(); + + switch (itemId) { + case 1560: + if (!player.hasNpc) { + GameEngine.npcHandler.spawnNpc3(player, Pets.summonItemId(itemId), + player.absX, player.absY - 1, player.heightLevel, 0, 120, 25, 200, + 200, false, false, true); + player.getItemAssistant().deleteItem(itemId, slot, + player.playerItemsN[slot]); + player.hasNpc = true; + player.getPlayerAssistant().followPlayer(); + player.getPacketSender().sendMessage("You drop your Kitten."); + } else { + player.getPacketSender().sendMessage( + "You already dropped your Kitten."); + } + break; + case 1559: + if (!player.hasNpc) { + GameEngine.npcHandler.spawnNpc3(player, Pets.summonItemId(itemId), + player.absX, player.absY - 1, player.heightLevel, 0, 120, 25, 200, + 200, false, false, true); + player.getItemAssistant().deleteItem(itemId, slot, + player.playerItemsN[slot]); + player.hasNpc = true; + player.getPlayerAssistant().followPlayer(); + player.getPacketSender().sendMessage("You drop your Kitten."); + } else { + player.getPacketSender().sendMessage( + "You already dropped your Kitten."); + } + break; + case 1558: + if (!player.hasNpc) { + GameEngine.npcHandler.spawnNpc3(player, Pets.summonItemId(itemId), + player.absX, player.absY - 1, player.heightLevel, 0, 120, 25, 200, + 200, false, false, true); + player.getItemAssistant().deleteItem(itemId, slot, + player.playerItemsN[slot]); + player.hasNpc = true; + player.getPlayerAssistant().followPlayer(); + player.getPacketSender().sendMessage("You drop your Kitten."); + } else { + player.getPacketSender().sendMessage( + "You already dropped your Kitten."); + } + break; + case 1557: + if (!player.hasNpc) { + GameEngine.npcHandler.spawnNpc3(player, Pets.summonItemId(itemId), + player.absX, player.absY - 1, player.heightLevel, 0, 120, 25, 200, + 200, false, false, true); + player.getItemAssistant().deleteItem(itemId, slot, + player.playerItemsN[slot]); + player.hasNpc = true; + player.getPlayerAssistant().followPlayer(); + player.getPacketSender().sendMessage("You drop your Kitten."); + } else { + player.getPacketSender().sendMessage( + "You already dropped your Kitten."); + } + break; + case 1556: + if (!player.hasNpc) { + GameEngine.npcHandler.spawnNpc3(player, Pets.summonItemId(itemId), + player.absX, player.absY - 1, player.heightLevel, 0, 120, 25, 200, + 200, false, false, true); + player.getItemAssistant().deleteItem(itemId, slot, + player.playerItemsN[slot]); + player.hasNpc = true; + player.getPlayerAssistant().followPlayer(); + player.getPacketSender().sendMessage("You drop your Kitten."); + } else { + player.getPacketSender().sendMessage( + "You already dropped your Kitten."); + } + break; + case 1555: + if (!player.hasNpc) { + GameEngine.npcHandler.spawnNpc3(player, Pets.summonItemId(itemId), + player.absX, player.absY - 1, player.heightLevel, 0, 120, 25, 200, + 200, false, false, true); + player.getItemAssistant().deleteItem(itemId, slot, + player.playerItemsN[slot]); + player.hasNpc = true; + player.getPlayerAssistant().followPlayer(); + player.getPacketSender().sendMessage("You drop your Kitten."); + } else { + player.getPacketSender().sendMessage( + "You already dropped your Kitten."); + } + break; + case 1561: + if (!player.hasNpc) { + GameEngine.npcHandler.spawnNpc3(player, Pets.summonItemId(itemId), + player.absX, player.absY - 1, player.heightLevel, 0, 120, 25, 200, + 200, false, false, true); + player.getItemAssistant().deleteItem(itemId, slot, + player.playerItemsN[slot]); + player.hasNpc = true; + player.getPlayerAssistant().followPlayer(); + player.getPacketSender().sendMessage("You drop your Cat."); + } else { + player.getPacketSender().sendMessage( + "You already dropped your Cat."); + } + break; + case 1562: + if (!player.hasNpc) { + GameEngine.npcHandler.spawnNpc3(player, Pets.summonItemId(itemId), + player.absX, player.absY - 1, player.heightLevel, 0, 120, 25, 200, + 200, false, false, true); + player.getItemAssistant().deleteItem(itemId, slot, + player.playerItemsN[slot]); + player.hasNpc = true; + player.getPlayerAssistant().followPlayer(); + player.getPacketSender().sendMessage("You drop your Cat."); + } else { + player.getPacketSender().sendMessage( + "You already dropped your Cat."); + } + break; + case 1563: + if (!player.hasNpc) { + GameEngine.npcHandler.spawnNpc3(player, Pets.summonItemId(itemId), + player.absX, player.absY - 1, player.heightLevel, 0, 120, 25, 200, + 200, false, false, true); + player.getItemAssistant().deleteItem(itemId, slot, + player.playerItemsN[slot]); + player.hasNpc = true; + player.getPlayerAssistant().followPlayer(); + player.getPacketSender().sendMessage("You drop your Cat."); + } else { + player.getPacketSender().sendMessage( + "You already dropped your Cat."); + } + break; + case 1564: + if (!player.hasNpc) { + GameEngine.npcHandler.spawnNpc3(player, Pets.summonItemId(itemId), + player.absX, player.absY - 1, player.heightLevel, 0, 120, 25, 200, + 200, false, false, true); + player.getItemAssistant().deleteItem(itemId, slot, + player.playerItemsN[slot]); + player.hasNpc = true; + player.getPlayerAssistant().followPlayer(); + player.getPacketSender().sendMessage("You drop your Cat."); + } else { + player.getPacketSender().sendMessage( + "You already dropped your Cat."); + } + break; + case 1565: + if (!player.hasNpc) { + GameEngine.npcHandler.spawnNpc3(player, Pets.summonItemId(itemId), + player.absX, player.absY - 1, player.heightLevel, 0, 120, 25, 200, + 200, false, false, true); + player.getItemAssistant().deleteItem(itemId, slot, + player.playerItemsN[slot]); + player.hasNpc = true; + player.getPlayerAssistant().followPlayer(); + player.getPacketSender().sendMessage("You drop your Cat."); + } else { + player.getPacketSender().sendMessage( + "You already dropped your Cat."); + } + break; + case 7583: + if (!player.hasNpc) { + GameEngine.npcHandler.spawnNpc3(player, Pets.summonItemId(itemId), + player.absX, player.absY - 1, player.heightLevel, 0, 120, 25, 200, + 200, false, false, true); + player.getItemAssistant().deleteItem(itemId, slot, + player.playerItemsN[slot]); + player.hasNpc = true; + player.getPlayerAssistant().followPlayer(); + player.getPacketSender().sendMessage( + "You drop your Hell Kitten."); + } else { + player.getPacketSender().sendMessage( + "You already dropped your Hell Kitten."); + } + break; + case 1566: + if (!player.hasNpc) { + GameEngine.npcHandler.spawnNpc3(player, Pets.summonItemId(itemId), + player.absX, player.absY - 1, player.heightLevel, 0, 120, 25, 200, + 200, false, false, true); + player.getItemAssistant().deleteItem(itemId, slot, + player.playerItemsN[slot]); + player.hasNpc = true; + player.getPlayerAssistant().followPlayer(); + player.getPacketSender().sendMessage("You drop your Cat."); + } else { + player.getPacketSender().sendMessage( + "You already dropped your Cat."); + } + break; + case 7585: + if (!player.hasNpc) { + GameEngine.npcHandler.spawnNpc3(player, Pets.summonItemId(itemId), + player.absX, player.absY - 1, player.heightLevel, 0, 120, 25, 200, + 200, false, false, true); + player.getItemAssistant().deleteItem(itemId, slot, + player.playerItemsN[slot]); + player.hasNpc = true; + player.getPlayerAssistant().followPlayer(); + player.getPacketSender().sendMessage( + "You drop your Hell Kitten."); + } else { + player.getPacketSender().sendMessage( + "You already dropped your Hell Kitten."); + } + break; + case 4045: + if (CastleWars.isInCw(player)) { + int explosiveHit = 15; + player.startAnimation(827); + player.getItemAssistant().deleteItem(itemId, slot, player.playerItemsN[slot]); + player.handleHitMask(explosiveHit); + player.dealDamage(explosiveHit); + player.getPlayerAssistant().refreshSkill(3); + player.forcedText = "Ow! That really hurt!"; + player.forcedChatUpdateRequired = true; + player.updateRequired = true; + } else { + player.getItemAssistant().deleteItem(4045, player.getItemAssistant().getItemAmount(4045)); + player.getItemAssistant().deleteItem(4046, player.getItemAssistant().getItemAmount(4046)); + player.getPacketSender().sendMessage("You can't do that! Your not in castle wars!"); + } + break; + case 7584: + if (!player.hasNpc) { + GameEngine.npcHandler.spawnNpc3(player, Pets.summonItemId(itemId), + player.absX, player.absY - 1, player.heightLevel, 0, 120, 25, 200, + 200, false, false, true); + player.getItemAssistant().deleteItem(itemId, slot, + player.playerItemsN[slot]); + player.hasNpc = true; + player.getPlayerAssistant().followPlayer(); + player.getPacketSender().sendMessage( + "You drop your Hell Kitten."); + } else { + player.getPacketSender().sendMessage( + "You already dropped your Hell Kitten."); + } + break; + } + + boolean droppable = true; + /*for (int i : Constants.UNDROPPABLE_ITEMS) { + if (i == itemId) { + droppable = false; + break; + } + }*/ + + for (int p : Pets.CAT_ITEMS) { + if (p == itemId) { + if (player.hasNpc == true) { + droppable = false; + break; + } + } + } + + if (player.playerItemsN[slot] != 0 && itemId != -1 + && player.playerItems[slot] == itemId + 1) { + if (droppable) { + for (int i = 0; i < GameConstants.DESTROYABLE_ITEMS.length; i++) { + if (itemId == GameConstants.DESTROYABLE_ITEMS[i]) { + player.droppedItem = itemId; + player.getItemAssistant().destroyInterface(itemId); + return; + } + } + if (player.underAttackBy > 0) { + if (player.getShopAssistant().getItemShopValue(itemId) > 1000) { + player.getPacketSender() + .sendMessage( + "You may not drop items worth more than 1000 while in combat."); + return; + } + } + GameEngine.itemHandler.createGroundItem(player, itemId, player.getX(), + player.getY(), player.playerItemsN[slot], player.getId()); + player.getItemAssistant().deleteItem(itemId, slot, + player.playerItemsN[slot]); + if (GameConstants.SOUND) { + player.getPacketSender().sendSound(SoundList.ITEM_DROP, 100, + 0); + } + } else { + player.getPacketSender().sendMessage( + "This items cannot be dropped."); + } + } + } +} diff --git a/2006Redone Server/src/com/rebotted/net/packets/impl/FollowPlayer.java b/2006Redone Server/src/com/rebotted/net/packets/impl/FollowPlayer.java new file mode 100644 index 00000000..ffc71ce6 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/FollowPlayer.java @@ -0,0 +1,24 @@ +package com.rebotted.net.packets.impl; + +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerHandler; +import com.rebotted.net.packets.PacketType; + +public class FollowPlayer implements PacketType { + + @Override + public void processPacket(Player c, int packetType, int packetSize) { + int followPlayer = c.getInStream().readUnsignedWordBigEndian(); + if (PlayerHandler.players[followPlayer] == null) { + return; + } + c.playerIndex = 0; + c.npcIndex = 0; + c.mageFollow = false; + c.usingBow = false; + c.usingRangeWeapon = false; + c.followDistance = 1; + c.followId = followPlayer; + c.endCurrentTask(); + } +} diff --git a/2006Redone Server/src/com/rebotted/net/packets/impl/IdleLogout.java b/2006Redone Server/src/com/rebotted/net/packets/impl/IdleLogout.java new file mode 100644 index 00000000..181e61d5 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/IdleLogout.java @@ -0,0 +1,19 @@ +package com.rebotted.net.packets.impl; + +import com.rebotted.game.players.Player; +import com.rebotted.net.packets.PacketType; + +/** + * @author Andrew (Mr Extremez) + */ + +public class IdleLogout implements PacketType { + + @Override + public void processPacket(Player player, int packetType, int packetSize) { + if (player.underAttackBy > 0 || player.underAttackBy2 > 0 || player.isBot) { + return; + } + player.logout(); + } +} diff --git a/2006Redone Server/src/redone/net/packets/impl/ItemClick2.java b/2006Redone Server/src/com/rebotted/net/packets/impl/ItemClick2.java similarity index 65% rename from 2006Redone Server/src/redone/net/packets/impl/ItemClick2.java rename to 2006Redone Server/src/com/rebotted/net/packets/impl/ItemClick2.java index a0f99434..d62fb385 100644 --- a/2006Redone Server/src/redone/net/packets/impl/ItemClick2.java +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/ItemClick2.java @@ -1,35 +1,34 @@ -package redone.net.packets.impl; - -import redone.game.items.impl.HandleEmpty; -import redone.game.players.Client; -import redone.net.packets.PacketType; - -/** - * Item Click 2 Or Alternative Item Option 1 - * - * @author Ryan / Lmctruck30 Proper Streams - */ - -public class ItemClick2 implements PacketType { - - @Override - public void processPacket(Client c, int packetType, int packetSize) { - int itemId = c.getInStream().readSignedWordA(); - - if (!c.getItemAssistant().playerHasItem(itemId, 1)) { - return; - } - - c.endCurrentTask(); - - if (HandleEmpty.canEmpty(c, itemId)) { - HandleEmpty.handleEmptyItem(c, itemId, HandleEmpty.filledToEmpty(c, itemId)); - return; - } - - switch (itemId) { - } - - } - -} +package com.rebotted.net.packets.impl; + +import com.rebotted.game.items.impl.HandleEmpty; +import com.rebotted.game.players.Player; +import com.rebotted.net.packets.PacketType; + +/** + * Item Click 2 Or Alternative Item Option 1 + * @author Ryan / Lmctruck30 Proper Streams + */ + +public class ItemClick2 implements PacketType { + + @Override + public void processPacket(Player c, int packetType, int packetSize) { + int itemId = c.getInStream().readSignedWordA(); + + if (!c.getItemAssistant().playerHasItem(itemId, 1)) { + return; + } + + c.endCurrentTask(); + + if (HandleEmpty.canEmpty(c, itemId)) { + HandleEmpty.handleEmptyItem(c, itemId, HandleEmpty.filledToEmpty(c, itemId)); + return; + } + + switch (itemId) { + } + + } + +} diff --git a/2006Redone Server/src/redone/net/packets/impl/ItemClick2OnGroundItem.java b/2006Redone Server/src/com/rebotted/net/packets/impl/ItemClick2OnGroundItem.java similarity index 57% rename from 2006Redone Server/src/redone/net/packets/impl/ItemClick2OnGroundItem.java rename to 2006Redone Server/src/com/rebotted/net/packets/impl/ItemClick2OnGroundItem.java index 65d20199..c8e05f3b 100644 --- a/2006Redone Server/src/redone/net/packets/impl/ItemClick2OnGroundItem.java +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/ItemClick2OnGroundItem.java @@ -1,29 +1,28 @@ -package redone.net.packets.impl; - -import redone.game.content.skills.firemaking.Firemaking; -import redone.game.content.skills.firemaking.LogData; -import redone.game.players.Client; -import redone.net.packets.PacketType; - -public class ItemClick2OnGroundItem implements PacketType { - - @Override - public void processPacket(Client c, int packetType, int packetSize) { - final int itemX = c.getInStream().readSignedWordBigEndian(); - final int itemY = c.getInStream().readSignedWordBigEndianA(); - final int itemId = c.getInStream().readUnsignedWordA(); - System.out.println("ItemClick2OnGroundItem - " + c.playerName + " - " - + itemId + " - " + itemX + " - " + itemY); - if (c.absX != itemX || c.absY != itemY) { - c.getActionSender().sendMessage("You can't do that there!"); - return; - } - c.endCurrentTask(); - for (LogData l : LogData.values()) { - if (itemId == l.getLogId()) { - Firemaking.attemptFire(c, 590, itemId, itemX, itemY, true); - return; - } - } - } -} +package com.rebotted.net.packets.impl; + +import com.rebotted.game.content.skills.firemaking.Firemaking; +import com.rebotted.game.content.skills.firemaking.LogData; +import com.rebotted.game.players.Player; +import com.rebotted.net.packets.PacketType; + +public class ItemClick2OnGroundItem implements PacketType { + + @Override + public void processPacket(Player c, int packetType, int packetSize) { + final int itemX = c.getInStream().readSignedWordBigEndian(); + final int itemY = c.getInStream().readSignedWordBigEndianA(); + final int itemId = c.getInStream().readUnsignedWordA(); + System.out.println("ItemClick2OnGroundItem - " + c.playerName + " - " + itemId + " - " + itemX + " - " + itemY); + if (c.absX != itemX || c.absY != itemY) { + c.getPacketSender().sendMessage("You can't do that there!"); + return; + } + c.endCurrentTask(); + for (LogData l : LogData.values()) { + if (itemId == l.getLogId()) { + Firemaking.attemptFire(c, 590, itemId, itemX, itemY, true); + return; + } + } + } +} diff --git a/2006Redone Server/src/redone/net/packets/impl/ItemClick3.java b/2006Redone Server/src/com/rebotted/net/packets/impl/ItemClick3.java similarity index 81% rename from 2006Redone Server/src/redone/net/packets/impl/ItemClick3.java rename to 2006Redone Server/src/com/rebotted/net/packets/impl/ItemClick3.java index a2255149..cdcd9eb8 100644 --- a/2006Redone Server/src/redone/net/packets/impl/ItemClick3.java +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/ItemClick3.java @@ -1,90 +1,90 @@ -package redone.net.packets.impl; - -import redone.game.items.impl.HandleEmpty; -import redone.game.items.impl.Teles; -import redone.game.players.Client; -import redone.net.packets.PacketType; -import redone.util.Misc; - -/** - * Item Click 3 Or Alternative Item Option 1 - * - * @author Ryan / Lmctruck30 Proper Streams - */ - -public class ItemClick3 implements PacketType { - - @Override - public void processPacket(Client player, int packetType, int packetSize) { - int itemId11 = player.getInStream().readSignedWordBigEndianA(); - int itemId1 = player.getInStream().readSignedWordA(); - int itemId = player.getInStream().readSignedWordA(); - if (!player.getItemAssistant().playerHasItem(itemId, 1)) { - return; - } - if (HandleEmpty.canEmpty(player, itemId)) { - HandleEmpty.handleEmptyItem(player, itemId, HandleEmpty.filledToEmpty(player, itemId)); - return; - } - if (player.duelStatus > 0 && player.duelStatus < 5 || player.tradeStatus == 1) { - return; - } - - player.endCurrentTask(); - - switch (itemId) { - - case 2552: - case 2554: - case 2556: - case 2558: - case 2560: - case 2562: - case 2564: - case 2566: - player.itemUsing = itemId; - Teles.useROD(player); - break; - - case 1712: - case 1710: - case 1708: - case 1706: - player.itemUsing = itemId; - Teles.useAOG(player); - break; - - case 3853: - case 3855: - case 3857: - case 3859: - case 3861: - case 3863: - case 3865: - case 3867: - player.itemUsing = itemId; - Teles.useGN(player); - break; - - case 1933: - player.getItemAssistant().deleteItem(1933, 1); - player.getItemAssistant().addItem(1931, 1); - break; - - case 1921: - player.getItemAssistant().deleteItem(1921, 1); - player.getItemAssistant().addItem(1923, 1); - break; - - default: - - if (player.playerRights == 3) { - Misc.println(player.playerName + " - Item3rdOption: " + itemId - + " : " + itemId11 + " : " + itemId1); - } - break; - } - - } - -} +package com.rebotted.net.packets.impl; + +import com.rebotted.game.items.impl.HandleEmpty; +import com.rebotted.game.items.impl.Teles; +import com.rebotted.game.players.Player; +import com.rebotted.net.packets.PacketType; +import com.rebotted.util.Misc; + +/** + * Item Click 3 Or Alternative Item Option 1 + * + * @author Ryan / Lmctruck30 Proper Streams + */ + +public class ItemClick3 implements PacketType { + + @Override + public void processPacket(Player player, int packetType, int packetSize) { + int itemId11 = player.getInStream().readSignedWordBigEndianA(); + int itemId1 = player.getInStream().readSignedWordA(); + int itemId = player.getInStream().readSignedWordA(); + if (!player.getItemAssistant().playerHasItem(itemId, 1)) { + return; + } + if (HandleEmpty.canEmpty(player, itemId)) { + HandleEmpty.handleEmptyItem(player, itemId, HandleEmpty.filledToEmpty(player, itemId)); + return; + } + if (player.duelStatus > 0 && player.duelStatus < 5 || player.tradeStatus == 1) { + return; + } + + player.endCurrentTask(); + + switch (itemId) { + + case 2552: + case 2554: + case 2556: + case 2558: + case 2560: + case 2562: + case 2564: + case 2566: + player.itemUsing = itemId; + Teles.useROD(player); + break; + + case 1712: + case 1710: + case 1708: + case 1706: + player.itemUsing = itemId; + Teles.useAOG(player); + break; + + case 3853: + case 3855: + case 3857: + case 3859: + case 3861: + case 3863: + case 3865: + case 3867: + player.itemUsing = itemId; + Teles.useGN(player); + break; + + case 1933: + player.getItemAssistant().deleteItem(1933, 1); + player.getItemAssistant().addItem(1931, 1); + break; + + case 1921: + player.getItemAssistant().deleteItem(1921, 1); + player.getItemAssistant().addItem(1923, 1); + break; + + default: + + if (player.playerRights == 3) { + Misc.println(player.playerName + " - Item3rdOption: " + itemId + + " : " + itemId11 + " : " + itemId1); + } + break; + } + + } + +} diff --git a/2006Redone Server/src/redone/net/packets/impl/ItemOnGroundItem.java b/2006Redone Server/src/com/rebotted/net/packets/impl/ItemOnGroundItem.java similarity index 69% rename from 2006Redone Server/src/redone/net/packets/impl/ItemOnGroundItem.java rename to 2006Redone Server/src/com/rebotted/net/packets/impl/ItemOnGroundItem.java index 4234b910..066bec5f 100644 --- a/2006Redone Server/src/redone/net/packets/impl/ItemOnGroundItem.java +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/ItemOnGroundItem.java @@ -1,46 +1,46 @@ -package redone.net.packets.impl; - -import redone.Server; -import redone.game.content.skills.firemaking.Firemaking; -import redone.game.players.Client; -import redone.net.packets.PacketType; -import redone.util.Misc; - -public class ItemOnGroundItem implements PacketType { - - @Override - public void processPacket(Client player, int packetType, int packetSize) { - player.getInStream().readSignedWordBigEndian(); - int itemUsed = player.getInStream().readSignedWordA(); - int groundItem = player.getInStream().readUnsignedWord(); - int gItemY = player.getInStream().readSignedWordA(); - int itemUsedSlot = player.getInStream().readSignedWordBigEndianA(); - int gItemX = player.getInStream().readUnsignedWord(); - if (!player.getItemAssistant().playerHasItem(itemUsed, 1, itemUsedSlot)) { - return; - } - if (!Server.itemHandler.itemExists(groundItem, gItemX, gItemY)) { - return; - } - - player.endCurrentTask(); - - switch (itemUsed) { - case 590: - case 7331: - case 7330: - case 7329: - Firemaking.attemptFire(player, itemUsed, groundItem, gItemX, gItemY, - true); - break; - - default: - if (player.playerRights == 3) { - Misc.println("ItemUsed " + itemUsed + " on Ground Item " - + groundItem); - } - break; - } - } - -} +package com.rebotted.net.packets.impl; + +import com.rebotted.GameEngine; +import com.rebotted.game.content.skills.firemaking.Firemaking; +import com.rebotted.game.players.Player; +import com.rebotted.net.packets.PacketType; +import com.rebotted.util.Misc; + +public class ItemOnGroundItem implements PacketType { + + @Override + public void processPacket(Player player, int packetType, int packetSize) { + player.getInStream().readSignedWordBigEndian(); + int itemUsed = player.getInStream().readSignedWordA(); + int groundItem = player.getInStream().readUnsignedWord(); + int gItemY = player.getInStream().readSignedWordA(); + int itemUsedSlot = player.getInStream().readSignedWordBigEndianA(); + int gItemX = player.getInStream().readUnsignedWord(); + if (!player.getItemAssistant().playerHasItem(itemUsed, 1, itemUsedSlot)) { + return; + } + if (!GameEngine.itemHandler.itemExists(groundItem, gItemX, gItemY)) { + return; + } + + player.endCurrentTask(); + + switch (itemUsed) { + case 590: + case 7331: + case 7330: + case 7329: + Firemaking.attemptFire(player, itemUsed, groundItem, gItemX, gItemY, + true); + break; + + default: + if (player.playerRights == 3) { + Misc.println("ItemUsed " + itemUsed + " on Ground Item " + + groundItem); + } + break; + } + } + +} diff --git a/2006Redone Server/src/redone/net/packets/impl/ItemOnItem.java b/2006Redone Server/src/com/rebotted/net/packets/impl/ItemOnItem.java similarity index 70% rename from 2006Redone Server/src/redone/net/packets/impl/ItemOnItem.java rename to 2006Redone Server/src/com/rebotted/net/packets/impl/ItemOnItem.java index 577a8705..0797752b 100644 --- a/2006Redone Server/src/redone/net/packets/impl/ItemOnItem.java +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/ItemOnItem.java @@ -1,22 +1,22 @@ -package redone.net.packets.impl; - -import redone.game.items.UseItem; -import redone.game.players.Client; -import redone.net.packets.PacketType; - -public class ItemOnItem implements PacketType { - - @Override - public void processPacket(Client player, int packetType, int packetSize) { - int usedWithSlot = player.getInStream().readUnsignedWord(); - int itemUsedSlot = player.getInStream().readUnsignedWordA(); - int useWith = player.playerItems[usedWithSlot] - 1; - int itemUsed = player.playerItems[itemUsedSlot] - 1; - if (!player.getItemAssistant().playerHasItem(useWith, 1, usedWithSlot)|| !player.getItemAssistant().playerHasItem(itemUsed, 1, itemUsedSlot)) { - return; - } - player.endCurrentTask(); - UseItem.ItemonItem(player, itemUsed, useWith); - } - -} +package com.rebotted.net.packets.impl; + +import com.rebotted.game.items.UseItem; +import com.rebotted.game.players.Player; +import com.rebotted.net.packets.PacketType; + +public class ItemOnItem implements PacketType { + + @Override + public void processPacket(Player player, int packetType, int packetSize) { + int usedWithSlot = player.getInStream().readUnsignedWord(); + int itemUsedSlot = player.getInStream().readUnsignedWordA(); + int useWith = player.playerItems[usedWithSlot] - 1; + int itemUsed = player.playerItems[itemUsedSlot] - 1; + if (!player.getItemAssistant().playerHasItem(useWith, 1, usedWithSlot)|| !player.getItemAssistant().playerHasItem(itemUsed, 1, itemUsedSlot)) { + return; + } + player.endCurrentTask(); + UseItem.ItemonItem(player, itemUsed, useWith); + } + +} diff --git a/2006Redone Server/src/redone/net/packets/impl/ItemOnNpc.java b/2006Redone Server/src/com/rebotted/net/packets/impl/ItemOnNpc.java similarity index 68% rename from 2006Redone Server/src/redone/net/packets/impl/ItemOnNpc.java rename to 2006Redone Server/src/com/rebotted/net/packets/impl/ItemOnNpc.java index fca0d36a..2921e91b 100644 --- a/2006Redone Server/src/redone/net/packets/impl/ItemOnNpc.java +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/ItemOnNpc.java @@ -1,61 +1,58 @@ -package redone.net.packets.impl; - -import redone.game.content.skills.SkillHandler; -import redone.game.items.UseItem; -import redone.game.npcs.NpcHandler; -import redone.game.players.Client; -import redone.net.packets.PacketType; - -public class ItemOnNpc implements PacketType { - - @Override - public void processPacket(final Client player, int packetType, int packetSize) { - final int itemId = player.getInStream().readSignedWordA(); - final int i = player.getInStream().readSignedWordA(); - final int slot = player.getInStream().readSignedWordBigEndian(); - final int npcId = NpcHandler.npcs[i].npcType; - SkillHandler.resetItemOnNpc(player); - player.endCurrentTask(); - if (player.playerRights == 3) { - player.getActionSender().sendMessage("Item id: " + itemId + " slot: " + slot + " i: " + i); - } - if (player.getItemAssistant().freeSlots() < 1) { - player.getActionSender().sendMessage("Your inventory is full."); - return; - } - if (player == null || player.disconnected == true || !player.getItemAssistant().playerHasItem(itemId, 1, slot) || NpcHandler.npcs[i] == null || NpcHandler.npcs[i].isDead || player.isDead || player.isTeleporting) { - return; - } - player.faceNpc(i); - switch(npcId) { - case 43: - if (NpcHandler.npcs[i].requestTransformTime(player, 1735, 893, 43, 42, 50, i)) - { - player.getItemAssistant().addItem(1737, 1); - } - else - { - player.getActionSender().sendMessage("You need to wait for this sheep's wool to regrow!"); - } - break; - } - if (player.getItemAssistant().playerHasItem(995, 1) && npcId == 736) { - player.getItemAssistant().deleteItem(995, 1); - player.getDialogueHandler().sendNpcChat1("Thanks!", player.npcType, "Emily"); - } - if (player.getItemAssistant().playerHasItem(1927, 1) && player.gertCat == 2 && npcId == 2997) { - player.getDialogueHandler().sendDialogues(319, npcId); - player.getItemAssistant().deleteItem(1927, 1); - player.getItemAssistant().addItem(1925, 1); - player.gertCat = 3; - } else if (player.getItemAssistant().playerHasItem(1552, 1) && player.gertCat == 3 && npcId == 2997) { - player.getDialogueHandler().sendDialogues(323, npcId); - player.getItemAssistant().deleteItem(1552, 1); - player.gertCat = 4; - } else if (player.getItemAssistant().playerHasItem(1554, 1) && player.gertCat == 5 && npcId == 2997) { - player.getItemAssistant().deleteItem(1554, 1); - player.getDialogueHandler().sendDialogues(326, npcId); - } - UseItem.ItemonNpc(player, itemId, slot, i); - } -} +package com.rebotted.net.packets.impl; + +import com.rebotted.game.content.skills.SkillHandler; +import com.rebotted.game.items.UseItem; +import com.rebotted.game.npcs.NpcHandler; +import com.rebotted.game.players.Player; +import com.rebotted.net.packets.PacketType; + +public class ItemOnNpc implements PacketType { + + @Override + public void processPacket(final Player player, int packetType, int packetSize) { + final int itemId = player.getInStream().readSignedWordA(); + final int i = player.getInStream().readSignedWordA(); + final int slot = player.getInStream().readSignedWordBigEndian(); + final int npcId = NpcHandler.npcs[i].npcType; + SkillHandler.resetItemOnNpc(player); + player.endCurrentTask(); + if (player.playerRights == 3) { + player.getPacketSender().sendMessage("Item id: " + itemId + " slot: " + slot + " i: " + i); + } + if (player.getItemAssistant().freeSlots() < 1) { + player.getPacketSender().sendMessage("Your inventory is full."); + return; + } + if (player == null || player.disconnected == true || !player.getItemAssistant().playerHasItem(itemId, 1, slot) || NpcHandler.npcs[i] == null || NpcHandler.npcs[i].isDead || player.isDead || player.isTeleporting) { + return; + } + player.faceNpc(i); + switch(npcId) { + case 43: + if (NpcHandler.npcs[i].requestTransformTime(player, 1735, 893, 43, 42, 50, i)) { + player.getItemAssistant().addItem(1737, 1); + } else { + player.getPacketSender().sendMessage("You need to wait for this sheep's wool to regrow!"); + } + break; + } + if (player.getItemAssistant().playerHasItem(995, 1) && npcId == 736) { + player.getItemAssistant().deleteItem(995, 1); + player.getDialogueHandler().sendNpcChat1("Thanks!", player.npcType, "Emily"); + } + if (player.getItemAssistant().playerHasItem(1927, 1) && player.gertCat == 2 && npcId == 2997) { + player.getDialogueHandler().sendDialogues(319, npcId); + player.getItemAssistant().deleteItem(1927, 1); + player.getItemAssistant().addItem(1925, 1); + player.gertCat = 3; + } else if (player.getItemAssistant().playerHasItem(1552, 1) && player.gertCat == 3 && npcId == 2997) { + player.getDialogueHandler().sendDialogues(323, npcId); + player.getItemAssistant().deleteItem(1552, 1); + player.gertCat = 4; + } else if (player.getItemAssistant().playerHasItem(1554, 1) && player.gertCat == 5 && npcId == 2997) { + player.getItemAssistant().deleteItem(1554, 1); + player.getDialogueHandler().sendDialogues(326, npcId); + } + UseItem.itemOnNpc(player, itemId, slot, i); + } +} diff --git a/2006Redone Server/src/redone/net/packets/impl/ItemOnObject.java b/2006Redone Server/src/com/rebotted/net/packets/impl/ItemOnObject.java similarity index 77% rename from 2006Redone Server/src/redone/net/packets/impl/ItemOnObject.java rename to 2006Redone Server/src/com/rebotted/net/packets/impl/ItemOnObject.java index d4ba40a3..e08bd378 100644 --- a/2006Redone Server/src/redone/net/packets/impl/ItemOnObject.java +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/ItemOnObject.java @@ -1,220 +1,218 @@ -package redone.net.packets.impl; - -import redone.game.content.skills.cooking.Cooking; -import redone.game.content.skills.cooking.CookingTutorialIsland; -import redone.game.content.skills.crafting.JewelryMaking; -import redone.game.content.skills.crafting.Pottery; -import redone.game.content.skills.crafting.Spinning; -import redone.game.items.UseItem; -import redone.game.items.impl.Fillables; -import redone.game.players.Client; -import redone.net.packets.PacketType; -import redone.world.clip.Region; - -public class ItemOnObject implements PacketType { - - @Override - public void processPacket(Client player, int packetType, int packetSize) { - player.getInStream().readUnsignedWord(); - int objectId = player.getInStream().readSignedWordBigEndian(); - int objectY = player.getInStream().readSignedWordBigEndianA(); - player.getInStream().readUnsignedWord(); - int objectX = player.getInStream().readSignedWordBigEndianA(); - int itemId = player.getInStream().readUnsignedWord(); - player.cookingCoords[0] = objectX; - player.cookingCoords[1] = objectY; - player.turnPlayerTo(objectX, objectY); - player.objectX = objectX; - player.objectY = objectY; - player.endCurrentTask(); - if (!player.getItemAssistant().playerHasItem(itemId, 1)) { - return; - } - if (player.playerRights == 3) { - player.getActionSender().sendMessage( - "Object Id:" + objectId + " ObjectX: " + objectX - + " ObjectY: " + objectY + "."); - } - switch (objectId) { - case 3044: - if (itemId == 438 || itemId == 436) { - if (player.getItemAssistant().playerHasItem(438) && player.getItemAssistant().playerHasItem(436)) { - if (player.tutorialProgress == 19) { - player.startAnimation(899); - player.getActionSender().sendSound(352, 100, 1); - player.getActionSender().sendMessage("You smelt the copper and tin together in the furnace."); - player.getItemAssistant().deleteItem(438, 1); - player.getItemAssistant().deleteItem(436, 1); - player.getActionSender().sendMessage("You retrieve a bar of bronze."); - player.getItemAssistant().addItem(2349, 1); - player.getDialogueHandler().sendDialogues(3062, -1); - } else if (player.tutorialProgress > 19) { - player.startAnimation(899); - player.getActionSender().sendSound(352, 100, 1); - player.getActionSender().sendMessage("You smelt the copper and tin together in the furnace."); - player.getItemAssistant().deleteItem(438, 1); - player.getItemAssistant().deleteItem(436, 1); - player.getActionSender().sendMessage("You retrieve a bar of bronze."); - player.getItemAssistant().addItem(2349, 1); - } - } - } - break; - case 2645: - if (itemId == 1925) { - player.getItemAssistant().deleteItem(itemId, 1); - player.getItemAssistant().addItem(1783, 1); - } else { - player.getActionSender().sendMessage("You need a bucket of sand to do that!"); - } - break; - case 12269: - case 2732: - case 114: - case 2727: - case 385: - case 14919: - case 2728: - case 9682: - if (player.absX == 3014 && player.absY > 3235 && player.absY < 3238 - || player.absX == 3012 && player.absY == 3239 || player.absX == 3020 - && player.absY > 3236 && player.absY < 3239 || player.absX > 2805 - && player.absX < 2813 || player.absY > 3437 && player.absY < 3442) { - return; - } - if (player.tutorialProgress < 36 || player.isInTut()) { - CookingTutorialIsland.cookThisFood(player, itemId, objectId); - } else { - Cooking.startCooking(player, itemId, objectId); - } - break; - - case 14921: - case 9390: - case 2781: - case 2785: - case 2966: - case 3294: - case 3413: - case 4304: - case 4305: - case 6189: - case 6190: - case 11009: - case 11010: - case 11666: - case 12100: - case 12809: - if (itemId == 2357) { - JewelryMaking.mouldInterface(player); - /*} else if (itemId == SilverCrafting.SILVER_BAR) { - Menus.sendSkillMenu(c, "silverCrafting");*/ - } - break; - - case 2452: - case 2453: - case 2454: - case 2455: - case 2456: - case 2457: - case 2458: - case 2459: - case 2460: - case 2461: - case 2462: - player.getRC().enterAltar(objectId, itemId); - break; - - case 3039:// tutorial island need to check if it needs break or not - if (player.getItemAssistant().playerHasItem(2307) - && player.tutorialProgress == 8) { - player.startAnimation(896); - player.getPlayerAssistant().requestUpdates(); - player.getItemAssistant().deleteItem(2307, 1); - player.getItemAssistant().addItem(2309, 1); - player.getDialogueHandler().sendDialogues(3037, 0); - } - break; - - case 10093: - if (player.getItemAssistant().playerHasItem(1927, 1)) { - player.turnPlayerTo(player.objectX, player.objectY); - player.startAnimation(883); - player.getItemAssistant().addItem(2130, 1); - player.getItemAssistant().deleteItem(1927, 1); - player.getPlayerAssistant().addSkillXP(18, player.playerCooking); - } else { - player.getActionSender().sendMessage("You need a bucket of milk to do this."); - } - break; - } - - if (itemId == 1710 || itemId == 1708 || itemId == 1706 - || itemId == 1704 && objectId == 2638) { // glory - int amount = player.getItemAssistant().getItemCount(1710) - + player.getItemAssistant().getItemCount(1708) - + player.getItemAssistant().getItemCount(1706) - + player.getItemAssistant().getItemCount(1704); - int[] glories = { 1710, 1708, 1706, 1704 }; - for (int i : glories) { - player.getItemAssistant().deleteItem(i, - player.getItemAssistant().getItemCount(i)); - } - player.startAnimation(832); - player.getItemAssistant().addItem(1712, amount); - } - - if (itemId == 954 && objectId == 3827 && player.rope == false) { - player.getActionSender().object(3828, 3227, 3108, 0, 0, 10); - Region.addObject(3828, 3227, 3108, 0, 0, 0, false); - player.rope = true; - } - - if (itemId == 954 && objectId == 3830 && player.rope2 == false) { - player.getActionSender().object(3828, 3509, 9497, 2, 0, 10); - Region.addObject(3828, 3509, 9497, 2, 0, 0, false); - player.rope2 = true; - } - - if (itemId == 1737 || itemId == 1779 && objectId == 2644) { - Spinning.showSpinning(player); - } - - if (itemId == 1761 && objectId == 2642) { - Pottery.showUnfire(player); - } - - if (itemId == 954 && objectId == 2327) { - player.getPlayerAssistant().movePlayer(2505, 3087, 0); - player.getItemAssistant().deleteItem(954, 1); - } else if (objectId == 2327 && itemId != 954) { - player.getActionSender().sendMessage("You need a rope to swing across."); - } - - if (objectId == 2327 && player.absX == 2511 && player.absY == 3092) { - player.getPlayerAssistant().movePlayer(2510, 3096, 0); - } - - /* - * if (itemId == 1779 && objectId == 2644) { int amount = - * (c.getItemAssistant().getItemCount(1777)); int[] spin = {1777}; for - * (int i : spin) { c.getItemAssistant().deleteItem(i, - * c.getItemAssistant().getItemCount(i)); } c.startAnimation(883); - * c.getItemAssistant().addItem(1777, amount); } - */ - - if (Fillables.canFill(itemId, objectId) && player.getItemAssistant().playerHasItem(itemId)) { - int amount = player.getItemAssistant().getItemCount(itemId); - player.getItemAssistant().deleteItem(itemId, amount); - player.getItemAssistant().addItem(Fillables.counterpart(itemId), amount); - player.getActionSender().sendMessage(Fillables.fillMessage(itemId, objectId)); - player.startAnimation(832); - return; - } - - UseItem.ItemonObject(player, objectId, objectX, objectY, itemId); - - } - -} +package com.rebotted.net.packets.impl; + +import com.rebotted.game.content.skills.cooking.Cooking; +import com.rebotted.game.content.skills.cooking.CookingTutorialIsland; +import com.rebotted.game.content.skills.crafting.JewelryMaking; +import com.rebotted.game.content.skills.crafting.Pottery; +import com.rebotted.game.content.skills.crafting.Spinning; +import com.rebotted.game.items.UseItem; +import com.rebotted.game.items.impl.Fillables; +import com.rebotted.game.players.Player; +import com.rebotted.net.packets.PacketType; +import com.rebotted.world.clip.Region; + +public class ItemOnObject implements PacketType { + + @Override + public void processPacket(Player player, int packetType, int packetSize) { + player.getInStream().readUnsignedWord(); + int objectId = player.getInStream().readSignedWordBigEndian(); + int objectY = player.getInStream().readSignedWordBigEndianA(); + player.getInStream().readUnsignedWord(); + int objectX = player.getInStream().readSignedWordBigEndianA(); + int itemId = player.getInStream().readUnsignedWord(); + player.turnPlayerTo(objectX, objectY); + player.objectX = objectX; + player.objectY = objectY; + player.endCurrentTask(); + if (!player.getItemAssistant().playerHasItem(itemId, 1)) { + return; + } + if (player.playerRights == 3) { + player.getPacketSender().sendMessage( + "Object Id:" + objectId + " ObjectX: " + objectX + + " ObjectY: " + objectY + "."); + } + switch (objectId) { + case 3044: + if (itemId == 438 || itemId == 436) { + if (player.getItemAssistant().playerHasItem(438) && player.getItemAssistant().playerHasItem(436)) { + if (player.tutorialProgress == 19) { + player.startAnimation(899); + player.getPacketSender().sendSound(352, 100, 1); + player.getPacketSender().sendMessage("You smelt the copper and tin together in the furnace."); + player.getItemAssistant().deleteItem(438, 1); + player.getItemAssistant().deleteItem(436, 1); + player.getPacketSender().sendMessage("You retrieve a bar of bronze."); + player.getItemAssistant().addItem(2349, 1); + player.getDialogueHandler().sendDialogues(3062, -1); + } else if (player.tutorialProgress > 19) { + player.startAnimation(899); + player.getPacketSender().sendSound(352, 100, 1); + player.getPacketSender().sendMessage("You smelt the copper and tin together in the furnace."); + player.getItemAssistant().deleteItem(438, 1); + player.getItemAssistant().deleteItem(436, 1); + player.getPacketSender().sendMessage("You retrieve a bar of bronze."); + player.getItemAssistant().addItem(2349, 1); + } + } + } + break; + case 2645: + if (itemId == 1925) { + player.getItemAssistant().deleteItem(itemId, 1); + player.getItemAssistant().addItem(1783, 1); + } else { + player.getPacketSender().sendMessage("You need a bucket of sand to do that!"); + } + break; + case 12269: + case 2732: + case 114: + case 2727: + case 385: + case 14919: + case 2728: + case 9682: + if (player.absX == 3014 && player.absY > 3235 && player.absY < 3238 + || player.absX == 3012 && player.absY == 3239 || player.absX == 3020 + && player.absY > 3236 && player.absY < 3239 || player.absX > 2805 + && player.absX < 2813 || player.absY > 3437 && player.absY < 3442) { + return; + } + if (player.tutorialProgress < 36 || player.isInTut()) { + CookingTutorialIsland.cookThisFood(player, itemId, objectId); + } else { + Cooking.startCooking(player, itemId, objectId); + } + break; + + case 14921: + case 9390: + case 2781: + case 2785: + case 2966: + case 3294: + case 3413: + case 4304: + case 4305: + case 6189: + case 6190: + case 11009: + case 11010: + case 11666: + case 12100: + case 12809: + if (itemId == 2357) { + JewelryMaking.mouldInterface(player); + /*} else if (itemId == SilverCrafting.SILVER_BAR) { + Menus.sendSkillMenu(c, "silverCrafting");*/ + } + break; + + case 2452: + case 2453: + case 2454: + case 2455: + case 2456: + case 2457: + case 2458: + case 2459: + case 2460: + case 2461: + case 2462: + player.getRC().enterAltar(objectId, itemId); + break; + + case 3039:// tutorial island need to check if it needs break or not + if (player.getItemAssistant().playerHasItem(2307) + && player.tutorialProgress == 8) { + player.startAnimation(896); + player.getPlayerAssistant().requestUpdates(); + player.getItemAssistant().deleteItem(2307, 1); + player.getItemAssistant().addItem(2309, 1); + player.getDialogueHandler().sendDialogues(3037, 0); + } + break; + + case 10093: + if (player.getItemAssistant().playerHasItem(1927, 1)) { + player.turnPlayerTo(player.objectX, player.objectY); + player.startAnimation(883); + player.getItemAssistant().addItem(2130, 1); + player.getItemAssistant().deleteItem(1927, 1); + player.getPlayerAssistant().addSkillXP(18, player.playerCooking); + } else { + player.getPacketSender().sendMessage("You need a bucket of milk to do this."); + } + break; + } + + if (itemId == 1710 || itemId == 1708 || itemId == 1706 + || itemId == 1704 && objectId == 2638) { // glory + int amount = player.getItemAssistant().getItemCount(1710) + + player.getItemAssistant().getItemCount(1708) + + player.getItemAssistant().getItemCount(1706) + + player.getItemAssistant().getItemCount(1704); + int[] glories = { 1710, 1708, 1706, 1704 }; + for (int i : glories) { + player.getItemAssistant().deleteItem(i, + player.getItemAssistant().getItemCount(i)); + } + player.startAnimation(832); + player.getItemAssistant().addItem(1712, amount); + } + + if (itemId == 954 && objectId == 3827 && player.rope == false) { + player.getPacketSender().object(3828, 3227, 3108, 0, 0, 10); + Region.addObject(3828, 3227, 3108, 0, 0, 0, false); + player.rope = true; + } + + if (itemId == 954 && objectId == 3830 && player.rope2 == false) { + player.getPacketSender().object(3828, 3509, 9497, 2, 0, 10); + Region.addObject(3828, 3509, 9497, 2, 0, 0, false); + player.rope2 = true; + } + + if (itemId == 1737 || itemId == 1779 && objectId == 2644) { + Spinning.showSpinning(player); + } + + if (itemId == 1761 && objectId == 2642) { + Pottery.showUnfire(player); + } + + if (itemId == 954 && objectId == 2327) { + player.getPlayerAssistant().movePlayer(2505, 3087, 0); + player.getItemAssistant().deleteItem(954, 1); + } else if (objectId == 2327 && itemId != 954) { + player.getPacketSender().sendMessage("You need a rope to swing across."); + } + + if (objectId == 2327 && player.absX == 2511 && player.absY == 3092) { + player.getPlayerAssistant().movePlayer(2510, 3096, 0); + } + + /* + * if (itemId == 1779 && objectId == 2644) { int amount = + * (c.getItemAssistant().getItemCount(1777)); int[] spin = {1777}; for + * (int i : spin) { c.getItemAssistant().deleteItem(i, + * c.getItemAssistant().getItemCount(i)); } c.startAnimation(883); + * c.getItemAssistant().addItem(1777, amount); } + */ + + if (Fillables.canFill(itemId, objectId) && player.getItemAssistant().playerHasItem(itemId)) { + int amount = player.getItemAssistant().getItemCount(itemId); + player.getItemAssistant().deleteItem(itemId, amount); + player.getItemAssistant().addItem(Fillables.counterpart(itemId), amount); + player.getPacketSender().sendMessage(Fillables.fillMessage(itemId, objectId)); + player.startAnimation(832); + return; + } + + UseItem.itemOnObject(player, objectId, objectX, objectY, itemId); + + } + +} diff --git a/2006Redone Server/src/redone/net/packets/impl/ItemOnPlayer.java b/2006Redone Server/src/com/rebotted/net/packets/impl/ItemOnPlayer.java similarity index 64% rename from 2006Redone Server/src/redone/net/packets/impl/ItemOnPlayer.java rename to 2006Redone Server/src/com/rebotted/net/packets/impl/ItemOnPlayer.java index 1e797560..5717831b 100644 --- a/2006Redone Server/src/redone/net/packets/impl/ItemOnPlayer.java +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/ItemOnPlayer.java @@ -1,54 +1,54 @@ -package redone.net.packets.impl; - -import redone.game.items.impl.RareProtection; -import redone.game.players.Client; -import redone.game.players.PlayerHandler; -import redone.net.packets.PacketType; -import redone.util.Misc; - -/** - * @author JaydenD12/Jaydennn - */ - -public class ItemOnPlayer implements PacketType { - - @Override - public void processPacket(Client c, int packetType, int packetSize) { - int playerId = c.inStream.readUnsignedWord(); - int itemId = c.playerItems[c.inStream.readSignedWordBigEndian()] - 1; - c.endCurrentTask(); - switch (itemId) { - - case 962: - Client o = (Client) PlayerHandler.players[playerId]; - if (!RareProtection.CRACKERS && c.playerRights < 3) { - int delete = c.getItemAssistant().getItemCount(962); - c.getItemAssistant().deleteItem(962, delete); - c.getActionSender().sendMessage("You can't do that!"); - return; - } - c.gfx0(176); - c.startAnimation(451); - c.getActionSender().sendMessage( - "You pull the Christmas Cracker..."); - o.getActionSender().sendMessage( - "You pull the Christmas Cracker..."); - c.getItemAssistant().deleteItem(962, 1); - if (Misc.random(3) == 1) { - o.forcedText = "Yay I got the Cracker!"; - o.forcedChatUpdateRequired = true; - o.getItemAssistant().addItem(1038 + Misc.random(5) * 2, 1); - } else { - c.forcedText = "Yay I got the Cracker!"; - c.forcedChatUpdateRequired = true; - c.getItemAssistant().addItem(1038 + Misc.random(5) * 2, 1); - } - c.turnPlayerTo(o.absX, o.absY); - break; - default: - c.getActionSender().sendMessage("Nothing interesting happens."); - break; - } - - } -} +package com.rebotted.net.packets.impl; + +import com.rebotted.game.items.impl.RareProtection; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerHandler; +import com.rebotted.net.packets.PacketType; +import com.rebotted.util.Misc; + +/** + * @author JaydenD12/Jaydennn + */ + +public class ItemOnPlayer implements PacketType { + + @Override + public void processPacket(Player c, int packetType, int packetSize) { + int playerId = c.inStream.readUnsignedWord(); + int itemId = c.playerItems[c.inStream.readSignedWordBigEndian()] - 1; + c.endCurrentTask(); + switch (itemId) { + + case 962: + Player o = (Player) PlayerHandler.players[playerId]; + if (!RareProtection.CRACKERS && c.playerRights < 3) { + int delete = c.getItemAssistant().getItemCount(962); + c.getItemAssistant().deleteItem(962, delete); + c.getPacketSender().sendMessage("You can't do that!"); + return; + } + c.gfx0(176); + c.startAnimation(451); + c.getPacketSender().sendMessage( + "You pull the Christmas Cracker..."); + o.getPacketSender().sendMessage( + "You pull the Christmas Cracker..."); + c.getItemAssistant().deleteItem(962, 1); + if (Misc.random(3) == 1) { + o.forcedText = "Yay I got the Cracker!"; + o.forcedChatUpdateRequired = true; + o.getItemAssistant().addItem(1038 + Misc.random(5) * 2, 1); + } else { + c.forcedText = "Yay I got the Cracker!"; + c.forcedChatUpdateRequired = true; + c.getItemAssistant().addItem(1038 + Misc.random(5) * 2, 1); + } + c.turnPlayerTo(o.absX, o.absY); + break; + default: + c.getPacketSender().sendMessage("Nothing interesting happens."); + break; + } + + } +} diff --git a/2006Redone Server/src/redone/net/packets/impl/MagicOnFloorItems.java b/2006Redone Server/src/com/rebotted/net/packets/impl/MagicOnFloorItems.java similarity index 81% rename from 2006Redone Server/src/redone/net/packets/impl/MagicOnFloorItems.java rename to 2006Redone Server/src/com/rebotted/net/packets/impl/MagicOnFloorItems.java index 108ff463..6d6aaa85 100644 --- a/2006Redone Server/src/redone/net/packets/impl/MagicOnFloorItems.java +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/MagicOnFloorItems.java @@ -1,114 +1,115 @@ -package redone.net.packets.impl; - -import redone.Server; -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.content.combat.magic.MagicData; -import redone.game.items.Item; -import redone.game.players.Client; -import redone.net.packets.PacketType; - -/** - * Magic on floor items - **/ -public class MagicOnFloorItems implements PacketType { - - @Override - public void processPacket(final Client c, int packetType, int packetSize) { - final int itemY = c.getInStream().readSignedWordBigEndian(); - int itemId = c.getInStream().readUnsignedWord(); - final int itemX = c.getInStream().readSignedWordBigEndian(); - c.getInStream().readUnsignedWordA(); - - if (!Server.itemHandler.itemExists(itemId, itemX, itemY)) { - c.stopMovement(); - return; - } - c.usingMagic = true; - c.endCurrentTask(); - if (!c.getCombatAssistant().checkMagicReqs(51)) { - c.stopMovement(); - return; - } - - if ((c.getItemAssistant().freeSlots() >= 1 || c.getItemAssistant() - .playerHasItem(itemId, 1)) - && Item.itemStackable[itemId] - || c.getItemAssistant().freeSlots() > 0 - && !Item.itemStackable[itemId]) { - if (c.goodDistance(c.getX(), c.getY(), itemX, itemY, 12)) { - c.walkingToItem = true; - int offY = (c.getX() - itemX) * -1; - int offX = (c.getY() - itemY) * -1; - c.teleGrabX = itemX; - c.teleGrabY = itemY; - c.teleGrabItem = itemId; - c.turnPlayerTo(itemX, itemY); - c.teleGrabDelay = System.currentTimeMillis(); - c.startAnimation(MagicData.MAGIC_SPELLS[51][2]); - c.gfx100(MagicData.MAGIC_SPELLS[51][3]); - c.getPlayerAssistant().createPlayersStillGfx(144, itemX, itemY, - 0, 72); - c.getPlayerAssistant().createPlayersProjectile(c.getX(), - c.getY(), offX, offY, 50, 70, - MagicData.MAGIC_SPELLS[51][4], 50, 10, 0, 50); - c.getPlayerAssistant().addSkillXP( - MagicData.MAGIC_SPELLS[51][7], 6); - c.getPlayerAssistant().refreshSkill(6); - c.stopMovement(); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (!c.walkingToItem) { - stop(); - } - if (System.currentTimeMillis() - c.teleGrabDelay > 1550 - && c.usingMagic) { - if (Server.itemHandler.itemExists(c.teleGrabItem, - c.teleGrabX, c.teleGrabY) - && c.goodDistance(c.getX(), c.getY(), - itemX, itemY, 12)) { - Server.itemHandler.removeGroundItem(c, - c.teleGrabItem, c.teleGrabX, - c.teleGrabY, true); - c.usingMagic = false; - container.stop(); - } - } - } - - @Override - public void stop() { - c.walkingToItem = false; - } - }, 1); - } - } else { - c.getActionSender().sendMessage( - "You don't have enough space in your inventory."); - c.stopMovement(); - } - - if (c.goodDistance(c.getX(), c.getY(), itemX, itemY, 12)) { - int offY = (c.getX() - itemX) * -1; - int offX = (c.getY() - itemY) * -1; - c.teleGrabX = itemX; - c.teleGrabY = itemY; - c.teleGrabItem = itemId; - c.turnPlayerTo(itemX, itemY); - c.teleGrabDelay = System.currentTimeMillis(); - c.startAnimation(MagicData.MAGIC_SPELLS[51][2]); - c.gfx100(MagicData.MAGIC_SPELLS[51][3]); - c.getPlayerAssistant().createPlayersStillGfx(144, itemX, itemY, 0, - 72); - c.getPlayerAssistant().createPlayersProjectile(c.getX(), c.getY(), - offX, offY, 50, 70, MagicData.MAGIC_SPELLS[51][4], 50, 10, - 0, 50); - c.getPlayerAssistant().addSkillXP(MagicData.MAGIC_SPELLS[51][7], 6); - c.getPlayerAssistant().refreshSkill(6); - c.stopMovement(); - } - } - -} +package com.rebotted.net.packets.impl; + +import com.rebotted.GameEngine; +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.content.combat.magic.MagicData; +import com.rebotted.game.items.Item; +import com.rebotted.game.players.Player; +import com.rebotted.net.packets.PacketType; + +/** + * Magic on floor items + **/ + +public class MagicOnFloorItems implements PacketType { + + @Override + public void processPacket(final Player c, int packetType, int packetSize) { + final int itemY = c.getInStream().readSignedWordBigEndian(); + int itemId = c.getInStream().readUnsignedWord(); + final int itemX = c.getInStream().readSignedWordBigEndian(); + c.getInStream().readUnsignedWordA(); + + if (!GameEngine.itemHandler.itemExists(itemId, itemX, itemY)) { + c.stopMovement(); + return; + } + c.usingMagic = true; + c.endCurrentTask(); + if (!c.getCombatAssistant().checkMagicReqs(51)) { + c.stopMovement(); + return; + } + + if ((c.getItemAssistant().freeSlots() >= 1 || c.getItemAssistant() + .playerHasItem(itemId, 1)) + && Item.itemStackable[itemId] + || c.getItemAssistant().freeSlots() > 0 + && !Item.itemStackable[itemId]) { + if (c.goodDistance(c.getX(), c.getY(), itemX, itemY, 12)) { + c.walkingToItem = true; + int offY = (c.getX() - itemX) * -1; + int offX = (c.getY() - itemY) * -1; + c.teleGrabX = itemX; + c.teleGrabY = itemY; + c.teleGrabItem = itemId; + c.turnPlayerTo(itemX, itemY); + c.teleGrabDelay = System.currentTimeMillis(); + c.startAnimation(MagicData.MAGIC_SPELLS[51][2]); + c.gfx100(MagicData.MAGIC_SPELLS[51][3]); + c.getPlayerAssistant().createPlayersStillGfx(144, itemX, itemY, + 0, 72); + c.getPlayerAssistant().createPlayersProjectile(c.getX(), + c.getY(), offX, offY, 50, 70, + MagicData.MAGIC_SPELLS[51][4], 50, 10, 0, 50); + c.getPlayerAssistant().addSkillXP( + MagicData.MAGIC_SPELLS[51][7], 6); + c.getPlayerAssistant().refreshSkill(6); + c.stopMovement(); + CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (!c.walkingToItem) { + stop(); + } + if (System.currentTimeMillis() - c.teleGrabDelay > 1550 + && c.usingMagic) { + if (GameEngine.itemHandler.itemExists(c.teleGrabItem, + c.teleGrabX, c.teleGrabY) + && c.goodDistance(c.getX(), c.getY(), + itemX, itemY, 12)) { + GameEngine.itemHandler.removeGroundItem(c, + c.teleGrabItem, c.teleGrabX, + c.teleGrabY, true); + c.usingMagic = false; + container.stop(); + } + } + } + + @Override + public void stop() { + c.walkingToItem = false; + } + }, 1); + } + } else { + c.getPacketSender().sendMessage( + "You don't have enough space in your inventory."); + c.stopMovement(); + } + + if (c.goodDistance(c.getX(), c.getY(), itemX, itemY, 12)) { + int offY = (c.getX() - itemX) * -1; + int offX = (c.getY() - itemY) * -1; + c.teleGrabX = itemX; + c.teleGrabY = itemY; + c.teleGrabItem = itemId; + c.turnPlayerTo(itemX, itemY); + c.teleGrabDelay = System.currentTimeMillis(); + c.startAnimation(MagicData.MAGIC_SPELLS[51][2]); + c.gfx100(MagicData.MAGIC_SPELLS[51][3]); + c.getPlayerAssistant().createPlayersStillGfx(144, itemX, itemY, 0, + 72); + c.getPlayerAssistant().createPlayersProjectile(c.getX(), c.getY(), + offX, offY, 50, 70, MagicData.MAGIC_SPELLS[51][4], 50, 10, + 0, 50); + c.getPlayerAssistant().addSkillXP(MagicData.MAGIC_SPELLS[51][7], 6); + c.getPlayerAssistant().refreshSkill(6); + c.stopMovement(); + } + } + +} diff --git a/2006Redone Server/src/redone/net/packets/impl/MagicOnItems.java b/2006Redone Server/src/com/rebotted/net/packets/impl/MagicOnItems.java similarity index 73% rename from 2006Redone Server/src/redone/net/packets/impl/MagicOnItems.java rename to 2006Redone Server/src/com/rebotted/net/packets/impl/MagicOnItems.java index 3dcdbb3a..0f5efb37 100644 --- a/2006Redone Server/src/redone/net/packets/impl/MagicOnItems.java +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/MagicOnItems.java @@ -1,27 +1,28 @@ -package redone.net.packets.impl; - -import redone.game.players.Client; -import redone.net.packets.PacketType; - -/** - * Magic on items - **/ -public class MagicOnItems implements PacketType { - - @Override - public void processPacket(Client player, int packetType, int packetSize) { - int slot = player.getInStream().readSignedWord(); - int itemId = player.getInStream().readSignedWordA(); - player.getInStream().readSignedWord(); - int spellId = player.getInStream().readSignedWordA(); - player.endCurrentTask(); - if(!player.getItemAssistant().playerHasItem(itemId, 1, slot)) { - return; - } - player.usingMagic = true; - player.getPlayerAssistant().magicOnItems(slot, itemId, spellId); - player.usingMagic = false; - - } - -} +package com.rebotted.net.packets.impl; + +import com.rebotted.game.players.Player; +import com.rebotted.net.packets.PacketType; + +/** + * Magic on items + **/ + +public class MagicOnItems implements PacketType { + + @Override + public void processPacket(Player player, int packetType, int packetSize) { + int slot = player.getInStream().readSignedWord(); + int itemId = player.getInStream().readSignedWordA(); + player.getInStream().readSignedWord(); + int spellId = player.getInStream().readSignedWordA(); + player.endCurrentTask(); + if(!player.getItemAssistant().playerHasItem(itemId, 1, slot)) { + return; + } + player.usingMagic = true; + player.getPlayerAssistant().magicOnItems(slot, itemId, spellId); + player.usingMagic = false; + + } + +} diff --git a/2006Redone Server/src/redone/net/packets/impl/MoveItems.java b/2006Redone Server/src/com/rebotted/net/packets/impl/MoveItems.java similarity index 77% rename from 2006Redone Server/src/redone/net/packets/impl/MoveItems.java rename to 2006Redone Server/src/com/rebotted/net/packets/impl/MoveItems.java index 8589e6ba..305c1c0a 100644 --- a/2006Redone Server/src/redone/net/packets/impl/MoveItems.java +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/MoveItems.java @@ -1,33 +1,33 @@ -package redone.net.packets.impl; - -import redone.game.players.Client; -import redone.net.packets.PacketType; - -/** - * Move Items - **/ -public class MoveItems implements PacketType { - - @Override - public void processPacket(Client c, int packetType, int packetSize) { - int interfaceId = c.getInStream().readSignedWordBigEndianA(); - boolean insertMode = c.getInStream().readSignedByteC() == 1; - int from = c.getInStream().readSignedWordBigEndianA(); - int to = c.getInStream().readSignedWordBigEndian(); - // c.sendMessage("junk: " + somejunk); - if (c.inTrade) { - c.getTrading().declineTrade(); - return; - } - if (c.tradeStatus == 1) { - c.getTrading().declineTrade(); - return; - } - if (c.duelStatus == 1) { - c.getDueling().declineDuel(); - return; - } - c.getItemAssistant().moveItems(from, to, interfaceId, insertMode); - c.endCurrentTask(); - } -} +package com.rebotted.net.packets.impl; + +import com.rebotted.game.players.Player; +import com.rebotted.net.packets.PacketType; + +/** + * Move Items + **/ +public class MoveItems implements PacketType { + + @Override + public void processPacket(Player c, int packetType, int packetSize) { + int interfaceId = c.getInStream().readSignedWordBigEndianA(); + boolean insertMode = c.getInStream().readSignedByteC() == 1; + int from = c.getInStream().readSignedWordBigEndianA(); + int to = c.getInStream().readSignedWordBigEndian(); + // c.sendMessage("junk: " + somejunk); + if (c.inTrade) { + c.getTrading().declineTrade(); + return; + } + if (c.tradeStatus == 1) { + c.getTrading().declineTrade(); + return; + } + if (c.duelStatus == 1) { + c.getDueling().declineDuel(); + return; + } + c.getItemAssistant().moveItems(from, to, interfaceId, insertMode); + c.endCurrentTask(); + } +} diff --git a/2006Redone Server/src/redone/net/packets/impl/PickupItem.java b/2006Redone Server/src/com/rebotted/net/packets/impl/PickupItem.java similarity index 64% rename from 2006Redone Server/src/redone/net/packets/impl/PickupItem.java rename to 2006Redone Server/src/com/rebotted/net/packets/impl/PickupItem.java index 160b6e71..30d2603c 100644 --- a/2006Redone Server/src/redone/net/packets/impl/PickupItem.java +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/PickupItem.java @@ -1,103 +1,98 @@ -package redone.net.packets.impl; - -import redone.Server; -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.content.minigames.castlewars.CastleWars; -import redone.game.content.music.sound.SoundList; -import redone.game.content.skills.SkillHandler; -import redone.game.content.skills.firemaking.Firemaking; -import redone.game.content.skills.firemaking.LogData; -import redone.game.items.ItemAssistant; -import redone.game.items.impl.RareProtection; -import redone.game.players.Client; -import redone.net.packets.PacketType; -import redone.util.GameLogger; -import redone.world.GlobalDropsHandler; - -/** - * Pickup Item - **/ -public class PickupItem implements PacketType { - - - @Override - public void processPacket(final Client player, int packetType, int packetSize) { - player.pItemY = player.getInStream().readSignedWordBigEndian(); - player.pItemId = player.getInStream().readUnsignedWord(); - player.pItemX = player.getInStream().readSignedWordBigEndian(); - if (Math.abs(player.getX() - player.pItemX) > 25 || Math.abs(player.getY() - player.pItemY) > 25) { - player.resetWalkingQueue(); - return; - } - player.getCombatAssistant().resetPlayerAttack(); - player.endCurrentTask(); - if (player.stopPlayerPacket) { - return; - } - if (player.isBotting) { - player.getActionSender().sendMessage("You can't pickup items, until you confirm you aren't botting."); - player.getActionSender().sendMessage("If you need to you can type ::amibotting, to see if your botting."); - return; - } - String itemName = ItemAssistant.getItemName(player.pItemId).toLowerCase(); - if (player.getPlayerAssistant().isPlayer()) { - GameLogger.writeLog(player.playerName, "pickupitem", player.playerName + " picked up " + itemName + " itemX: " + player.pItemX + ", itemY: " + player.pItemY + ""); - } - if (!CastleWars.deleteCastleWarsItems(player, player.pItemId)) { - return; - } - if (!RareProtection.doOtherDupe(player, player.pItemId)) { - return; - } - if (player.pItemY > 9817 && player.pItemY < 9825 && player.pItemX > 3186 && player.pItemX < 3197 || player.pItemX > 3107 && player.pItemX < 3113 && player.pItemY > 3155 && player.pItemY < 3159 && player.heightLevel == 2) { - player.getActionSender().sendMessage( - "You can't pick up these items!"); - return; - } - for (LogData logData : LogData.values()) { - if (player.isFiremaking == true && player.pItemId == logData.getLogId()) { - player.getActionSender().sendMessage("You can't do that!"); - Firemaking.stopFiremaking = true; - return; - } - } - for (LogData logData : LogData.values()) { - if (player.pItemId == logData.getLogId()) { - Firemaking.pickedUpFiremakingLog = true; - } - } - SkillHandler.resetSkills(player); - player.getCombatAssistant().resetPlayerAttack(); - if (player.getX() == player.pItemX && player.getY() == player.pItemY - || player.getX() - 1 == player.pItemX && player.getY() == player.pItemY - || player.getY() - 1 == player.pItemY && player.getX() == player.pItemX - || player.getX() + 1 == player.pItemX && player.getY() == player.pItemY - || player.getY() + 1 == player.pItemY && player.getX() == player.pItemX) { - Server.itemHandler.removeGroundItem(player, player.pItemId, player.pItemX, - player.pItemY, true); - player.getActionSender().sendSound(SoundList.ITEM_PICKUP, 100, 0); - GlobalDropsHandler.pickup(player, player.pItemId, player.pItemX, player.pItemY); - } else { - player.walkingToItem = true; - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (!player.walkingToItem) { - container.stop(); - } - if (player.getX() == player.pItemX && player.getY() == player.pItemY && player.walkingToItem) { - Server.itemHandler.removeGroundItem(player, player.pItemId, player.pItemX, player.pItemY, true); - container.stop(); - } - } - - @Override - public void stop() { - player.walkingToItem = false; - } - }, 1); - } - } -} +package com.rebotted.net.packets.impl; + +import com.rebotted.GameEngine; +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.content.minigames.castlewars.CastleWars; +import com.rebotted.game.content.music.sound.SoundList; +import com.rebotted.game.content.skills.SkillHandler; +import com.rebotted.game.content.skills.firemaking.Firemaking; +import com.rebotted.game.content.skills.firemaking.LogData; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.items.impl.RareProtection; +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; +import com.rebotted.net.packets.PacketType; +import com.rebotted.util.GameLogger; +import com.rebotted.world.GlobalDropsHandler; + +/** + * Pickup Item + **/ +public class PickupItem implements PacketType { + + + @Override + public void processPacket(final Player player, int packetType, int packetSize) { + player.pItemY = player.getInStream().readSignedWordBigEndian(); + player.pItemId = player.getInStream().readUnsignedWord(); + player.pItemX = player.getInStream().readSignedWordBigEndian(); + if (Math.abs(player.getX() - player.pItemX) > 25 || Math.abs(player.getY() - player.pItemY) > 25) { + player.resetWalkingQueue(); + return; + } + player.getCombatAssistant().resetPlayerAttack(); + player.endCurrentTask(); + if (player.stopPlayerPacket) { + return; + } + String itemName = ItemAssistant.getItemName(player.pItemId).toLowerCase(); + if (player.getPlayerAssistant().isPlayer()) { + GameLogger.writeLog(player.playerName, "pickupitem", player.playerName + " picked up " + itemName + " itemX: " + player.pItemX + ", itemY: " + player.pItemY + ""); + } + if (!CastleWars.deleteCastleWarsItems(player, player.pItemId)) { + return; + } + if (!RareProtection.doOtherDupe(player, player.pItemId)) { + return; + } + if (player.pItemY > 9817 && player.pItemY < 9825 && player.pItemX > 3186 && player.pItemX < 3197 || player.pItemX > 3107 && player.pItemX < 3113 && player.pItemY > 3155 && player.pItemY < 3159 && player.heightLevel == 2) { + player.getPacketSender().sendMessage("You can't pick up these items!"); + return; + } + for (LogData logData : LogData.values()) { + if (player.isFiremaking == true && player.pItemId == logData.getLogId()) { + player.getPacketSender().sendMessage("You can't do that!"); + Firemaking.stopFiremaking = true; + return; + } + } + for (LogData logData : LogData.values()) { + if (player.pItemId == logData.getLogId()) { + Firemaking.pickedUpFiremakingLog = true; + } + } + SkillHandler.resetSkills(player); + player.getCombatAssistant().resetPlayerAttack(); + if (player.getX() == player.pItemX && player.getY() == player.pItemY + || player.getX() - 1 == player.pItemX && player.getY() == player.pItemY + || player.getY() - 1 == player.pItemY && player.getX() == player.pItemX + || player.getX() + 1 == player.pItemX && player.getY() == player.pItemY + || player.getY() + 1 == player.pItemY && player.getX() == player.pItemX) { + GameEngine.itemHandler.removeGroundItem(player, player.pItemId, player.pItemX, + player.pItemY, true); + player.getPacketSender().sendSound(SoundList.ITEM_PICKUP, 100, 0); + GlobalDropsHandler.pickup(player, player.pItemId, player.pItemX, player.pItemY); + } else { + player.walkingToItem = true; + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (!player.walkingToItem) { + container.stop(); + } + if (player.getX() == player.pItemX && player.getY() == player.pItemY && player.walkingToItem) { + GameEngine.itemHandler.removeGroundItem(player, player.pItemId, player.pItemX, player.pItemY, true); + container.stop(); + } + } + + @Override + public void stop() { + player.walkingToItem = false; + } + }, 1); + } + } +} diff --git a/2006Redone Server/src/redone/net/packets/impl/PrivateMessaging.java b/2006Redone Server/src/com/rebotted/net/packets/impl/PrivateMessaging.java similarity index 80% rename from 2006Redone Server/src/redone/net/packets/impl/PrivateMessaging.java rename to 2006Redone Server/src/com/rebotted/net/packets/impl/PrivateMessaging.java index 9563093e..bed6c37d 100644 --- a/2006Redone Server/src/redone/net/packets/impl/PrivateMessaging.java +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/PrivateMessaging.java @@ -1,159 +1,157 @@ -package redone.net.packets.impl; - -import redone.Connection; -import redone.game.players.Client; -import redone.game.players.PlayerHandler; -import redone.game.players.antimacro.AntiSpam; -import redone.net.packets.PacketType; -import redone.util.GameLogger; -import redone.util.Misc; - -/** - * Private messaging, friends etc - **/ -public class PrivateMessaging implements PacketType { - - public final int ADD_FRIEND = 188, SEND_PM = 126, REMOVE_FRIEND = 215, - CHANGE_PM_STATUS = 95, REMOVE_IGNORE = 59, ADD_IGNORE = 133; - - @Override - public void processPacket(Client player, int packetType, int packetSize) { - switch (packetType) { - - case ADD_FRIEND: - player.friendUpdate = true; - long friendToAdd = player.getInStream().readQWord(); - boolean canAdd = true; - - for (long friend : player.friends) { - if (friend != 0 && friend == friendToAdd) { - canAdd = false; - player.getActionSender().sendMessage(friendToAdd + " is already on your friends list."); - } - } - if (canAdd) { - for (int i1 = 0; i1 < player.friends.length; i1++) { - if (player.friends[i1] == 0) { - player.friends[i1] = friendToAdd; - for (int i2 = 1; i2 < PlayerHandler.players.length; i2++) { - if (PlayerHandler.players[i2] != null && PlayerHandler.players[i2].isActive && Misc.playerNameToInt64(PlayerHandler.players[i2].playerName) == friendToAdd) { - Client o = (Client) PlayerHandler.players[i2]; - if (o != null) { - if (PlayerHandler.players[i2].privateChat == 0 || PlayerHandler.players[i2].privateChat == 1 && o.getPlayerAssistant().isInPM(Misc.playerNameToInt64(player.playerName))) { - player.getPlayerAssistant().loadPM(friendToAdd, 1); - break; - } - } - } - } - break; - } - } - } - break; - - case SEND_PM: - long sendMessageToFriendId = player.getInStream().readQWord(); - byte pmchatText[] = new byte[100]; - int pmchatTextSize = (byte) (packetSize - 8); - player.getInStream().readBytes(pmchatText, pmchatTextSize, 0); - String word = Misc.textUnpack(pmchatText, player.packetSize - 2).toLowerCase();// used - if (player.getPlayerAssistant().isPlayer()) { - GameLogger.writeLog(player.playerName, "pmsent", player.playerName + " said " + Misc.textUnpack(pmchatText, packetSize - 8) + ""); - } - if (!AntiSpam.blockedWords(player, word, false) || Connection.isMuted(player)) { - return; - } - for (long friend : player.friends) { - if (friend == sendMessageToFriendId) { - boolean pmSent = false; - - for (int i2 = 1; i2 < PlayerHandler.players.length; i2++) { - if (PlayerHandler.players[i2] != null && PlayerHandler.players[i2].isActive && Misc.playerNameToInt64(PlayerHandler.players[i2].playerName) == sendMessageToFriendId) { - Client o = (Client) PlayerHandler.players[i2]; - if (o != null) { - if (PlayerHandler.players[i2].privateChat == 0 || PlayerHandler.players[i2].privateChat == 1 && o.getPlayerAssistant().isInPM(Misc.playerNameToInt64(player.playerName))) { - if (friend == sendMessageToFriendId) { - o.getPlayerAssistant().sendPM(Misc.playerNameToInt64(player.playerName), player.playerRights, pmchatText, pmchatTextSize); - if (player.getPlayerAssistant().isPlayer()) { - GameLogger.writeLog(o.playerName, "pmrecieved", player.playerName + " said to " + o.playerName + " " + Misc.textUnpack(pmchatText, packetSize - 8) + ""); - } - pmSent = true; - } - } - } - break; - } - } - if (!pmSent) { - player.getActionSender().sendMessage("That player is currently offline."); - break; - } - } - } - break; - - case REMOVE_FRIEND: - player.friendUpdate = true; - long friendToRemove = player.getInStream().readQWord(); - - for (int i1 = 0; i1 < player.friends.length; i1++) { - if (player.friends[i1] == friendToRemove) { - for (int i2 = 1; i2 < PlayerHandler.players.length; i2++) { - Client o = (Client) PlayerHandler.players[i2]; - if (o != null) { - if (player.friends[i1] == Misc - .playerNameToInt64(PlayerHandler.players[i2].playerName)) { - o.getPlayerAssistant().updatePM(player.playerId, 0); - break; - } - } - } - player.friends[i1] = 0; - break; - } - } - break; - - case REMOVE_IGNORE: - player.friendUpdate = true; - long ignore = player.getInStream().readQWord(); - - for (int i = 0; i < player.ignores.length; i++) { - if (player.ignores[i] == ignore) { - player.ignores[i] = 0; - break; - } - } - break; - - case CHANGE_PM_STATUS: - // int tradeAndCompete = c.getInStream().readUnsignedByte(); - player.privateChat = player.getInStream().readUnsignedByte(); - // int publicChat = c.getInStream().readUnsignedByte(); - for (int i1 = 1; i1 < PlayerHandler.players.length; i1++) { - if (PlayerHandler.players[i1] != null - && PlayerHandler.players[i1].isActive) { - Client o = (Client) PlayerHandler.players[i1]; - if (o != null) { - o.getPlayerAssistant().updatePM(player.playerId, 1); - } - } - } - break; - - case ADD_IGNORE: - player.friendUpdate = true; - long ignoreAdd = player.getInStream().readQWord(); - for (int i = 0; i < player.ignores.length; i++) { - if (player.ignores[i] == 0) { - player.ignores[i] = ignoreAdd; - break; - } - } - break; - - } - - } -} +package com.rebotted.net.packets.impl; + +import com.rebotted.Connection; +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerHandler; +import com.rebotted.game.players.antimacro.AntiSpam; +import com.rebotted.net.packets.PacketType; +import com.rebotted.util.GameLogger; +import com.rebotted.util.Misc; + +/** + * Private messaging, friends etc + **/ +public class PrivateMessaging implements PacketType { + + public final int ADD_FRIEND = 188, SEND_PM = 126, REMOVE_FRIEND = 215, + CHANGE_PM_STATUS = 95, REMOVE_IGNORE = 59, ADD_IGNORE = 133; + + @Override + public void processPacket(Player player, int packetType, int packetSize) { + switch (packetType) { + + case ADD_FRIEND: + player.friendUpdate = true; + long friendToAdd = player.getInStream().readQWord(); + boolean canAdd = true; + + for (long friend : player.friends) { + if (friend != 0 && friend == friendToAdd) { + canAdd = false; + player.getPacketSender().sendMessage(friendToAdd + " is already on your friends list."); + } + } + if (canAdd) { + for (int i1 = 0; i1 < player.friends.length; i1++) { + if (player.friends[i1] == 0) { + player.friends[i1] = friendToAdd; + for (int i2 = 1; i2 < PlayerHandler.players.length; i2++) { + if (PlayerHandler.players[i2] != null && PlayerHandler.players[i2].isActive && Misc.playerNameToInt64(PlayerHandler.players[i2].playerName) == friendToAdd) { + Client o = (Client) PlayerHandler.players[i2]; + if (o != null) { + if (PlayerHandler.players[i2].privateChat == 0 || PlayerHandler.players[i2].privateChat == 1 && o.getPlayerAssistant().isInPM(Misc.playerNameToInt64(player.playerName))) { + player.getPacketSender().loadPM(friendToAdd, 1); + break; + } + } + } + } + break; + } + } + } + break; + + case SEND_PM: + long sendMessageToFriendId = player.getInStream().readQWord(); + byte pmchatText[] = new byte[100]; + int pmchatTextSize = (byte) (packetSize - 8); + player.getInStream().readBytes(pmchatText, pmchatTextSize, 0); + String word = Misc.textUnpack(pmchatText, player.packetSize - 2).toLowerCase();// used + if (player.getPlayerAssistant().isPlayer()) { + GameLogger.writeLog(player.playerName, "pmsent", player.playerName + " said " + Misc.textUnpack(pmchatText, packetSize - 8) + ""); + } + if (!AntiSpam.blockedWords(player, word, false) || Connection.isMuted(player)) { + return; + } + for (long friend : player.friends) { + if (friend == sendMessageToFriendId) { + boolean pmSent = false; + + for (int i2 = 1; i2 < PlayerHandler.players.length; i2++) { + if (PlayerHandler.players[i2] != null && PlayerHandler.players[i2].isActive && Misc.playerNameToInt64(PlayerHandler.players[i2].playerName) == sendMessageToFriendId) { + Client o = (Client) PlayerHandler.players[i2]; + if (o != null) { + if (PlayerHandler.players[i2].privateChat == 0 || PlayerHandler.players[i2].privateChat == 1 && o.getPlayerAssistant().isInPM(Misc.playerNameToInt64(player.playerName))) { + if (friend == sendMessageToFriendId) { + o.getPacketSender().sendPM(Misc.playerNameToInt64(player.playerName), player.playerRights, pmchatText, pmchatTextSize); + if (player.getPlayerAssistant().isPlayer()) { + GameLogger.writeLog(o.playerName, "pmrecieved", player.playerName + " said to " + o.playerName + " " + Misc.textUnpack(pmchatText, packetSize - 8) + ""); + } + pmSent = true; + } + } + } + break; + } + } + if (!pmSent) { + player.getPacketSender().sendMessage("That player is currently offline."); + break; + } + } + } + break; + + case REMOVE_FRIEND: + player.friendUpdate = true; + long friendToRemove = player.getInStream().readQWord(); + + for (int i1 = 0; i1 < player.friends.length; i1++) { + if (player.friends[i1] == friendToRemove) { + for (int i2 = 1; i2 < PlayerHandler.players.length; i2++) { + Client o = (Client) PlayerHandler.players[i2]; + if (o != null) { + if (player.friends[i1] == Misc.playerNameToInt64(PlayerHandler.players[i2].playerName)) { + o.getPlayerAssistant().updatePM(player.playerId, 0); + break; + } + } + } + player.friends[i1] = 0; + break; + } + } + break; + + case REMOVE_IGNORE: + player.friendUpdate = true; + long ignore = player.getInStream().readQWord(); + + for (int i = 0; i < player.ignores.length; i++) { + if (player.ignores[i] == ignore) { + player.ignores[i] = 0; + break; + } + } + break; + + case CHANGE_PM_STATUS: + player.privateChat = player.getInStream().readUnsignedByte(); + for (int i1 = 1; i1 < PlayerHandler.players.length; i1++) { + if (PlayerHandler.players[i1] != null + && PlayerHandler.players[i1].isActive) { + Client o = (Client) PlayerHandler.players[i1]; + if (o != null) { + o.getPlayerAssistant().updatePM(player.playerId, 1); + } + } + } + break; + + case ADD_IGNORE: + player.friendUpdate = true; + long ignoreAdd = player.getInStream().readQWord(); + for (int i = 0; i < player.ignores.length; i++) { + if (player.ignores[i] == 0) { + player.ignores[i] = ignoreAdd; + break; + } + } + break; + + } + + } +} diff --git a/2006Redone Server/src/redone/net/packets/impl/RemoveItem.java b/2006Redone Server/src/com/rebotted/net/packets/impl/RemoveItem.java similarity index 78% rename from 2006Redone Server/src/redone/net/packets/impl/RemoveItem.java rename to 2006Redone Server/src/com/rebotted/net/packets/impl/RemoveItem.java index 84ee76b9..e9e54c9f 100644 --- a/2006Redone Server/src/redone/net/packets/impl/RemoveItem.java +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/RemoveItem.java @@ -1,100 +1,100 @@ -package redone.net.packets.impl; - -import redone.game.content.random.PartyRoom; -import redone.game.content.skills.crafting.JewelryMaking; -import redone.game.items.impl.RareProtection; -import redone.game.players.Client; -import redone.net.packets.PacketType; - -/** - * Remove Item - **/ -public class RemoveItem implements PacketType { - - @Override - public void processPacket(Client c, int packetType, int packetSize) { - int interfaceId = c.getInStream().readUnsignedWordA(); - int removeSlot = c.getInStream().readUnsignedWordA(); - int removeId = c.getInStream().readUnsignedWordA(); - if (removeId == 88) { - c.weight += 4.5; - c.getActionSender().writeWeight((int) c.weight); - } - if (!RareProtection.removeItem(c, removeId)) { - return; - } - - c.endCurrentTask(); - - switch (interfaceId) { - - case 4233: - case 4239: - case 4245: - JewelryMaking.mouldItem(c, removeId, 1); - break; - - case 7423: - if (c.inTrade) { - c.getTrading().declineTrade(true); - return; - } - c.getItemAssistant().bankItem(removeId, removeSlot, 1); - c.getItemAssistant().resetItems(7423); - break; - - case 1688: - c.getItemAssistant().removeItem(removeId, removeSlot); - break; - - case 5064: - if (c.inPartyRoom) { - PartyRoom.depositItem(c, removeId, 1); - } else { - c.getItemAssistant().bankItem(removeId, removeSlot, 1); - } - break; - - case 5382: - c.getItemAssistant().fromBank(removeId, removeSlot, 1); - break; - - case 3900: - c.getShopAssistant().buyFromShopPrice(removeId); - break; - - case 3823: - c.getShopAssistant().sellToShopPrice(removeId, removeSlot); - break; - - case 3322: - if (c.duelStatus <= 0) { - c.getTrading().tradeItem(removeId, removeSlot, 1); - } else { - c.getDueling().stakeItem(removeId, removeSlot, 1); - } - break; - - case 3415: - if (c.duelStatus <= 0) { - c.getTrading().fromTrade(removeId, removeSlot, 1); - } - break; - - case 6669: - c.getDueling().fromDuel(removeId, removeSlot, 1); - break; - - case 1119: - case 1120: - case 1121: - case 1122: - case 1123: - c.getSmithing().readInput(c.playerLevel[c.playerSmithing], - Integer.toString(removeId), c, 1); - break; - - } - } - -} +package com.rebotted.net.packets.impl; + +import com.rebotted.game.content.random.PartyRoom; +import com.rebotted.game.content.skills.crafting.JewelryMaking; +import com.rebotted.game.items.impl.RareProtection; +import com.rebotted.game.players.Player; +import com.rebotted.net.packets.PacketType; + +/** + * Remove Item + **/ +public class RemoveItem implements PacketType { + + @Override + public void processPacket(Player c, int packetType, int packetSize) { + int interfaceId = c.getInStream().readUnsignedWordA(); + int removeSlot = c.getInStream().readUnsignedWordA(); + int removeId = c.getInStream().readUnsignedWordA(); + if (removeId == 88) { + c.weight += 4.5; + c.getPacketSender().writeWeight((int) c.weight); + } + if (!RareProtection.removeItem(c, removeId)) { + return; + } + + c.endCurrentTask(); + + switch (interfaceId) { + + case 4233: + case 4239: + case 4245: + JewelryMaking.mouldItem(c, removeId, 1); + break; + + case 7423: + if (c.inTrade) { + c.getTrading().declineTrade(true); + return; + } + c.getItemAssistant().bankItem(removeId, removeSlot, 1); + c.getItemAssistant().resetItems(7423); + break; + + case 1688: + c.getItemAssistant().removeItem(removeId, removeSlot); + break; + + case 5064: + if (c.inPartyRoom) { + PartyRoom.depositItem(c, removeId, 1); + } else { + c.getItemAssistant().bankItem(removeId, removeSlot, 1); + } + break; + + case 5382: + c.getItemAssistant().fromBank(removeId, removeSlot, 1); + break; + + case 3900: + c.getShopAssistant().buyFromShopPrice(removeId); + break; + + case 3823: + c.getShopAssistant().sellToShopPrice(removeId, removeSlot); + break; + + case 3322: + if (c.duelStatus <= 0) { + c.getTrading().tradeItem(removeId, removeSlot, 1); + } else { + c.getDueling().stakeItem(removeId, removeSlot, 1); + } + break; + + case 3415: + if (c.duelStatus <= 0) { + c.getTrading().fromTrade(removeId, removeSlot, 1); + } + break; + + case 6669: + c.getDueling().fromDuel(removeId, removeSlot, 1); + break; + + case 1119: + case 1120: + case 1121: + case 1122: + case 1123: + c.getSmithing().readInput(c.playerLevel[c.playerSmithing], + Integer.toString(removeId), c, 1); + break; + + } + } + +} diff --git a/2006Redone Server/src/com/rebotted/net/packets/impl/Report.java b/2006Redone Server/src/com/rebotted/net/packets/impl/Report.java new file mode 100644 index 00000000..22f26ad8 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/Report.java @@ -0,0 +1,17 @@ +package com.rebotted.net.packets.impl; + +import com.rebotted.game.players.Player; +import com.rebotted.net.packets.PacketType; + +public class Report implements PacketType { + + @Override + public void processPacket(Player c, int packetType, int packetSize) { + try { + ReportHandler.handleReport(c); + } catch (Exception e) { + e.printStackTrace(); + } + } + +} diff --git a/2006Redone Server/src/redone/net/packets/impl/ReportHandler.java b/2006Redone Server/src/com/rebotted/net/packets/impl/ReportHandler.java similarity index 89% rename from 2006Redone Server/src/redone/net/packets/impl/ReportHandler.java rename to 2006Redone Server/src/com/rebotted/net/packets/impl/ReportHandler.java index 6eebb7c5..2d54237f 100644 --- a/2006Redone Server/src/redone/net/packets/impl/ReportHandler.java +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/ReportHandler.java @@ -1,192 +1,191 @@ -package redone.net.packets.impl; - -import java.io.BufferedWriter; -import java.io.FileWriter; -import java.io.IOException; -import java.text.SimpleDateFormat; -import java.util.Date; - -import redone.game.players.Client; -import redone.util.Misc; - -public class ReportHandler { - - public static String[] savedNames = new String[500]; - public static String[] savedSpeach = new String[500]; - public static String[] savedTimes = new String[500]; - - /** - * Reports - */ - - public static final String[] reportNames = { "Offensive language", - "Item scamming", "Password scamming", "Bug abuse", - "Staff impersonation", "Account Sharing/Trading", "Macroing", - "Multiple Logging in", "Encouragig others to break the rules", - "Misuse of Customer Support", "Advertising", "Real World Trading", - "Asking for personal detail" }; - - /** - * Adding texts - * - * @param name - * The player's name. - * @param data - * The data. - * @param dataLength - * The data's length. - */ - - public static void addText(String name, byte[] data, int dataLength) { - for (int i = 499; i > 0; i--) { - savedNames[i] = savedNames[i - 1]; - savedSpeach[i] = savedSpeach[i - 1]; - savedTimes[i] = savedTimes[i - 1]; - } - savedNames[0] = name; - savedSpeach[0] = Misc.textUnpack(data, dataLength); - String minute = new SimpleDateFormat("mm").format(new Date()); - String second = new SimpleDateFormat("ss").format(new Date()); - String hour = new SimpleDateFormat("hh").format(new Date()); - savedTimes[0] = hour + ":" + minute + ":" + second; - } - - /** - * Report Handler - * - * @param c - * Client x - * @throws Exception - * ex - */ - - public static void handleReport(Client c) throws Exception { - String player = Misc.longToReportPlayerName(c.inStream.readQWord2()); - player = player.replaceAll("_", " "); - byte rule = (byte) c.inStream.readUnsignedByte(); - int mute = c.getInStream().readUnsignedByte(); - - if (c.lastReported.equalsIgnoreCase(player) && System.currentTimeMillis() - c.lastReport < 60000) { - c.getActionSender().sendMessage("You can only report a player once every 60 seconds."); - return; - } - if (c.playerName.equalsIgnoreCase(player)) { - c.getActionSender().sendMessage("You cannot report yourself!"); - return; - } - if (hasSpoke(player)) { - String sendText = ""; - - for (int i = 20; i > 0; i--) { - if (savedNames[i] != null) { - if (savedNames[i].equalsIgnoreCase(c.playerName) - || savedNames[i].equalsIgnoreCase(player)) { - sendText += " -[" + savedTimes[i] + ": " - + savedNames[i] + "]: " + savedSpeach[i] - + "\r\n"; - } - } - } - - sendText = sendText.replaceAll("'", " "); - String month = getMonth(new SimpleDateFormat("MM") - .format(new Date())); - String day = new SimpleDateFormat("dd").format(new Date()); - writeReport("" + player + " was reported by " + c.playerName + ", " - + reportNames[rule] + ", " + month + ", " + day + "", - sendText + ".", reportNames[rule]); - c.getActionSender() - .sendMessage( - "Thank you, your report has been received and will be reviewed."); - if (mute == 1 && c.playerRights > 0) { - c.getActionSender() - .sendMessage( - "This user is not muted yet! Go to the MODCP on the forums to mute him!"); - c.getActionSender() - .sendMessage( - "After you have muted him there, do ::update (username) to finish the mute!"); - } - c.lastReported = player; - c.lastReport = System.currentTimeMillis(); - } else { - c.getActionSender() - .sendMessage( - "You can only report someone who has spoken in the last 60 seconds."); - } - } - - /** - * Saves Reports to System - * - * @param data - * The data. - * @param text - * The text. - * @param file - * The file. - */ - - public static void writeReport(String data, String text, String file) { - BufferedWriter bw = null; - try { - int time = (int) System.currentTimeMillis(); - String month = getMonth(new SimpleDateFormat("MM") - .format(new Date())); - String day = new SimpleDateFormat("dd").format(new Date()); - bw = new BufferedWriter(new FileWriter( - "C:/Users/Administrator/Dropbox/2006Redone - Reportabuses/" - + file + " month;" + month + " day;" + day - + " ms-id;" + time + ".txt", true)); - bw.write(data); - bw.newLine(); - bw.write(text); - bw.newLine(); - bw.newLine(); - bw.flush(); - } catch (IOException ioe) { - ioe.printStackTrace(); - } finally { - if (bw != null) { - try { - bw.close(); - } catch (IOException ioe2) { - System.out.println("Error writing system log."); - ioe2.printStackTrace(); - } - } - } - - } - - public static boolean hasSpoke(String s) { - for (int i = 0; i < 500; i++) { - if (savedNames[i] != null) { - if (savedNames[i].equalsIgnoreCase(s)) { - return true; - } - } - } - return false; - } - - /** - * Gets the Month - * - * @param s - * The s. - * @return return - */ - - public static String getMonth(String s) { - try { - int i = Integer.parseInt(s); - String[] months = { "", "January", "February", "March", "April", - "May", "June", "July", "August", "September", "October", - "November", "December" }; - return months[i]; - } catch (Exception e) { - e.printStackTrace(); - } - return "Unknown"; - } -} +package com.rebotted.net.packets.impl; + +import java.io.BufferedWriter; +import java.io.FileWriter; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +public class ReportHandler { + + public static String[] savedNames = new String[500]; + public static String[] savedSpeach = new String[500]; + public static String[] savedTimes = new String[500]; + + /** + * Reports + */ + + public static final String[] reportNames = { "Offensive language", + "Item scamming", "Password scamming", "Bug abuse", + "Staff impersonation", "Account Sharing/Trading", "Macroing", + "Multiple Logging in", "Encouragig others to break the rules", + "Misuse of Customer Support", "Advertising", "Real World Trading", + "Asking for personal detail" }; + + /** + * Adding texts + * + * @param name + * The player's name. + * @param data + * The data. + * @param dataLength + * The data's length. + */ + + public static void addText(String name, byte[] data, int dataLength) { + for (int i = 499; i > 0; i--) { + savedNames[i] = savedNames[i - 1]; + savedSpeach[i] = savedSpeach[i - 1]; + savedTimes[i] = savedTimes[i - 1]; + } + savedNames[0] = name; + savedSpeach[0] = Misc.textUnpack(data, dataLength); + String minute = new SimpleDateFormat("mm").format(new Date()); + String second = new SimpleDateFormat("ss").format(new Date()); + String hour = new SimpleDateFormat("hh").format(new Date()); + savedTimes[0] = hour + ":" + minute + ":" + second; + } + + /** + * Report Handler + * + * @param c + * Client x + * @throws Exception + * ex + */ + + public static void handleReport(Player c) throws Exception { + String player = Misc.longToReportPlayerName(c.inStream.readQWord2()); + player = player.replaceAll("_", " "); + byte rule = (byte) c.inStream.readUnsignedByte(); + int mute = c.getInStream().readUnsignedByte(); + + if (c.lastReported.equalsIgnoreCase(player) && System.currentTimeMillis() - c.lastReport < 60000) { + c.getPacketSender().sendMessage("You can only report a player once every 60 seconds."); + return; + } + if (c.playerName.equalsIgnoreCase(player)) { + c.getPacketSender().sendMessage("You cannot report yourself!"); + return; + } + if (hasSpoke(player)) { + String sendText = ""; + + for (int i = 20; i > 0; i--) { + if (savedNames[i] != null) { + if (savedNames[i].equalsIgnoreCase(c.playerName) + || savedNames[i].equalsIgnoreCase(player)) { + sendText += " -[" + savedTimes[i] + ": " + + savedNames[i] + "]: " + savedSpeach[i] + + "\r\n"; + } + } + } + + sendText = sendText.replaceAll("'", " "); + String month = getMonth(new SimpleDateFormat("MM") + .format(new Date())); + String day = new SimpleDateFormat("dd").format(new Date()); + writeReport("" + player + " was reported by " + c.playerName + ", " + + reportNames[rule] + ", " + month + ", " + day + "", + sendText + ".", reportNames[rule]); + c.getPacketSender() + .sendMessage( + "Thank you, your report has been received and will be reviewed."); + if (mute == 1 && c.playerRights > 0) { + c.getPacketSender() + .sendMessage( + "This user is not muted yet! Go to the MODCP on the forums to mute him!"); + c.getPacketSender() + .sendMessage( + "After you have muted him there, do ::update (username) to finish the mute!"); + } + c.lastReported = player; + c.lastReport = System.currentTimeMillis(); + } else { + c.getPacketSender() + .sendMessage( + "You can only report someone who has spoken in the last 60 seconds."); + } + } + + /** + * Saves Reports to System + * + * @param data + * The data. + * @param text + * The text. + * @param file + * The file. + */ + + public static void writeReport(String data, String text, String file) { + BufferedWriter bw = null; + try { + int time = (int) System.currentTimeMillis(); + String month = getMonth(new SimpleDateFormat("MM") + .format(new Date())); + String day = new SimpleDateFormat("dd").format(new Date()); + bw = new BufferedWriter(new FileWriter( + "C:/Users/Administrator/Dropbox/2006Redone - Reportabuses/" + + file + " month;" + month + " day;" + day + + " ms-id;" + time + ".txt", true)); + bw.write(data); + bw.newLine(); + bw.write(text); + bw.newLine(); + bw.newLine(); + bw.flush(); + } catch (IOException ioe) { + ioe.printStackTrace(); + } finally { + if (bw != null) { + try { + bw.close(); + } catch (IOException ioe2) { + System.out.println("Error writing system log."); + ioe2.printStackTrace(); + } + } + } + + } + + public static boolean hasSpoke(String s) { + for (int i = 0; i < 500; i++) { + if (savedNames[i] != null) { + if (savedNames[i].equalsIgnoreCase(s)) { + return true; + } + } + } + return false; + } + + /** + * Gets the Month + * + * @param s + * The s. + * @return return + */ + + public static String getMonth(String s) { + try { + int i = Integer.parseInt(s); + String[] months = { "", "January", "February", "March", "April", + "May", "June", "July", "August", "September", "October", + "November", "December" }; + return months[i]; + } catch (Exception e) { + e.printStackTrace(); + } + return "Unknown"; + } +} diff --git a/2006Redone Server/src/com/rebotted/net/packets/impl/SilentPacket.java b/2006Redone Server/src/com/rebotted/net/packets/impl/SilentPacket.java new file mode 100644 index 00000000..3120a528 --- /dev/null +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/SilentPacket.java @@ -0,0 +1,15 @@ +package com.rebotted.net.packets.impl; + +import com.rebotted.game.players.Player; +import com.rebotted.net.packets.PacketType; + +/** + * Slient Packet + **/ +public class SilentPacket implements PacketType { + + @Override + public void processPacket(Player c, int packetType, int packetSize) { + + } +} diff --git a/2006Redone Server/src/redone/net/packets/impl/Trade.java b/2006Redone Server/src/com/rebotted/net/packets/impl/Trade.java similarity index 53% rename from 2006Redone Server/src/redone/net/packets/impl/Trade.java rename to 2006Redone Server/src/com/rebotted/net/packets/impl/Trade.java index 1db92c58..ee1b3ab9 100644 --- a/2006Redone Server/src/redone/net/packets/impl/Trade.java +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/Trade.java @@ -1,39 +1,39 @@ -package redone.net.packets.impl; - -import redone.Constants; -import redone.game.players.Client; -import redone.net.packets.PacketType; - -/** - * Trading - */ - -public class Trade implements PacketType { - - @Override - public void processPacket(Client c, int packetType, int packetSize) { - int tradeId = c.getInStream().readSignedWordBigEndian(); - c.getPlayerAssistant().resetFollow(); - c.endCurrentTask(); - if (c.disconnected) { - c.tradeStatus = 0; - } - if (c.duelingArena()) { - c.getActionSender().sendMessage("You can't trade inside the arena!"); - return; - } - - if (c.playerRights == 2 && !Constants.ADMIN_CAN_TRADE) { - c.getActionSender().sendMessage("Trading as an admin has been disabled."); - return; - } - - if(tradeId < 1) { - return; - } - if (tradeId != c.playerId) { - c.getTrading().requestTrade(tradeId); - } - } - -} +package com.rebotted.net.packets.impl; + +import com.rebotted.GameConstants; +import com.rebotted.game.players.Player; +import com.rebotted.net.packets.PacketType; + +/** + * Trading + */ + +public class Trade implements PacketType { + + @Override + public void processPacket(Player c, int packetType, int packetSize) { + int tradeId = c.getInStream().readSignedWordBigEndian(); + c.getPlayerAssistant().resetFollow(); + c.endCurrentTask(); + if (c.disconnected) { + c.tradeStatus = 0; + } + if (c.duelingArena()) { + c.getPacketSender().sendMessage("You can't trade inside the arena!"); + return; + } + + if (c.playerRights == 2 && !GameConstants.ADMIN_CAN_TRADE) { + c.getPacketSender().sendMessage("Trading as an admin has been disabled."); + return; + } + + if(tradeId < 1) { + return; + } + if (tradeId != c.playerId) { + c.getTrading().requestTrade(tradeId); + } + } + +} diff --git a/2006Redone Server/src/redone/net/packets/impl/Walking.java b/2006Redone Server/src/com/rebotted/net/packets/impl/Walking.java similarity index 80% rename from 2006Redone Server/src/redone/net/packets/impl/Walking.java rename to 2006Redone Server/src/com/rebotted/net/packets/impl/Walking.java index 4af6a96b..f6a7c67f 100644 --- a/2006Redone Server/src/redone/net/packets/impl/Walking.java +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/Walking.java @@ -1,211 +1,208 @@ -package redone.net.packets.impl; - -import redone.game.content.skills.SkillHandler; -import redone.game.content.skills.cooking.Cooking; -import redone.game.content.skills.core.Fishing; -import redone.game.content.skills.smithing.Smelting; -import redone.game.players.Client; -import redone.game.players.PlayerHandler; -import redone.net.packets.PacketType; - -/** - * Walking packet - **/ -public class Walking implements PacketType { - - @Override - public void processPacket(Client player, int packetType, int packetSize) { - player.getDueling().checkDuelWalk(); - - if (player.canChangeAppearance) { //|| c.performingAction) { - return; - } - if (player.getCannon().settingUp) { - return; - } - if (player.isTeleporting == true) { - player.isTeleporting = false; - } - if (player.playerSkilling[10]) {// fishing - Fishing.resetFishing(player); - } - if (player.playerIsCooking) {// cooking - Cooking.resetCooking(player); - } - if (player.playerSkilling[13]) {// smelting - Smelting.resetSmelting(player); - } - if (player.playerStun) { - return; - } - if (player.stopPlayer == true) { - return; - } - if (player.isBotting == true) { - player.getActionSender().sendMessage("Please type ::amibotting if you would like to move again"); - return; - } - if (player.isFiremaking == true) { - player.isFiremaking = false; - } - if (player.stopPlayerPacket == true) { - return; - } - if (player.inTrade) { - player.inTrade = false; - player.getTrading().declineTrade(true); - } - if (player.tutorialProgress > 35 && !player.isSmithing) { - player.getPlayerAssistant().closeAllWindows(); - } else if (player.tutorialProgress < 36 && player.isSmithing) { - player.getPlayerAssistant().closeAllWindows(); - player.isSmithing = false; - } - SkillHandler.resetSkills(player); - if (player.closeTutorialInterface == false && player.tutorialProgress == 36) { - player.getDialogueHandler().sendDialogues(3116, player.npcType); - } - if (player.gliderOpen == true) { - player.gliderOpen = false; - } - if (player.isBanking == true) { - player.isBanking = false; - } - if (player.canWalkTutorial == false && player.tutorialProgress < 36) { - return; - } - if (player.followId > 0 || player.followId2 > 0) { - player.getPlayerAssistant().resetFollow(); - } - if (player.getPlayerAction().checkWalking() == false) { - return; - } - if (packetType == 248 || packetType == 164) { - player.faceUpdate(0); - player.npcIndex = 0; - player.playerIndex = 0; - if (player.clickObjectType > 0) { - player.clickObjectType = 0; - } else if (player.clickNpcType > 0) { - player.clickNpcType = 0; - } - } - - if (player.duelRule[1] && player.duelStatus == 5) { - if (PlayerHandler.players[player.duelingWith] != null) { - if (!player.goodDistance(player.getX(), player.getY(), - PlayerHandler.players[player.duelingWith].getX(), - PlayerHandler.players[player.duelingWith].getY(), 1) - || player.attackTimer == 0) { - player.getActionSender().sendMessage( - "Walking has been disabled in this duel!"); - } - } - player.playerIndex = 0; - return; - } - - - if (player.freezeTimer > 0) { - if (PlayerHandler.players[player.playerIndex] != null) { - if (player.goodDistance(player.getX(), player.getY(), - PlayerHandler.players[player.playerIndex].getX(), - PlayerHandler.players[player.playerIndex].getY(), 1) - && packetType != 98) { - player.playerIndex = 0; - return; - } - } - if (packetType != 98) { - player.getActionSender().sendMessage( - "A magical force stops you from moving."); - player.playerIndex = 0; - } - return; - } - - if (System.currentTimeMillis() - player.lastSpear < 4000) { - player.getActionSender().sendMessage("You have been stunned."); - player.playerIndex = 0; - return; - } - - if (packetType == 98) { - player.mageAllowed = true; - } - - if (player.WildernessWarning == false && player.wildLevel > 0) { - player.resetWalkingQueue(); - player.WildernessWarning = true; - player.getPlayerAssistant().sendFrame126("WARNING!", 6940); - player.getPlayerAssistant().showInterface(1908); - } - - if(player.openDuel) { - Client o = (Client) PlayerHandler.players[player.duelingWith]; - if(o != null) - o.getDueling().declineDuel(); - player.getDueling().declineDuel(); - } - if((player.duelStatus >= 1 && player.duelStatus <= 4) || player.duelStatus == 6) { - if(player.duelStatus == 6) { - player.getDueling().claimStakedItems(); - } - return; - } - - if (player.respawnTimer > 3) { - return; - } - - player.endCurrentTask(); - - if (packetType == 248) { - packetSize -= 14; - } - player.newWalkCmdSteps = (packetSize - 5) / 2; - if (++player.newWalkCmdSteps > player.walkingQueueSize) { - player.newWalkCmdSteps = 0; - return; - } - - player.getNewWalkCmdX()[0] = player.getNewWalkCmdY()[0] = 0; - - int firstStepX, firstStepY; - int realX = 0; - int realY = 0; - - if (player.clickToTele) { - firstStepX = player.getInStream().readSignedWordBigEndianA(); - } else { - realX = player.getInStream().readSignedWordBigEndianA(); - firstStepX = realX - player.getMapRegionX() * 8; - } - for (int i = 1; i < player.newWalkCmdSteps; i++) { - player.getNewWalkCmdX()[i] = player.getInStream().readSignedByte(); - player.getNewWalkCmdY()[i] = player.getInStream().readSignedByte(); - } - - if (player.clickToTele) { - firstStepY = player.getInStream().readSignedWordBigEndian(); - } else { - realY = player.getInStream().readSignedWordBigEndian(); - firstStepY = realY - player.getMapRegionY() * 8; - } - - if (!player.clickToTele) { - if (player.distanceToPoint(realX, realY) > 30) { - return; - } - } - - player.setNewWalkCmdIsRunning(player.getInStream().readSignedByteC() == 1 && player.playerEnergy > 0); - for (int i1 = 0; i1 < player.newWalkCmdSteps; i1++) { - if (player.clickToTele) - player.getPlayerAssistant().movePlayer(player.getNewWalkCmdX()[i1] + firstStepX, player.getNewWalkCmdY()[i1] + firstStepY, player.heightLevel); - player.getNewWalkCmdX()[i1] += firstStepX; - player.getNewWalkCmdY()[i1] += firstStepY; - } - } - -} +package com.rebotted.net.packets.impl; + +import com.rebotted.game.content.skills.SkillHandler; +import com.rebotted.game.content.skills.cooking.Cooking; +import com.rebotted.game.content.skills.core.Fishing; +import com.rebotted.game.content.skills.smithing.Smelting; +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerHandler; +import com.rebotted.net.packets.PacketType; + +/** + * Walking packet + **/ +public class Walking implements PacketType { + + @Override + public void processPacket(Player player, int packetType, int packetSize) { + player.getDueling().checkDuelWalk(); + + if (player.canChangeAppearance) { //|| c.performingAction) { + return; + } + if (player.getCannon().settingUp) { + return; + } + if (player.isTeleporting == true) { + player.isTeleporting = false; + } + if (player.playerSkilling[10]) {// fishing + Fishing.resetFishing(player); + } + if (player.playerIsCooking) {// cooking + Cooking.resetCooking(player); + } + if (player.playerSkilling[13]) {// smelting + Smelting.resetSmelting(player); + } + if (player.playerStun) { + return; + } + if (player.stopPlayer == true) { + return; + } + if (player.isFiremaking == true) { + player.isFiremaking = false; + } + if (player.stopPlayerPacket == true) { + return; + } + if (player.inTrade) { + player.inTrade = false; + player.getTrading().declineTrade(true); + } + if (player.tutorialProgress > 35 && !player.isSmithing) { + player.getPacketSender().closeAllWindows(); + } else if (player.tutorialProgress < 36 && player.isSmithing) { + player.getPacketSender().closeAllWindows(); + player.isSmithing = false; + } + SkillHandler.resetSkills(player); + if (player.closeTutorialInterface == false && player.tutorialProgress == 36) { + player.getDialogueHandler().sendDialogues(3116, player.npcType); + } + if (player.gliderOpen == true) { + player.gliderOpen = false; + } + if (player.isBanking == true) { + player.isBanking = false; + } + if (player.canWalkTutorial == false && player.tutorialProgress < 36) { + return; + } + if (player.followId > 0 || player.followId2 > 0) { + player.getPlayerAssistant().resetFollow(); + } + if (player.getPlayerAction().checkWalking() == false) { + return; + } + if (packetType == 248 || packetType == 164) { + player.faceUpdate(0); + player.npcIndex = 0; + player.playerIndex = 0; + if (player.clickObjectType > 0) { + player.clickObjectType = 0; + } else if (player.clickNpcType > 0) { + player.clickNpcType = 0; + } + } + + if (player.duelRule[1] && player.duelStatus == 5) { + if (PlayerHandler.players[player.duelingWith] != null) { + if (!player.goodDistance(player.getX(), player.getY(), + PlayerHandler.players[player.duelingWith].getX(), + PlayerHandler.players[player.duelingWith].getY(), 1) + || player.attackTimer == 0) { + player.getPacketSender().sendMessage( + "Walking has been disabled in this duel!"); + } + } + player.playerIndex = 0; + return; + } + + + if (player.freezeTimer > 0) { + if (PlayerHandler.players[player.playerIndex] != null) { + if (player.goodDistance(player.getX(), player.getY(), + PlayerHandler.players[player.playerIndex].getX(), + PlayerHandler.players[player.playerIndex].getY(), 1) + && packetType != 98) { + player.playerIndex = 0; + return; + } + } + if (packetType != 98) { + player.getPacketSender().sendMessage("A magical force stops you from moving."); + player.playerIndex = 0; + } + return; + } + + if (System.currentTimeMillis() - player.lastSpear < 4000) { + player.getPacketSender().sendMessage("You have been stunned."); + player.playerIndex = 0; + return; + } + + if (packetType == 98) { + player.mageAllowed = true; + } + + if (player.WildernessWarning == false && player.wildLevel > 0) { + player.resetWalkingQueue(); + player.WildernessWarning = true; + player.getPacketSender().sendFrame126("WARNING!", 6940); + player.getPacketSender().showInterface(1908); + } + + if(player.openDuel) { + Client o = (Client) PlayerHandler.players[player.duelingWith]; + if(o != null) { + o.getDueling().declineDuel(); + } + player.getDueling().declineDuel(); + } + if((player.duelStatus >= 1 && player.duelStatus <= 4) || player.duelStatus == 6) { + if(player.duelStatus == 6) { + player.getDueling().claimStakedItems(); + } + return; + } + + if (player.respawnTimer > 3) { + return; + } + + player.endCurrentTask(); + + if (packetType == 248) { + packetSize -= 14; + } + player.newWalkCmdSteps = (packetSize - 5) / 2; + if (++player.newWalkCmdSteps > player.walkingQueueSize) { + player.newWalkCmdSteps = 0; + return; + } + + player.getNewWalkCmdX()[0] = player.getNewWalkCmdY()[0] = 0; + + int firstStepX, firstStepY; + int realX = 0; + int realY = 0; + + if (player.clickToTele) { + firstStepX = player.getInStream().readSignedWordBigEndianA(); + } else { + realX = player.getInStream().readSignedWordBigEndianA(); + firstStepX = realX - player.getMapRegionX() * 8; + } + for (int i = 1; i < player.newWalkCmdSteps; i++) { + player.getNewWalkCmdX()[i] = player.getInStream().readSignedByte(); + player.getNewWalkCmdY()[i] = player.getInStream().readSignedByte(); + } + + if (player.clickToTele) { + firstStepY = player.getInStream().readSignedWordBigEndian(); + } else { + realY = player.getInStream().readSignedWordBigEndian(); + firstStepY = realY - player.getMapRegionY() * 8; + } + + if (!player.clickToTele) { + if (player.distanceToPoint(realX, realY) > 30) { + return; + } + } + + player.setNewWalkCmdIsRunning(player.getInStream().readSignedByteC() == 1 && player.playerEnergy > 0); + for (int i1 = 0; i1 < player.newWalkCmdSteps; i1++) { + if (player.clickToTele) + player.getPlayerAssistant().movePlayer(player.getNewWalkCmdX()[i1] + firstStepX, player.getNewWalkCmdY()[i1] + firstStepY, player.heightLevel); + player.getNewWalkCmdX()[i1] += firstStepX; + player.getNewWalkCmdY()[i1] += firstStepY; + } + } + +} diff --git a/2006Redone Server/src/redone/net/packets/impl/WearItem.java b/2006Redone Server/src/com/rebotted/net/packets/impl/WearItem.java similarity index 70% rename from 2006Redone Server/src/redone/net/packets/impl/WearItem.java rename to 2006Redone Server/src/com/rebotted/net/packets/impl/WearItem.java index 5b0d62ad..fe459561 100644 --- a/2006Redone Server/src/redone/net/packets/impl/WearItem.java +++ b/2006Redone Server/src/com/rebotted/net/packets/impl/WearItem.java @@ -1,67 +1,64 @@ -package redone.net.packets.impl; - -import redone.game.items.impl.RareProtection; -import redone.game.players.Client; -import redone.net.packets.PacketType; - -/** - * Wear Item - **/ -public class WearItem implements PacketType { - - /* (non-Javadoc) - * @see server.net.packets.PacketType#processPacket(server.game.players.Client, int, int) - */ - @Override - public void processPacket(Client player, int packetType, int packetSize) { - player.wearId = player.getInStream().readUnsignedWord(); - player.wearSlot = player.getInStream().readUnsignedWordA(); - player.interfaceId = player.getInStream().readUnsignedWordA(); - if (!RareProtection.equipItem(player)) { - return; - } - if (player.duelStatus > 0 && player.duelStatus < 5) { - return; - } - if (!player.getItemAssistant().playerHasItem(player.wearId, 1, player.wearSlot)) { - return; - } - if (player.playerIndex > 0 || player.npcIndex > 0) { - player.getCombatAssistant().resetPlayerAttack(); - } - - player.endCurrentTask(); - - if (player.wearId >= 5509 && player.wearId <= 5515) { - int pouch = -1; - int a = player.wearId; - if (a == 5509) { - pouch = 0; - } - if (a == 5510) { - pouch = 1; - } - if (a == 5512) { - pouch = 2; - } - if (a == 5514) { - pouch = 3; - } - player.getPlayerAssistant().emptyPouch(pouch); - return; - } - - if (player.wearId == 88) { - player.weight -= 4.5; - player.getActionSender().writeWeight((int) player.weight); - } - - if (player.wearSlot == player.playerHat) { - player.getActionSender().setConfig(491, 0); - } - - player.getPlayerAssistant().handleTiara(); - player.getItemAssistant().wearItem(player.wearId, player.wearSlot); - } - -} +package com.rebotted.net.packets.impl; + +import com.rebotted.game.items.impl.RareProtection; +import com.rebotted.game.players.Player; +import com.rebotted.net.packets.PacketType; + +/** + * Wear Item + **/ +public class WearItem implements PacketType { + + @Override + public void processPacket(Player player, int packetType, int packetSize) { + player.wearId = player.getInStream().readUnsignedWord(); + player.wearSlot = player.getInStream().readUnsignedWordA(); + player.interfaceId = player.getInStream().readUnsignedWordA(); + if (!RareProtection.equipItem(player)) { + return; + } + if (player.duelStatus > 0 && player.duelStatus < 5) { + return; + } + if (!player.getItemAssistant().playerHasItem(player.wearId, 1, player.wearSlot)) { + return; + } + if (player.playerIndex > 0 || player.npcIndex > 0) { + player.getCombatAssistant().resetPlayerAttack(); + } + + player.endCurrentTask(); + + if (player.wearId >= 5509 && player.wearId <= 5515) { + int pouch = -1; + int a = player.wearId; + if (a == 5509) { + pouch = 0; + } + if (a == 5510) { + pouch = 1; + } + if (a == 5512) { + pouch = 2; + } + if (a == 5514) { + pouch = 3; + } + player.getPlayerAssistant().emptyPouch(pouch); + return; + } + + if (player.wearId == 88) { + player.weight -= 4.5; + player.getPacketSender().writeWeight((int) player.weight); + } + + if (player.wearSlot == player.playerHat) { + player.getPacketSender().setConfig(491, 0); + } + + player.getPlayerAssistant().handleTiara(); + player.getItemAssistant().wearItem(player.wearId, player.wearSlot); + } + +} diff --git a/2006Redone Server/src/redone/net/rsa/RSAKeyGen.java b/2006Redone Server/src/com/rebotted/net/rsa/RSAKeyGen.java similarity index 95% rename from 2006Redone Server/src/redone/net/rsa/RSAKeyGen.java rename to 2006Redone Server/src/com/rebotted/net/rsa/RSAKeyGen.java index c7b4f669..11c48378 100644 --- a/2006Redone Server/src/redone/net/rsa/RSAKeyGen.java +++ b/2006Redone Server/src/com/rebotted/net/rsa/RSAKeyGen.java @@ -1,57 +1,57 @@ -package redone.net.rsa; - -import java.io.BufferedWriter; -import java.io.FileWriter; -import java.math.BigInteger; -import java.security.KeyFactory; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.PrivateKey; -import java.security.PublicKey; -import java.security.spec.RSAPrivateKeySpec; -import java.security.spec.RSAPublicKeySpec; - -/** - * A class to generate a simple 1024 bit RSA pair - * @author Nikki - */ -public class RSAKeyGen { - - public static void main(String[] args) { - try { - KeyFactory factory = KeyFactory.getInstance("RSA"); - KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA"); - keyGen.initialize(1024); - KeyPair keypair = keyGen.genKeyPair(); - PrivateKey privateKey = keypair.getPrivate(); - PublicKey publicKey = keypair.getPublic(); - - RSAPrivateKeySpec privSpec = factory.getKeySpec(privateKey, RSAPrivateKeySpec.class); - - writeKey("rsapriv", privSpec.getModulus(), privSpec.getPrivateExponent()); - - - RSAPublicKeySpec pubSpec = factory.getKeySpec(publicKey, RSAPublicKeySpec.class); - - writeKey("rsapub", pubSpec.getModulus(), pubSpec.getPublicExponent()); - } catch(Exception e) { - e.printStackTrace(); - } - } - - public static void writeKey(String file, BigInteger modulus, BigInteger exponent) { - try { - BufferedWriter writer = new BufferedWriter(new FileWriter(file)); - writer.write("private static final BigInteger RSA_MODULUS = new BigInteger(\""+modulus.toString()+"\");"); - writer.newLine(); - writer.newLine(); - writer.write("private static final BigInteger RSA_EXPONENT = new BigInteger(\""+exponent.toString()+"\");"); - writer.newLine(); - writer.flush(); - writer.close(); - } catch(Exception e) { - e.printStackTrace(); - } - } - -} +package com.rebotted.net.rsa; + +import java.io.BufferedWriter; +import java.io.FileWriter; +import java.math.BigInteger; +import java.security.KeyFactory; +import java.security.KeyPair; +import java.security.KeyPairGenerator; +import java.security.PrivateKey; +import java.security.PublicKey; +import java.security.spec.RSAPrivateKeySpec; +import java.security.spec.RSAPublicKeySpec; + +/** + * A class to generate a simple 1024 bit RSA pair + * @author Nikki + */ +public class RSAKeyGen { + + public static void main(String[] args) { + try { + KeyFactory factory = KeyFactory.getInstance("RSA"); + KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA"); + keyGen.initialize(1024); + KeyPair keypair = keyGen.genKeyPair(); + PrivateKey privateKey = keypair.getPrivate(); + PublicKey publicKey = keypair.getPublic(); + + RSAPrivateKeySpec privSpec = factory.getKeySpec(privateKey, RSAPrivateKeySpec.class); + + writeKey("rsapriv", privSpec.getModulus(), privSpec.getPrivateExponent()); + + + RSAPublicKeySpec pubSpec = factory.getKeySpec(publicKey, RSAPublicKeySpec.class); + + writeKey("rsapub", pubSpec.getModulus(), pubSpec.getPublicExponent()); + } catch(Exception e) { + e.printStackTrace(); + } + } + + public static void writeKey(String file, BigInteger modulus, BigInteger exponent) { + try { + BufferedWriter writer = new BufferedWriter(new FileWriter(file)); + writer.write("private static final BigInteger RSA_MODULUS = new BigInteger(\""+modulus.toString()+"\");"); + writer.newLine(); + writer.newLine(); + writer.write("private static final BigInteger RSA_EXPONENT = new BigInteger(\""+exponent.toString()+"\");"); + writer.newLine(); + writer.flush(); + writer.close(); + } catch(Exception e) { + e.printStackTrace(); + } + } + +} diff --git a/2006Redone Server/src/redone/net/rsa/rsapriv b/2006Redone Server/src/com/rebotted/net/rsa/rsapriv similarity index 99% rename from 2006Redone Server/src/redone/net/rsa/rsapriv rename to 2006Redone Server/src/com/rebotted/net/rsa/rsapriv index f96d221a..e0df8031 100644 --- a/2006Redone Server/src/redone/net/rsa/rsapriv +++ b/2006Redone Server/src/com/rebotted/net/rsa/rsapriv @@ -1,3 +1,3 @@ -private static final BigInteger RSA_MODULUS = new BigInteger("91553247461173033466542043374346300088148707506479543786501537350363031301992107112953015516557748875487935404852620239974482067336878286174236183516364787082711186740254168914127361643305190640280157664988536979163450791820893999053469529344247707567448479470137716627440246788713008490213212272520901741443"); - -private static final BigInteger RSA_EXPONENT = new BigInteger("33280025241734061313051117678670856264399753710527826596057587687835856000539511539311834363046145710983857746766009612538140077973762171163294453513440619295457626227183742315140865830778841533445402605660729039310637444146319289077374748018792349647460850308384280105990607337322160553135806205784213241305"); +private static final BigInteger RSA_MODULUS = new BigInteger("91553247461173033466542043374346300088148707506479543786501537350363031301992107112953015516557748875487935404852620239974482067336878286174236183516364787082711186740254168914127361643305190640280157664988536979163450791820893999053469529344247707567448479470137716627440246788713008490213212272520901741443"); + +private static final BigInteger RSA_EXPONENT = new BigInteger("33280025241734061313051117678670856264399753710527826596057587687835856000539511539311834363046145710983857746766009612538140077973762171163294453513440619295457626227183742315140865830778841533445402605660729039310637444146319289077374748018792349647460850308384280105990607337322160553135806205784213241305"); diff --git a/2006Redone Server/src/redone/net/rsa/rsapub b/2006Redone Server/src/com/rebotted/net/rsa/rsapub similarity index 99% rename from 2006Redone Server/src/redone/net/rsa/rsapub rename to 2006Redone Server/src/com/rebotted/net/rsa/rsapub index a90a5e5c..03eebf65 100644 --- a/2006Redone Server/src/redone/net/rsa/rsapub +++ b/2006Redone Server/src/com/rebotted/net/rsa/rsapub @@ -1,3 +1,3 @@ -private static final BigInteger RSA_MODULUS = new BigInteger("91553247461173033466542043374346300088148707506479543786501537350363031301992107112953015516557748875487935404852620239974482067336878286174236183516364787082711186740254168914127361643305190640280157664988536979163450791820893999053469529344247707567448479470137716627440246788713008490213212272520901741443"); - -private static final BigInteger RSA_EXPONENT = new BigInteger("65537"); +private static final BigInteger RSA_MODULUS = new BigInteger("91553247461173033466542043374346300088148707506479543786501537350363031301992107112953015516557748875487935404852620239974482067336878286174236183516364787082711186740254168914127361643305190640280157664988536979163450791820893999053469529344247707567448479470137716627440246788713008490213212272520901741443"); + +private static final BigInteger RSA_EXPONENT = new BigInteger("65537"); diff --git a/2006Redone Server/src/redone/util/GameLogger.java b/2006Redone Server/src/com/rebotted/util/GameLogger.java similarity index 96% rename from 2006Redone Server/src/redone/util/GameLogger.java rename to 2006Redone Server/src/com/rebotted/util/GameLogger.java index 6c220269..6cd910ee 100644 --- a/2006Redone Server/src/redone/util/GameLogger.java +++ b/2006Redone Server/src/com/rebotted/util/GameLogger.java @@ -1,112 +1,112 @@ -package redone.util; - -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.util.Calendar; -import java.util.GregorianCalendar; - -/* - * Author: Nightleaf - */ - -public class GameLogger { - - public static String getTime() { - Calendar cal = new GregorianCalendar(); - String day, month, hour, minute; - int YEAR = cal.get(Calendar.YEAR); - int MONTH = cal.get(Calendar.MONTH) + 1; - int DAY = cal.get(Calendar.DAY_OF_MONTH); - int HOUR = cal.get(Calendar.HOUR_OF_DAY); - int MIN = cal.get(Calendar.MINUTE); - day = DAY < 10 ? "0" + DAY : "" + DAY; - month = MONTH < 10 ? "0" + MONTH : "" + MONTH; - hour = HOUR < 10 ? "0" + HOUR : "" + HOUR; - minute = MIN < 10 ? "0" + MIN : "" + MIN; - return "[" + YEAR + "/" + month + "/" + day + "] " + hour + ":" + minute + " "; - } - - /** - * Formats a currency string just like RS. - * - * @param cash - * @return - */ - public static String formatCurrency(int cash) { - String s = String.valueOf(cash); - for (int k = s.length() - 3; k > 0; k -= 3) { - s = s.substring(0, k).replace(",", ".") + "," + s.substring(k); - } - if (s.length() > 8) { - s = s.substring(0, s.length() - 8).replace(",", ".") + " million (" + s + ")"; - } else if (s.length() > 4) { - s = s.substring(0, s.length() - 4) + "K (" + s + ")"; - } - return " " + s; - } - - /** - * Writes to a log file. - * - * @param log - * the log file. - * @param data - * the data we are writing to the log. - */ - public static void writeLog(String player, String logType, String data) { - File log = null; - if (logType.equalsIgnoreCase("alchemy")) { - log = new File("./data/logs/alchlogs/" + player + ".txt"); - } else if (logType.equalsIgnoreCase("shopselling")) { - log = new File("./data/logs/shopselling/" + player + ".txt"); - } else if (logType.equalsIgnoreCase("shopbuying")) { - log = new File("./data/logs/shopbuying/" + player + ".txt"); - } else if (logType.equalsIgnoreCase("dropitem")) { - log = new File("./data/logs/dropitem/" + player + ".txt"); - } else if (logType.equalsIgnoreCase("clickitem")) { - log = new File("./data/logs/clickitem/" + player + ".txt"); - } else if (logType.equalsIgnoreCase("pickupitem")) { - log = new File("./data/logs/pickupitem/" + player + ".txt"); - } else if (logType.equalsIgnoreCase("commands")) { - log = new File("./data/logs/commands/" + player + ".txt"); - } else if (logType.equalsIgnoreCase("pmsent")) { - log = new File("./data/logs/privatemessages/pmsent/" + player + ".txt"); - } else if (logType.equalsIgnoreCase("pmrecieved")) { - log = new File("./data/logs/privatemessages/pmrecieved/" + player + ".txt"); - } else if (logType.equalsIgnoreCase("tradesgave")) { - log = new File("./data/logs/trades/gave/" + player + ".txt"); - } else if (logType.equalsIgnoreCase("tradesrecieved")) { - log = new File("./data/logs/trades/recieved/" + player + ".txt"); - } else if (logType.equalsIgnoreCase("pkingkilled")) { - log = new File("./data/logs/pking/killed/" + player + ".txt"); - } else if (logType.equalsIgnoreCase("pkingkiller")) { - log = new File("./data/logs/pking/killer/" + player + ".txt"); - } else if (logType.equalsIgnoreCase("duelingkilled")) { - log = new File("./data/logs/dueling/killed/" + player + ".txt"); - } else if (logType.equalsIgnoreCase("duelingkiller")) { - log = new File("./data/logs/dueling/killer/" + player + ".txt"); - } else { - log = new File("./data/logs/" + player + ".txt"); - } - - if (!log.exists()) { - try { - log.createNewFile(); - } catch (IOException e) { - e.printStackTrace(); - } - } - try { - FileWriter logFile = new FileWriter(log, true); - BufferedWriter bf = new BufferedWriter(logFile); - bf.write(getTime() + "" + data + ""); - bf.newLine(); - bf.flush(); - bf.close(); - } catch (Exception e) { - e.printStackTrace(); - } - } -} +package com.rebotted.util; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.util.Calendar; +import java.util.GregorianCalendar; + +/* + * Author: Nightleaf + */ + +public class GameLogger { + + public static String getTime() { + Calendar cal = new GregorianCalendar(); + String day, month, hour, minute; + int YEAR = cal.get(Calendar.YEAR); + int MONTH = cal.get(Calendar.MONTH) + 1; + int DAY = cal.get(Calendar.DAY_OF_MONTH); + int HOUR = cal.get(Calendar.HOUR_OF_DAY); + int MIN = cal.get(Calendar.MINUTE); + day = DAY < 10 ? "0" + DAY : "" + DAY; + month = MONTH < 10 ? "0" + MONTH : "" + MONTH; + hour = HOUR < 10 ? "0" + HOUR : "" + HOUR; + minute = MIN < 10 ? "0" + MIN : "" + MIN; + return "[" + YEAR + "/" + month + "/" + day + "] " + hour + ":" + minute + " "; + } + + /** + * Formats a currency string just like RS. + * + * @param cash + * @return + */ + public static String formatCurrency(int cash) { + String s = String.valueOf(cash); + for (int k = s.length() - 3; k > 0; k -= 3) { + s = s.substring(0, k).replace(",", ".") + "," + s.substring(k); + } + if (s.length() > 8) { + s = s.substring(0, s.length() - 8).replace(",", ".") + " million (" + s + ")"; + } else if (s.length() > 4) { + s = s.substring(0, s.length() - 4) + "K (" + s + ")"; + } + return " " + s; + } + + /** + * Writes to a log file. + * + * @param log + * the log file. + * @param data + * the data we are writing to the log. + */ + public static void writeLog(String player, String logType, String data) { + File log = null; + if (logType.equalsIgnoreCase("alchemy")) { + log = new File("./data/logs/alchlogs/" + player + ".txt"); + } else if (logType.equalsIgnoreCase("shopselling")) { + log = new File("./data/logs/shopselling/" + player + ".txt"); + } else if (logType.equalsIgnoreCase("shopbuying")) { + log = new File("./data/logs/shopbuying/" + player + ".txt"); + } else if (logType.equalsIgnoreCase("dropitem")) { + log = new File("./data/logs/dropitem/" + player + ".txt"); + } else if (logType.equalsIgnoreCase("clickitem")) { + log = new File("./data/logs/clickitem/" + player + ".txt"); + } else if (logType.equalsIgnoreCase("pickupitem")) { + log = new File("./data/logs/pickupitem/" + player + ".txt"); + } else if (logType.equalsIgnoreCase("commands")) { + log = new File("./data/logs/commands/" + player + ".txt"); + } else if (logType.equalsIgnoreCase("pmsent")) { + log = new File("./data/logs/privatemessages/pmsent/" + player + ".txt"); + } else if (logType.equalsIgnoreCase("pmrecieved")) { + log = new File("./data/logs/privatemessages/pmrecieved/" + player + ".txt"); + } else if (logType.equalsIgnoreCase("tradesgave")) { + log = new File("./data/logs/trades/gave/" + player + ".txt"); + } else if (logType.equalsIgnoreCase("tradesrecieved")) { + log = new File("./data/logs/trades/recieved/" + player + ".txt"); + } else if (logType.equalsIgnoreCase("pkingkilled")) { + log = new File("./data/logs/pking/killed/" + player + ".txt"); + } else if (logType.equalsIgnoreCase("pkingkiller")) { + log = new File("./data/logs/pking/killer/" + player + ".txt"); + } else if (logType.equalsIgnoreCase("duelingkilled")) { + log = new File("./data/logs/dueling/killed/" + player + ".txt"); + } else if (logType.equalsIgnoreCase("duelingkiller")) { + log = new File("./data/logs/dueling/killer/" + player + ".txt"); + } else { + log = new File("./data/logs/" + player + ".txt"); + } + + if (!log.exists()) { + try { + log.createNewFile(); + } catch (IOException e) { + e.printStackTrace(); + } + } + try { + FileWriter logFile = new FileWriter(log, true); + BufferedWriter bf = new BufferedWriter(logFile); + bf.write(getTime() + "" + data + ""); + bf.newLine(); + bf.flush(); + bf.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/2006Redone Server/src/redone/util/HostBlacklist.java b/2006Redone Server/src/com/rebotted/util/HostBlacklist.java similarity index 93% rename from 2006Redone Server/src/redone/util/HostBlacklist.java rename to 2006Redone Server/src/com/rebotted/util/HostBlacklist.java index 97dac89b..fa966ac6 100644 --- a/2006Redone Server/src/redone/util/HostBlacklist.java +++ b/2006Redone Server/src/com/rebotted/util/HostBlacklist.java @@ -1,36 +1,36 @@ -package redone.util; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.util.ArrayList; -import java.util.List; - -public class HostBlacklist { - - private static final String BLACKLIST_DIR = "./data/blacklist.txt"; - - private static List blockedHostnames = new ArrayList(); - - public static List getBlockedHostnames() { - return blockedHostnames; - } - - public static boolean isBlocked(String host) { - return blockedHostnames.contains(host.toLowerCase()); - } - - public static void loadBlacklist() { - String word = null; - try { - BufferedReader in = new BufferedReader( - new FileReader(BLACKLIST_DIR)); - while ((word = in.readLine()) != null) { - blockedHostnames.add(word.toLowerCase()); - } - in.close(); - in = null; - } catch (final Exception e) { - System.out.println("Could not load blacklisted hosts."); - } - } -} +package com.rebotted.util; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.util.ArrayList; +import java.util.List; + +public class HostBlacklist { + + private static final String BLACKLIST_DIR = "./data/blacklist.txt"; + + private static List blockedHostnames = new ArrayList(); + + public static List getBlockedHostnames() { + return blockedHostnames; + } + + public static boolean isBlocked(String host) { + return blockedHostnames.contains(host.toLowerCase()); + } + + public static void loadBlacklist() { + String word = null; + try { + BufferedReader in = new BufferedReader( + new FileReader(BLACKLIST_DIR)); + while ((word = in.readLine()) != null) { + blockedHostnames.add(word.toLowerCase()); + } + in.close(); + in = null; + } catch (final Exception e) { + System.out.println("Could not load blacklisted hosts."); + } + } +} diff --git a/2006Redone Server/src/redone/util/ISAACRandomGen.java b/2006Redone Server/src/com/rebotted/util/ISAACRandomGen.java similarity index 94% rename from 2006Redone Server/src/redone/util/ISAACRandomGen.java rename to 2006Redone Server/src/com/rebotted/util/ISAACRandomGen.java index 26023345..5189e084 100644 --- a/2006Redone Server/src/redone/util/ISAACRandomGen.java +++ b/2006Redone Server/src/com/rebotted/util/ISAACRandomGen.java @@ -1,175 +1,175 @@ -package redone.util; - -public class ISAACRandomGen { - - public int count; - public int[] results; - public int[] memory; - public int accumulator; - public int lastResult; - public int counter; - - public ISAACRandomGen(int[] seed) { - memory = new int[256]; - results = new int[256]; - System.arraycopy(seed, 0, results, 0, seed.length); - initializeKeySet(); - } - - public int getNextKey() { - // Server.add(Thread.currentThread().getName()); - // System.out.println(Thread.currentThread().getName()); - if (count-- == 0) { - generateNextKeySet(); - count = 255; - } - return results[count]; - } - - public void generateNextKeySet() { - lastResult += ++counter; - for (int i = 0; i < 256; i++) { - int j = memory[i]; - if ((i & 3) == 0) { - accumulator ^= accumulator << 13; - } else if ((i & 3) == 1) { - accumulator ^= accumulator >>> 6; - } else if ((i & 3) == 2) { - accumulator ^= accumulator << 2; - } else if ((i & 3) == 3) { - accumulator ^= accumulator >>> 16; - } - accumulator += memory[i + 128 & 0xff]; - int k; - memory[i] = k = memory[(j & 0x3fc) >> 2] + accumulator + lastResult; - results[i] = lastResult = memory[(k >> 8 & 0x3fc) >> 2] + j; - } - - } - - public void initializeKeySet() { - int i1; - int j1; - int k1; - int l1; - int i2; - int j2; - int k2; - int l = i1 = j1 = k1 = l1 = i2 = j2 = k2 = 0x9e3779b9; - for (int i = 0; i < 4; i++) { - l ^= i1 << 11; - k1 += l; - i1 += j1; - i1 ^= j1 >>> 2; - l1 += i1; - j1 += k1; - j1 ^= k1 << 8; - i2 += j1; - k1 += l1; - k1 ^= l1 >>> 16; - j2 += k1; - l1 += i2; - l1 ^= i2 << 10; - k2 += l1; - i2 += j2; - i2 ^= j2 >>> 4; - l += i2; - j2 += k2; - j2 ^= k2 << 8; - i1 += j2; - k2 += l; - k2 ^= l >>> 9; - j1 += k2; - l += i1; - } - - for (int j = 0; j < 256; j += 8) { - l += results[j]; - i1 += results[j + 1]; - j1 += results[j + 2]; - k1 += results[j + 3]; - l1 += results[j + 4]; - i2 += results[j + 5]; - j2 += results[j + 6]; - k2 += results[j + 7]; - l ^= i1 << 11; - k1 += l; - i1 += j1; - i1 ^= j1 >>> 2; - l1 += i1; - j1 += k1; - j1 ^= k1 << 8; - i2 += j1; - k1 += l1; - k1 ^= l1 >>> 16; - j2 += k1; - l1 += i2; - l1 ^= i2 << 10; - k2 += l1; - i2 += j2; - i2 ^= j2 >>> 4; - l += i2; - j2 += k2; - j2 ^= k2 << 8; - i1 += j2; - k2 += l; - k2 ^= l >>> 9; - j1 += k2; - l += i1; - memory[j] = l; - memory[j + 1] = i1; - memory[j + 2] = j1; - memory[j + 3] = k1; - memory[j + 4] = l1; - memory[j + 5] = i2; - memory[j + 6] = j2; - memory[j + 7] = k2; - } - - for (int k = 0; k < 256; k += 8) { - l += memory[k]; - i1 += memory[k + 1]; - j1 += memory[k + 2]; - k1 += memory[k + 3]; - l1 += memory[k + 4]; - i2 += memory[k + 5]; - j2 += memory[k + 6]; - k2 += memory[k + 7]; - l ^= i1 << 11; - k1 += l; - i1 += j1; - i1 ^= j1 >>> 2; - l1 += i1; - j1 += k1; - j1 ^= k1 << 8; - i2 += j1; - k1 += l1; - k1 ^= l1 >>> 16; - j2 += k1; - l1 += i2; - l1 ^= i2 << 10; - k2 += l1; - i2 += j2; - i2 ^= j2 >>> 4; - l += i2; - j2 += k2; - j2 ^= k2 << 8; - i1 += j2; - k2 += l; - k2 ^= l >>> 9; - j1 += k2; - l += i1; - memory[k] = l; - memory[k + 1] = i1; - memory[k + 2] = j1; - memory[k + 3] = k1; - memory[k + 4] = l1; - memory[k + 5] = i2; - memory[k + 6] = j2; - memory[k + 7] = k2; - } - - generateNextKeySet(); - count = 256; - } -} +package com.rebotted.util; + +public class ISAACRandomGen { + + public int count; + public int[] results; + public int[] memory; + public int accumulator; + public int lastResult; + public int counter; + + public ISAACRandomGen(int[] seed) { + memory = new int[256]; + results = new int[256]; + System.arraycopy(seed, 0, results, 0, seed.length); + initializeKeySet(); + } + + public int getNextKey() { + // Server.add(Thread.currentThread().getName()); + // System.out.println(Thread.currentThread().getName()); + if (count-- == 0) { + generateNextKeySet(); + count = 255; + } + return results[count]; + } + + public void generateNextKeySet() { + lastResult += ++counter; + for (int i = 0; i < 256; i++) { + int j = memory[i]; + if ((i & 3) == 0) { + accumulator ^= accumulator << 13; + } else if ((i & 3) == 1) { + accumulator ^= accumulator >>> 6; + } else if ((i & 3) == 2) { + accumulator ^= accumulator << 2; + } else if ((i & 3) == 3) { + accumulator ^= accumulator >>> 16; + } + accumulator += memory[i + 128 & 0xff]; + int k; + memory[i] = k = memory[(j & 0x3fc) >> 2] + accumulator + lastResult; + results[i] = lastResult = memory[(k >> 8 & 0x3fc) >> 2] + j; + } + + } + + public void initializeKeySet() { + int i1; + int j1; + int k1; + int l1; + int i2; + int j2; + int k2; + int l = i1 = j1 = k1 = l1 = i2 = j2 = k2 = 0x9e3779b9; + for (int i = 0; i < 4; i++) { + l ^= i1 << 11; + k1 += l; + i1 += j1; + i1 ^= j1 >>> 2; + l1 += i1; + j1 += k1; + j1 ^= k1 << 8; + i2 += j1; + k1 += l1; + k1 ^= l1 >>> 16; + j2 += k1; + l1 += i2; + l1 ^= i2 << 10; + k2 += l1; + i2 += j2; + i2 ^= j2 >>> 4; + l += i2; + j2 += k2; + j2 ^= k2 << 8; + i1 += j2; + k2 += l; + k2 ^= l >>> 9; + j1 += k2; + l += i1; + } + + for (int j = 0; j < 256; j += 8) { + l += results[j]; + i1 += results[j + 1]; + j1 += results[j + 2]; + k1 += results[j + 3]; + l1 += results[j + 4]; + i2 += results[j + 5]; + j2 += results[j + 6]; + k2 += results[j + 7]; + l ^= i1 << 11; + k1 += l; + i1 += j1; + i1 ^= j1 >>> 2; + l1 += i1; + j1 += k1; + j1 ^= k1 << 8; + i2 += j1; + k1 += l1; + k1 ^= l1 >>> 16; + j2 += k1; + l1 += i2; + l1 ^= i2 << 10; + k2 += l1; + i2 += j2; + i2 ^= j2 >>> 4; + l += i2; + j2 += k2; + j2 ^= k2 << 8; + i1 += j2; + k2 += l; + k2 ^= l >>> 9; + j1 += k2; + l += i1; + memory[j] = l; + memory[j + 1] = i1; + memory[j + 2] = j1; + memory[j + 3] = k1; + memory[j + 4] = l1; + memory[j + 5] = i2; + memory[j + 6] = j2; + memory[j + 7] = k2; + } + + for (int k = 0; k < 256; k += 8) { + l += memory[k]; + i1 += memory[k + 1]; + j1 += memory[k + 2]; + k1 += memory[k + 3]; + l1 += memory[k + 4]; + i2 += memory[k + 5]; + j2 += memory[k + 6]; + k2 += memory[k + 7]; + l ^= i1 << 11; + k1 += l; + i1 += j1; + i1 ^= j1 >>> 2; + l1 += i1; + j1 += k1; + j1 ^= k1 << 8; + i2 += j1; + k1 += l1; + k1 ^= l1 >>> 16; + j2 += k1; + l1 += i2; + l1 ^= i2 << 10; + k2 += l1; + i2 += j2; + i2 ^= j2 >>> 4; + l += i2; + j2 += k2; + j2 ^= k2 << 8; + i1 += j2; + k2 += l; + k2 ^= l >>> 9; + j1 += k2; + l += i1; + memory[k] = l; + memory[k + 1] = i1; + memory[k + 2] = j1; + memory[k + 3] = k1; + memory[k + 4] = l1; + memory[k + 5] = i2; + memory[k + 6] = j2; + memory[k + 7] = k2; + } + + generateNextKeySet(); + count = 256; + } +} diff --git a/2006Redone Server/src/redone/util/Misc.java b/2006Redone Server/src/com/rebotted/util/Misc.java similarity index 94% rename from 2006Redone Server/src/redone/util/Misc.java rename to 2006Redone Server/src/com/rebotted/util/Misc.java index 7c6caf06..9ef027fe 100644 --- a/2006Redone Server/src/redone/util/Misc.java +++ b/2006Redone Server/src/com/rebotted/util/Misc.java @@ -1,321 +1,319 @@ -package redone.util; - -import java.text.NumberFormat; -import java.util.ArrayList; - -public class Misc { - - public static String formatPlayerName(String str) { - str = ucFirst(str); - str.replace("_", " "); - return str; - } - - public static int random(final float range) { - return (int) (java.lang.Math.random() * (range + 1)); - } - - // return a random number from 0 → range - 1 - public static int randomMinusOne(int range) { - return (int) Math.random() * range; - } - - public static double distance(int x1, int y1, int x2, int y2 ) { - return Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2)); - } - - public static boolean goodDistance(int objectX, int objectY, int playerX, int playerY, int distance) { - return objectX - playerX <= distance && objectX - playerX >= -distance && objectY - playerY <= distance && objectY - playerY >= -distance; - } - - public static String longToReportPlayerName(long l) { - int i = 0; - final char ac[] = new char[12]; - while (l != 0L) { - final long l1 = l; - l /= 37L; - ac[11 - i++] = Misc.playerNameXlateTable[(int) (l1 - l * 37L)]; - } - return new String(ac, 12 - i, i); - } - - public static int random3(int range) { - return (int) (java.lang.Math.random() * range); - } - - public static int randomNumber(int range) { - return (int) (Math.random() * range); - } - - public static String longToPlayerName(long l) { - int i = 0; - char ac[] = new char[12]; - - while (l != 0L) { - long l1 = l; - - l /= 37L; - ac[11 - i++] = xlateTable[(int) (l1 - l * 37L)]; - } - return new String(ac, 12 - i, i); - } - - public static final char playerNameXlateTable[] = { '_', 'a', 'b', 'c', - 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', - 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', - '3', '4', '5', '6', '7', '8', '9', '[', ']', '/', '-', ' ' }; - - public static String longToPlayerName2(long l) { - int i = 0; - char ac[] = new char[99]; - while (l != 0L) { - long l1 = l; - l /= 37L; - ac[11 - i++] = playerNameXlateTable[(int) (l1 - l * 37L)]; - } - return new String(ac, 12 - i, i); - } - - public static String format(int num) { - return NumberFormat.getInstance().format(num); - } - - public static String ucFirst(String str) { - str = str.toLowerCase(); - if (str.length() > 1) { - str = str.substring(0, 1).toUpperCase() + str.substring(1); - } else { - return str.toUpperCase(); - } - return str; - } - - public static void print_debug(String str) { - System.out.print(str); - } - - public static void println_debug(String str) { - System.out.println(str); - } - - public static void print(String str) { - System.out.print(str); - } - - public static void println(String str) { - System.out.println(str); - } - - public static String Hex(byte data[]) { - return Hex(data, 0, data.length); - } - - public static String Hex(byte data[], int offset, int len) { - String temp = ""; - for (int cntr = 0; cntr < len; cntr++) { - int num = data[offset + cntr] & 0xFF; - String myStr; - if (num < 16) { - myStr = "0"; - } else { - myStr = ""; - } - temp += myStr + Integer.toHexString(num) + " "; - } - return temp.toUpperCase().trim(); - } - - public static int hexToInt(byte data[], int offset, int len) { - int temp = 0; - int i = 1000; - for (int cntr = 0; cntr < len; cntr++) { - int num = (data[offset + cntr] & 0xFF) * i; - temp += num; - if (i > 1) { - i = i / 1000; - } - } - return temp; - } - - public static int random2(int range) { - return (int) (java.lang.Math.random() * range + 1); - } - - // return a random number from 0 → range (including range) - public static int random(int range) { - return (int) (java.lang.Math.random() * (++range)); - } - - // return a random number between & including the min/max values - public static int random(int min, int max) { - ++max; - return (int) Math.floor(Math.random() * (max - min)) + min; - } - - public static int randomArrayItem(int[] arr) { - return arr[(int) Math.floor(Math.random() * arr.length)]; - } - - public static int randomArrayListItem(ArrayList arr) { - int index = (int) Math.floor(Math.random() * arr.size()); - return arr.get(index); - } - - public static long playerNameToInt64(String s) { - long l = 0L; - for (int i = 0; i < s.length(); i++) { - char c = s.charAt(i); - l *= 37L; - if (c >= 'A' && c <= 'Z') { - l += 1 + c - 65; - } else if (c >= 'a' && c <= 'z') { - l += 1 + c - 97; - } else if (c >= '0' && c <= '9') { - l += 27 + c - 48; - } - } - while (l % 37L == 0L && l != 0L) { - l /= 37L; - } - return l; - } - - private static char decodeBuf[] = new char[4096]; - - public static String textUnpack(byte packedData[], int size) { - int idx = 0, highNibble = -1; - for (int i = 0; i < size * 2; i++) { - int val = packedData[i / 2] >> 4 - 4 * (i % 2) & 0xf; - if (highNibble == -1) { - if (val < 13) { - decodeBuf[idx++] = xlateTable[val]; - } else { - highNibble = val; - } - } else { - decodeBuf[idx++] = xlateTable[(highNibble << 4) + val - 195]; - highNibble = -1; - } - } - - return new String(decodeBuf, 0, idx); - } - - public static String optimizeText(String text) { - char buf[] = text.toCharArray(); - boolean endMarker = true; - for (int i = 0; i < buf.length; i++) { - char c = buf[i]; - if (endMarker && c >= 'a' && c <= 'z') { - buf[i] -= 0x20; - endMarker = false; - } - if (c == '.' || c == '!' || c == '?') { - endMarker = true; - } - } - return new String(buf, 0, buf.length); - } - - public static void textPack(Stream inStream, String text) { - if (text.length() > 80) { - text = text.substring(0, 80); - } - text = text.toLowerCase(); - - int carryOverNibble = -1; - inStream.currentOffset = 0; - for (int idx = 0; idx < text.length(); idx++) { - char c = text.charAt(idx); - int tableIdx = 0; - for (int i = 0; i < xlateTable.length; i++) { - if (c == xlateTable[i]) { - tableIdx = i; - break; - } - } - if (tableIdx > 12) { - tableIdx += 195; - } - if (carryOverNibble == -1) { - if (tableIdx < 13) { - carryOverNibble = tableIdx; - } else { - inStream.buffer[inStream.currentOffset++] = (byte) tableIdx; - } - } else if (tableIdx < 13) { - inStream.buffer[inStream.currentOffset++] = (byte) ((carryOverNibble << 4) + tableIdx); - carryOverNibble = -1; - } else { - inStream.buffer[inStream.currentOffset++] = (byte) ((carryOverNibble << 4) + (tableIdx >> 4)); - carryOverNibble = tableIdx & 0xf; - } - } - - if (carryOverNibble != -1) { - inStream.buffer[inStream.currentOffset++] = (byte) (carryOverNibble << 4); - } - } - - public static char xlateTable[] = { ' ', 'e', 't', 'a', 'o', 'i', 'h', 'n', - 's', 'r', 'd', 'l', 'u', 'm', 'w', 'c', 'y', 'f', 'g', 'p', 'b', - 'v', 'k', 'x', 'j', 'q', 'z', '0', '1', '2', '3', '4', '5', '6', - '7', '8', '9', ' ', '!', '?', '.', ',', ':', ';', '(', ')', '-', - '&', '*', '\\', '\'', '@', '#', '+', '=', '\243', '$', '%', '"', - '[', ']' }; - - public static int[] delta(int x1, int y1, int x2, int y2) { - return new int[] {x2 - x1, y2 - y1}; - } - - public static int directionFromDelta(int x, int y) { - for (int a = 0; a < directionDeltaX.length; a++) { - if (directionDeltaX[a] == x && directionDeltaY[a] == y) { - return xlateDirectionToClient[a]; - } - } - - throw new IllegalArgumentException(String.format("Cannot find direction %d %d", x, y)); - } - - public static int direction(int srcX, int srcY, int x, int y) { - double dx = (double) x - srcX, dy = (double) y - srcY; - double angle = Math.atan(dy / dx); - angle = Math.toDegrees(angle); - if (Double.isNaN(angle)) { - return -1; - } - if (Math.signum(dx) < 0) { - angle += 180.0; - } - return (int) (((90 - angle) / 22.5 + 16) % 16); - /* - * int changeX = x - srcX; int changeY = y - srcY; for (int j = 0; j < - * directionDeltaX.length; j++) { if (changeX == directionDeltaX[j] && - * changeY == directionDeltaY[j]) return j; } return -1; - */ - } - - public static byte directionDeltaX[] = new byte[] { 0, 1, 1, 1, 0, -1, -1, -1 }; - public static byte directionDeltaY[] = new byte[] { 1, 1, 0, -1, -1, -1, 0, 1 }; - public static byte xlateDirectionToClient[] = new byte[] { 1, 2, 4, 7, 6, - 5, 3, 0 }; - - public static String capitalize(String s) { - for (int i = 0; i < s.length(); i++) { - if (i == 0) { - s = String.format("%s%s", Character.toUpperCase(s.charAt(0)), - s.substring(1)); - } - if (!Character.isLetterOrDigit(s.charAt(i))) { - if (i + 1 < s.length()) { - s = String.format("%s%s%s", s.subSequence(0, i + 1), - Character.toUpperCase(s.charAt(i + 1)), - s.substring(i + 2)); - } - } - } - return s; - } -} +package com.rebotted.util; + +import java.text.NumberFormat; +import java.util.ArrayList; + +public class Misc { + + public static String formatPlayerName(String str) { + str = ucFirst(str); + str.replace("_", " "); + return str; + } + + public static int random(final float range) { + return (int) (java.lang.Math.random() * (range + 1)); + } + + // return a random number from 0 → range - 1 + public static int randomMinusOne(int range) { + return (int) Math.random() * range; + } + + public static double distance(int x1, int y1, int x2, int y2 ) { + return Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2)); + } + + public static boolean goodDistance(int objectX, int objectY, int playerX, int playerY, int distance) { + return objectX - playerX <= distance && objectX - playerX >= -distance && objectY - playerY <= distance && objectY - playerY >= -distance; + } + + public static String longToReportPlayerName(long l) { + int i = 0; + final char ac[] = new char[12]; + while (l != 0L) { + final long l1 = l; + l /= 37L; + ac[11 - i++] = Misc.playerNameXlateTable[(int) (l1 - l * 37L)]; + } + return new String(ac, 12 - i, i); + } + + public static int random3(int range) { + return (int) (java.lang.Math.random() * range); + } + + public static int randomNumber(int range) { + return (int) (Math.random() * range); + } + + public static String longToPlayerName(long l) { + int i = 0; + char ac[] = new char[12]; + + while (l != 0L) { + long l1 = l; + + l /= 37L; + ac[11 - i++] = xlateTable[(int) (l1 - l * 37L)]; + } + return new String(ac, 12 - i, i); + } + + public static final char playerNameXlateTable[] = { '_', 'a', 'b', 'c', + 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', + 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', + '3', '4', '5', '6', '7', '8', '9', '[', ']', '/', '-', ' ' }; + + public static String longToPlayerName2(long l) { + int i = 0; + char ac[] = new char[99]; + while (l != 0L) { + long l1 = l; + l /= 37L; + ac[11 - i++] = playerNameXlateTable[(int) (l1 - l * 37L)]; + } + return new String(ac, 12 - i, i); + } + + public static String format(int num) { + return NumberFormat.getInstance().format(num); + } + + public static String ucFirst(String str) { + str = str.toLowerCase(); + if (str.length() > 1) { + str = str.substring(0, 1).toUpperCase() + str.substring(1); + } else { + return str.toUpperCase(); + } + return str; + } + + public static void print_debug(String str) { + System.out.print(str); + } + + public static void println_debug(String str) { + System.out.println(str); + } + + public static void print(String str) { + System.out.print(str); + } + + public static void println(String str) { + System.out.println(str); + } + + public static String Hex(byte data[]) { + return Hex(data, 0, data.length); + } + + public static String Hex(byte data[], int offset, int len) { + String temp = ""; + for (int cntr = 0; cntr < len; cntr++) { + int num = data[offset + cntr] & 0xFF; + String myStr; + if (num < 16) { + myStr = "0"; + } else { + myStr = ""; + } + temp += myStr + Integer.toHexString(num) + " "; + } + return temp.toUpperCase().trim(); + } + + public static int hexToInt(byte data[], int offset, int len) { + int temp = 0; + int i = 1000; + for (int cntr = 0; cntr < len; cntr++) { + int num = (data[offset + cntr] & 0xFF) * i; + temp += num; + if (i > 1) { + i = i / 1000; + } + } + return temp; + } + + public static int random2(int range) { + return (int) (java.lang.Math.random() * range + 1); + } + + // return a random number from 0 → range (including range) + public static int random(int range) { + return (int) (java.lang.Math.random() * (++range)); + } + + // return a random number between & including the min/max values + public static int random(int min, int max) { + ++max; + return (int) Math.floor(Math.random() * (max - min)) + min; + } + + public static int randomArrayItem(int[] arr) { + return arr[(int) Math.floor(Math.random() * arr.length)]; + } + + public static int randomArrayListItem(ArrayList arr) { + int index = (int) Math.floor(Math.random() * arr.size()); + return arr.get(index); + } + + public static long playerNameToInt64(String s) { + long l = 0L; + for (int i = 0; i < s.length(); i++) { + char c = s.charAt(i); + l *= 37L; + if (c >= 'A' && c <= 'Z') { + l += 1 + c - 65; + } else if (c >= 'a' && c <= 'z') { + l += 1 + c - 97; + } else if (c >= '0' && c <= '9') { + l += 27 + c - 48; + } + } + while (l % 37L == 0L && l != 0L) { + l /= 37L; + } + return l; + } + + private static char decodeBuf[] = new char[4096]; + + public static String textUnpack(byte packedData[], int size) { + int idx = 0, highNibble = -1; + for (int i = 0; i < size * 2; i++) { + int val = packedData[i / 2] >> 4 - 4 * (i % 2) & 0xf; + if (highNibble == -1) { + if (val < 13) { + decodeBuf[idx++] = xlateTable[val]; + } else { + highNibble = val; + } + } else { + decodeBuf[idx++] = xlateTable[(highNibble << 4) + val - 195]; + highNibble = -1; + } + } + + return new String(decodeBuf, 0, idx); + } + + public static String optimizeText(String text) { + char buf[] = text.toCharArray(); + boolean endMarker = true; + for (int i = 0; i < buf.length; i++) { + char c = buf[i]; + if (endMarker && c >= 'a' && c <= 'z') { + buf[i] -= 0x20; + endMarker = false; + } + if (c == '.' || c == '!' || c == '?') { + endMarker = true; + } + } + return new String(buf, 0, buf.length); + } + + public static void textPack(Stream inStream, String text) { + if (text.length() > 80) { + text = text.substring(0, 80); + } + text = text.toLowerCase(); + + int carryOverNibble = -1; + inStream.currentOffset = 0; + for (int idx = 0; idx < text.length(); idx++) { + char c = text.charAt(idx); + int tableIdx = 0; + for (int i = 0; i < xlateTable.length; i++) { + if (c == xlateTable[i]) { + tableIdx = i; + break; + } + } + if (tableIdx > 12) { + tableIdx += 195; + } + if (carryOverNibble == -1) { + if (tableIdx < 13) { + carryOverNibble = tableIdx; + } else { + inStream.buffer[inStream.currentOffset++] = (byte) tableIdx; + } + } else if (tableIdx < 13) { + inStream.buffer[inStream.currentOffset++] = (byte) ((carryOverNibble << 4) + tableIdx); + carryOverNibble = -1; + } else { + inStream.buffer[inStream.currentOffset++] = (byte) ((carryOverNibble << 4) + (tableIdx >> 4)); + carryOverNibble = tableIdx & 0xf; + } + } + + if (carryOverNibble != -1) { + inStream.buffer[inStream.currentOffset++] = (byte) (carryOverNibble << 4); + } + } + + public static char xlateTable[] = { ' ', 'e', 't', 'a', 'o', 'i', 'h', 'n', + 's', 'r', 'd', 'l', 'u', 'm', 'w', 'c', 'y', 'f', 'g', 'p', 'b', + 'v', 'k', 'x', 'j', 'q', 'z', '0', '1', '2', '3', '4', '5', '6', + '7', '8', '9', ' ', '!', '?', '.', ',', ':', ';', '(', ')', '-', + '&', '*', '\\', '\'', '@', '#', '+', '=', '\243', '$', '%', '"', + '[', ']' }; + + public static int[] delta(int x1, int y1, int x2, int y2) { + return new int[] {x2 - x1, y2 - y1}; + } + + public static int directionFromDelta(int x, int y) { + for (int a = 0; a < directionDeltaX.length; a++) { + if (directionDeltaX[a] == x && directionDeltaY[a] == y) { + return xlateDirectionToClient[a]; + } + } + + throw new IllegalArgumentException(String.format("Cannot find direction %d %d", x, y)); + } + + public static int direction(int srcX, int srcY, int x, int y) { + double dx = (double) x - srcX, dy = (double) y - srcY; + double angle = Math.atan(dy / dx); + angle = Math.toDegrees(angle); + if (Double.isNaN(angle)) { + return -1; + } + if (Math.signum(dx) < 0) { + angle += 180.0; + } + return (int) (((90 - angle) / 22.5 + 16) % 16); + /* + * int changeX = x - srcX; int changeY = y - srcY; for (int j = 0; j < + * directionDeltaX.length; j++) { if (changeX == directionDeltaX[j] && + * changeY == directionDeltaY[j]) return j; } return -1; + */ + } + + public static byte directionDeltaX[] = new byte[] { 0, 1, 1, 1, 0, -1, -1, -1 }; + public static byte directionDeltaY[] = new byte[] { 1, 1, 0, -1, -1, -1, 0, 1 }; + public static byte xlateDirectionToClient[] = new byte[] { 1, 2, 4, 7, 6, + 5, 3, 0 }; + + public static String capitalize(String s) { + for (int i = 0; i < s.length(); i++) { + if (i == 0) { + s = String.format("%s%s", Character.toUpperCase(s.charAt(0)), + s.substring(1)); + } + if (!Character.isLetterOrDigit(s.charAt(i))) { + if (i + 1 < s.length()) { + s = String.format("%s%s%s", s.subSequence(0, i + 1), Character.toUpperCase(s.charAt(i + 1)), s.substring(i + 2)); + } + } + } + return s; + } +} diff --git a/2006Redone Server/src/redone/util/Stream.java b/2006Redone Server/src/com/rebotted/util/Stream.java similarity index 94% rename from 2006Redone Server/src/redone/util/Stream.java rename to 2006Redone Server/src/com/rebotted/util/Stream.java index 3047baba..710d90ea 100644 --- a/2006Redone Server/src/redone/util/Stream.java +++ b/2006Redone Server/src/com/rebotted/util/Stream.java @@ -1,419 +1,419 @@ -package redone.util; - -import redone.Constants; - -public class Stream { - - public Stream() { - } - - public Stream(byte abyte0[]) { - buffer = abyte0; - currentOffset = 0; - } - - public long readQWord2() { - final long l = readDWord() & 0xffffffffL; - final long l1 = readDWord() & 0xffffffffL; - return (l << 32) + l1; - } - - public byte readSignedByteA() { - return (byte) (buffer[currentOffset++] - 128); - } - - public byte readSignedByteC() { - return (byte) -buffer[currentOffset++]; - } - - public byte readSignedByteS() { - return (byte) (128 - buffer[currentOffset++]); - } - - public int readUnsignedByteA() { - return buffer[currentOffset++] - 128 & 0xff; - } - - public int readUnsignedByteC() { - return -buffer[currentOffset++] & 0xff; - } - - public int readUnsignedByteS() { - return 128 - buffer[currentOffset++] & 0xff; - } - - public void writeByteA(int i) { - ensureCapacity(1); - buffer[currentOffset++] = (byte) (i + 128); - } - - public void writeByteS(int i) { - ensureCapacity(1); - buffer[currentOffset++] = (byte) (128 - i); - } - - public void writeByteC(int i) { - ensureCapacity(1); - buffer[currentOffset++] = (byte) -i; - } - - public int readSignedWordBigEndian() { - currentOffset += 2; - int i = ((buffer[currentOffset - 1] & 0xff) << 8) + (buffer[currentOffset - 2] & 0xff); - if (i > 32767) { - i -= 0x10000; - } - return i; - } - - public int readSignedWordA() { - currentOffset += 2; - int i = ((buffer[currentOffset - 2] & 0xff) << 8) + (buffer[currentOffset - 1] - 128 & 0xff); - if (i > 32767) { - i -= 0x10000; - } - return i; - } - - public int readSignedWordBigEndianA() { - currentOffset += 2; - int i = ((buffer[currentOffset - 1] & 0xff) << 8) + (buffer[currentOffset - 2] - 128 & 0xff); - if (i > 32767) { - i -= 0x10000; - } - return i; - } - - public int readUnsignedWordBigEndian() { - currentOffset += 2; - return ((buffer[currentOffset - 1] & 0xff) << 8) + (buffer[currentOffset - 2] & 0xff); - } - - public int readUnsignedWordA() { - currentOffset += 2; - return ((buffer[currentOffset - 2] & 0xff) << 8) + (buffer[currentOffset - 1] - 128 & 0xff); - } - - public int readUnsignedWordBigEndianA() { - currentOffset += 2; - return ((buffer[currentOffset - 1] & 0xff) << 8) + (buffer[currentOffset - 2] - 128 & 0xff); - } - - public void writeWordBigEndianA(int i) { - ensureCapacity(2); - buffer[currentOffset++] = (byte) (i + 128); - buffer[currentOffset++] = (byte) (i >> 8); - } - - public void writeWordA(int i) { - ensureCapacity(2); - buffer[currentOffset++] = (byte) (i >> 8); - buffer[currentOffset++] = (byte) (i + 128); - } - - public void writeWordBigEndian_dup(int i) { - ensureCapacity(2); - buffer[currentOffset++] = (byte) i; - buffer[currentOffset++] = (byte) (i >> 8); - } - - public int readDWord_v1() { - currentOffset += 4; - return ((buffer[currentOffset - 2] & 0xff) << 24) - + ((buffer[currentOffset - 1] & 0xff) << 16) - + ((buffer[currentOffset - 4] & 0xff) << 8) - + (buffer[currentOffset - 3] & 0xff); - } - - public int readDWord_v2() { - currentOffset += 4; - return ((buffer[currentOffset - 3] & 0xff) << 24) - + ((buffer[currentOffset - 4] & 0xff) << 16) - + ((buffer[currentOffset - 1] & 0xff) << 8) - + (buffer[currentOffset - 2] & 0xff); - } - - public void writeDWord_v1(int i) { - ensureCapacity(4); - buffer[currentOffset++] = (byte) (i >> 8); - buffer[currentOffset++] = (byte) i; - buffer[currentOffset++] = (byte) (i >> 24); - buffer[currentOffset++] = (byte) (i >> 16); - } - - public void writeDWord_v2(int i) { - ensureCapacity(4); - buffer[currentOffset++] = (byte) (i >> 16); - buffer[currentOffset++] = (byte) (i >> 24); - buffer[currentOffset++] = (byte) i; - buffer[currentOffset++] = (byte) (i >> 8); - } - - public void readBytes_reverse(byte abyte0[], int i, int j) { - for (int k = j + i - 1; k >= j; k--) { - abyte0[k] = buffer[currentOffset++]; - } - - } - - public void writeBytes_reverse(byte abyte0[], int i, int j) { - ensureCapacity(i); - for (int k = j + i - 1; k >= j; k--) { - buffer[currentOffset++] = abyte0[k]; - } - } - - public void readBytes_reverseA(byte abyte0[], int i, int j) { - ensureCapacity(i); - for (int k = j + i - 1; k >= j; k--) { - abyte0[k] = (byte) (buffer[currentOffset++] - 128); - } - - } - - public void writeBytes_reverseA(byte abyte0[], int i, int j) { - ensureCapacity(i); - for (int k = j + i - 1; k >= j; k--) { - buffer[currentOffset++] = (byte) (abyte0[k] + 128); - } - - } - - public void createFrame(int id) { - ensureCapacity(1); - buffer[currentOffset++] = (byte) (id + packetEncryption.getNextKey()); - } - - private static final int frameStackSize = 10; - private int frameStackPtr = -1; - private final int frameStack[] = new int[frameStackSize]; - - public void createFrameVarSize(int id) { - ensureCapacity(3); - buffer[currentOffset++] = (byte) (id + packetEncryption.getNextKey()); - buffer[currentOffset++] = 0; - if (frameStackPtr >= frameStackSize - 1) { - throw new RuntimeException("Stack overflow"); - } else { - frameStack[++frameStackPtr] = currentOffset; - } - } - - public void createFrameVarSizeWord(int id) { - ensureCapacity(2); - buffer[currentOffset++] = (byte) (id + packetEncryption.getNextKey()); - writeWord(0); - if (frameStackPtr >= frameStackSize - 1) { - throw new RuntimeException("Stack overflow"); - } else { - frameStack[++frameStackPtr] = currentOffset; - } - } - - public void endFrameVarSize() { - if (frameStackPtr < 0) { - throw new RuntimeException("Stack empty"); - } else { - writeFrameSize(currentOffset - frameStack[frameStackPtr--]); - } - } - - public void endFrameVarSizeWord() { - if (frameStackPtr < 0) { - throw new RuntimeException("Stack empty"); - } else { - writeFrameSizeWord(currentOffset - frameStack[frameStackPtr--]); - } - } - - public void writeByte(int i) { - ensureCapacity(1); - buffer[currentOffset++] = (byte) i; - } - - public void writeWord(int i) { - ensureCapacity(2); - buffer[currentOffset++] = (byte) (i >> 8); - buffer[currentOffset++] = (byte) i; - } - - public void writeWordBigEndian(int i) { - ensureCapacity(2); - buffer[currentOffset++] = (byte) i; - buffer[currentOffset++] = (byte) (i >> 8); - } - - public void write3Byte(int i) { - ensureCapacity(3); - buffer[currentOffset++] = (byte) (i >> 16); - buffer[currentOffset++] = (byte) (i >> 8); - buffer[currentOffset++] = (byte) i; - } - - public void writeDWord(int i) { - ensureCapacity(4); - buffer[currentOffset++] = (byte) (i >> 24); - buffer[currentOffset++] = (byte) (i >> 16); - buffer[currentOffset++] = (byte) (i >> 8); - buffer[currentOffset++] = (byte) i; - } - - public void writeDWordBigEndian(int i) { - ensureCapacity(4); - buffer[currentOffset++] = (byte) i; - buffer[currentOffset++] = (byte) (i >> 8); - buffer[currentOffset++] = (byte) (i >> 16); - buffer[currentOffset++] = (byte) (i >> 24); - } - - public void writeQWord(long l) { - ensureCapacity(8); - buffer[currentOffset++] = (byte) (int) (l >> 56); - buffer[currentOffset++] = (byte) (int) (l >> 48); - buffer[currentOffset++] = (byte) (int) (l >> 40); - buffer[currentOffset++] = (byte) (int) (l >> 32); - buffer[currentOffset++] = (byte) (int) (l >> 24); - buffer[currentOffset++] = (byte) (int) (l >> 16); - buffer[currentOffset++] = (byte) (int) (l >> 8); - buffer[currentOffset++] = (byte) (int) l; - } - - public void writeString(java.lang.String s) { - ensureCapacity(s.length()); - System.arraycopy(s.getBytes(), 0, buffer, currentOffset, s.length()); - currentOffset += s.length(); - buffer[currentOffset++] = 10; - } - - public void writeBytes(byte abyte0[], int i, int j) { - ensureCapacity(i); - for (int k = j; k < j + i; k++) { - buffer[currentOffset++] = abyte0[k]; - } - } - - public void writeFrameSize(int i) { - buffer[currentOffset - i - 1] = (byte) i; - } - - public void writeFrameSizeWord(int i) { - buffer[currentOffset - i - 2] = (byte) (i >> 8); - buffer[currentOffset - i - 1] = (byte) i; - } - - public int readUnsignedByte() { - return buffer[currentOffset++] & 0xff; - } - - public byte readSignedByte() { - return buffer[currentOffset++]; - } - - public int readUnsignedWord() { - currentOffset += 2; - return ((buffer[currentOffset - 2] & 0xff) << 8) + (buffer[currentOffset - 1] & 0xff); - } - - public int readSignedWord() { - currentOffset += 2; - int i = ((buffer[currentOffset - 2] & 0xff) << 8) + (buffer[currentOffset - 1] & 0xff); - if (i > 32767) { - i -= 0x10000; - } - return i; - } - - public int readDWord() { - currentOffset += 4; - return ((buffer[currentOffset - 4] & 0xff) << 24) - + ((buffer[currentOffset - 3] & 0xff) << 16) - + ((buffer[currentOffset - 2] & 0xff) << 8) - + (buffer[currentOffset - 1] & 0xff); - } - - public long readQWord() { - long l = readDWord() & 0xffffffffL; - long l1 = readDWord() & 0xffffffffL; - return (l << 32) + l1; - } - - public java.lang.String readString() { - int i = currentOffset; - while (buffer[currentOffset++] != 10) { - ; - } - return new String(buffer, i, currentOffset - i - 1); - } - - public void readBytes(byte abyte0[], int i, int j) { - for (int k = j; k < j + i; k++) { - abyte0[k] = buffer[currentOffset++]; - } - - } - - public void initBitAccess() { - bitPosition = currentOffset * 8; - } - - public void writeBits(int numBits, int value) { - ensureCapacity((int) Math.ceil(numBits * 8) * 4); - int bytePos = bitPosition >> 3; - int bitOffset = 8 - (bitPosition & 7); - bitPosition += numBits; - - for (; numBits > bitOffset; bitOffset = 8) { - buffer[bytePos] &= ~bitMaskOut[bitOffset]; - buffer[bytePos++] |= value >> numBits - bitOffset - & bitMaskOut[bitOffset]; - - numBits -= bitOffset; - } - if (numBits == bitOffset) { - buffer[bytePos] &= ~bitMaskOut[bitOffset]; - buffer[bytePos] |= value & bitMaskOut[bitOffset]; - } else { - buffer[bytePos] &= ~(bitMaskOut[numBits] << bitOffset - numBits); - buffer[bytePos] |= (value & bitMaskOut[numBits]) << bitOffset - - numBits; - } - } - - public void finishBitAccess() { - currentOffset = (bitPosition + 7) / 8; - } - - public byte buffer[] = null; - public int currentOffset = 0; - public int bitPosition = 0; - - public static int bitMaskOut[] = new int[32]; - static { - for (int i = 0; i < 32; i++) { - bitMaskOut[i] = (1 << i) - 1; - } - } - - public void ensureCapacity(int len) { - if (currentOffset + len + 1 >= buffer.length) { - byte[] oldBuffer = buffer; - int newLength = buffer.length * 2; - buffer = new byte[newLength]; - System.arraycopy(oldBuffer, 0, buffer, 0, oldBuffer.length); - ensureCapacity(len); - } - } - - public void reset() { - if (!(currentOffset > Constants.BUFFER_SIZE)) { - byte[] oldBuffer = buffer; - buffer = new byte[Constants.BUFFER_SIZE]; - for (int i = 0; i < currentOffset; i++) { - buffer[i] = oldBuffer[i]; - } - } - } - - public ISAACRandomGen packetEncryption = null; - -} +package com.rebotted.util; + +import com.rebotted.GameConstants; + +public class Stream { + + public Stream() { + } + + public Stream(byte abyte0[]) { + buffer = abyte0; + currentOffset = 0; + } + + public long readQWord2() { + final long l = readDWord() & 0xffffffffL; + final long l1 = readDWord() & 0xffffffffL; + return (l << 32) + l1; + } + + public byte readSignedByteA() { + return (byte) (buffer[currentOffset++] - 128); + } + + public byte readSignedByteC() { + return (byte) -buffer[currentOffset++]; + } + + public byte readSignedByteS() { + return (byte) (128 - buffer[currentOffset++]); + } + + public int readUnsignedByteA() { + return buffer[currentOffset++] - 128 & 0xff; + } + + public int readUnsignedByteC() { + return -buffer[currentOffset++] & 0xff; + } + + public int readUnsignedByteS() { + return 128 - buffer[currentOffset++] & 0xff; + } + + public void writeByteA(int i) { + ensureCapacity(1); + buffer[currentOffset++] = (byte) (i + 128); + } + + public void writeByteS(int i) { + ensureCapacity(1); + buffer[currentOffset++] = (byte) (128 - i); + } + + public void writeByteC(int i) { + ensureCapacity(1); + buffer[currentOffset++] = (byte) -i; + } + + public int readSignedWordBigEndian() { + currentOffset += 2; + int i = ((buffer[currentOffset - 1] & 0xff) << 8) + (buffer[currentOffset - 2] & 0xff); + if (i > 32767) { + i -= 0x10000; + } + return i; + } + + public int readSignedWordA() { + currentOffset += 2; + int i = ((buffer[currentOffset - 2] & 0xff) << 8) + (buffer[currentOffset - 1] - 128 & 0xff); + if (i > 32767) { + i -= 0x10000; + } + return i; + } + + public int readSignedWordBigEndianA() { + currentOffset += 2; + int i = ((buffer[currentOffset - 1] & 0xff) << 8) + (buffer[currentOffset - 2] - 128 & 0xff); + if (i > 32767) { + i -= 0x10000; + } + return i; + } + + public int readUnsignedWordBigEndian() { + currentOffset += 2; + return ((buffer[currentOffset - 1] & 0xff) << 8) + (buffer[currentOffset - 2] & 0xff); + } + + public int readUnsignedWordA() { + currentOffset += 2; + return ((buffer[currentOffset - 2] & 0xff) << 8) + (buffer[currentOffset - 1] - 128 & 0xff); + } + + public int readUnsignedWordBigEndianA() { + currentOffset += 2; + return ((buffer[currentOffset - 1] & 0xff) << 8) + (buffer[currentOffset - 2] - 128 & 0xff); + } + + public void writeWordBigEndianA(int i) { + ensureCapacity(2); + buffer[currentOffset++] = (byte) (i + 128); + buffer[currentOffset++] = (byte) (i >> 8); + } + + public void writeWordA(int i) { + ensureCapacity(2); + buffer[currentOffset++] = (byte) (i >> 8); + buffer[currentOffset++] = (byte) (i + 128); + } + + public void writeWordBigEndian_dup(int i) { + ensureCapacity(2); + buffer[currentOffset++] = (byte) i; + buffer[currentOffset++] = (byte) (i >> 8); + } + + public int readDWord_v1() { + currentOffset += 4; + return ((buffer[currentOffset - 2] & 0xff) << 24) + + ((buffer[currentOffset - 1] & 0xff) << 16) + + ((buffer[currentOffset - 4] & 0xff) << 8) + + (buffer[currentOffset - 3] & 0xff); + } + + public int readDWord_v2() { + currentOffset += 4; + return ((buffer[currentOffset - 3] & 0xff) << 24) + + ((buffer[currentOffset - 4] & 0xff) << 16) + + ((buffer[currentOffset - 1] & 0xff) << 8) + + (buffer[currentOffset - 2] & 0xff); + } + + public void writeDWord_v1(int i) { + ensureCapacity(4); + buffer[currentOffset++] = (byte) (i >> 8); + buffer[currentOffset++] = (byte) i; + buffer[currentOffset++] = (byte) (i >> 24); + buffer[currentOffset++] = (byte) (i >> 16); + } + + public void writeDWord_v2(int i) { + ensureCapacity(4); + buffer[currentOffset++] = (byte) (i >> 16); + buffer[currentOffset++] = (byte) (i >> 24); + buffer[currentOffset++] = (byte) i; + buffer[currentOffset++] = (byte) (i >> 8); + } + + public void readBytes_reverse(byte abyte0[], int i, int j) { + for (int k = j + i - 1; k >= j; k--) { + abyte0[k] = buffer[currentOffset++]; + } + + } + + public void writeBytes_reverse(byte abyte0[], int i, int j) { + ensureCapacity(i); + for (int k = j + i - 1; k >= j; k--) { + buffer[currentOffset++] = abyte0[k]; + } + } + + public void readBytes_reverseA(byte abyte0[], int i, int j) { + ensureCapacity(i); + for (int k = j + i - 1; k >= j; k--) { + abyte0[k] = (byte) (buffer[currentOffset++] - 128); + } + + } + + public void writeBytes_reverseA(byte abyte0[], int i, int j) { + ensureCapacity(i); + for (int k = j + i - 1; k >= j; k--) { + buffer[currentOffset++] = (byte) (abyte0[k] + 128); + } + + } + + public void createFrame(int id) { + ensureCapacity(1); + buffer[currentOffset++] = (byte) (id + packetEncryption.getNextKey()); + } + + private static final int frameStackSize = 10; + private int frameStackPtr = -1; + private final int frameStack[] = new int[frameStackSize]; + + public void createFrameVarSize(int id) { + ensureCapacity(3); + buffer[currentOffset++] = (byte) (id + packetEncryption.getNextKey()); + buffer[currentOffset++] = 0; + if (frameStackPtr >= frameStackSize - 1) { + throw new RuntimeException("Stack overflow"); + } else { + frameStack[++frameStackPtr] = currentOffset; + } + } + + public void createFrameVarSizeWord(int id) { + ensureCapacity(2); + buffer[currentOffset++] = (byte) (id + packetEncryption.getNextKey()); + writeWord(0); + if (frameStackPtr >= frameStackSize - 1) { + throw new RuntimeException("Stack overflow"); + } else { + frameStack[++frameStackPtr] = currentOffset; + } + } + + public void endFrameVarSize() { + if (frameStackPtr < 0) { + throw new RuntimeException("Stack empty"); + } else { + writeFrameSize(currentOffset - frameStack[frameStackPtr--]); + } + } + + public void endFrameVarSizeWord() { + if (frameStackPtr < 0) { + throw new RuntimeException("Stack empty"); + } else { + writeFrameSizeWord(currentOffset - frameStack[frameStackPtr--]); + } + } + + public void writeByte(int i) { + ensureCapacity(1); + buffer[currentOffset++] = (byte) i; + } + + public void writeWord(int i) { + ensureCapacity(2); + buffer[currentOffset++] = (byte) (i >> 8); + buffer[currentOffset++] = (byte) i; + } + + public void writeWordBigEndian(int i) { + ensureCapacity(2); + buffer[currentOffset++] = (byte) i; + buffer[currentOffset++] = (byte) (i >> 8); + } + + public void write3Byte(int i) { + ensureCapacity(3); + buffer[currentOffset++] = (byte) (i >> 16); + buffer[currentOffset++] = (byte) (i >> 8); + buffer[currentOffset++] = (byte) i; + } + + public void writeDWord(int i) { + ensureCapacity(4); + buffer[currentOffset++] = (byte) (i >> 24); + buffer[currentOffset++] = (byte) (i >> 16); + buffer[currentOffset++] = (byte) (i >> 8); + buffer[currentOffset++] = (byte) i; + } + + public void writeDWordBigEndian(int i) { + ensureCapacity(4); + buffer[currentOffset++] = (byte) i; + buffer[currentOffset++] = (byte) (i >> 8); + buffer[currentOffset++] = (byte) (i >> 16); + buffer[currentOffset++] = (byte) (i >> 24); + } + + public void writeQWord(long l) { + ensureCapacity(8); + buffer[currentOffset++] = (byte) (int) (l >> 56); + buffer[currentOffset++] = (byte) (int) (l >> 48); + buffer[currentOffset++] = (byte) (int) (l >> 40); + buffer[currentOffset++] = (byte) (int) (l >> 32); + buffer[currentOffset++] = (byte) (int) (l >> 24); + buffer[currentOffset++] = (byte) (int) (l >> 16); + buffer[currentOffset++] = (byte) (int) (l >> 8); + buffer[currentOffset++] = (byte) (int) l; + } + + public void writeString(java.lang.String s) { + ensureCapacity(s.length()); + System.arraycopy(s.getBytes(), 0, buffer, currentOffset, s.length()); + currentOffset += s.length(); + buffer[currentOffset++] = 10; + } + + public void writeBytes(byte abyte0[], int i, int j) { + ensureCapacity(i); + for (int k = j; k < j + i; k++) { + buffer[currentOffset++] = abyte0[k]; + } + } + + public void writeFrameSize(int i) { + buffer[currentOffset - i - 1] = (byte) i; + } + + public void writeFrameSizeWord(int i) { + buffer[currentOffset - i - 2] = (byte) (i >> 8); + buffer[currentOffset - i - 1] = (byte) i; + } + + public int readUnsignedByte() { + return buffer[currentOffset++] & 0xff; + } + + public byte readSignedByte() { + return buffer[currentOffset++]; + } + + public int readUnsignedWord() { + currentOffset += 2; + return ((buffer[currentOffset - 2] & 0xff) << 8) + (buffer[currentOffset - 1] & 0xff); + } + + public int readSignedWord() { + currentOffset += 2; + int i = ((buffer[currentOffset - 2] & 0xff) << 8) + (buffer[currentOffset - 1] & 0xff); + if (i > 32767) { + i -= 0x10000; + } + return i; + } + + public int readDWord() { + currentOffset += 4; + return ((buffer[currentOffset - 4] & 0xff) << 24) + + ((buffer[currentOffset - 3] & 0xff) << 16) + + ((buffer[currentOffset - 2] & 0xff) << 8) + + (buffer[currentOffset - 1] & 0xff); + } + + public long readQWord() { + long l = readDWord() & 0xffffffffL; + long l1 = readDWord() & 0xffffffffL; + return (l << 32) + l1; + } + + public java.lang.String readString() { + int i = currentOffset; + while (buffer[currentOffset++] != 10) { + ; + } + return new String(buffer, i, currentOffset - i - 1); + } + + public void readBytes(byte abyte0[], int i, int j) { + for (int k = j; k < j + i; k++) { + abyte0[k] = buffer[currentOffset++]; + } + + } + + public void initBitAccess() { + bitPosition = currentOffset * 8; + } + + public void writeBits(int numBits, int value) { + ensureCapacity((int) Math.ceil(numBits * 8) * 4); + int bytePos = bitPosition >> 3; + int bitOffset = 8 - (bitPosition & 7); + bitPosition += numBits; + + for (; numBits > bitOffset; bitOffset = 8) { + buffer[bytePos] &= ~bitMaskOut[bitOffset]; + buffer[bytePos++] |= value >> numBits - bitOffset + & bitMaskOut[bitOffset]; + + numBits -= bitOffset; + } + if (numBits == bitOffset) { + buffer[bytePos] &= ~bitMaskOut[bitOffset]; + buffer[bytePos] |= value & bitMaskOut[bitOffset]; + } else { + buffer[bytePos] &= ~(bitMaskOut[numBits] << bitOffset - numBits); + buffer[bytePos] |= (value & bitMaskOut[numBits]) << bitOffset + - numBits; + } + } + + public void finishBitAccess() { + currentOffset = (bitPosition + 7) / 8; + } + + public byte buffer[] = null; + public int currentOffset = 0; + public int bitPosition = 0; + + public static int bitMaskOut[] = new int[32]; + static { + for (int i = 0; i < 32; i++) { + bitMaskOut[i] = (1 << i) - 1; + } + } + + public void ensureCapacity(int len) { + if (currentOffset + len + 1 >= buffer.length) { + byte[] oldBuffer = buffer; + int newLength = buffer.length * 2; + buffer = new byte[newLength]; + System.arraycopy(oldBuffer, 0, buffer, 0, oldBuffer.length); + ensureCapacity(len); + } + } + + public void reset() { + if (!(currentOffset > GameConstants.BUFFER_SIZE)) { + byte[] oldBuffer = buffer; + buffer = new byte[GameConstants.BUFFER_SIZE]; + for (int i = 0; i < currentOffset; i++) { + buffer[i] = oldBuffer[i]; + } + } + } + + public ISAACRandomGen packetEncryption = null; + +} diff --git a/2006Redone Server/src/redone/util/XStreamUtil.java b/2006Redone Server/src/com/rebotted/util/XStreamUtil.java similarity index 91% rename from 2006Redone Server/src/redone/util/XStreamUtil.java rename to 2006Redone Server/src/com/rebotted/util/XStreamUtil.java index 1a8c1c16..fbdf00b3 100644 --- a/2006Redone Server/src/redone/util/XStreamUtil.java +++ b/2006Redone Server/src/com/rebotted/util/XStreamUtil.java @@ -1,11 +1,11 @@ -package redone.util; +package com.rebotted.util; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; -import com.thoughtworks.xstream.XStream; -import redone.game.npcs.NPCDefinition; +import com.rebotted.game.npcs.NPCDefinition; +import com.thoughtworks.xstream.XStream; public class XStreamUtil { diff --git a/2006Redone Server/src/redone/world/GameObject.java b/2006Redone Server/src/com/rebotted/world/GameObject.java similarity index 89% rename from 2006Redone Server/src/redone/world/GameObject.java rename to 2006Redone Server/src/com/rebotted/world/GameObject.java index 84a33ae1..1ec60bb3 100644 --- a/2006Redone Server/src/redone/world/GameObject.java +++ b/2006Redone Server/src/com/rebotted/world/GameObject.java @@ -1,38 +1,38 @@ -package redone.world; - -public final class GameObject { - - private final int id; - private final int type; - private final int x; - private final int y; - private final int face; - - public GameObject(int id, int type, int x, int y, int face) { - this.id = id; - this.type = type; - this.x = x; - this.y = y; - this.face = face; - } - - public int id() { - return id; - } - - public int type() { - return type; - } - - public int x() { - return x; - } - - public int y() { - return y; - } - - public int getFace() { - return face; - } -} +package com.rebotted.world; + +public final class GameObject { + + private final int id; + private final int type; + private final int x; + private final int y; + private final int face; + + public GameObject(int id, int type, int x, int y, int face) { + this.id = id; + this.type = type; + this.x = x; + this.y = y; + this.face = face; + } + + public int id() { + return id; + } + + public int type() { + return type; + } + + public int x() { + return x; + } + + public int y() { + return y; + } + + public int getFace() { + return face; + } +} diff --git a/2006Redone Server/src/redone/world/GlobalDropsHandler.java b/2006Redone Server/src/com/rebotted/world/GlobalDropsHandler.java similarity index 83% rename from 2006Redone Server/src/redone/world/GlobalDropsHandler.java rename to 2006Redone Server/src/com/rebotted/world/GlobalDropsHandler.java index dcb6931c..0a8d5b91 100644 --- a/2006Redone Server/src/redone/world/GlobalDropsHandler.java +++ b/2006Redone Server/src/com/rebotted/world/GlobalDropsHandler.java @@ -1,365 +1,366 @@ -package redone.world; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.players.Client; -import redone.game.players.Player; -import redone.game.players.PlayerHandler; -import redone.util.Misc; - -/** - * Handles global drops which respawn after set amount of time when taken - * - * @author Stuart - */ -public class GlobalDropsHandler { - - /** - * time in seconds it takes for the item to respawn - */ - private static final int TIME_TO_RESPAWN = 20; - - /** - * holds all the objects - */ - private static List globalDrops = new ArrayList(); - - private static Set spawnedDrops = new HashSet<>(); - - /** - * loads the items - */ - public static void initialize() { - String Data; - BufferedReader Checker; - try { - Checker = new BufferedReader(new FileReader("./data/cfg/globaldrops.txt")); - while ((Data = Checker.readLine()) != null) { - if (Data.startsWith("#")) { - continue; - } - String[] args = Data.split(":"); - if(args.length == 5) { - globalDrops.add(new GlobalDrop(Integer.parseInt(args[0]), Integer.parseInt(args[1]), Integer.parseInt(args[2]), Integer.parseInt(args[3]), Integer.parseInt(args[4]))); - } else { - globalDrops.add(new GlobalDrop(Integer.parseInt(args[0]), Integer.parseInt(args[1]), Integer.parseInt(args[2]), Integer.parseInt(args[3]))); - } - } - Checker.close(); - } catch (Exception e) { - e.printStackTrace(); - } - Misc.println("Loaded " + globalDrops.size() + " global drops."); - - for (Player player : PlayerHandler.players) { - Client player2 = (Client) player; - if(player2 != null) { - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - for (GlobalDrop drop : globalDrops) { - if (drop.isTaken() && drop.isSpawned()) { - if (System.currentTimeMillis() - drop.getTakenAt() >= TIME_TO_RESPAWN * 1000) { - drop.setTaken(false); - if (player2.distanceToPoint(drop.getX(), drop.getY()) <= 60) { - player2.getActionSender().createGroundItem(drop.getId(), drop.getX(), drop.getY(), drop.getAmount(), drop.getHeight()); - spawnedDrops.add(drop); - } - - } - } - } - } - @Override - public void stop() { - - } - }, 1); - } - } - } - - public static void read() { - String Data; - BufferedReader Checker; - try { - Checker = new BufferedReader(new FileReader("./data/cfg/globaldrops.txt")); - while ((Data = Checker.readLine()) != null) { - if (Data.startsWith("#")) { - continue; - } - String[] args = Data.split(":"); - if(args.length == 5) { - globalDrops.add(new GlobalDrop(Integer.parseInt(args[0]), Integer.parseInt(args[1]), Integer.parseInt(args[2]), Integer.parseInt(args[3]), Integer.parseInt(args[4]))); - } else { - globalDrops.add(new GlobalDrop(Integer.parseInt(args[0]), Integer.parseInt(args[1]), Integer.parseInt(args[2]), Integer.parseInt(args[3]))); - } - } - Checker.close(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * See if a drop exists at the given place - * - * @param a - * item id - * @param b - * x cord - * @param c - * y cord - * @return return the statement - */ - private static GlobalDrop itemExists(int a, int b, int c) { - for (GlobalDrop drop : globalDrops) { - if (drop.getId() == a && drop.getX() == b && drop.getY() == c) { - return drop; - } - } - return null; - } - - public static boolean itemExists(int a, int b, int c, boolean yes) { - for (GlobalDrop drop : spawnedDrops) { - if (drop.getId() == a && drop.getX() == b && drop.getY() == c) { - return true; - } - } - return false; - } - - /** - * Pick up an item at the given location - * - * @param Player - * the Player - * @param a - * item id - * @param b - * cord x - * @param c - * cord y - */ - public static void pickup(Client Player, int a, int b, int c) { - GlobalDrop drop = itemExists(a, b, c); - if (drop == null) { - return; - } - if (drop.isTaken()) { - return; - } - if (Player.getItemAssistant().freeSlots() > 0) { - Player.getItemAssistant().addItem(drop.getId(), drop.getAmount()); - drop.setTakenAt(System.currentTimeMillis()); - drop.setTaken(true); - for (Player player : PlayerHandler.players) { - Client cl = (Client) player; - if (cl != null) { - cl.getActionSender().removeGroundItem(drop.getId(), drop.getX(), drop.getY(), drop.getAmount()); - spawnedDrops.remove(drop); - } - } - } - } - - /** - * Loads all the items when a player changes region - * - * @param Player - * the Player - */ - public static void load(Client player) { - for (GlobalDrop drop : globalDrops) { - if (!drop.isTaken() && !drop.isSpawned() && !itemExists(drop.getId(), drop.getX(), drop.getY(), true) && player.distanceToPoint(drop.getX(), drop.getY()) <= 60) { - player.getActionSender().createGroundItem(drop.getId(), drop.getX(), drop.getY(), drop.getAmount(), drop.getHeight()); - spawnedDrops.add(drop); - drop.setSpawned(true); - } - } - } - - public static void reset(Client player) { - for(GlobalDrop drop : globalDrops) { - if(player.distanceToPoint(drop.getX(), drop.getY()) <= 60) { - player.getActionSender().removeGroundItem(drop.getId(), drop.getX(), drop.getY(), drop.getAmount()); - } - } - spawnedDrops.clear(); - globalDrops.clear(); - read(); - for (GlobalDrop drop : globalDrops) { - if (!drop.isTaken() && !drop.isSpawned() && !itemExists(drop.getId(), drop.getX(), drop.getY(), true) && player.distanceToPoint(drop.getX(), drop.getY()) <= 60) { - player.getActionSender().createGroundItem(drop.getId(), drop.getX(), drop.getY(), drop.getAmount(), drop.getHeight()); - spawnedDrops.add(drop); - drop.setSpawned(true); - } - } - } - - /** - * Holds each drops data - * - * @author Stuart - */ - static class GlobalDrop { - - /** - * cord x - */ - int itemX; - /** - * cord y - */ - int itemY; - - private int height; - /** - * item id - */ - int id; - /** - * item amount - */ - int amount; - /** - * has the item been taken - */ - boolean taken = false; - - private boolean spawned = false; - - /** - * Time it was taken at - */ - long takenAt; - - /** - * Sets the drop arguments - * - * @param pickAxe - * item id - * @param b - * item amount - * @param player - * cord x - * @param d - * cord y - */ - - public GlobalDrop(int id, int amount, int itemX, int itemY) { - this.id = id; - this.amount = amount; - this.itemX = itemX; - this.itemY = itemY; - } - - public GlobalDrop(int id, int amount, int itemX, int itemY, int height) { - this.id = id; - this.amount = amount; - this.itemX = itemX; - this.itemY = itemY; - this.height = height; - } - - /** - * get cord x - * - * @return return the statement - */ - public int getX() { - return itemX; - } - - /** - * get cord x - * - * @return return the statement - */ - public int getY() { - return itemY; - } - - /** - * get the item id - * - * @return return the statement - */ - public int getId() { - return id; - } - - /** - * get the item amount - * - * @return return the statement - */ - public int getAmount() { - return amount; - } - - /** - * has the drop already been taken? - * - * @return return the statement - */ - public boolean isTaken() { - return taken; - } - - /** - * set if or not the drop has been taken - * - * @param a - * true yes false no - */ - public void setTaken(boolean a) { - taken = a; - } - - /** - * set the time it was picked up - * - * @param a - * the a - */ - public void setTakenAt(long a) { - takenAt = a; - } - - /** - * get the time it was taken at - * - * @return return the statement - */ - public long getTakenAt() { - return takenAt; - } - - public boolean isSpawned() { - return spawned; - } - - public void setSpawned(boolean spawned) { - this.spawned = spawned; - } - - public int getHeight() { - return height; - } - - public void setHeight(int height) { - this.height = height; - } - - } - -} +package com.rebotted.world; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerHandler; +import com.rebotted.util.Misc; + +/** + * Handles global drops which respawn after set amount of time when taken + * + * @author Stuart + */ +public class GlobalDropsHandler { + + /** + * time in seconds it takes for the item to respawn + */ + private static final int TIME_TO_RESPAWN = 20; + + /** + * holds all the objects + */ + private static List globalDrops = new ArrayList(); + + private static Set spawnedDrops = new HashSet<>(); + + /** + * loads the items + */ + public static void initialize() { + String Data; + BufferedReader Checker; + try { + Checker = new BufferedReader(new FileReader("./data/cfg/globaldrops.txt")); + while ((Data = Checker.readLine()) != null) { + if (Data.startsWith("#")) { + continue; + } + String[] args = Data.split(":"); + if(args.length == 5) { + globalDrops.add(new GlobalDrop(Integer.parseInt(args[0]), Integer.parseInt(args[1]), Integer.parseInt(args[2]), Integer.parseInt(args[3]), Integer.parseInt(args[4]))); + } else { + globalDrops.add(new GlobalDrop(Integer.parseInt(args[0]), Integer.parseInt(args[1]), Integer.parseInt(args[2]), Integer.parseInt(args[3]))); + } + } + Checker.close(); + } catch (Exception e) { + e.printStackTrace(); + } + Misc.println("Loaded " + globalDrops.size() + " global drops."); + + for (Player player : PlayerHandler.players) { + Client player2 = (Client) player; + if(player2 != null) { + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + for (GlobalDrop drop : globalDrops) { + if (drop.isTaken() && drop.isSpawned()) { + if (System.currentTimeMillis() - drop.getTakenAt() >= TIME_TO_RESPAWN * 1000) { + drop.setTaken(false); + if (player2.distanceToPoint(drop.getX(), drop.getY()) <= 60) { + player2.getPacketSender().createGroundItem(drop.getId(), drop.getX(), drop.getY(), drop.getAmount(), drop.getHeight()); + spawnedDrops.add(drop); + } + + } + } + } + } + @Override + public void stop() { + + } + }, 1); + } + } + } + + public static void read() { + String Data; + BufferedReader Checker; + try { + Checker = new BufferedReader(new FileReader("./data/cfg/globaldrops.txt")); + while ((Data = Checker.readLine()) != null) { + if (Data.startsWith("#")) { + continue; + } + String[] args = Data.split(":"); + if(args.length == 5) { + globalDrops.add(new GlobalDrop(Integer.parseInt(args[0]), Integer.parseInt(args[1]), Integer.parseInt(args[2]), Integer.parseInt(args[3]), Integer.parseInt(args[4]))); + } else { + globalDrops.add(new GlobalDrop(Integer.parseInt(args[0]), Integer.parseInt(args[1]), Integer.parseInt(args[2]), Integer.parseInt(args[3]))); + } + } + Checker.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * See if a drop exists at the given place + * + * @param a + * item id + * @param b + * x cord + * @param c + * y cord + * @return return the statement + */ + private static GlobalDrop itemExists(int a, int b, int c) { + for (GlobalDrop drop : globalDrops) { + if (drop.getId() == a && drop.getX() == b && drop.getY() == c) { + return drop; + } + } + return null; + } + + public static boolean itemExists(int a, int b, int c, boolean yes) { + for (GlobalDrop drop : spawnedDrops) { + if (drop.getId() == a && drop.getX() == b && drop.getY() == c) { + return true; + } + } + return false; + } + + /** + * Pick up an item at the given location + * + * @param player2 + * the Player + * @param a + * item id + * @param b + * cord x + * @param c + * cord y + */ + public static void pickup(Player player2, int a, int b, int c) { + GlobalDrop drop = itemExists(a, b, c); + if (drop == null) { + return; + } + if (drop.isTaken()) { + return; + } + if (player2.getItemAssistant().freeSlots() > 0) { + player2.getItemAssistant().addItem(drop.getId(), drop.getAmount()); + drop.setTakenAt(System.currentTimeMillis()); + drop.setTaken(true); + for (Player player : PlayerHandler.players) { + Client cl = (Client) player; + if (cl != null) { + cl.getPacketSender().removeGroundItem(drop.getId(), drop.getX(), drop.getY(), drop.getAmount()); + spawnedDrops.remove(drop); + } + } + } + } + + /** + * Loads all the items when a player changes region + * + * @param Player + * the Player + */ + public static void load(Client player) { + for (GlobalDrop drop : globalDrops) { + if (!drop.isTaken() && !drop.isSpawned() && !itemExists(drop.getId(), drop.getX(), drop.getY(), true) && player.distanceToPoint(drop.getX(), drop.getY()) <= 60) { + player.getPacketSender().createGroundItem(drop.getId(), drop.getX(), drop.getY(), drop.getAmount(), drop.getHeight()); + spawnedDrops.add(drop); + drop.setSpawned(true); + } + } + } + + public static void reset(Player c) { + for(GlobalDrop drop : globalDrops) { + if(c.distanceToPoint(drop.getX(), drop.getY()) <= 60) { + c.getPacketSender().removeGroundItem(drop.getId(), drop.getX(), drop.getY(), drop.getAmount()); + } + } + spawnedDrops.clear(); + globalDrops.clear(); + read(); + for (GlobalDrop drop : globalDrops) { + if (!drop.isTaken() && !drop.isSpawned() && !itemExists(drop.getId(), drop.getX(), drop.getY(), true) && c.distanceToPoint(drop.getX(), drop.getY()) <= 60) { + c.getPacketSender().createGroundItem(drop.getId(), drop.getX(), drop.getY(), drop.getAmount(), drop.getHeight()); + spawnedDrops.add(drop); + drop.setSpawned(true); + } + } + } + + /** + * Holds each drops data + * + * @author Stuart + */ + static class GlobalDrop { + + /** + * cord x + */ + int itemX; + /** + * cord y + */ + int itemY; + + private int height; + /** + * item id + */ + int id; + /** + * item amount + */ + int amount; + /** + * has the item been taken + */ + boolean taken = false; + + private boolean spawned = false; + + /** + * Time it was taken at + */ + long takenAt; + + /** + * Sets the drop arguments + * + * @param pickAxe + * item id + * @param b + * item amount + * @param player + * cord x + * @param d + * cord y + */ + + public GlobalDrop(int id, int amount, int itemX, int itemY) { + this.id = id; + this.amount = amount; + this.itemX = itemX; + this.itemY = itemY; + } + + public GlobalDrop(int id, int amount, int itemX, int itemY, int height) { + this.id = id; + this.amount = amount; + this.itemX = itemX; + this.itemY = itemY; + this.height = height; + } + + /** + * get cord x + * + * @return return the statement + */ + public int getX() { + return itemX; + } + + /** + * get cord x + * + * @return return the statement + */ + public int getY() { + return itemY; + } + + /** + * get the item id + * + * @return return the statement + */ + public int getId() { + return id; + } + + /** + * get the item amount + * + * @return return the statement + */ + public int getAmount() { + return amount; + } + + /** + * has the drop already been taken? + * + * @return return the statement + */ + public boolean isTaken() { + return taken; + } + + /** + * set if or not the drop has been taken + * + * @param a + * true yes false no + */ + public void setTaken(boolean a) { + taken = a; + } + + /** + * set the time it was picked up + * + * @param a + * the a + */ + public void setTakenAt(long a) { + takenAt = a; + } + + /** + * get the time it was taken at + * + * @return return the statement + */ + public long getTakenAt() { + return takenAt; + } + + public boolean isSpawned() { + return spawned; + } + + public void setSpawned(boolean spawned) { + this.spawned = spawned; + } + + public int getHeight() { + return height; + } + + public void setHeight(int height) { + this.height = height; + } + + } + +} diff --git a/2006Redone Server/src/redone/world/ItemHandler.java b/2006Redone Server/src/com/rebotted/world/ItemHandler.java similarity index 80% rename from 2006Redone Server/src/redone/world/ItemHandler.java rename to 2006Redone Server/src/com/rebotted/world/ItemHandler.java index 68d8b952..7291d80a 100644 --- a/2006Redone Server/src/redone/world/ItemHandler.java +++ b/2006Redone Server/src/com/rebotted/world/ItemHandler.java @@ -1,4 +1,4 @@ -package redone.world; +package com.rebotted.world; import java.io.BufferedReader; import java.io.File; @@ -9,15 +9,15 @@ import java.util.ArrayList; import java.util.List; import java.util.Scanner; -import redone.Constants; -import redone.game.items.GroundItem; -import redone.game.items.ItemAssistant; -import redone.game.items.ItemList; -import redone.game.players.Client; -import redone.game.players.Player; -import redone.game.players.PlayerHandler; -import redone.util.GameLogger; -import redone.util.Misc; +import com.rebotted.GameConstants; +import com.rebotted.game.items.GroundItem; +import com.rebotted.game.items.ItemAssistant; +import com.rebotted.game.items.ItemList; +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerHandler; +import com.rebotted.util.GameLogger; +import com.rebotted.util.Misc; /** * Handles ground items @@ -29,7 +29,7 @@ public class ItemHandler { public static final int HIDE_TICKS = 100; public ItemHandler() { - for (int i = 0; i < Constants.ITEM_LIMIT; i++) { + for (int i = 0; i < GameConstants.ITEM_LIMIT; i++) { ItemList[i] = null; } loadItemList("item.cfg"); @@ -84,7 +84,7 @@ public int itemAmount(String name, int itemId, int itemX, int itemY) { /** * Reloads any items if you enter a new region **/ - public void reloadItems(Client c) { + public void reloadItems(Player c) { for (GroundItem i : items) { if (c != null) { if (c.getItemAssistant().tradeable(i.getItemId()) @@ -92,18 +92,18 @@ public int itemAmount(String name, int itemId, int itemX, int itemY) { if (c.distanceToPoint(i.getItemX(), i.getItemY()) <= 60) { if (i.hideTicks > 0 && i.getName().equalsIgnoreCase(c.playerName)) { - c.getActionSender().removeGroundItem( + c.getPacketSender().removeGroundItem( i.getItemId(), i.getItemX(), i.getItemY(), i.getItemAmount()); - c.getActionSender().createGroundItem( + c.getPacketSender().createGroundItem( i.getItemId(), i.getItemX(), i.getItemY(), i.getItemAmount()); } if (i.hideTicks == 0) { - c.getActionSender().removeGroundItem( + c.getPacketSender().removeGroundItem( i.getItemId(), i.getItemX(), i.getItemY(), i.getItemAmount()); - c.getActionSender().createGroundItem( + c.getPacketSender().createGroundItem( i.getItemId(), i.getItemX(), i.getItemY(), i.getItemAmount()); } @@ -156,10 +156,10 @@ public int itemAmount(String name, int itemId, int itemX, int itemY) { { 4747, 4926 }, { 4749, 4968 }, { 4751, 4994 }, { 4753, 4980 }, { 4755, 4986 }, { 4757, 4992 }, { 4759, 4998 } }; - public void createGroundItem(Client player, int itemId, int itemX, int itemY, int itemAmount, int playerId) { + public void createGroundItem(Player c, int itemId, int itemX, int itemY, int itemAmount, int playerId) { if (itemId > 0) { if (itemId >= 2412 && itemId <= 2414) { - player.getActionSender().sendMessage("The cape vanishes as it touches the ground."); + c.getPacketSender().sendMessage("The cape vanishes as it touches the ground."); return; } if (itemId > 4705 && itemId < 4760) { @@ -170,26 +170,26 @@ public int itemAmount(String name, int itemId, int itemX, int itemY) { } } } - if (!redone.game.items.Item.itemStackable[itemId] && itemAmount > 0) { + if (!com.rebotted.game.items.Item.itemStackable[itemId] && itemAmount > 0) { for (int j = 0; j < itemAmount; j++) { - player.getActionSender().createGroundItem(itemId, itemX, itemY, 1); - GroundItem item = new GroundItem(itemId, itemX, itemY, player.getH(), 1, player.playerId, HIDE_TICKS, PlayerHandler.players[playerId].playerName); + c.getPacketSender().createGroundItem(itemId, itemX, itemY, 1); + GroundItem item = new GroundItem(itemId, itemX, itemY, c.getH(), 1, c.playerId, HIDE_TICKS, PlayerHandler.players[playerId].playerName); addItem(item); String itemName = ItemAssistant.getItemName(itemId).toLowerCase(); - if (player.isDead == false && itemId != 526) { - if (player.getPlayerAssistant().isPlayer()) { - GameLogger.writeLog(player.playerName, "dropitem", player.playerName + " dropped " + itemAmount + " " + itemName + " absX: " + player.absX + " absY: " + player.absY + ""); + if (c.isDead == false && itemId != 526) { + if (c.getPlayerAssistant().isPlayer()) { + GameLogger.writeLog(c.playerName, "dropitem", c.playerName + " dropped " + itemAmount + " " + itemName + " absX: " + c.absX + " absY: " + c.absY + ""); } } } } else { - player.getActionSender().createGroundItem(itemId, itemX, itemY, itemAmount); - GroundItem item = new GroundItem(itemId, itemX, itemY, player.getH(), itemAmount, player.playerId, HIDE_TICKS, PlayerHandler.players[playerId].playerName); + c.getPacketSender().createGroundItem(itemId, itemX, itemY, itemAmount); + GroundItem item = new GroundItem(itemId, itemX, itemY, c.getH(), itemAmount, c.playerId, HIDE_TICKS, PlayerHandler.players[playerId].playerName); addItem(item); String itemName = ItemAssistant.getItemName(itemId).toLowerCase(); - if (player.isDead == false && itemId != 526) { - if (player.getPlayerAssistant().isPlayer()) { - GameLogger.writeLog(player.playerName, "dropitem", player.playerName + " dropped " + itemAmount + " " + itemName + " absX: " + player.absX + " absY: " + player.absY + ""); + if (c.isDead == false && itemId != 526) { + if (c.getPlayerAssistant().isPlayer()) { + GameLogger.writeLog(c.playerName, "dropitem", c.playerName + " dropped " + itemAmount + " " + itemName + " absX: " + c.absX + " absY: " + c.absY + ""); } } } @@ -210,7 +210,7 @@ public int itemAmount(String name, int itemId, int itemX, int itemY) { continue; } if (person.distanceToPoint(i.getItemX(), i.getItemY()) <= 60) { - person.getActionSender().createGroundItem( + person.getPacketSender().createGroundItem( i.getItemId(), i.getItemX(), i.getItemY(), i.getItemAmount()); } @@ -224,7 +224,7 @@ public int itemAmount(String name, int itemId, int itemX, int itemY) { * Removing the ground item **/ - public void removeGroundItem(Client c, int itemId, int itemX, int itemY, boolean add) { + public void removeGroundItem(Player c, int itemId, int itemX, int itemY, boolean add) { for (GroundItem i : items) { if (i.getItemId() == itemId && i.getItemX() == itemX && i.getItemY() == itemY) { @@ -272,9 +272,9 @@ public int itemAmount(String name, int itemId, int itemX, int itemY) { * Remove item for just the item controller (item not global yet) **/ - public void removeControllersItem(GroundItem i, Client c, int itemId, + public void removeControllersItem(GroundItem i, Player c, int itemId, int itemX, int itemY, int itemAmount) { - c.getActionSender().removeGroundItem(itemId, itemX, itemY, + c.getPacketSender().removeGroundItem(itemId, itemX, itemY, itemAmount); removeItem(i); } @@ -290,7 +290,7 @@ public int itemAmount(String name, int itemId, int itemX, int itemY) { Client person = (Client) p; if (person != null) { if (person.distanceToPoint(itemX, itemY) <= 60) { - person.getActionSender().removeGroundItem(itemId, + person.getPacketSender().removeGroundItem(itemId, itemX, itemY, itemAmount); } } @@ -303,7 +303,7 @@ public int itemAmount(String name, int itemId, int itemX, int itemY) { * Item List **/ - public ItemList ItemList[] = new ItemList[Constants.ITEM_LIMIT]; + public ItemList ItemList[] = new ItemList[GameConstants.ITEM_LIMIT]; public void newItemList(int ItemId, String ItemName, String ItemDescription, double ShopValue, double LowAlch, double HighAlch, int Bonuses[]) { // first, search for a free slot @@ -345,7 +345,7 @@ public int itemAmount(String name, int itemId, int itemX, int itemY) { } public ItemList getItemList(int i) { - for (redone.game.items.ItemList element : ItemList) { + for (com.rebotted.game.items.ItemList element : ItemList) { if (element != null) { if (element.itemId == i) { return element; diff --git a/2006Redone Server/src/redone/world/ObjectHandler.java b/2006Redone Server/src/com/rebotted/world/ObjectHandler.java similarity index 85% rename from 2006Redone Server/src/redone/world/ObjectHandler.java rename to 2006Redone Server/src/com/rebotted/world/ObjectHandler.java index c85e95a5..38f72b5b 100644 --- a/2006Redone Server/src/redone/world/ObjectHandler.java +++ b/2006Redone Server/src/com/rebotted/world/ObjectHandler.java @@ -1,349 +1,347 @@ -package redone.world; - -import java.io.BufferedReader; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import redone.Server; -import redone.game.content.skills.core.Mining; -import redone.game.content.skills.core.Woodcutting; -import redone.game.objects.Objects; -import redone.game.players.Client; -import redone.game.players.Player; -import redone.game.players.PlayerHandler; -import redone.util.Misc; - -/** - * @author Sanity - */ - -public class ObjectHandler { - - public List globalObjects = new ArrayList(); - - public static List mapObjects = new ArrayList(); - public static List removedObjects = new ArrayList(); - - public ObjectHandler() { - loadGlobalObjects("./data/cfg/global-objects.cfg"); - // Ladders.loadGlobalLadders("./data/Ladders/AdvancedLadders.cfg"); - } - - public Objects getObjectByPosition(int x, int y) { - for (Objects o : globalObjects) { - for(int j = 0; j < globalObjects.size(); j++) { - globalObjects.get(j); - globalObjects.get(j); - if(o.objectX == x && o.objectY == y) { - return globalObjects.get(j); - } - } - } - return null; - } - - public void createAnObject(int id, int x, int y, int face) { - Objects OBJECT = new Objects(id, x, y, 0, face, 10, 0); - if (id == -1) { - removeObject(OBJECT); - } else { - addObject(OBJECT); - } - //Server.canLoadObjects = true; - Server.objectHandler.placeObject(OBJECT); - } - - - public void createAnObject(Client c, int id, int x, int y) { - Objects OBJECT = new Objects(id, x, y, c.heightLevel, 0, 10, 0); - if (id == -1) { - removeObject(OBJECT); - } else { - addObject(OBJECT); - } - Server.objectHandler.placeObject(OBJECT); - } - - public void createAnObject(Client c, int id, int x, int y, int face) { - Objects OBJECT = new Objects(id, x, y, 0, face, 10, 0); - if (id == -1) { - removeObject(OBJECT); - } else { - addObject(OBJECT); - } - Server.objectHandler.placeObject(OBJECT); - } - - public void createAnObject(int id, int x, int y) { - Objects OBJECT = new Objects(id, x, y, 0, 0, 10, 0); - if (id == -1) { - removeObject(OBJECT); - } else { - addObject(OBJECT); - } - Server.objectHandler.placeObject(OBJECT); - } - - /** - * Adds object to list - **/ - public void addObject(Objects object) { - globalObjects.add(object); - } - - /** - * Removes object from list - **/ - public void removeObject(Objects object) { - globalObjects.remove(object); - } - - /** - * Does object exist - **/ - public Objects objectExists(int objectX, int objectY, int objectHeight) { - for (Objects o : globalObjects) { - if (o.getObjectX() == objectX && o.getObjectY() == objectY - && o.getObjectHeight() == objectHeight) { - return o; - } - } - return null; - } - - /** - * Update objects when entering a new region or logging in - **/ - public void updateObjects(Client c) { - for (Objects o : globalObjects) { - if (c != null) { - if (c.heightLevel == 0 && o.objectTicks == 0 && c.distanceToPoint(o.getObjectX(), o.getObjectY()) <= 60) { - if (Woodcutting.playerTrees(c, o.getObjectId()) || Mining.rockExists(o.getObjectId())) { - c.getActionSender().object(o.getObjectId(), o.getObjectX(), o.getObjectY(), 0, o.getObjectFace(), o.getObjectType()); - } - } - if (c.heightLevel == o.getObjectHeight() && !Woodcutting.playerTrees(c, o.getObjectId()) && !Mining.rockExists(o.getObjectId()) && o.objectTicks == 0 && c.distanceToPoint(o.getObjectX(), o.getObjectY()) <= 60) { - c.getActionSender().object(o.getObjectId(), o.getObjectX(), o.getObjectY(), c.heightLevel, o.getObjectFace(), o.getObjectType()); - } - } - } - } - - /** - * Creates the object for anyone who is within 60 squares of the object - **/ - public void placeObject(Objects o) { - for (Player p : PlayerHandler.players) { - if (p != null) { - Client person = (Client) p; - if (person.heightLevel == o.getObjectHeight() - && o.objectTicks == 0) { - if (person.distanceToPoint(o.getObjectX(), - o.getObjectY()) <= 60) { - removeAllObjects(o); - globalObjects.add(o); - person.getActionSender().object( - o.getObjectId(), o.getObjectX(), - o.getObjectY(), o.getObjectFace(), - o.getObjectType()); - //Region.addObject(o.getObjectId(), o.getObjectX(), o.getObjectY(), o.getObjectHeight(), o.getObjectType(), o.getObjectFace(), true); - } - } - } - } - } - - public void removeAllObjects(Objects o) { - //Using Iterator for concurrency - globalObjects.removeIf(s -> s.getObjectX() == o.getObjectX() && - s.getObjectY() == o.getObjectY() && - s.getObjectHeight() == o.getObjectHeight()); - } - - public void process() { - for (int j = 0; j < globalObjects.size(); j++) { - if (globalObjects.get(j) != null) { - Objects o = globalObjects.get(j); - if (o.objectTicks > 0) { - o.objectTicks--; - } - if (o.objectTicks == 1) { - Objects deleteObject = objectExists(o.getObjectX(), - o.getObjectY(), o.getObjectHeight()); - removeObject(deleteObject); - o.objectTicks = 0; - placeObject(o); - removeObject(o); - if (isObelisk(o.objectId)) { - int index = getObeliskIndex(o.objectId); - if (activated[index]) { - activated[index] = false; - teleportObelisk(index); - } - } - } - } - - } - } - - public boolean loadGlobalObjects(String fileName) { - String line = ""; - String token = ""; - String token2 = ""; - String token2_2 = ""; - String[] token3 = new String[10]; - boolean EndOfFile = false; - BufferedReader objectFile = null; - try { - objectFile = new BufferedReader(new FileReader("./" + fileName)); - } catch (FileNotFoundException fileex) { - Misc.println(fileName + ": file not found."); - return false; - } - try { - line = objectFile.readLine(); - } catch (IOException ioexception) { - Misc.println(fileName + ": error loading file."); - try { - objectFile.close(); - } catch (IOException e) { - e.printStackTrace(); - } - return false; - } - while (EndOfFile == false && line != null) { - line = line.trim(); - int spot = line.indexOf("="); - if (spot > -1) { - token = line.substring(0, spot); - token = token.trim(); - token2 = line.substring(spot + 1); - token2 = token2.trim(); - token2_2 = token2.replaceAll("\t\t", "\t"); - token2_2 = token2_2.replaceAll("\t\t", "\t"); - token2_2 = token2_2.replaceAll("\t\t", "\t"); - token2_2 = token2_2.replaceAll("\t\t", "\t"); - token2_2 = token2_2.replaceAll("\t\t", "\t"); - token3 = token2_2.split("\t"); - if (token.equals("object")) { - Objects object = new Objects(Integer.parseInt(token3[0]), - Integer.parseInt(token3[1]), - Integer.parseInt(token3[2]), - Integer.parseInt(token3[3]), - Integer.parseInt(token3[4]), - Integer.parseInt(token3[5]), 0); - addObject(object); - } - } else { - if (line.equals("[ENDOFOBJECTLIST]")) { - try { - objectFile.close(); - } catch (IOException ioexception) { - } - //return true; - } - } - try { - line = objectFile.readLine(); - } catch (IOException ioexception1) { - EndOfFile = true; - } - } - try { - objectFile.close(); - } catch (IOException e) { - e.printStackTrace(); - } - return false; - } - - public final int IN_USE_ID = 14825; - - public boolean isObelisk(int id) { - for (int obeliskId : obeliskIds) { - if (obeliskId == id) { - return true; - } - } - return false; - } - - public int[] obeliskIds = { 14829, 14830, 111235, 14828, 14826, 14831 }; - public int[][] obeliskCoords = { { 3154, 3618 }, { 3225, 3665 }, - { 3033, 3730 }, { 3104, 3792 }, { 2978, 3864 }, { 3305, 3914 } }; - public boolean[] activated = { false, false, false, false, false, false }; - - public void startObelisk(int obeliskId) { - int index = getObeliskIndex(obeliskId); - if (index >= 0) { - if (!activated[index]) { - activated[index] = true; - Objects obby1 = new Objects(14825, obeliskCoords[index][0], - obeliskCoords[index][1], 0, -1, 10, 0); - Objects obby2 = new Objects(14825, obeliskCoords[index][0] + 4, - obeliskCoords[index][1], 0, -1, 10, 0); - Objects obby3 = new Objects(14825, obeliskCoords[index][0], - obeliskCoords[index][1] + 4, 0, -1, 10, 0); - Objects obby4 = new Objects(14825, obeliskCoords[index][0] + 4, - obeliskCoords[index][1] + 4, 0, -1, 10, 0); - addObject(obby1); - addObject(obby2); - addObject(obby3); - addObject(obby4); - Server.objectHandler.placeObject(obby1); - Server.objectHandler.placeObject(obby2); - Server.objectHandler.placeObject(obby3); - Server.objectHandler.placeObject(obby4); - Objects obby5 = new Objects(obeliskIds[index], - obeliskCoords[index][0], obeliskCoords[index][1], 0, - -1, 10, 10); - Objects obby6 = new Objects(obeliskIds[index], - obeliskCoords[index][0] + 4, obeliskCoords[index][1], - 0, -1, 10, 10); - Objects obby7 = new Objects(obeliskIds[index], - obeliskCoords[index][0], obeliskCoords[index][1] + 4, - 0, -1, 10, 10); - Objects obby8 = new Objects(obeliskIds[index], - obeliskCoords[index][0] + 4, - obeliskCoords[index][1] + 4, 0, -1, 10, 10); - addObject(obby5); - addObject(obby6); - addObject(obby7); - addObject(obby8); - } - } - } - - public int getObeliskIndex(int id) { - for (int j = 0; j < obeliskIds.length; j++) { - if (obeliskIds[j] == id) { - return j; - } - } - return -1; - } - - public void teleportObelisk(int port) { - int random = Misc.random(5); - while (random == port) { - random = Misc.random(5); - } - for (Player player : PlayerHandler.players) { - if (player != null) { - Client c = (Client) player; - if (Misc.goodDistance(c.getX(), c.getY(), - obeliskCoords[port][0] + 2, obeliskCoords[port][1] + 2, - 1)) { - c.getPlayerAssistant().startTeleport( - obeliskCoords[random][0] + 2, - obeliskCoords[random][1] + 2, 0, "null"); - } - } - } - } -} +package com.rebotted.world; + +import java.io.BufferedReader; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import com.rebotted.GameEngine; +import com.rebotted.game.content.skills.core.Mining; +import com.rebotted.game.content.skills.core.Woodcutting; +import com.rebotted.game.objects.Objects; +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerHandler; +import com.rebotted.util.Misc; + +/** + * @author Sanity + */ + +public class ObjectHandler { + + public List globalObjects = new ArrayList(); + + public static List mapObjects = new ArrayList(); + public static List removedObjects = new ArrayList(); + + public ObjectHandler() { + loadGlobalObjects("./data/cfg/global-objects.cfg"); + } + + public Objects getObjectByPosition(int x, int y) { + for (Objects o : globalObjects) { + for(int j = 0; j < globalObjects.size(); j++) { + globalObjects.get(j); + globalObjects.get(j); + if(o.objectX == x && o.objectY == y) { + return globalObjects.get(j); + } + } + } + return null; + } + + public void createAnObject(int id, int x, int y, int face) { + Objects OBJECT = new Objects(id, x, y, 0, face, 10, 0); + if (id == -1) { + removeObject(OBJECT); + } else { + addObject(OBJECT); + } + //Server.canLoadObjects = true; + GameEngine.objectHandler.placeObject(OBJECT); + } + + + public void createAnObject(Player c, int id, int x, int y) { + Objects OBJECT = new Objects(id, x, y, c.heightLevel, 0, 10, 0); + if (id == -1) { + removeObject(OBJECT); + } else { + addObject(OBJECT); + } + GameEngine.objectHandler.placeObject(OBJECT); + } + + public void createAnObject(Player player, int id, int x, int y, int face) { + Objects OBJECT = new Objects(id, x, y, 0, face, 10, 0); + if (id == -1) { + removeObject(OBJECT); + } else { + addObject(OBJECT); + } + GameEngine.objectHandler.placeObject(OBJECT); + } + + public void createAnObject(int id, int x, int y) { + Objects OBJECT = new Objects(id, x, y, 0, 0, 10, 0); + if (id == -1) { + removeObject(OBJECT); + } else { + addObject(OBJECT); + } + GameEngine.objectHandler.placeObject(OBJECT); + } + + /** + * Adds object to list + **/ + public void addObject(Objects object) { + globalObjects.add(object); + } + + /** + * Removes object from list + **/ + public void removeObject(Objects object) { + globalObjects.remove(object); + } + + /** + * Does object exist + **/ + public Objects objectExists(int objectX, int objectY, int objectHeight) { + for (Objects o : globalObjects) { + if (o.getObjectX() == objectX && o.getObjectY() == objectY + && o.getObjectHeight() == objectHeight) { + return o; + } + } + return null; + } + + /** + * Update objects when entering a new region or logging in + **/ + public void updateObjects(Player c) { + for (Objects o : globalObjects) { + if (c != null) { + if (c.heightLevel == 0 && o.objectTicks == 0 && c.distanceToPoint(o.getObjectX(), o.getObjectY()) <= 60) { + if (Woodcutting.playerTrees(c, o.getObjectId()) || Mining.rockExists(o.getObjectId())) { + c.getPacketSender().object(o.getObjectId(), o.getObjectX(), o.getObjectY(), 0, o.getObjectFace(), o.getObjectType()); + } + } + if (c.heightLevel == o.getObjectHeight() && !Woodcutting.playerTrees(c, o.getObjectId()) && !Mining.rockExists(o.getObjectId()) && o.objectTicks == 0 && c.distanceToPoint(o.getObjectX(), o.getObjectY()) <= 60) { + c.getPacketSender().object(o.getObjectId(), o.getObjectX(), o.getObjectY(), c.heightLevel, o.getObjectFace(), o.getObjectType()); + } + } + } + } + + /** + * Creates the object for anyone who is within 60 squares of the object + **/ + public void placeObject(Objects o) { + for (Player p : PlayerHandler.players) { + if (p != null) { + Client person = (Client) p; + if (person.heightLevel == o.getObjectHeight() + && o.objectTicks == 0) { + if (person.distanceToPoint(o.getObjectX(), + o.getObjectY()) <= 60) { + removeAllObjects(o); + globalObjects.add(o); + person.getPacketSender().object( + o.getObjectId(), o.getObjectX(), + o.getObjectY(), o.getObjectFace(), + o.getObjectType()); + //Region.addObject(o.getObjectId(), o.getObjectX(), o.getObjectY(), o.getObjectHeight(), o.getObjectType(), o.getObjectFace(), true); + } + } + } + } + } + + public void removeAllObjects(Objects o) { + //Using Iterator for concurrency + globalObjects.removeIf(s -> s.getObjectX() == o.getObjectX() && + s.getObjectY() == o.getObjectY() && + s.getObjectHeight() == o.getObjectHeight()); + } + + public void process() { + for (int j = 0; j < globalObjects.size(); j++) { + if (globalObjects.get(j) != null) { + Objects o = globalObjects.get(j); + if (o.objectTicks > 0) { + o.objectTicks--; + } + if (o.objectTicks == 1) { + Objects deleteObject = objectExists(o.getObjectX(), + o.getObjectY(), o.getObjectHeight()); + removeObject(deleteObject); + o.objectTicks = 0; + placeObject(o); + removeObject(o); + if (isObelisk(o.objectId)) { + int index = getObeliskIndex(o.objectId); + if (activated[index]) { + activated[index] = false; + teleportObelisk(index); + } + } + } + } + + } + } + + public boolean loadGlobalObjects(String fileName) { + String line = ""; + String token = ""; + String token2 = ""; + String token2_2 = ""; + String[] token3 = new String[10]; + boolean EndOfFile = false; + BufferedReader objectFile = null; + try { + objectFile = new BufferedReader(new FileReader("./" + fileName)); + } catch (FileNotFoundException fileex) { + Misc.println(fileName + ": file not found."); + return false; + } + try { + line = objectFile.readLine(); + } catch (IOException ioexception) { + Misc.println(fileName + ": error loading file."); + try { + objectFile.close(); + } catch (IOException e) { + e.printStackTrace(); + } + return false; + } + while (EndOfFile == false && line != null) { + line = line.trim(); + int spot = line.indexOf("="); + if (spot > -1) { + token = line.substring(0, spot); + token = token.trim(); + token2 = line.substring(spot + 1); + token2 = token2.trim(); + token2_2 = token2.replaceAll("\t\t", "\t"); + token2_2 = token2_2.replaceAll("\t\t", "\t"); + token2_2 = token2_2.replaceAll("\t\t", "\t"); + token2_2 = token2_2.replaceAll("\t\t", "\t"); + token2_2 = token2_2.replaceAll("\t\t", "\t"); + token3 = token2_2.split("\t"); + if (token.equals("object")) { + Objects object = new Objects(Integer.parseInt(token3[0]), + Integer.parseInt(token3[1]), + Integer.parseInt(token3[2]), + Integer.parseInt(token3[3]), + Integer.parseInt(token3[4]), + Integer.parseInt(token3[5]), 0); + addObject(object); + } + } else { + if (line.equals("[ENDOFOBJECTLIST]")) { + try { + objectFile.close(); + } catch (IOException ioexception) { + } + //return true; + } + } + try { + line = objectFile.readLine(); + } catch (IOException ioexception1) { + EndOfFile = true; + } + } + try { + objectFile.close(); + } catch (IOException e) { + e.printStackTrace(); + } + return false; + } + + public final int IN_USE_ID = 14825; + + public boolean isObelisk(int id) { + for (int obeliskId : obeliskIds) { + if (obeliskId == id) { + return true; + } + } + return false; + } + + public int[] obeliskIds = { 14829, 14830, 111235, 14828, 14826, 14831 }; + public int[][] obeliskCoords = { { 3154, 3618 }, { 3225, 3665 }, + { 3033, 3730 }, { 3104, 3792 }, { 2978, 3864 }, { 3305, 3914 } }; + public boolean[] activated = { false, false, false, false, false, false }; + + public void startObelisk(int obeliskId) { + int index = getObeliskIndex(obeliskId); + if (index >= 0) { + if (!activated[index]) { + activated[index] = true; + Objects obby1 = new Objects(14825, obeliskCoords[index][0], + obeliskCoords[index][1], 0, -1, 10, 0); + Objects obby2 = new Objects(14825, obeliskCoords[index][0] + 4, + obeliskCoords[index][1], 0, -1, 10, 0); + Objects obby3 = new Objects(14825, obeliskCoords[index][0], + obeliskCoords[index][1] + 4, 0, -1, 10, 0); + Objects obby4 = new Objects(14825, obeliskCoords[index][0] + 4, + obeliskCoords[index][1] + 4, 0, -1, 10, 0); + addObject(obby1); + addObject(obby2); + addObject(obby3); + addObject(obby4); + GameEngine.objectHandler.placeObject(obby1); + GameEngine.objectHandler.placeObject(obby2); + GameEngine.objectHandler.placeObject(obby3); + GameEngine.objectHandler.placeObject(obby4); + Objects obby5 = new Objects(obeliskIds[index], + obeliskCoords[index][0], obeliskCoords[index][1], 0, + -1, 10, 10); + Objects obby6 = new Objects(obeliskIds[index], + obeliskCoords[index][0] + 4, obeliskCoords[index][1], + 0, -1, 10, 10); + Objects obby7 = new Objects(obeliskIds[index], + obeliskCoords[index][0], obeliskCoords[index][1] + 4, + 0, -1, 10, 10); + Objects obby8 = new Objects(obeliskIds[index], + obeliskCoords[index][0] + 4, + obeliskCoords[index][1] + 4, 0, -1, 10, 10); + addObject(obby5); + addObject(obby6); + addObject(obby7); + addObject(obby8); + } + } + } + + public int getObeliskIndex(int id) { + for (int j = 0; j < obeliskIds.length; j++) { + if (obeliskIds[j] == id) { + return j; + } + } + return -1; + } + + public void teleportObelisk(int port) { + int random = Misc.random(5); + while (random == port) { + random = Misc.random(5); + } + for (Player player : PlayerHandler.players) { + if (player != null) { + Client c = (Client) player; + if (Misc.goodDistance(c.getX(), c.getY(), + obeliskCoords[port][0] + 2, obeliskCoords[port][1] + 2, + 1)) { + c.getPlayerAssistant().startTeleport( + obeliskCoords[random][0] + 2, + obeliskCoords[random][1] + 2, 0, "null"); + } + } + } + } +} diff --git a/2006Redone Server/src/redone/world/ObjectManager.java b/2006Redone Server/src/com/rebotted/world/ObjectManager.java similarity index 70% rename from 2006Redone Server/src/redone/world/ObjectManager.java rename to 2006Redone Server/src/com/rebotted/world/ObjectManager.java index fae85803..77d5e59d 100644 --- a/2006Redone Server/src/redone/world/ObjectManager.java +++ b/2006Redone Server/src/com/rebotted/world/ObjectManager.java @@ -1,287 +1,287 @@ -package redone.world; - -import java.util.ArrayList; - -import redone.Server; -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.content.quests.QuestAssistant; -import redone.game.globalworldobjects.DoubleGates; -import redone.game.objects.Object; -import redone.game.objects.Objects; -import redone.game.objects.impl.FlourMill; -import redone.game.players.Client; -import redone.game.players.Player; -import redone.game.players.PlayerHandler; -import redone.util.Misc; -import redone.world.clip.Region; - -/** - * @author Sanity - */ - -public class ObjectManager { - - public ArrayList objects = new ArrayList(); - private final ArrayList toRemove = new ArrayList(); - - public static void objectTicks(final Client player, final int objectId, final int objectX, final int objectY, final int objectH, final int face, final int objectType, int ticks) { - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - player.getActionSender().object(objectId, objectX, objectY, objectH, face, objectType); - container.stop(); - } - - @Override - public void stop() { - - } - }, ticks); - } - - public static void singleGateTicks(final Client player, final int objectId, final int objectX, final int objectY, final int x1, final int y1, final int objectH, final int face, int ticks) { - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (DoubleGates.gateAmount == 0) { - container.stop(); - return; - } - Server.objectHandler.placeObject(new Objects(-1, x1, y1, objectH, face, 0, 0)); - Server.objectHandler.placeObject(new Objects(objectId, objectX, objectY, objectH, face, 0, 0)); - container.stop(); - } - - @Override - public void stop() { - if (DoubleGates.gateAmount == 1) { - DoubleGates.gateAmount = 0; - } - } - }, ticks); - } - - public static void doubleGateTicks(final Client player, final int objectId, final int objectX, final int objectY, - final int x1, final int y1, final int x2, final int y2, - final int objectH, final int face, int ticks) { - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (DoubleGates.gateAmount == 0) { - container.stop(); - return; - } - Server.objectHandler.placeObject(new Objects(-1, x1, y1, objectH, face, 0, 0)); - Server.objectHandler.placeObject(new Objects(-1, x2, y2, objectH, face, 0, 0)); - Server.objectHandler.placeObject(new Objects(objectId, objectX, objectY, objectH, face, 0, 0)); - container.stop(); - } - - @Override - public void stop() { - if (DoubleGates.gateAmount == 2) { - DoubleGates.gateAmount = 1; - } else if (DoubleGates.gateAmount == 1) { - DoubleGates.gateAmount = 0; - } - } - }, ticks); - } - - - public boolean objectExists(final int x, final int y) { - for (Object o : objects) { - if (o.objectX == x && o.objectY == y) { - return true; - } - } - return false; - } - - public void process() { - for (final Object o : objects) { - if (o.tick > 0) { - o.tick--; - } else { - updateObject(o); - toRemove.add(o); - } - } - for (final Object o : toRemove) { - /*if (o.objectId == 2732) { - for (final Player player : PlayerHandler.players) { - if (player != null) { - final Client c = (Client) player; - Server.itemHandler.createGroundItem(c, 592, o.objectX, o.objectY, 1, c.playerId); - if (c.playerIsCooking) { - Cooking.resetCooking(c); - } - } - } - }*/ - if (isObelisk(o.newId)) { - final int index = getObeliskIndex(o.newId); - if (activated[index]) { - activated[index] = false; - teleportObelisk(index); - } - } - objects.remove(o); - } - toRemove.clear(); - } - - public void removeObject(int x, int y) { - for (Player player : PlayerHandler.players) { - if (player != null) { - Client c = (Client) player; - c.getActionSender().object(-1, x, y, 0, 10); - } - } - } - - public void updateObject(Object o) { - for (Player player : PlayerHandler.players) { - if (player != null) { - Client c = (Client) player; - if (loadForPlayer(o, c)) { - c.getActionSender().object(o.newId, o.objectX, o.objectY, o.face, o.type); - } - } - } - } - - public void placeObject(Object o) { - for (Player player : PlayerHandler.players) { - if (player != null) { - Client c = (Client) player; - if (c.distanceToPoint(o.objectX, o.objectY) <= 60) { - c.getActionSender().object(o.objectId, o.objectX, o.objectY, o.face, o.type); - } - } - } - } - - public Object getObject(int x, int y, int height) { - for (Object o : objects) { - if (o.objectX == x && o.objectY == y && o.height == height) { - return o; - } - } - return null; - } - - public void loadObjects(Client c) { - if (c == null) { - return; - } - for (Object o : objects) { - if (loadForPlayer(o, c)) { - c.getActionSender().object(o.objectId, o.objectX, o.objectY, o.face, o.type); - } - } - loadCustomSpawns(c); - } - - public void loadCustomSpawns(Client client) { - client.getActionSender().checkObjectSpawn(2474, 3233, 9312, 0, 10); - if (client.rope == true) { - client.getActionSender().object(3828, 3227, 3108, 0, 0, 10); - Region.addObject(3828, 3227, 3108, 0, 10, 0, false); - } - if (client.rope2 == true) { - client.getActionSender().object(3828, 3509, 9497, 2, 0, 10); - Region.addObject(3828, 3509, 9497, 2, 10, 0, false); - } - if (client.questPoints >= QuestAssistant.MAXIMUM_QUESTPOINTS) { - client.getActionSender().checkObjectSpawn(2403, 3219, 9623, 3, 10);// RFD - } else { - client.getActionSender().checkObjectSpawn(-1, 3219, 9623, 3, 10);// RFD - } - // CHEST - if (client.flourAmount > 0 && client.heightLevel == 0) { - client.getActionSender().checkObjectSpawn(FlourMill.FULL_FLOUR_BIN, 3166, 3306, 0, 10); - } - } - - public final int IN_USE_ID = 14825; - - public boolean isObelisk(int id) { - for (int obeliskId : obeliskIds) { - if (obeliskId == id) { - return true; - } - } - return false; - } - - public int[] obeliskIds = { 14829, 14830, 14827, 14828, 14826, 14831 }; - public int[][] obeliskCoords = { { 3154, 3618 }, { 3225, 3665 }, - { 3033, 3730 }, { 3104, 3792 }, { 2978, 3864 }, { 3305, 3914 } }; - public boolean[] activated = { false, false, false, false, false, false }; - - public void startObelisk(int obeliskId) { - int index = getObeliskIndex(obeliskId); - if (index >= 0) { - if (!activated[index]) { - activated[index] = true; - addObject(new Object(14825, obeliskCoords[index][0], - obeliskCoords[index][1], 0, -1, 10, obeliskId, 16)); - addObject(new Object(14825, obeliskCoords[index][0] + 4, - obeliskCoords[index][1], 0, -1, 10, obeliskId, 16)); - addObject(new Object(14825, obeliskCoords[index][0], - obeliskCoords[index][1] + 4, 0, -1, 10, obeliskId, 16)); - addObject(new Object(14825, obeliskCoords[index][0] + 4, - obeliskCoords[index][1] + 4, 0, -1, 10, obeliskId, 16)); - } - } - } - - public int getObeliskIndex(int id) { - for (int j = 0; j < obeliskIds.length; j++) { - if (obeliskIds[j] == id) { - return j; - } - } - return -1; - } - - public void teleportObelisk(int port) { - int random = Misc.random(5); - while (random == port) { - random = Misc.random(5); - } - for (Player player : PlayerHandler.players) { - if (player != null) { - Client c = (Client) player; - int xOffset = c.absX - obeliskCoords[port][0]; - int yOffset = c.absY - obeliskCoords[port][1]; - if (c.goodDistance(c.getX(), c.getY(), - obeliskCoords[port][0] + 2, obeliskCoords[port][1] + 2, - 1)) { - c.getPlayerAssistant().startTeleport2( - obeliskCoords[random][0] + xOffset, - obeliskCoords[random][1] + yOffset, 0); - } - } - } - } - - public boolean loadForPlayer(Object o, Client c) { - if (o == null || c == null) { - return false; - } - - return c.distanceToPoint(o.objectX, o.objectY) <= 60 && c.heightLevel == o.height; - } - - public void addObject(Object o) { - if (getObject(o.objectX, o.objectY, o.height) == null) { - objects.add(o); - placeObject(o); - } - } - -} +package com.rebotted.world; + +import java.util.ArrayList; + +import com.rebotted.GameEngine; +import com.rebotted.event.CycleEvent; +import com.rebotted.event.CycleEventContainer; +import com.rebotted.event.CycleEventHandler; +import com.rebotted.game.content.quests.QuestAssistant; +import com.rebotted.game.globalworldobjects.DoubleGates; +import com.rebotted.game.objects.Object; +import com.rebotted.game.objects.Objects; +import com.rebotted.game.objects.impl.FlourMill; +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; +import com.rebotted.game.players.PlayerHandler; +import com.rebotted.util.Misc; +import com.rebotted.world.clip.Region; + +/** + * @author Sanity + */ + +public class ObjectManager { + + public ArrayList objects = new ArrayList(); + private final ArrayList toRemove = new ArrayList(); + + public static void objectTicks(final Player player, final int objectId, final int objectX, final int objectY, final int objectH, final int face, final int objectType, int ticks) { + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + player.getPacketSender().object(objectId, objectX, objectY, objectH, face, objectType); + container.stop(); + } + + @Override + public void stop() { + + } + }, ticks); + } + + public static void singleGateTicks(final Player player, final int objectId, final int objectX, final int objectY, final int x1, final int y1, final int objectH, final int face, int ticks) { + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (DoubleGates.gateAmount == 0) { + container.stop(); + return; + } + GameEngine.objectHandler.placeObject(new Objects(-1, x1, y1, objectH, face, 0, 0)); + GameEngine.objectHandler.placeObject(new Objects(objectId, objectX, objectY, objectH, face, 0, 0)); + container.stop(); + } + + @Override + public void stop() { + if (DoubleGates.gateAmount == 1) { + DoubleGates.gateAmount = 0; + } + } + }, ticks); + } + + public static void doubleGateTicks(final Player player, final int objectId, final int objectX, final int objectY, + final int x1, final int y1, final int x2, final int y2, + final int objectH, final int face, int ticks) { + CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (DoubleGates.gateAmount == 0) { + container.stop(); + return; + } + GameEngine.objectHandler.placeObject(new Objects(-1, x1, y1, objectH, face, 0, 0)); + GameEngine.objectHandler.placeObject(new Objects(-1, x2, y2, objectH, face, 0, 0)); + GameEngine.objectHandler.placeObject(new Objects(objectId, objectX, objectY, objectH, face, 0, 0)); + container.stop(); + } + + @Override + public void stop() { + if (DoubleGates.gateAmount == 2) { + DoubleGates.gateAmount = 1; + } else if (DoubleGates.gateAmount == 1) { + DoubleGates.gateAmount = 0; + } + } + }, ticks); + } + + + public boolean objectExists(final int x, final int y) { + for (Object o : objects) { + if (o.objectX == x && o.objectY == y) { + return true; + } + } + return false; + } + + public void process() { + for (final Object o : objects) { + if (o.tick > 0) { + o.tick--; + } else { + updateObject(o); + toRemove.add(o); + } + } + for (final Object o : toRemove) { + /*if (o.objectId == 2732) { + for (final Player player : PlayerHandler.players) { + if (player != null) { + final Client c = (Client) player; + Server.itemHandler.createGroundItem(c, 592, o.objectX, o.objectY, 1, c.playerId); + if (c.playerIsCooking) { + Cooking.resetCooking(c); + } + } + } + }*/ + if (isObelisk(o.newId)) { + final int index = getObeliskIndex(o.newId); + if (activated[index]) { + activated[index] = false; + teleportObelisk(index); + } + } + objects.remove(o); + } + toRemove.clear(); + } + + public void removeObject(int x, int y) { + for (Player player : PlayerHandler.players) { + if (player != null) { + Client c = (Client) player; + c.getPacketSender().object(-1, x, y, 0, 10); + } + } + } + + public void updateObject(Object o) { + for (Player player : PlayerHandler.players) { + if (player != null) { + Client c = (Client) player; + if (loadForPlayer(o, c)) { + c.getPacketSender().object(o.newId, o.objectX, o.objectY, o.face, o.type); + } + } + } + } + + public void placeObject(Object o) { + for (Player player : PlayerHandler.players) { + if (player != null) { + Client c = (Client) player; + if (c.distanceToPoint(o.objectX, o.objectY) <= 60) { + c.getPacketSender().object(o.objectId, o.objectX, o.objectY, o.face, o.type); + } + } + } + } + + public Object getObject(int x, int y, int height) { + for (Object o : objects) { + if (o.objectX == x && o.objectY == y && o.height == height) { + return o; + } + } + return null; + } + + public void loadObjects(Player c) { + if (c == null) { + return; + } + for (Object o : objects) { + if (loadForPlayer(o, c)) { + c.getPacketSender().object(o.objectId, o.objectX, o.objectY, o.face, o.type); + } + } + loadCustomSpawns(c); + } + + public void loadCustomSpawns(Player c) { + c.getPacketSender().checkObjectSpawn(2474, 3233, 9312, 0, 10); + if (c.rope == true) { + c.getPacketSender().object(3828, 3227, 3108, 0, 0, 10); + Region.addObject(3828, 3227, 3108, 0, 10, 0, false); + } + if (c.rope2 == true) { + c.getPacketSender().object(3828, 3509, 9497, 2, 0, 10); + Region.addObject(3828, 3509, 9497, 2, 10, 0, false); + } + if (c.questPoints >= QuestAssistant.MAXIMUM_QUESTPOINTS) { + c.getPacketSender().checkObjectSpawn(2403, 3219, 9623, 3, 10);// RFD + } else { + c.getPacketSender().checkObjectSpawn(-1, 3219, 9623, 3, 10);// RFD + } + // CHEST + if (c.flourAmount > 0 && c.heightLevel == 0) { + c.getPacketSender().checkObjectSpawn(FlourMill.FULL_FLOUR_BIN, 3166, 3306, 0, 10); + } + } + + public final int IN_USE_ID = 14825; + + public boolean isObelisk(int id) { + for (int obeliskId : obeliskIds) { + if (obeliskId == id) { + return true; + } + } + return false; + } + + public int[] obeliskIds = { 14829, 14830, 14827, 14828, 14826, 14831 }; + public int[][] obeliskCoords = { { 3154, 3618 }, { 3225, 3665 }, + { 3033, 3730 }, { 3104, 3792 }, { 2978, 3864 }, { 3305, 3914 } }; + public boolean[] activated = { false, false, false, false, false, false }; + + public void startObelisk(int obeliskId) { + int index = getObeliskIndex(obeliskId); + if (index >= 0) { + if (!activated[index]) { + activated[index] = true; + addObject(new Object(14825, obeliskCoords[index][0], + obeliskCoords[index][1], 0, -1, 10, obeliskId, 16)); + addObject(new Object(14825, obeliskCoords[index][0] + 4, + obeliskCoords[index][1], 0, -1, 10, obeliskId, 16)); + addObject(new Object(14825, obeliskCoords[index][0], + obeliskCoords[index][1] + 4, 0, -1, 10, obeliskId, 16)); + addObject(new Object(14825, obeliskCoords[index][0] + 4, + obeliskCoords[index][1] + 4, 0, -1, 10, obeliskId, 16)); + } + } + } + + public int getObeliskIndex(int id) { + for (int j = 0; j < obeliskIds.length; j++) { + if (obeliskIds[j] == id) { + return j; + } + } + return -1; + } + + public void teleportObelisk(int port) { + int random = Misc.random(5); + while (random == port) { + random = Misc.random(5); + } + for (Player player : PlayerHandler.players) { + if (player != null) { + Client c = (Client) player; + int xOffset = c.absX - obeliskCoords[port][0]; + int yOffset = c.absY - obeliskCoords[port][1]; + if (c.goodDistance(c.getX(), c.getY(), + obeliskCoords[port][0] + 2, obeliskCoords[port][1] + 2, + 1)) { + c.getPlayerAssistant().startTeleport2( + obeliskCoords[random][0] + xOffset, + obeliskCoords[random][1] + yOffset, 0); + } + } + } + } + + public boolean loadForPlayer(Object o, Player c) { + if (o == null || c == null) { + return false; + } + + return c.distanceToPoint(o.objectX, o.objectY) <= 60 && c.heightLevel == o.height; + } + + public void addObject(Object o) { + if (getObject(o.objectX, o.objectY, o.height) == null) { + objects.add(o); + placeObject(o); + } + } + +} diff --git a/2006Redone Server/src/redone/world/Tile.java b/2006Redone Server/src/com/rebotted/world/Tile.java similarity index 89% rename from 2006Redone Server/src/redone/world/Tile.java rename to 2006Redone Server/src/com/rebotted/world/Tile.java index 82f6a489..71f1dcc4 100644 --- a/2006Redone Server/src/redone/world/Tile.java +++ b/2006Redone Server/src/com/rebotted/world/Tile.java @@ -1,34 +1,34 @@ -package redone.world; - -public class Tile { - - private int[] pointer = new int[3]; - - public Tile(int x, int y, int z) { - this.pointer[0] = x; - this.pointer[1] = y; - this.pointer[2] = z; - } - - public Tile(int x, int y) { - this.pointer[0] = x; - this.pointer[1] = y; - } - - public int[] getTile() { - return pointer; - } - - public int getTileX() { - return pointer[0]; - } - - public int getTileY() { - return pointer[1]; - } - - public int getTileHeight() { - return pointer[2]; - } - +package com.rebotted.world; + +public class Tile { + + private int[] pointer = new int[3]; + + public Tile(int x, int y, int z) { + this.pointer[0] = x; + this.pointer[1] = y; + this.pointer[2] = z; + } + + public Tile(int x, int y) { + this.pointer[0] = x; + this.pointer[1] = y; + } + + public int[] getTile() { + return pointer; + } + + public int getTileX() { + return pointer[0]; + } + + public int getTileY() { + return pointer[1]; + } + + public int getTileHeight() { + return pointer[2]; + } + } \ No newline at end of file diff --git a/2006Redone Server/src/redone/world/TileControl.java b/2006Redone Server/src/com/rebotted/world/TileControl.java similarity index 93% rename from 2006Redone Server/src/redone/world/TileControl.java rename to 2006Redone Server/src/com/rebotted/world/TileControl.java index 8b4a093f..c764e8fb 100644 --- a/2006Redone Server/src/redone/world/TileControl.java +++ b/2006Redone Server/src/com/rebotted/world/TileControl.java @@ -1,161 +1,161 @@ -package redone.world; - -import redone.game.npcs.Npc; -import redone.game.npcs.NpcSize; -import redone.game.players.Client; - -public class TileControl { - - public static Tile generate(int x, int y, int z) { - return new Tile(x, y, z); - } - - public static Tile[] getTiles(Client client) { - - int size = 1, tileCount = 0; - - Tile[] tiles = new Tile[size * size]; - - if (tiles.length == 1) - tiles[0] = generate(client.absX, client.absY, client.heightLevel); - else { - for (int x = 0; x < size; x++) - for (int y = 0; y < size; y++) - tiles[tileCount++] = generate(client.absX + x, client.absY + y, client.heightLevel); - } - return tiles; - } - - public static Tile[] getTiles(Npc npc) { - - int size = 1, tileCount = 0; - - size = NpcSize.getNPCSize(npc.npcType); - Tile[] tiles = new Tile[size * size]; - - if (tiles.length == 1) - tiles[0] = generate(npc.absX, npc.absY, npc.heightLevel); - else { - for (int x = 0; x < size; x++) - for (int y = 0; y < size; y++) - tiles[tileCount++] = generate(npc.absX + x, npc.absY + y, npc.heightLevel); - } - return tiles; - } - - public static int calculateDistance(Client client, Client following) { - - Tile[] tiles = getTiles(client); - - int[] location = currentLocation(client); - int[] pointer = new int[tiles.length]; - - int lowestCount = 20, count = 0; - - for (Tile newTiles : tiles) { - if (newTiles.getTile() == location) - pointer[count++] = 0; - else - pointer[count++] = calculateDistance(newTiles, following); - } - for (int i = 0; i < pointer.length; i++) - if (pointer[i] < lowestCount) - lowestCount = pointer[i]; - - return lowestCount; - } - - public static int calculateDistance(Npc npc, Client following) { - - Tile[] tiles = getTiles(npc); - - int[] location = currentLocation(npc); - int[] pointer = new int[tiles.length]; - - int lowestCount = 20, count = 0; - - for (Tile newTiles : tiles) { - if (newTiles.getTile() == location) - pointer[count++] = 0; - else - pointer[count++] = calculateDistance(newTiles, following); - } - for (int i = 0; i < pointer.length; i++) - if (pointer[i] < lowestCount) - lowestCount = pointer[i]; - - return lowestCount; - } - - public static int calculateDistance(Client client, Npc npc) { - - Tile[] tiles = getTiles(client); - - int[] location = currentLocation(client); - int[] pointer = new int[tiles.length]; - - int lowestCount = 20, count = 0; - - for (Tile newTiles : tiles) { - if (newTiles.getTile() == location) - pointer[count++] = 0; - else - pointer[count++] = calculateDistance(newTiles, npc); - } - for (int i = 0; i < pointer.length; i++) - if (pointer[i] < lowestCount) - lowestCount = pointer[i]; - - return lowestCount; - } - - public static int calculateDistance(Tile location, Client other) { - int X = Math.abs(location.getTile()[0] - other.absX); - int Y = Math.abs(location.getTile()[1] - other.absY); - return X > Y ? X : Y; - } - - public static int calculateDistance(Tile location, Npc other) { - int X = Math.abs(location.getTile()[0] - other.absX); - int Y = Math.abs(location.getTile()[1] - other.absY); - return X > Y ? X : Y; - } - - public static int calculateDistance(int[] location, int[] other) { - int X = Math.abs(location[0] - other[0]); - int Y = Math.abs(location[1] - other[1]); - return X > Y ? X : Y; - } - - public static int[] currentLocation(Client client) { - int[] currentLocation = new int[3]; - if (client != null) { - currentLocation[0] = client.absX; - currentLocation[1] = client.absY; - currentLocation[2] = client.heightLevel; - } - return currentLocation; - } - - public static int[] currentLocation(Npc npc) { - int[] currentLocation = new int[3]; - if (npc != null) { - currentLocation[0] = npc.absX; - currentLocation[1] = npc.absY; - currentLocation[2] = npc.heightLevel; - } - return currentLocation; - } - - public static int[] currentLocation(Tile tileLocation) { - - int[] currentLocation = new int[3]; - - if (tileLocation != null) { - currentLocation[0] = tileLocation.getTile()[0]; - currentLocation[1] = tileLocation.getTile()[1]; - currentLocation[2] = tileLocation.getTile()[2]; - } - return currentLocation; - } +package com.rebotted.world; + +import com.rebotted.game.npcs.Npc; +import com.rebotted.game.npcs.NpcSize; +import com.rebotted.game.players.Client; + +public class TileControl { + + public static Tile generate(int x, int y, int z) { + return new Tile(x, y, z); + } + + public static Tile[] getTiles(Client client) { + + int size = 1, tileCount = 0; + + Tile[] tiles = new Tile[size * size]; + + if (tiles.length == 1) + tiles[0] = generate(client.absX, client.absY, client.heightLevel); + else { + for (int x = 0; x < size; x++) + for (int y = 0; y < size; y++) + tiles[tileCount++] = generate(client.absX + x, client.absY + y, client.heightLevel); + } + return tiles; + } + + public static Tile[] getTiles(Npc npc) { + + int size = 1, tileCount = 0; + + size = NpcSize.getNPCSize(npc.npcType); + Tile[] tiles = new Tile[size * size]; + + if (tiles.length == 1) + tiles[0] = generate(npc.absX, npc.absY, npc.heightLevel); + else { + for (int x = 0; x < size; x++) + for (int y = 0; y < size; y++) + tiles[tileCount++] = generate(npc.absX + x, npc.absY + y, npc.heightLevel); + } + return tiles; + } + + public static int calculateDistance(Client client, Client following) { + + Tile[] tiles = getTiles(client); + + int[] location = currentLocation(client); + int[] pointer = new int[tiles.length]; + + int lowestCount = 20, count = 0; + + for (Tile newTiles : tiles) { + if (newTiles.getTile() == location) + pointer[count++] = 0; + else + pointer[count++] = calculateDistance(newTiles, following); + } + for (int i = 0; i < pointer.length; i++) + if (pointer[i] < lowestCount) + lowestCount = pointer[i]; + + return lowestCount; + } + + public static int calculateDistance(Npc npc, Client following) { + + Tile[] tiles = getTiles(npc); + + int[] location = currentLocation(npc); + int[] pointer = new int[tiles.length]; + + int lowestCount = 20, count = 0; + + for (Tile newTiles : tiles) { + if (newTiles.getTile() == location) + pointer[count++] = 0; + else + pointer[count++] = calculateDistance(newTiles, following); + } + for (int i = 0; i < pointer.length; i++) + if (pointer[i] < lowestCount) + lowestCount = pointer[i]; + + return lowestCount; + } + + public static int calculateDistance(Client client, Npc npc) { + + Tile[] tiles = getTiles(client); + + int[] location = currentLocation(client); + int[] pointer = new int[tiles.length]; + + int lowestCount = 20, count = 0; + + for (Tile newTiles : tiles) { + if (newTiles.getTile() == location) + pointer[count++] = 0; + else + pointer[count++] = calculateDistance(newTiles, npc); + } + for (int i = 0; i < pointer.length; i++) + if (pointer[i] < lowestCount) + lowestCount = pointer[i]; + + return lowestCount; + } + + public static int calculateDistance(Tile location, Client other) { + int X = Math.abs(location.getTile()[0] - other.absX); + int Y = Math.abs(location.getTile()[1] - other.absY); + return X > Y ? X : Y; + } + + public static int calculateDistance(Tile location, Npc other) { + int X = Math.abs(location.getTile()[0] - other.absX); + int Y = Math.abs(location.getTile()[1] - other.absY); + return X > Y ? X : Y; + } + + public static int calculateDistance(int[] location, int[] other) { + int X = Math.abs(location[0] - other[0]); + int Y = Math.abs(location[1] - other[1]); + return X > Y ? X : Y; + } + + public static int[] currentLocation(Client client) { + int[] currentLocation = new int[3]; + if (client != null) { + currentLocation[0] = client.absX; + currentLocation[1] = client.absY; + currentLocation[2] = client.heightLevel; + } + return currentLocation; + } + + public static int[] currentLocation(Npc npc) { + int[] currentLocation = new int[3]; + if (npc != null) { + currentLocation[0] = npc.absX; + currentLocation[1] = npc.absY; + currentLocation[2] = npc.heightLevel; + } + return currentLocation; + } + + public static int[] currentLocation(Tile tileLocation) { + + int[] currentLocation = new int[3]; + + if (tileLocation != null) { + currentLocation[0] = tileLocation.getTile()[0]; + currentLocation[1] = tileLocation.getTile()[1]; + currentLocation[2] = tileLocation.getTile()[2]; + } + return currentLocation; + } } \ No newline at end of file diff --git a/2006Redone Server/src/redone/world/clip/ByteStream.java b/2006Redone Server/src/com/rebotted/world/clip/ByteStream.java similarity index 93% rename from 2006Redone Server/src/redone/world/clip/ByteStream.java rename to 2006Redone Server/src/com/rebotted/world/clip/ByteStream.java index fa19c34b..7e396f30 100644 --- a/2006Redone Server/src/redone/world/clip/ByteStream.java +++ b/2006Redone Server/src/com/rebotted/world/clip/ByteStream.java @@ -1,95 +1,95 @@ -package redone.world.clip; - -public class ByteStream { - - private final byte[] buffer; - private int offset; - - public ByteStream(byte[] buffer) { - this.buffer = buffer; - offset = 0; - } - - public void skip(int length) { - offset += length; - } - - public void setOffset(int position) { - offset = position; - } - - public void setOffset(long position) { - offset = (int) position; - } - - public int length() { - return buffer.length; - } - - public byte getByte() { - return buffer[offset++]; - } - - public int getUByte() { - return buffer[offset++] & 0xff; - } - - public int getShort() { - int val = (getByte() << 8) + getByte(); - if (val > 32767) { - val -= 0x10000; - } - return val; - } - - public int getUShort() { - return (getUByte() << 8) + getUByte(); - } - - public int getInt() { - return (getUByte() << 24) + (getUByte() << 16) + (getUByte() << 8) - + getUByte(); - } - - public long getLong() { - return (getUByte() << 56) + (getUByte() << 48) + (getUByte() << 40) - + (getUByte() << 32) + (getUByte() << 24) + (getUByte() << 16) - + (getUByte() << 8) + getUByte(); - } - - public int getUSmart() { - int i = buffer[offset] & 0xff; - if (i < 128) { - return getUByte(); - } else { - return getUShort() - 32768; - } - } - - public String getNString() { - int i = offset; - while (buffer[offset++] != 0) { - ; - } - return new String(buffer, i, offset - i - 1); - } - - public byte[] getBytes() { - int i = offset; - while (buffer[offset++] != 10) { - ; - } - byte abyte0[] = new byte[offset - i - 1]; - System.arraycopy(buffer, i, abyte0, i - i, offset - 1 - i); - return abyte0; - } - - public byte[] read(int length) { - byte[] b = new byte[length]; - for (int i = 0; i < length; i++) { - b[i] = buffer[offset++]; - } - return b; - } - -} +package com.rebotted.world.clip; + +public class ByteStream { + + private final byte[] buffer; + private int offset; + + public ByteStream(byte[] buffer) { + this.buffer = buffer; + offset = 0; + } + + public void skip(int length) { + offset += length; + } + + public void setOffset(int position) { + offset = position; + } + + public void setOffset(long position) { + offset = (int) position; + } + + public int length() { + return buffer.length; + } + + public byte getByte() { + return buffer[offset++]; + } + + public int getUByte() { + return buffer[offset++] & 0xff; + } + + public int getShort() { + int val = (getByte() << 8) + getByte(); + if (val > 32767) { + val -= 0x10000; + } + return val; + } + + public int getUShort() { + return (getUByte() << 8) + getUByte(); + } + + public int getInt() { + return (getUByte() << 24) + (getUByte() << 16) + (getUByte() << 8) + + getUByte(); + } + + public long getLong() { + return (getUByte() << 56) + (getUByte() << 48) + (getUByte() << 40) + + (getUByte() << 32) + (getUByte() << 24) + (getUByte() << 16) + + (getUByte() << 8) + getUByte(); + } + + public int getUSmart() { + int i = buffer[offset] & 0xff; + if (i < 128) { + return getUByte(); + } else { + return getUShort() - 32768; + } + } + + public String getNString() { + int i = offset; + while (buffer[offset++] != 0) { + ; + } + return new String(buffer, i, offset - i - 1); + } + + public byte[] getBytes() { + int i = offset; + while (buffer[offset++] != 10) { + ; + } + byte abyte0[] = new byte[offset - i - 1]; + System.arraycopy(buffer, i, abyte0, i - i, offset - 1 - i); + return abyte0; + } + + public byte[] read(int length) { + byte[] b = new byte[length]; + for (int i = 0; i < length; i++) { + b[i] = buffer[offset++]; + } + return b; + } + +} diff --git a/2006Redone Server/src/redone/world/clip/ByteStreamExt.java b/2006Redone Server/src/com/rebotted/world/clip/ByteStreamExt.java similarity index 94% rename from 2006Redone Server/src/redone/world/clip/ByteStreamExt.java rename to 2006Redone Server/src/com/rebotted/world/clip/ByteStreamExt.java index 448a46ca..9a5bc0d4 100644 --- a/2006Redone Server/src/redone/world/clip/ByteStreamExt.java +++ b/2006Redone Server/src/com/rebotted/world/clip/ByteStreamExt.java @@ -1,102 +1,102 @@ -package redone.world.clip; - -public final class ByteStreamExt { - - public void skip(int length) { - currentOffset += length; - } - - public ByteStreamExt(byte abyte0[]) { - buffer = abyte0; - currentOffset = 0; - } - - public int readUnsignedByte() { - return buffer[currentOffset++] & 0xff; - } - - public byte readSignedByte() { - return buffer[currentOffset++]; - } - - public int readUnsignedWord() { - currentOffset += 2; - return ((buffer[currentOffset - 2] & 0xff) << 8) - + (buffer[currentOffset - 1] & 0xff); - } - - public int readSignedWord() { - currentOffset += 2; - int i = ((buffer[currentOffset - 2] & 0xff) << 8) - + (buffer[currentOffset - 1] & 0xff); - if (i > 32767) { - i -= 0x10000; - } - return i; - } - - public int read3Bytes() { - currentOffset += 3; - return ((buffer[currentOffset - 3] & 0xff) << 16) - + ((buffer[currentOffset - 2] & 0xff) << 8) - + (buffer[currentOffset - 1] & 0xff); - } - - public int readR3Bytes() { - currentOffset += 3; - return ((buffer[currentOffset - 1] & 0xff) << 16) - + ((buffer[currentOffset - 2] & 0xff) << 8) - + (buffer[currentOffset - 3] & 0xff); - } - - public int readDWord() { - currentOffset += 4; - return ((buffer[currentOffset - 4] & 0xff) << 24) - + ((buffer[currentOffset - 3] & 0xff) << 16) - + ((buffer[currentOffset - 2] & 0xff) << 8) - + (buffer[currentOffset - 1] & 0xff); - } - - public long readQWord() { - long l = readDWord() & 0xffffffffL; - long l1 = readDWord() & 0xffffffffL; - return (l << 32) + l1; - } - - public String readString() { - int i = currentOffset; - while (buffer[currentOffset++] != 10) { - ; - } - return new String(buffer, i, currentOffset - i - 1); - } - - public String readNewString() { - int i = currentOffset; - while (buffer[currentOffset++] != 0) { - ; - } - return new String(buffer, i, currentOffset - i - 1); - } - - public byte[] readBytes() { - int i = currentOffset; - while (buffer[currentOffset++] != 10) { - ; - } - byte abyte0[] = new byte[currentOffset - i - 1]; - System.arraycopy(buffer, i, abyte0, i - i, currentOffset - 1 - i); - return abyte0; - } - - public void readBytes(int i, int j, byte abyte0[]) { - for (int l = j; l < j + i; l++) { - abyte0[l] = buffer[currentOffset++]; - } - } - - public byte buffer[]; - public int currentOffset; - - // removed useless static initializer -} +package com.rebotted.world.clip; + +public final class ByteStreamExt { + + public void skip(int length) { + currentOffset += length; + } + + public ByteStreamExt(byte abyte0[]) { + buffer = abyte0; + currentOffset = 0; + } + + public int readUnsignedByte() { + return buffer[currentOffset++] & 0xff; + } + + public byte readSignedByte() { + return buffer[currentOffset++]; + } + + public int readUnsignedWord() { + currentOffset += 2; + return ((buffer[currentOffset - 2] & 0xff) << 8) + + (buffer[currentOffset - 1] & 0xff); + } + + public int readSignedWord() { + currentOffset += 2; + int i = ((buffer[currentOffset - 2] & 0xff) << 8) + + (buffer[currentOffset - 1] & 0xff); + if (i > 32767) { + i -= 0x10000; + } + return i; + } + + public int read3Bytes() { + currentOffset += 3; + return ((buffer[currentOffset - 3] & 0xff) << 16) + + ((buffer[currentOffset - 2] & 0xff) << 8) + + (buffer[currentOffset - 1] & 0xff); + } + + public int readR3Bytes() { + currentOffset += 3; + return ((buffer[currentOffset - 1] & 0xff) << 16) + + ((buffer[currentOffset - 2] & 0xff) << 8) + + (buffer[currentOffset - 3] & 0xff); + } + + public int readDWord() { + currentOffset += 4; + return ((buffer[currentOffset - 4] & 0xff) << 24) + + ((buffer[currentOffset - 3] & 0xff) << 16) + + ((buffer[currentOffset - 2] & 0xff) << 8) + + (buffer[currentOffset - 1] & 0xff); + } + + public long readQWord() { + long l = readDWord() & 0xffffffffL; + long l1 = readDWord() & 0xffffffffL; + return (l << 32) + l1; + } + + public String readString() { + int i = currentOffset; + while (buffer[currentOffset++] != 10) { + ; + } + return new String(buffer, i, currentOffset - i - 1); + } + + public String readNewString() { + int i = currentOffset; + while (buffer[currentOffset++] != 0) { + ; + } + return new String(buffer, i, currentOffset - i - 1); + } + + public byte[] readBytes() { + int i = currentOffset; + while (buffer[currentOffset++] != 10) { + ; + } + byte abyte0[] = new byte[currentOffset - i - 1]; + System.arraycopy(buffer, i, abyte0, i - i, currentOffset - 1 - i); + return abyte0; + } + + public void readBytes(int i, int j, byte abyte0[]) { + for (int l = j; l < j + i; l++) { + abyte0[l] = buffer[currentOffset++]; + } + } + + public byte buffer[]; + public int currentOffset; + + // removed useless static initializer +} diff --git a/2006Redone Server/src/redone/world/clip/MemoryArchive.java b/2006Redone Server/src/com/rebotted/world/clip/MemoryArchive.java similarity index 92% rename from 2006Redone Server/src/redone/world/clip/MemoryArchive.java rename to 2006Redone Server/src/com/rebotted/world/clip/MemoryArchive.java index dbe88a0e..05a70485 100644 --- a/2006Redone Server/src/redone/world/clip/MemoryArchive.java +++ b/2006Redone Server/src/com/rebotted/world/clip/MemoryArchive.java @@ -1,35 +1,35 @@ -package redone.world.clip; - -public class MemoryArchive { - - private final ByteStream cache; - private final ByteStream index; - private static final int INDEX_DATA_CHUNK_SIZE = 12; - - public MemoryArchive(ByteStream cache, ByteStream index) { - this.cache = cache; - this.index = index; - } - - public byte[] get(int dataIndex) { - try { - if (index.length() < dataIndex * INDEX_DATA_CHUNK_SIZE) { - return null; - } - index.setOffset(dataIndex * INDEX_DATA_CHUNK_SIZE); - long fileOffset = index.getLong(); - int fileSize = index.getInt(); - cache.setOffset(fileOffset); - byte[] buffer = cache.read(fileSize); - return buffer; - } catch (Exception e) { - e.printStackTrace(); - return null; - } - } - - public int contentSize() { - return index.length() / 12; - } - -} +package com.rebotted.world.clip; + +public class MemoryArchive { + + private final ByteStream cache; + private final ByteStream index; + private static final int INDEX_DATA_CHUNK_SIZE = 12; + + public MemoryArchive(ByteStream cache, ByteStream index) { + this.cache = cache; + this.index = index; + } + + public byte[] get(int dataIndex) { + try { + if (index.length() < dataIndex * INDEX_DATA_CHUNK_SIZE) { + return null; + } + index.setOffset(dataIndex * INDEX_DATA_CHUNK_SIZE); + long fileOffset = index.getLong(); + int fileSize = index.getInt(); + cache.setOffset(fileOffset); + byte[] buffer = cache.read(fileSize); + return buffer; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + public int contentSize() { + return index.length() / 12; + } + +} diff --git a/2006Redone Server/src/redone/world/clip/ObjectDef.java b/2006Redone Server/src/com/rebotted/world/clip/ObjectDef.java similarity index 95% rename from 2006Redone Server/src/redone/world/clip/ObjectDef.java rename to 2006Redone Server/src/com/rebotted/world/clip/ObjectDef.java index 01dad46c..c5ca0cb4 100644 --- a/2006Redone Server/src/redone/world/clip/ObjectDef.java +++ b/2006Redone Server/src/com/rebotted/world/clip/ObjectDef.java @@ -1,316 +1,316 @@ -package redone.world.clip; - -public final class ObjectDef { - - public static ObjectDef getObjectDef(int i) { - for (int j = 0; j < 20; j++) { - if (cache[j].type == i) { - return cache[j]; - } - } - - cacheIndex = (cacheIndex + 1) % 20; - ObjectDef class46 = cache[cacheIndex]; - class46.type = i; - class46.setDefaults(); - byte[] buffer = archive.get(i); - if (buffer != null && buffer.length > 0) { - class46.readValues(new ByteStreamExt(buffer)); - } - return class46; - } - - private void setDefaults() { - anIntArray773 = null; - anIntArray776 = null; - name = null; - description = null; - modifiedModelColors = null; - originalModelColors = null; - anInt744 = 1; - anInt761 = 1; - aBoolean767 = true; - aBoolean757 = true; - hasActions = false; - aBoolean762 = false; - aBoolean764 = false; - anInt781 = -1; - anInt775 = 16; - actions = null; - anInt746 = -1; - anInt758 = -1; - aBoolean779 = true; - anInt768 = 0; - aBoolean736 = false; - anInt774 = -1; - anInt749 = -1; - childrenIDs = null; - } - - public static void loadConfig() { - archive = new MemoryArchive(new ByteStream(getBuffer("loc.dat")), - new ByteStream(getBuffer("loc.idx"))); - cache = new ObjectDef[20]; - for (int k = 0; k < 20; k++) { - cache[k] = new ObjectDef(); - } - System.out.println("[ObjectDef] DONE LOADING OBJECT CONFIGURATION"); - } - - public static byte[] getBuffer(String s) { - try { - java.io.File f = new java.io.File("./data/world/object/" + s); - if (!f.exists()) { - return null; - } - byte[] buffer = new byte[(int) f.length()]; - java.io.DataInputStream dis = new java.io.DataInputStream( - new java.io.FileInputStream(f)); - dis.readFully(buffer); - dis.close(); - return buffer; - } catch (Exception e) { - } - return null; - } - - private void readValues(ByteStreamExt stream) { - int flag = -1; - do { - int type = stream.readUnsignedByte(); - if (type == 0) { - break; - } - if (type == 1) { - int len = stream.readUnsignedByte(); - if (len > 0) { - if (anIntArray773 == null || lowMem) { - anIntArray776 = new int[len]; - anIntArray773 = new int[len]; - for (int k1 = 0; k1 < len; k1++) { - anIntArray773[k1] = stream.readUnsignedWord(); - anIntArray776[k1] = stream.readUnsignedByte(); - } - } else { - stream.currentOffset += len * 3; - } - } - } else if (type == 2) { - name = stream.readNewString(); - } else if (type == 5) { - int len = stream.readUnsignedByte(); - if (len > 0) { - if (anIntArray773 == null || lowMem) { - anIntArray776 = null; - anIntArray773 = new int[len]; - for (int l1 = 0; l1 < len; l1++) { - anIntArray773[l1] = stream.readUnsignedWord(); - } - } else { - stream.currentOffset += len * 2; - } - } - } else if (type == 14) { - anInt744 = stream.readUnsignedByte(); - } else if (type == 15) { - anInt761 = stream.readUnsignedByte(); - } else if (type == 17) { - aBoolean767 = false; - } else if (type == 18) { - aBoolean757 = false; - } else if (type == 19) { - hasActions = stream.readUnsignedByte() == 1; - } else if (type == 21) { - aBoolean762 = true; - } else if (type == 22) { - } else if (type == 23) { - aBoolean764 = true; - } else if (type == 24) { - anInt781 = stream.readUnsignedWord(); - if (anInt781 == 65535) { - anInt781 = -1; - } - } else if (type == 27) { - continue; - } else if (type == 28) { - anInt775 = stream.readUnsignedByte(); - } else if (type == 29) { - stream.readSignedByte(); - } else if (type == 39) { - stream.readSignedByte(); - } else if (type >= 30 && type < 39) { - if (actions == null) { - actions = new String[5]; - } - actions[type - 30] = stream.readNewString(); - hasActions = true; - if (actions[type - 30].equalsIgnoreCase("hidden")) { - actions[type - 30] = null; - } - } else if (type == 40) { - int i1 = stream.readUnsignedByte(); - modifiedModelColors = new int[i1]; - originalModelColors = new int[i1]; - for (int i2 = 0; i2 < i1; i2++) { - modifiedModelColors[i2] = stream.readUnsignedWord(); - originalModelColors[i2] = stream.readUnsignedWord(); - } - - } else if (type == 41) { - int l = stream.readUnsignedByte(); - stream.skip(l * 4); - } else if (type == 42) { - int l = stream.readUnsignedByte(); - stream.skip(l); - } else if (type == 60) { - anInt746 = stream.readUnsignedWord(); - } else if (type == 62) { - } else if (type == 64) { - aBoolean779 = false; - } else if (type == 65) { - stream.readUnsignedWord(); - } else if (type == 66) { - stream.readUnsignedWord(); - } else if (type == 67) { - stream.readUnsignedWord(); - } else if (type == 68) { - anInt758 = stream.readUnsignedWord(); - } else if (type == 69) { - anInt768 = stream.readUnsignedByte(); - } else if (type == 70) { - stream.readSignedWord(); - } else if (type == 71) { - stream.readSignedWord(); - } else if (type == 72) { - stream.readSignedWord(); - } else if (type == 73) { - aBoolean736 = true; - } else if (type == 74) { - } else if (type == 75) { - stream.readUnsignedByte(); - } else if (type == 77 || type == 92) { - anInt774 = stream.readUnsignedWord(); - if (anInt774 == 65535) { - anInt774 = -1; - } - anInt749 = stream.readUnsignedWord(); - if (anInt749 == 65535) { - anInt749 = -1; - } - int endChild = -1; - if (type == 92) { - endChild = stream.readUnsignedWord(); - if (endChild == 65535) { - endChild = -1; - } - } - int j1 = stream.readUnsignedByte(); - childrenIDs = new int[j1 + 2]; - for (int j2 = 0; j2 <= j1; j2++) { - childrenIDs[j2] = stream.readUnsignedWord(); - if (childrenIDs[j2] == 65535) { - childrenIDs[j2] = -1; - } - } - childrenIDs[j1 + 1] = endChild; - } else if (type == 78) { - stream.skip(3); - } else if (type == 79) { - stream.skip(5); - int l = stream.readUnsignedByte(); - stream.skip(l * 2); - } else if (type == 81) { - stream.skip(1); - } else if (type == 82 || type == 88 || type == 89 || type == 90 - || type == 91 || type == 94 || type == 95 || type == 96 - || type == 97) { - continue; - } else if (type == 93) { - stream.skip(2); - } else if (type == 249) { - int l = stream.readUnsignedByte(); - for (int ii = 0; ii < l; ii++) { - boolean b = stream.readUnsignedByte() == 1; - stream.skip(3); - if (b) { - stream.readNewString(); - } else { - stream.skip(4); - } - } - } else { - System.out.println("Unknown config: " + type); - } - } while (true); - if (flag == -1) { - hasActions = anIntArray773 != null - && (anIntArray776 == null || anIntArray776[0] == 10); - if (actions != null) { - hasActions = true; - } - } - } - - private ObjectDef() { - type = -1; - } - - public boolean hasActions() { - return hasActions; - } - - public boolean hasName() { - return name != null && name.length() > 1; - } - - public boolean solid() { - return aBoolean779; - } - - public int xLength() { - return anInt744; - } - - public int yLength() { - return anInt761; - } - - public boolean aBoolean767() { - return aBoolean767; - } - - public boolean isUnshootable() { - return aBoolean757; - } - - public boolean aBoolean736; - public String name; - public int anInt744; - public int anInt746; - private int[] originalModelColors; - public int anInt749; - public static boolean lowMem; - public int type; - public boolean aBoolean757; - public int anInt758; - public int childrenIDs[]; - public int anInt761; - public boolean aBoolean762; - public boolean aBoolean764; - public boolean aBoolean767; - public int anInt768; - private static int cacheIndex; - private int[] anIntArray773; - public int anInt774; - public int anInt775; - private int[] anIntArray776; - public byte description[]; - public boolean hasActions; - public boolean aBoolean779; - public int anInt781; - private static ObjectDef[] cache; - private int[] modifiedModelColors; - public String actions[]; - private static MemoryArchive archive; - -} +package com.rebotted.world.clip; + +public final class ObjectDef { + + public static ObjectDef getObjectDef(int i) { + for (int j = 0; j < 20; j++) { + if (cache[j].type == i) { + return cache[j]; + } + } + + cacheIndex = (cacheIndex + 1) % 20; + ObjectDef class46 = cache[cacheIndex]; + class46.type = i; + class46.setDefaults(); + byte[] buffer = archive.get(i); + if (buffer != null && buffer.length > 0) { + class46.readValues(new ByteStreamExt(buffer)); + } + return class46; + } + + private void setDefaults() { + anIntArray773 = null; + anIntArray776 = null; + name = null; + description = null; + modifiedModelColors = null; + originalModelColors = null; + anInt744 = 1; + anInt761 = 1; + aBoolean767 = true; + aBoolean757 = true; + hasActions = false; + aBoolean762 = false; + aBoolean764 = false; + anInt781 = -1; + anInt775 = 16; + actions = null; + anInt746 = -1; + anInt758 = -1; + aBoolean779 = true; + anInt768 = 0; + aBoolean736 = false; + anInt774 = -1; + anInt749 = -1; + childrenIDs = null; + } + + public static void loadConfig() { + archive = new MemoryArchive(new ByteStream(getBuffer("loc.dat")), + new ByteStream(getBuffer("loc.idx"))); + cache = new ObjectDef[20]; + for (int k = 0; k < 20; k++) { + cache[k] = new ObjectDef(); + } + System.out.println("[ObjectDef] DONE LOADING OBJECT CONFIGURATION"); + } + + public static byte[] getBuffer(String s) { + try { + java.io.File f = new java.io.File("./data/world/object/" + s); + if (!f.exists()) { + return null; + } + byte[] buffer = new byte[(int) f.length()]; + java.io.DataInputStream dis = new java.io.DataInputStream( + new java.io.FileInputStream(f)); + dis.readFully(buffer); + dis.close(); + return buffer; + } catch (Exception e) { + } + return null; + } + + private void readValues(ByteStreamExt stream) { + int flag = -1; + do { + int type = stream.readUnsignedByte(); + if (type == 0) { + break; + } + if (type == 1) { + int len = stream.readUnsignedByte(); + if (len > 0) { + if (anIntArray773 == null || lowMem) { + anIntArray776 = new int[len]; + anIntArray773 = new int[len]; + for (int k1 = 0; k1 < len; k1++) { + anIntArray773[k1] = stream.readUnsignedWord(); + anIntArray776[k1] = stream.readUnsignedByte(); + } + } else { + stream.currentOffset += len * 3; + } + } + } else if (type == 2) { + name = stream.readNewString(); + } else if (type == 5) { + int len = stream.readUnsignedByte(); + if (len > 0) { + if (anIntArray773 == null || lowMem) { + anIntArray776 = null; + anIntArray773 = new int[len]; + for (int l1 = 0; l1 < len; l1++) { + anIntArray773[l1] = stream.readUnsignedWord(); + } + } else { + stream.currentOffset += len * 2; + } + } + } else if (type == 14) { + anInt744 = stream.readUnsignedByte(); + } else if (type == 15) { + anInt761 = stream.readUnsignedByte(); + } else if (type == 17) { + aBoolean767 = false; + } else if (type == 18) { + aBoolean757 = false; + } else if (type == 19) { + hasActions = stream.readUnsignedByte() == 1; + } else if (type == 21) { + aBoolean762 = true; + } else if (type == 22) { + } else if (type == 23) { + aBoolean764 = true; + } else if (type == 24) { + anInt781 = stream.readUnsignedWord(); + if (anInt781 == 65535) { + anInt781 = -1; + } + } else if (type == 27) { + continue; + } else if (type == 28) { + anInt775 = stream.readUnsignedByte(); + } else if (type == 29) { + stream.readSignedByte(); + } else if (type == 39) { + stream.readSignedByte(); + } else if (type >= 30 && type < 39) { + if (actions == null) { + actions = new String[5]; + } + actions[type - 30] = stream.readNewString(); + hasActions = true; + if (actions[type - 30].equalsIgnoreCase("hidden")) { + actions[type - 30] = null; + } + } else if (type == 40) { + int i1 = stream.readUnsignedByte(); + modifiedModelColors = new int[i1]; + originalModelColors = new int[i1]; + for (int i2 = 0; i2 < i1; i2++) { + modifiedModelColors[i2] = stream.readUnsignedWord(); + originalModelColors[i2] = stream.readUnsignedWord(); + } + + } else if (type == 41) { + int l = stream.readUnsignedByte(); + stream.skip(l * 4); + } else if (type == 42) { + int l = stream.readUnsignedByte(); + stream.skip(l); + } else if (type == 60) { + anInt746 = stream.readUnsignedWord(); + } else if (type == 62) { + } else if (type == 64) { + aBoolean779 = false; + } else if (type == 65) { + stream.readUnsignedWord(); + } else if (type == 66) { + stream.readUnsignedWord(); + } else if (type == 67) { + stream.readUnsignedWord(); + } else if (type == 68) { + anInt758 = stream.readUnsignedWord(); + } else if (type == 69) { + anInt768 = stream.readUnsignedByte(); + } else if (type == 70) { + stream.readSignedWord(); + } else if (type == 71) { + stream.readSignedWord(); + } else if (type == 72) { + stream.readSignedWord(); + } else if (type == 73) { + aBoolean736 = true; + } else if (type == 74) { + } else if (type == 75) { + stream.readUnsignedByte(); + } else if (type == 77 || type == 92) { + anInt774 = stream.readUnsignedWord(); + if (anInt774 == 65535) { + anInt774 = -1; + } + anInt749 = stream.readUnsignedWord(); + if (anInt749 == 65535) { + anInt749 = -1; + } + int endChild = -1; + if (type == 92) { + endChild = stream.readUnsignedWord(); + if (endChild == 65535) { + endChild = -1; + } + } + int j1 = stream.readUnsignedByte(); + childrenIDs = new int[j1 + 2]; + for (int j2 = 0; j2 <= j1; j2++) { + childrenIDs[j2] = stream.readUnsignedWord(); + if (childrenIDs[j2] == 65535) { + childrenIDs[j2] = -1; + } + } + childrenIDs[j1 + 1] = endChild; + } else if (type == 78) { + stream.skip(3); + } else if (type == 79) { + stream.skip(5); + int l = stream.readUnsignedByte(); + stream.skip(l * 2); + } else if (type == 81) { + stream.skip(1); + } else if (type == 82 || type == 88 || type == 89 || type == 90 + || type == 91 || type == 94 || type == 95 || type == 96 + || type == 97) { + continue; + } else if (type == 93) { + stream.skip(2); + } else if (type == 249) { + int l = stream.readUnsignedByte(); + for (int ii = 0; ii < l; ii++) { + boolean b = stream.readUnsignedByte() == 1; + stream.skip(3); + if (b) { + stream.readNewString(); + } else { + stream.skip(4); + } + } + } else { + System.out.println("Unknown config: " + type); + } + } while (true); + if (flag == -1) { + hasActions = anIntArray773 != null + && (anIntArray776 == null || anIntArray776[0] == 10); + if (actions != null) { + hasActions = true; + } + } + } + + private ObjectDef() { + type = -1; + } + + public boolean hasActions() { + return hasActions; + } + + public boolean hasName() { + return name != null && name.length() > 1; + } + + public boolean solid() { + return aBoolean779; + } + + public int xLength() { + return anInt744; + } + + public int yLength() { + return anInt761; + } + + public boolean aBoolean767() { + return aBoolean767; + } + + public boolean isUnshootable() { + return aBoolean757; + } + + public boolean aBoolean736; + public String name; + public int anInt744; + public int anInt746; + private int[] originalModelColors; + public int anInt749; + public static boolean lowMem; + public int type; + public boolean aBoolean757; + public int anInt758; + public int childrenIDs[]; + public int anInt761; + public boolean aBoolean762; + public boolean aBoolean764; + public boolean aBoolean767; + public int anInt768; + private static int cacheIndex; + private int[] anIntArray773; + public int anInt774; + public int anInt775; + private int[] anIntArray776; + public byte description[]; + public boolean hasActions; + public boolean aBoolean779; + public int anInt781; + private static ObjectDef[] cache; + private int[] modifiedModelColors; + public String actions[]; + private static MemoryArchive archive; + +} diff --git a/2006Redone Server/src/redone/world/clip/PathFinder.java b/2006Redone Server/src/com/rebotted/world/clip/PathFinder.java similarity index 78% rename from 2006Redone Server/src/redone/world/clip/PathFinder.java rename to 2006Redone Server/src/com/rebotted/world/clip/PathFinder.java index 4a2f5175..d86ef99a 100644 --- a/2006Redone Server/src/redone/world/clip/PathFinder.java +++ b/2006Redone Server/src/com/rebotted/world/clip/PathFinder.java @@ -1,418 +1,416 @@ -package redone.world.clip; - -import java.util.LinkedList; - -import redone.game.players.Client; -import redone.util.Misc; - -public class PathFinder { - - private static final PathFinder pathFinder = new PathFinder(); - - public static PathFinder getPathFinder() { - return pathFinder; - } - - public PathFinder() { - } - - public void findRoute(Client c, int destX, int destY, boolean moveNear, - int xLength, int yLength) { - if (destX == c.getLocalX() && destY == c.getLocalY() && !moveNear) { - c.getActionSender().sendMessage("ERROR!"); - return; - } - destX = destX - 8 * c.getMapRegionX(); - destY = destY - 8 * c.getMapRegionY(); - int[][] via = new int[104][104]; - int[][] cost = new int[104][104]; - LinkedList tileQueueX = new LinkedList(); - LinkedList tileQueueY = new LinkedList(); - for (int xx = 0; xx < 104; xx++) { - for (int yy = 0; yy < 104; yy++) { - cost[xx][yy] = 99999999; - } - } - int curX = c.getLocalX(); - int curY = c.getLocalY(); - via[curX][curY] = 99; - cost[curX][curY] = 0; - int tail = 0; - tileQueueX.add(curX); - tileQueueY.add(curY); - boolean foundPath = false; - int pathLength = 4000; - while (tail != tileQueueX.size() && tileQueueX.size() < pathLength) { - curX = tileQueueX.get(tail); - curY = tileQueueY.get(tail); - int curAbsX = c.getMapRegionX() * 8 + curX; - int curAbsY = c.getMapRegionY() * 8 + curY; - if (curX == destX && curY == destY) { - foundPath = true; - break; - } - tail = (tail + 1) % pathLength; - int thisCost = cost[curX][curY] + 1; - if (curY > 0 - && via[curX][curY - 1] == 0 - && (Region.getClipping(curAbsX, curAbsY - 1, c.heightLevel) & 0x1280102) == 0) { - tileQueueX.add(curX); - tileQueueY.add(curY - 1); - via[curX][curY - 1] = 1; - cost[curX][curY - 1] = thisCost; - } - if (curX > 0 - && via[curX - 1][curY] == 0 - && (Region.getClipping(curAbsX - 1, curAbsY, c.heightLevel) & 0x1280108) == 0) { - tileQueueX.add(curX - 1); - tileQueueY.add(curY); - via[curX - 1][curY] = 2; - cost[curX - 1][curY] = thisCost; - } - if (curY < 104 - 1 - && via[curX][curY + 1] == 0 - && (Region.getClipping(curAbsX, curAbsY + 1, c.heightLevel) & 0x1280120) == 0) { - tileQueueX.add(curX); - tileQueueY.add(curY + 1); - via[curX][curY + 1] = 4; - cost[curX][curY + 1] = thisCost; - } - if (curX < 104 - 1 - && via[curX + 1][curY] == 0 - && (Region.getClipping(curAbsX + 1, curAbsY, c.heightLevel) & 0x1280180) == 0) { - tileQueueX.add(curX + 1); - tileQueueY.add(curY); - via[curX + 1][curY] = 8; - cost[curX + 1][curY] = thisCost; - } - if (curX > 0 - && curY > 0 - && via[curX - 1][curY - 1] == 0 - && (Region.getClipping(curAbsX - 1, curAbsY - 1, - c.heightLevel) & 0x128010e) == 0 - && (Region.getClipping(curAbsX - 1, curAbsY, c.heightLevel) & 0x1280108) == 0 - && (Region.getClipping(curAbsX, curAbsY - 1, c.heightLevel) & 0x1280102) == 0) { - tileQueueX.add(curX - 1); - tileQueueY.add(curY - 1); - via[curX - 1][curY - 1] = 3; - cost[curX - 1][curY - 1] = thisCost; - } - if (curX > 0 - && curY < 104 - 1 - && via[curX - 1][curY + 1] == 0 - && (Region.getClipping(curAbsX - 1, curAbsY + 1, - c.heightLevel) & 0x1280138) == 0 - && (Region.getClipping(curAbsX - 1, curAbsY, c.heightLevel) & 0x1280108) == 0 - && (Region.getClipping(curAbsX, curAbsY + 1, c.heightLevel) & 0x1280120) == 0) { - tileQueueX.add(curX - 1); - tileQueueY.add(curY + 1); - via[curX - 1][curY + 1] = 6; - cost[curX - 1][curY + 1] = thisCost; - } - if (curX < 104 - 1 - && curY > 0 - && via[curX + 1][curY - 1] == 0 - && (Region.getClipping(curAbsX + 1, curAbsY - 1, - c.heightLevel) & 0x1280183) == 0 - && (Region.getClipping(curAbsX + 1, curAbsY, c.heightLevel) & 0x1280180) == 0 - && (Region.getClipping(curAbsX, curAbsY - 1, c.heightLevel) & 0x1280102) == 0) { - tileQueueX.add(curX + 1); - tileQueueY.add(curY - 1); - via[curX + 1][curY - 1] = 9; - cost[curX + 1][curY - 1] = thisCost; - } - if (curX < 104 - 1 - && curY < 104 - 1 - && via[curX + 1][curY + 1] == 0 - && (Region.getClipping(curAbsX + 1, curAbsY + 1, - c.heightLevel) & 0x12801e0) == 0 - && (Region.getClipping(curAbsX + 1, curAbsY, c.heightLevel) & 0x1280180) == 0 - && (Region.getClipping(curAbsX, curAbsY + 1, c.heightLevel) & 0x1280120) == 0) { - tileQueueX.add(curX + 1); - tileQueueY.add(curY + 1); - via[curX + 1][curY + 1] = 12; - cost[curX + 1][curY + 1] = thisCost; - } - } - if (!foundPath) { - if (moveNear) { - int i_223_ = 1000; - int thisCost = 100; - int i_225_ = 10; - for (int x = destX - i_225_; x <= destX + i_225_; x++) { - for (int y = destY - i_225_; y <= destY + i_225_; y++) { - if (x >= 0 && y >= 0 && x < 104 && y < 104 - && cost[x][y] < 100) { - int i_228_ = 0; - if (x < destX) { - i_228_ = destX - x; - } else if (x > destX + xLength - 1) { - i_228_ = x - (destX + xLength - 1); - } - int i_229_ = 0; - if (y < destY) { - i_229_ = destY - y; - } else if (y > destY + yLength - 1) { - i_229_ = y - (destY + yLength - 1); - } - int i_230_ = i_228_ * i_228_ + i_229_ * i_229_; - if (i_230_ < i_223_ || i_230_ == i_223_ - && cost[x][y] < thisCost) { - i_223_ = i_230_; - thisCost = cost[x][y]; - curX = x; - curY = y; - } - } - } - } - if (i_223_ == 1000) { - return; - } - } else { - return; - } - } - tail = 0; - tileQueueX.set(tail, curX); - tileQueueY.set(tail++, curY); - int l5; - for (int j5 = l5 = via[curX][curY]; curX != c.getLocalX() - || curY != c.getLocalY(); j5 = via[curX][curY]) { - if (j5 != l5) { - l5 = j5; - tileQueueX.set(tail, curX); - tileQueueY.set(tail++, curY); - } - if ((j5 & 2) != 0) { - curX++; - } else if ((j5 & 8) != 0) { - curX--; - } - if ((j5 & 1) != 0) { - curY++; - } else if ((j5 & 4) != 0) { - curY--; - } - } - c.resetWalkingQueue(); - int size = tail--; - int pathX = c.getMapRegionX() * 8 + tileQueueX.get(tail); - int pathY = c.getMapRegionY() * 8 + tileQueueY.get(tail); - c.addToWalkingQueue(localize(pathX, c.getMapRegionX()), - localize(pathY, c.getMapRegionY())); - for (int i = 1; i < size; i++) { - tail--; - pathX = c.getMapRegionX() * 8 + tileQueueX.get(tail); - pathY = c.getMapRegionY() * 8 + tileQueueY.get(tail); - c.addToWalkingQueue(localize(pathX, c.getMapRegionX()), - localize(pathY, c.getMapRegionY())); - } - } - - public int getRegionCoordinate(int x) { - return (x >> 3) - 6; - } - - public int getLocalCoordinate(int x) { - return x - 8 * getRegionCoordinate(x); - } - - public boolean accessible(int x, int y, int heightLevel, int destX, int destY) { - destX = destX - 8 * getRegionCoordinate(x); - destY = destY - 8 * getRegionCoordinate(y); - int[][] via = new int[104][104]; - int[][] cost = new int[104][104]; - LinkedList tileQueueX = new LinkedList(); - LinkedList tileQueueY = new LinkedList(); - for (int xx = 0; xx < 104; xx++) { - for (int yy = 0; yy < 104; yy++) { - cost[xx][yy] = 99999999; - } - } - int curX = getLocalCoordinate(x); - int curY = getLocalCoordinate(y); - via[curX][curY] = 99; - cost[curX][curY] = 0; - int tail = 0; - tileQueueX.add(curX); - tileQueueY.add(curY); - boolean foundPath = false; - int pathLength = 4000; - while (tail != tileQueueX.size() && tileQueueX.size() < pathLength) { - curX = tileQueueX.get(tail); - curY = tileQueueY.get(tail); - int curAbsX = getRegionCoordinate(x) * 8 + curX; - int curAbsY = getRegionCoordinate(y) * 8 + curY; - if (curX == destX && curY == destY) { - foundPath = true; - break; - } - tail = (tail + 1) % pathLength; - int thisCost = cost[curX][curY] + 1; - if (curY > 0 - && via[curX][curY - 1] == 0 - && (Region.getClipping(curAbsX, curAbsY - 1, heightLevel) & 0x1280102) == 0) { - tileQueueX.add(curX); - tileQueueY.add(curY - 1); - via[curX][curY - 1] = 1; - cost[curX][curY - 1] = thisCost; - } - if (curX > 0 - && via[curX - 1][curY] == 0 - && (Region.getClipping(curAbsX - 1, curAbsY, heightLevel) & 0x1280108) == 0) { - tileQueueX.add(curX - 1); - tileQueueY.add(curY); - via[curX - 1][curY] = 2; - cost[curX - 1][curY] = thisCost; - } - if (curY < 104 - 1 - && via[curX][curY + 1] == 0 - && (Region.getClipping(curAbsX, curAbsY + 1, heightLevel) & 0x1280120) == 0) { - tileQueueX.add(curX); - tileQueueY.add(curY + 1); - via[curX][curY + 1] = 4; - cost[curX][curY + 1] = thisCost; - } - if (curX < 104 - 1 - && via[curX + 1][curY] == 0 - && (Region.getClipping(curAbsX + 1, curAbsY, heightLevel) & 0x1280180) == 0) { - tileQueueX.add(curX + 1); - tileQueueY.add(curY); - via[curX + 1][curY] = 8; - cost[curX + 1][curY] = thisCost; - } - if (curX > 0 - && curY > 0 - && via[curX - 1][curY - 1] == 0 - && (Region.getClipping(curAbsX - 1, curAbsY - 1, - heightLevel) & 0x128010e) == 0 - && (Region.getClipping(curAbsX - 1, curAbsY, heightLevel) & 0x1280108) == 0 - && (Region.getClipping(curAbsX, curAbsY - 1, heightLevel) & 0x1280102) == 0) { - tileQueueX.add(curX - 1); - tileQueueY.add(curY - 1); - via[curX - 1][curY - 1] = 3; - cost[curX - 1][curY - 1] = thisCost; - } - if (curX > 0 - && curY < 104 - 1 - && via[curX - 1][curY + 1] == 0 - && (Region.getClipping(curAbsX - 1, curAbsY + 1, - heightLevel) & 0x1280138) == 0 - && (Region.getClipping(curAbsX - 1, curAbsY, heightLevel) & 0x1280108) == 0 - && (Region.getClipping(curAbsX, curAbsY + 1, heightLevel) & 0x1280120) == 0) { - tileQueueX.add(curX - 1); - tileQueueY.add(curY + 1); - via[curX - 1][curY + 1] = 6; - cost[curX - 1][curY + 1] = thisCost; - } - if (curX < 104 - 1 - && curY > 0 - && via[curX + 1][curY - 1] == 0 - && (Region.getClipping(curAbsX + 1, curAbsY - 1, - heightLevel) & 0x1280183) == 0 - && (Region.getClipping(curAbsX + 1, curAbsY, heightLevel) & 0x1280180) == 0 - && (Region.getClipping(curAbsX, curAbsY - 1, heightLevel) & 0x1280102) == 0) { - tileQueueX.add(curX + 1); - tileQueueY.add(curY - 1); - via[curX + 1][curY - 1] = 9; - cost[curX + 1][curY - 1] = thisCost; - } - if (curX < 104 - 1 - && curY < 104 - 1 - && via[curX + 1][curY + 1] == 0 - && (Region.getClipping(curAbsX + 1, curAbsY + 1, - heightLevel) & 0x12801e0) == 0 - && (Region.getClipping(curAbsX + 1, curAbsY, heightLevel) & 0x1280180) == 0 - && (Region.getClipping(curAbsX, curAbsY + 1, heightLevel) & 0x1280120) == 0) { - tileQueueX.add(curX + 1); - tileQueueY.add(curY + 1); - via[curX + 1][curY + 1] = 12; - cost[curX + 1][curY + 1] = thisCost; - } - } - return foundPath; - } - - public static boolean isProjectilePathClear(int x0, int y0, int z, int x1, int y1) { - int deltaX = x1 - x0; - int deltaY = y1 - y0; - - double error = 0; - final double deltaError = Math.abs( - (deltaY) / (deltaX == 0 - ? ((double) deltaY) - : ((double) deltaX))); - - int x = x0; - int y = y0; - - int pX = x; - int pY = y; - - boolean incrX = x0 < x1; - boolean incrY = y0 < y1; - - while (true) { - if (x != x1) { - x += (incrX ? 1 : -1); - } - - if (y != y1) { - error += deltaError; - - if (error >= 0.5) { - y += (incrY ? 1 : -1); - error -= 1; - } - } - - if (!shootable(x, y, z, pX, pY)) { - return false; - } - - if (incrX && incrY - && x >= x1 && y >= y1) { - break; - } else if (!incrX && !incrY - && x <= x1 && y <= y1) { - break; - } else if (!incrX && incrY - && x <= x1 && y >= y1) { - break; - } else if (incrX && !incrY - && x >= x1 && y <= y1) { - break; - } - - pX = x; - pY = y; - } - - return true; - } - - private static boolean shootable(int x, int y, int z, int px, int py) { - if (x == px && y == py) { - return true; - } - - int[] delta1 = Misc.delta(x, y, px, py); - int[] delta2 = Misc.delta(px, py, x, y); - - int dir = Misc.directionFromDelta(delta1[0], delta1[1]); - int dir2 = Misc.directionFromDelta(delta2[0], delta2[1]); - - if (dir == -1 || dir2 == -1) { - return false; - } - - return Region.canMove(x, y, z, dir) && Region.canMove(px, py, z, dir2) - || Region.canShoot(x, y, z, dir) && Region.canShoot(px, py, z, dir2); - } - - public int localize(int x, int mapRegion) { - return x - 8 * mapRegion; - } - -} +package com.rebotted.world.clip; + +import java.util.LinkedList; + +import com.rebotted.game.players.Client; +import com.rebotted.game.players.Player; +import com.rebotted.util.Misc; + +public class PathFinder { + + private static final PathFinder pathFinder = new PathFinder(); + + public static PathFinder getPathFinder() { + return pathFinder; + } + + public void findRoute(Player player, int destX, int destY, boolean moveNear, + int xLength, int yLength) { + if (destX == player.getLocalX() && destY == player.getLocalY() && !moveNear) { + player.getPacketSender().sendMessage("ERROR!"); + return; + } + destX = destX - 8 * player.getMapRegionX(); + destY = destY - 8 * player.getMapRegionY(); + int[][] via = new int[104][104]; + int[][] cost = new int[104][104]; + LinkedList tileQueueX = new LinkedList(); + LinkedList tileQueueY = new LinkedList(); + for (int xx = 0; xx < 104; xx++) { + for (int yy = 0; yy < 104; yy++) { + cost[xx][yy] = 99999999; + } + } + int curX = player.getLocalX(); + int curY = player.getLocalY(); + via[curX][curY] = 99; + cost[curX][curY] = 0; + int tail = 0; + tileQueueX.add(curX); + tileQueueY.add(curY); + boolean foundPath = false; + int pathLength = 4000; + while (tail != tileQueueX.size() && tileQueueX.size() < pathLength) { + curX = tileQueueX.get(tail); + curY = tileQueueY.get(tail); + int curAbsX = player.getMapRegionX() * 8 + curX; + int curAbsY = player.getMapRegionY() * 8 + curY; + if (curX == destX && curY == destY) { + foundPath = true; + break; + } + tail = (tail + 1) % pathLength; + int thisCost = cost[curX][curY] + 1; + if (curY > 0 + && via[curX][curY - 1] == 0 + && (Region.getClipping(curAbsX, curAbsY - 1, player.heightLevel) & 0x1280102) == 0) { + tileQueueX.add(curX); + tileQueueY.add(curY - 1); + via[curX][curY - 1] = 1; + cost[curX][curY - 1] = thisCost; + } + if (curX > 0 + && via[curX - 1][curY] == 0 + && (Region.getClipping(curAbsX - 1, curAbsY, player.heightLevel) & 0x1280108) == 0) { + tileQueueX.add(curX - 1); + tileQueueY.add(curY); + via[curX - 1][curY] = 2; + cost[curX - 1][curY] = thisCost; + } + if (curY < 104 - 1 + && via[curX][curY + 1] == 0 + && (Region.getClipping(curAbsX, curAbsY + 1, player.heightLevel) & 0x1280120) == 0) { + tileQueueX.add(curX); + tileQueueY.add(curY + 1); + via[curX][curY + 1] = 4; + cost[curX][curY + 1] = thisCost; + } + if (curX < 104 - 1 + && via[curX + 1][curY] == 0 + && (Region.getClipping(curAbsX + 1, curAbsY, player.heightLevel) & 0x1280180) == 0) { + tileQueueX.add(curX + 1); + tileQueueY.add(curY); + via[curX + 1][curY] = 8; + cost[curX + 1][curY] = thisCost; + } + if (curX > 0 + && curY > 0 + && via[curX - 1][curY - 1] == 0 + && (Region.getClipping(curAbsX - 1, curAbsY - 1, + player.heightLevel) & 0x128010e) == 0 + && (Region.getClipping(curAbsX - 1, curAbsY, player.heightLevel) & 0x1280108) == 0 + && (Region.getClipping(curAbsX, curAbsY - 1, player.heightLevel) & 0x1280102) == 0) { + tileQueueX.add(curX - 1); + tileQueueY.add(curY - 1); + via[curX - 1][curY - 1] = 3; + cost[curX - 1][curY - 1] = thisCost; + } + if (curX > 0 + && curY < 104 - 1 + && via[curX - 1][curY + 1] == 0 + && (Region.getClipping(curAbsX - 1, curAbsY + 1, + player.heightLevel) & 0x1280138) == 0 + && (Region.getClipping(curAbsX - 1, curAbsY, player.heightLevel) & 0x1280108) == 0 + && (Region.getClipping(curAbsX, curAbsY + 1, player.heightLevel) & 0x1280120) == 0) { + tileQueueX.add(curX - 1); + tileQueueY.add(curY + 1); + via[curX - 1][curY + 1] = 6; + cost[curX - 1][curY + 1] = thisCost; + } + if (curX < 104 - 1 + && curY > 0 + && via[curX + 1][curY - 1] == 0 + && (Region.getClipping(curAbsX + 1, curAbsY - 1, + player.heightLevel) & 0x1280183) == 0 + && (Region.getClipping(curAbsX + 1, curAbsY, player.heightLevel) & 0x1280180) == 0 + && (Region.getClipping(curAbsX, curAbsY - 1, player.heightLevel) & 0x1280102) == 0) { + tileQueueX.add(curX + 1); + tileQueueY.add(curY - 1); + via[curX + 1][curY - 1] = 9; + cost[curX + 1][curY - 1] = thisCost; + } + if (curX < 104 - 1 + && curY < 104 - 1 + && via[curX + 1][curY + 1] == 0 + && (Region.getClipping(curAbsX + 1, curAbsY + 1, + player.heightLevel) & 0x12801e0) == 0 + && (Region.getClipping(curAbsX + 1, curAbsY, player.heightLevel) & 0x1280180) == 0 + && (Region.getClipping(curAbsX, curAbsY + 1, player.heightLevel) & 0x1280120) == 0) { + tileQueueX.add(curX + 1); + tileQueueY.add(curY + 1); + via[curX + 1][curY + 1] = 12; + cost[curX + 1][curY + 1] = thisCost; + } + } + if (!foundPath) { + if (moveNear) { + int i_223_ = 1000; + int thisCost = 100; + int i_225_ = 10; + for (int x = destX - i_225_; x <= destX + i_225_; x++) { + for (int y = destY - i_225_; y <= destY + i_225_; y++) { + if (x >= 0 && y >= 0 && x < 104 && y < 104 + && cost[x][y] < 100) { + int i_228_ = 0; + if (x < destX) { + i_228_ = destX - x; + } else if (x > destX + xLength - 1) { + i_228_ = x - (destX + xLength - 1); + } + int i_229_ = 0; + if (y < destY) { + i_229_ = destY - y; + } else if (y > destY + yLength - 1) { + i_229_ = y - (destY + yLength - 1); + } + int i_230_ = i_228_ * i_228_ + i_229_ * i_229_; + if (i_230_ < i_223_ || i_230_ == i_223_ + && cost[x][y] < thisCost) { + i_223_ = i_230_; + thisCost = cost[x][y]; + curX = x; + curY = y; + } + } + } + } + if (i_223_ == 1000) { + return; + } + } else { + return; + } + } + tail = 0; + tileQueueX.set(tail, curX); + tileQueueY.set(tail++, curY); + int l5; + for (int j5 = l5 = via[curX][curY]; curX != player.getLocalX() + || curY != player.getLocalY(); j5 = via[curX][curY]) { + if (j5 != l5) { + l5 = j5; + tileQueueX.set(tail, curX); + tileQueueY.set(tail++, curY); + } + if ((j5 & 2) != 0) { + curX++; + } else if ((j5 & 8) != 0) { + curX--; + } + if ((j5 & 1) != 0) { + curY++; + } else if ((j5 & 4) != 0) { + curY--; + } + } + player.resetWalkingQueue(); + int size = tail--; + int pathX = player.getMapRegionX() * 8 + tileQueueX.get(tail); + int pathY = player.getMapRegionY() * 8 + tileQueueY.get(tail); + player.addToWalkingQueue(localize(pathX, player.getMapRegionX()), + localize(pathY, player.getMapRegionY())); + for (int i = 1; i < size; i++) { + tail--; + pathX = player.getMapRegionX() * 8 + tileQueueX.get(tail); + pathY = player.getMapRegionY() * 8 + tileQueueY.get(tail); + player.addToWalkingQueue(localize(pathX, player.getMapRegionX()), + localize(pathY, player.getMapRegionY())); + } + } + + public int getRegionCoordinate(int x) { + return (x >> 3) - 6; + } + + public int getLocalCoordinate(int x) { + return x - 8 * getRegionCoordinate(x); + } + + public boolean accessible(int x, int y, int heightLevel, int destX, int destY) { + destX = destX - 8 * getRegionCoordinate(x); + destY = destY - 8 * getRegionCoordinate(y); + int[][] via = new int[104][104]; + int[][] cost = new int[104][104]; + LinkedList tileQueueX = new LinkedList(); + LinkedList tileQueueY = new LinkedList(); + for (int xx = 0; xx < 104; xx++) { + for (int yy = 0; yy < 104; yy++) { + cost[xx][yy] = 99999999; + } + } + int curX = getLocalCoordinate(x); + int curY = getLocalCoordinate(y); + via[curX][curY] = 99; + cost[curX][curY] = 0; + int tail = 0; + tileQueueX.add(curX); + tileQueueY.add(curY); + boolean foundPath = false; + int pathLength = 4000; + while (tail != tileQueueX.size() && tileQueueX.size() < pathLength) { + curX = tileQueueX.get(tail); + curY = tileQueueY.get(tail); + int curAbsX = getRegionCoordinate(x) * 8 + curX; + int curAbsY = getRegionCoordinate(y) * 8 + curY; + if (curX == destX && curY == destY) { + foundPath = true; + break; + } + tail = (tail + 1) % pathLength; + int thisCost = cost[curX][curY] + 1; + if (curY > 0 + && via[curX][curY - 1] == 0 + && (Region.getClipping(curAbsX, curAbsY - 1, heightLevel) & 0x1280102) == 0) { + tileQueueX.add(curX); + tileQueueY.add(curY - 1); + via[curX][curY - 1] = 1; + cost[curX][curY - 1] = thisCost; + } + if (curX > 0 + && via[curX - 1][curY] == 0 + && (Region.getClipping(curAbsX - 1, curAbsY, heightLevel) & 0x1280108) == 0) { + tileQueueX.add(curX - 1); + tileQueueY.add(curY); + via[curX - 1][curY] = 2; + cost[curX - 1][curY] = thisCost; + } + if (curY < 104 - 1 + && via[curX][curY + 1] == 0 + && (Region.getClipping(curAbsX, curAbsY + 1, heightLevel) & 0x1280120) == 0) { + tileQueueX.add(curX); + tileQueueY.add(curY + 1); + via[curX][curY + 1] = 4; + cost[curX][curY + 1] = thisCost; + } + if (curX < 104 - 1 + && via[curX + 1][curY] == 0 + && (Region.getClipping(curAbsX + 1, curAbsY, heightLevel) & 0x1280180) == 0) { + tileQueueX.add(curX + 1); + tileQueueY.add(curY); + via[curX + 1][curY] = 8; + cost[curX + 1][curY] = thisCost; + } + if (curX > 0 + && curY > 0 + && via[curX - 1][curY - 1] == 0 + && (Region.getClipping(curAbsX - 1, curAbsY - 1, + heightLevel) & 0x128010e) == 0 + && (Region.getClipping(curAbsX - 1, curAbsY, heightLevel) & 0x1280108) == 0 + && (Region.getClipping(curAbsX, curAbsY - 1, heightLevel) & 0x1280102) == 0) { + tileQueueX.add(curX - 1); + tileQueueY.add(curY - 1); + via[curX - 1][curY - 1] = 3; + cost[curX - 1][curY - 1] = thisCost; + } + if (curX > 0 + && curY < 104 - 1 + && via[curX - 1][curY + 1] == 0 + && (Region.getClipping(curAbsX - 1, curAbsY + 1, + heightLevel) & 0x1280138) == 0 + && (Region.getClipping(curAbsX - 1, curAbsY, heightLevel) & 0x1280108) == 0 + && (Region.getClipping(curAbsX, curAbsY + 1, heightLevel) & 0x1280120) == 0) { + tileQueueX.add(curX - 1); + tileQueueY.add(curY + 1); + via[curX - 1][curY + 1] = 6; + cost[curX - 1][curY + 1] = thisCost; + } + if (curX < 104 - 1 + && curY > 0 + && via[curX + 1][curY - 1] == 0 + && (Region.getClipping(curAbsX + 1, curAbsY - 1, + heightLevel) & 0x1280183) == 0 + && (Region.getClipping(curAbsX + 1, curAbsY, heightLevel) & 0x1280180) == 0 + && (Region.getClipping(curAbsX, curAbsY - 1, heightLevel) & 0x1280102) == 0) { + tileQueueX.add(curX + 1); + tileQueueY.add(curY - 1); + via[curX + 1][curY - 1] = 9; + cost[curX + 1][curY - 1] = thisCost; + } + if (curX < 104 - 1 + && curY < 104 - 1 + && via[curX + 1][curY + 1] == 0 + && (Region.getClipping(curAbsX + 1, curAbsY + 1, + heightLevel) & 0x12801e0) == 0 + && (Region.getClipping(curAbsX + 1, curAbsY, heightLevel) & 0x1280180) == 0 + && (Region.getClipping(curAbsX, curAbsY + 1, heightLevel) & 0x1280120) == 0) { + tileQueueX.add(curX + 1); + tileQueueY.add(curY + 1); + via[curX + 1][curY + 1] = 12; + cost[curX + 1][curY + 1] = thisCost; + } + } + return foundPath; + } + + public static boolean isProjectilePathClear(int x0, int y0, int z, int x1, int y1) { + int deltaX = x1 - x0; + int deltaY = y1 - y0; + + double error = 0; + final double deltaError = Math.abs( + (deltaY) / (deltaX == 0 + ? ((double) deltaY) + : ((double) deltaX))); + + int x = x0; + int y = y0; + + int pX = x; + int pY = y; + + boolean incrX = x0 < x1; + boolean incrY = y0 < y1; + + while (true) { + if (x != x1) { + x += (incrX ? 1 : -1); + } + + if (y != y1) { + error += deltaError; + + if (error >= 0.5) { + y += (incrY ? 1 : -1); + error -= 1; + } + } + + if (!shootable(x, y, z, pX, pY)) { + return false; + } + + if (incrX && incrY + && x >= x1 && y >= y1) { + break; + } else if (!incrX && !incrY + && x <= x1 && y <= y1) { + break; + } else if (!incrX && incrY + && x <= x1 && y >= y1) { + break; + } else if (incrX && !incrY + && x >= x1 && y <= y1) { + break; + } + + pX = x; + pY = y; + } + + return true; + } + + private static boolean shootable(int x, int y, int z, int px, int py) { + if (x == px && y == py) { + return true; + } + + int[] delta1 = Misc.delta(x, y, px, py); + int[] delta2 = Misc.delta(px, py, x, y); + + int dir = Misc.directionFromDelta(delta1[0], delta1[1]); + int dir2 = Misc.directionFromDelta(delta2[0], delta2[1]); + + if (dir == -1 || dir2 == -1) { + return false; + } + + return Region.canMove(x, y, z, dir) && Region.canMove(px, py, z, dir2) + || Region.canShoot(x, y, z, dir) && Region.canShoot(px, py, z, dir2); + } + + public int localize(int x, int mapRegion) { + return x - 8 * mapRegion; + } + +} diff --git a/2006Redone Server/src/redone/world/clip/Region.java b/2006Redone Server/src/com/rebotted/world/clip/Region.java similarity index 96% rename from 2006Redone Server/src/redone/world/clip/Region.java rename to 2006Redone Server/src/com/rebotted/world/clip/Region.java index ff209f9e..8f54d0a6 100644 --- a/2006Redone Server/src/redone/world/clip/Region.java +++ b/2006Redone Server/src/com/rebotted/world/clip/Region.java @@ -1,826 +1,826 @@ -package redone.world.clip; - -import java.io.ByteArrayInputStream; -import java.io.DataInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.util.ArrayList; -import java.util.zip.GZIPInputStream; - -import redone.game.objects.Objects; - -public class Region { - - private ArrayList realObjects = new ArrayList(); - - public static Region getRegion(int x, int y) { - int regionX = x >> 3; - int regionY = y >> 3; - int regionId = (regionX / 8 << 8) + regionY / 8; - for (Region region : regions) { - if (region.id() == regionId) { - return region; - } - } - return null; - } - - public static Objects getObject(int id, int x, int y, int z) { - Region r = getRegion(x, y); - if (r == null) - return null; - for (Objects o : r.realObjects) { - if (o.objectId == id) { - if (o.objectX == x && o.objectY == y && o.objectHeight == z) { - return o; - } - } - } - return null; - } - - public static boolean objectExists(int id, int x, int y, int z) { - Region r = getRegion(x, y); - if (r == null) - return false; - for (Objects o : r.realObjects) { - if (o.objectId == id) { - if (o.objectX == x && o.objectY == y && o.objectHeight == z) { - return true; - } - } - } - return false; - } - - private void addClip(int x, int y, int height, int shift) { - int regionAbsX = (id >> 8) * 64; - int regionAbsY = (id & 0xff) * 64; - if (clips[height] == null) { - clips[height] = new int[64][64]; - } - clips[height][x - regionAbsX][y - regionAbsY] |= shift; - } - - private void addProjectileClip(int x, int y, int height, int shift) { - int regionAbsX = (id >> 8) * 64; - int regionAbsY = (id & 0xff) * 64; - if (projectileClips[height] == null) { - projectileClips[height] = new int[64][64]; - } - projectileClips[height][x - regionAbsX][y - regionAbsY] |= shift; - } - - public static boolean canMove(int x, int y, int z, int direction) { - if (direction == 6) { - if ((Region.getClipping(x, y - 1, z) & 0x1280102) == 0) { - return true; - } - } else if (direction == 3) { - if ((Region.getClipping(x - 1, y, z) & 0x1280108) == 0) { - return true; - } - } else if (direction == 1) { - if ((Region.getClipping(x, y + 1, z) & 0x1280120) == 0) { - return true; - } - } else if (direction == 4) { - if ((Region.getClipping(x + 1, y, z) & 0x1280180) == 0) { - return true; - } - } else if (direction == 5) { - if ((Region.getClipping(x - 1, y - 1, z) & 0x128010e) == 0 - && (Region.getClipping(x - 1, y, z) & 0x1280108) == 0 - && (Region.getClipping(x, y - 1, z) & 0x1280102) == 0) { - return true; - } - } else if (direction == 0) { - if ((Region.getClipping(x - 1, y + 1, z) & 0x1280138) == 0 - && (Region.getClipping(x - 1, y, z) & 0x1280108) == 0 - && (Region.getClipping(x, y + 1, z) & 0x1280120) == 0) { - return true; - } - } else if (direction == 7) { - if ((Region.getClipping(x + 1, y - 1, z) & 0x1280183) == 0 - && (Region.getClipping(x + 1, y, z) & 0x1280180) == 0 - && (Region.getClipping(x, y - 1, z) & 0x1280102) == 0) { - return true; - } - } else if (direction == 2) { - if ((Region.getClipping(x + 1, y + 1, z) & 0x12801e0) == 0 - && (Region.getClipping(x + 1, y, z) & 0x1280180) == 0 - && (Region.getClipping(x, y + 1, z) & 0x1280120) == 0) { - return true; - } - } else if (direction == -1) { - throw new IllegalArgumentException("Invalid direction: " + direction); - } - - return false; - } - - public static boolean canShoot(int x, int y, int z, int direction) { - if (direction == 0) { - return !projectileBlockedNorthWest(x, y, z) && !projectileBlockedNorth(x, y, z) - && !projectileBlockedWest(x, y, z); - } else if (direction == 1) { - return !projectileBlockedNorth(x, y, z); - } else if (direction == 2) { - return !projectileBlockedNorthEast(x, y, z) && !projectileBlockedNorth(x, y, z) - && !projectileBlockedEast(x, y, z); - } else if (direction == 3) { - return !projectileBlockedWest(x, y, z); - } else if (direction == 4) { - return !projectileBlockedEast(x, y, z); - } else if (direction == 5) { - return !projectileBlockedSouthWest(x, y, z) && !projectileBlockedSouth(x, y, z) - && !projectileBlockedWest(x, y, z); - } else if (direction == 6) { - return !projectileBlockedSouth(x, y, z); - } else if (direction == 7) { - return !projectileBlockedSouthEast(x, y, z) && !projectileBlockedSouth(x, y, z) - && !projectileBlockedEast(x, y, z); - } - return false; - } - - public static boolean projectileBlockedNorth(int x, int y, int z) { - return (getProjectileClipping(x, y + 1, z) & 0x1280120) != 0; - } - - public static boolean projectileBlockedEast(int x, int y, int z) { - return (getProjectileClipping(x + 1, y, z) & 0x1280180) != 0; - } - - public static boolean projectileBlockedSouth(int x, int y, int z) { - return (getProjectileClipping(x, y - 1, z) & 0x1280102) != 0; - } - - public static boolean projectileBlockedWest(int x, int y, int z) { - return (getProjectileClipping(x - 1, y, z) & 0x1280108) != 0; - } - - public static boolean projectileBlockedNorthEast(int x, int y, int z) { - return (getProjectileClipping(x + 1, y + 1, z) & 0x12801e0) != 0; - } - - public static boolean projectileBlockedNorthWest(int x, int y, int z) { - return (getProjectileClipping(x - 1, y + 1, z) & 0x1280138) != 0; - } - - public static boolean projectileBlockedSouthEast(int x, int y, int z) { - return (getProjectileClipping(x + 1, y - 1, z) & 0x1280183) != 0; - } - - public static boolean projectileBlockedSouthWest(int x, int y, int z) { - return (getProjectileClipping(x - 1, y - 1, z) & 0x128010e) != 0; - } - - public static boolean canMove(int startX, int startY, int endX, int endY, int height, int xLength, int yLength) { - int diffX = endX - startX; - int diffY = endY - startY; - int max = Math.max(Math.abs(diffX), Math.abs(diffY)); - for (int ii = 0; ii < max; ii++) { - int currentX = endX - diffX; - int currentY = endY - diffY; - for (int i = 0; i < xLength; i++) { - for (int i2 = 0; i2 < yLength; i2++) - if (diffX < 0 && diffY < 0) { - if ((getClipping((currentX + i) - 1, - (currentY + i2) - 1, height) & 0x128010e) != 0 - || (getClipping((currentX + i) - 1, currentY - + i2, height) & 0x1280108) != 0 - || (getClipping(currentX + i, - (currentY + i2) - 1, height) & 0x1280102) != 0) - return false; - } else if (diffX > 0 && diffY > 0) { - if ((getClipping(currentX + i + 1, currentY + i2 + 1, - height) & 0x12801e0) != 0 - || (getClipping(currentX + i + 1, - currentY + i2, height) & 0x1280180) != 0 - || (getClipping(currentX + i, - currentY + i2 + 1, height) & 0x1280120) != 0) - return false; - } else if (diffX < 0 && diffY > 0) { - if ((getClipping((currentX + i) - 1, currentY + i2 + 1, - height) & 0x1280138) != 0 - || (getClipping((currentX + i) - 1, currentY - + i2, height) & 0x1280108) != 0 - || (getClipping(currentX + i, - currentY + i2 + 1, height) & 0x1280120) != 0) - return false; - } else if (diffX > 0 && diffY < 0) { - if ((getClipping(currentX + i + 1, (currentY + i2) - 1, - height) & 0x1280183) != 0 - || (getClipping(currentX + i + 1, - currentY + i2, height) & 0x1280180) != 0 - || (getClipping(currentX + i, - (currentY + i2) - 1, height) & 0x1280102) != 0) - return false; - } else if (diffX > 0 && diffY == 0) { - if ((getClipping(currentX + i + 1, currentY + i2, - height) & 0x1280180) != 0) - return false; - } else if (diffX < 0 && diffY == 0) { - if ((getClipping((currentX + i) - 1, currentY + i2, - height) & 0x1280108) != 0) - return false; - } else if (diffX == 0 && diffY > 0) { - if ((getClipping(currentX + i, currentY + i2 + 1, - height) & 0x1280120) != 0) - return false; - } else if (diffX == 0 - && diffY < 0 - && (getClipping(currentX + i, (currentY + i2) - 1, - height) & 0x1280102) != 0) - return false; - - } - - if (diffX < 0) - diffX++; - else if (diffX > 0) - diffX--; - if (diffY < 0) - diffY++; - else if (diffY > 0) - diffY--; - } - - return true; - } - - private int getClip(int x, int y, int height) { - int regionAbsX = (id >> 8) * 64; - int regionAbsY = (id & 0xff) * 64; - if (clips[height] == null) { - return 0; - } - return clips[height][x - regionAbsX][y - regionAbsY]; - } - - private int getProjectileClip(int x, int y, int height) { - int regionAbsX = (id >> 8) * 64; - int regionAbsY = (id & 0xff) * 64; - if (projectileClips[height] == null) { - return 0; - } - return projectileClips[height][x - regionAbsX][y - regionAbsY]; - } - - private static void addClipping(int x, int y, int height, int shift) { - int regionX = x >> 3; - int regionY = y >> 3; - int regionId = (regionX / 8 << 8) + regionY / 8; - for (Region r : regions) { - if (r.id() == regionId) { - r.addClip(x, y, height, shift); - break; - } - } - } - - private static void addProjectileClipping(int x, int y, int height, int shift) { - int regionX = x >> 3; - int regionY = y >> 3; - int regionId = (regionX / 8 << 8) + regionY / 8; - for (Region r : regions) { - if (r.id() == regionId) { - r.addProjectileClip(x, y, height, shift); - break; - } - } - } - - - private static Region[] regions; - private final int id; - private final int[][][] clips = new int[4][][]; - private final int[][][] projectileClips = new int[4][][]; - private boolean members = false; - - public Region(int id, boolean members) { - this.id = id; - this.members = members; - } - - public int id() { - return id; - } - - public boolean members() { - return members; - } - - public static boolean isMembers(int x, int y, int height) { - if (x >= 3272 && x <= 3320 && y >= 2752 && y <= 2809) { - return false; - } - if (x >= 2640 && x <= 2677 && y >= 2638 && y <= 2679) { - return false; - } - int regionX = x >> 3; - int regionY = y >> 3; - int regionId = (regionX / 8 << 8) + regionY / 8; - for (Region r : regions) { - if (r.id() == regionId) { - return r.members(); - } - } - return false; - } - - private static void addClippingForVariableObject(int x, int y, int height, - int type, int direction, boolean flag) { - if (type == 0) { - if (direction == 0) { - addClipping(x, y, height, 128); - addClipping(x - 1, y, height, 8); - } else if (direction == 1) { - addClipping(x, y, height, 2); - addClipping(x, y + 1, height, 32); - } else if (direction == 2) { - addClipping(x, y, height, 8); - addClipping(x + 1, y, height, 128); - } else if (direction == 3) { - addClipping(x, y, height, 32); - addClipping(x, y - 1, height, 2); - } - } else if (type == 1 || type == 3) { - if (direction == 0) { - addClipping(x, y, height, 1); - addClipping(x - 1, y, height, 16); - } else if (direction == 1) { - addClipping(x, y, height, 4); - addClipping(x + 1, y + 1, height, 64); - } else if (direction == 2) { - addClipping(x, y, height, 16); - addClipping(x + 1, y - 1, height, 1); - } else if (direction == 3) { - addClipping(x, y, height, 64); - addClipping(x - 1, y - 1, height, 4); - } - } else if (type == 2) { - if (direction == 0) { - addClipping(x, y, height, 130); - addClipping(x - 1, y, height, 8); - addClipping(x, y + 1, height, 32); - } else if (direction == 1) { - addClipping(x, y, height, 10); - addClipping(x, y + 1, height, 32); - addClipping(x + 1, y, height, 128); - } else if (direction == 2) { - addClipping(x, y, height, 40); - addClipping(x + 1, y, height, 128); - addClipping(x, y - 1, height, 2); - } else if (direction == 3) { - addClipping(x, y, height, 160); - addClipping(x, y - 1, height, 2); - addClipping(x - 1, y, height, 8); - } - } - if (flag) { - if (type == 0) { - if (direction == 0) { - addClipping(x, y, height, 65536); - addClipping(x - 1, y, height, 4096); - } else if (direction == 1) { - addClipping(x, y, height, 1024); - addClipping(x, y + 1, height, 16384); - } else if (direction == 2) { - addClipping(x, y, height, 4096); - addClipping(x + 1, y, height, 65536); - } else if (direction == 3) { - addClipping(x, y, height, 16384); - addClipping(x, y - 1, height, 1024); - } - } - if (type == 1 || type == 3) { - if (direction == 0) { - addClipping(x, y, height, 512); - addClipping(x - 1, y + 1, height, 8192); - } else if (direction == 1) { - addClipping(x, y, height, 2048); - addClipping(x + 1, y + 1, height, 32768); - } else if (direction == 2) { - addClipping(x, y, height, 8192); - addClipping(x + 1, y + 1, height, 512); - } else if (direction == 3) { - addClipping(x, y, height, 32768); - addClipping(x - 1, y - 1, height, 2048); - } - } else if (type == 2) { - if (direction == 0) { - addClipping(x, y, height, 66560); - addClipping(x - 1, y, height, 4096); - addClipping(x, y + 1, height, 16384); - } else if (direction == 1) { - addClipping(x, y, height, 5120); - addClipping(x, y + 1, height, 16384); - addClipping(x + 1, y, height, 65536); - } else if (direction == 2) { - addClipping(x, y, height, 20480); - addClipping(x + 1, y, height, 65536); - addClipping(x, y - 1, height, 1024); - } else if (direction == 3) { - addClipping(x, y, height, 81920); - addClipping(x, y - 1, height, 1024); - addClipping(x - 1, y, height, 4096); - } - } - } - } - - private static void addProjectileClippingForVariableObject(int x, int y, int height, - int type, int direction, boolean flag) { - if (type == 0) { - if (direction == 0) { - addProjectileClipping(x, y, height, 128); - addProjectileClipping(x - 1, y, height, 8); - } else if (direction == 1) { - addProjectileClipping(x, y, height, 2); - addProjectileClipping(x, y + 1, height, 32); - } else if (direction == 2) { - addProjectileClipping(x, y, height, 8); - addProjectileClipping(x + 1, y, height, 128); - } else if (direction == 3) { - addProjectileClipping(x, y, height, 32); - addProjectileClipping(x, y - 1, height, 2); - } - } else if (type == 1 || type == 3) { - if (direction == 0) { - addProjectileClipping(x, y, height, 1); - addProjectileClipping(x - 1, y, height, 16); - } else if (direction == 1) { - addProjectileClipping(x, y, height, 4); - addProjectileClipping(x + 1, y + 1, height, 64); - } else if (direction == 2) { - addProjectileClipping(x, y, height, 16); - addProjectileClipping(x + 1, y - 1, height, 1); - } else if (direction == 3) { - addProjectileClipping(x, y, height, 64); - addProjectileClipping(x - 1, y - 1, height, 4); - } - } else if (type == 2) { - if (direction == 0) { - addProjectileClipping(x, y, height, 130); - addProjectileClipping(x - 1, y, height, 8); - addProjectileClipping(x, y + 1, height, 32); - } else if (direction == 1) { - addProjectileClipping(x, y, height, 10); - addProjectileClipping(x, y + 1, height, 32); - addProjectileClipping(x + 1, y, height, 128); - } else if (direction == 2) { - addProjectileClipping(x, y, height, 40); - addProjectileClipping(x + 1, y, height, 128); - addProjectileClipping(x, y - 1, height, 2); - } else if (direction == 3) { - addProjectileClipping(x, y, height, 160); - addProjectileClipping(x, y - 1, height, 2); - addProjectileClipping(x - 1, y, height, 8); - } - } - if (flag) { - if (type == 0) { - if (direction == 0) { - addProjectileClipping(x, y, height, 65536); - addProjectileClipping(x - 1, y, height, 4096); - } else if (direction == 1) { - addProjectileClipping(x, y, height, 1024); - addProjectileClipping(x, y + 1, height, 16384); - } else if (direction == 2) { - addProjectileClipping(x, y, height, 4096); - addProjectileClipping(x + 1, y, height, 65536); - } else if (direction == 3) { - addProjectileClipping(x, y, height, 16384); - addProjectileClipping(x, y - 1, height, 1024); - } - } - if (type == 1 || type == 3) { - if (direction == 0) { - addProjectileClipping(x, y, height, 512); - addProjectileClipping(x - 1, y + 1, height, 8192); - } else if (direction == 1) { - addProjectileClipping(x, y, height, 2048); - addProjectileClipping(x + 1, y + 1, height, 32768); - } else if (direction == 2) { - addProjectileClipping(x, y, height, 8192); - addProjectileClipping(x + 1, y + 1, height, 512); - } else if (direction == 3) { - addProjectileClipping(x, y, height, 32768); - addProjectileClipping(x - 1, y - 1, height, 2048); - } - } else if (type == 2) { - if (direction == 0) { - addProjectileClipping(x, y, height, 66560); - addProjectileClipping(x - 1, y, height, 4096); - addProjectileClipping(x, y + 1, height, 16384); - } else if (direction == 1) { - addProjectileClipping(x, y, height, 5120); - addProjectileClipping(x, y + 1, height, 16384); - addProjectileClipping(x + 1, y, height, 65536); - } else if (direction == 2) { - addProjectileClipping(x, y, height, 20480); - addProjectileClipping(x + 1, y, height, 65536); - addProjectileClipping(x, y - 1, height, 1024); - } else if (direction == 3) { - addProjectileClipping(x, y, height, 81920); - addProjectileClipping(x, y - 1, height, 1024); - addProjectileClipping(x - 1, y, height, 4096); - } - } - } - } - - private static void addClippingForSolidObject(int x, int y, int height, - int xLength, int yLength, boolean flag) { - int clipping = 256; - if (flag) { - clipping += 0x20000; - } - for (int i = x; i < x + xLength; i++) { - for (int i2 = y; i2 < y + yLength; i2++) { - addClipping(i, i2, height, clipping); - } - } - } - - private static void addProjectileClippingForSolidObject(int x, int y, int height, - int xLength, int yLength, boolean flag) { - int clipping = 256; - if (flag) { - clipping += 0x20000; - } - for (int i = x; i < x + xLength; i++) { - for (int i2 = y; i2 < y + yLength; i2++) { - addProjectileClipping(i, i2, height, clipping); - } - } - } - - public static void addObject(int objectId, int x, int y, int height, int type, int direction, boolean startUp) { - if (ObjectDef.getObjectDef(objectId) == null) { - } - int xLength; - int yLength; - if (direction != 1 && direction != 3) { - xLength = ObjectDef.getObjectDef(objectId).xLength(); - yLength = ObjectDef.getObjectDef(objectId).yLength(); - } else { - xLength = ObjectDef.getObjectDef(objectId).yLength(); - yLength = ObjectDef.getObjectDef(objectId).xLength(); - } - if (type == 22) { - if (ObjectDef.getObjectDef(objectId).hasActions() - && ObjectDef.getObjectDef(objectId).aBoolean767()) { - addClipping(x, y, height, 0x200000); - if (ObjectDef.getObjectDef(objectId).isUnshootable()) { - addProjectileClipping(x, y, height, 0x200000); - } - } - } else if (type >= 9) { - if (ObjectDef.getObjectDef(objectId).aBoolean767()) { - addClippingForSolidObject(x, y, height, xLength, yLength, - ObjectDef.getObjectDef(objectId).solid()); - if (ObjectDef.getObjectDef(objectId).isUnshootable()) { - addProjectileClippingForSolidObject(x, y, height, xLength, yLength, - ObjectDef.getObjectDef(objectId).solid()); - } - } - } else if (type >= 0 && type <= 3) { - if (ObjectDef.getObjectDef(objectId).aBoolean767()) { - addClippingForVariableObject(x, y, height, type, direction, - ObjectDef.getObjectDef(objectId).solid()); - if (ObjectDef.getObjectDef(objectId).isUnshootable()) { - addProjectileClippingForVariableObject(x, y, height, type, direction, ObjectDef.getObjectDef(objectId).solid()); - } - } - } - Region r = getRegion(x, y); - if (r != null) { - if (startUp) - r.realObjects.add(new Objects(objectId, x, y, height, direction, type, 0)); - else if (!objectExists(objectId, x, y, height)) - r.realObjects.add(new Objects(objectId, x, y, height, direction, type, 0)); - } - } - - public static int getClipping(int x, int y, int height) { - if (height > 3) { - height = 0; - } - int regionX = x >> 3; - int regionY = y >> 3; - int regionId = (regionX / 8 << 8) + regionY / 8; - for (Region r : regions) { - if (r.id() == regionId) { - return r.getClip(x, y, height); - } - } - return 0; - } - - public static int getProjectileClipping(int x, int y, int height) { - if (height > 3) { - height = 0; - } - int regionX = x >> 3; - int regionY = y >> 3; - int regionId = (regionX / 8 << 8) + regionY / 8; - for (Region r : regions) { - if (r.id() == regionId) { - return r.getProjectileClip(x, y, height); - } - } - return 0; - } - - public static boolean getClipping(int x, int y, int height, int moveTypeX, - int moveTypeY) { - try { - if (height > 3) { - height = 0; - } - int checkX = x + moveTypeX; - int checkY = y + moveTypeY; - if (moveTypeX == -1 && moveTypeY == 0) { - return (getClipping(x, y, height) & 0x1280108) == 0; - } else if (moveTypeX == 1 && moveTypeY == 0) { - return (getClipping(x, y, height) & 0x1280180) == 0; - } else if (moveTypeX == 0 && moveTypeY == -1) { - return (getClipping(x, y, height) & 0x1280102) == 0; - } else if (moveTypeX == 0 && moveTypeY == 1) { - return (getClipping(x, y, height) & 0x1280120) == 0; - } else if (moveTypeX == -1 && moveTypeY == -1) { - return (getClipping(x, y, height) & 0x128010e) == 0 - && (getClipping(checkX - 1, checkY, height) & 0x1280108) == 0 - && (getClipping(checkX - 1, checkY, height) & 0x1280102) == 0; - } else if (moveTypeX == 1 && moveTypeY == -1) { - return (getClipping(x, y, height) & 0x1280183) == 0 - && (getClipping(checkX + 1, checkY, height) & 0x1280180) == 0 - && (getClipping(checkX, checkY - 1, height) & 0x1280102) == 0; - } else if (moveTypeX == -1 && moveTypeY == 1) { - return (getClipping(x, y, height) & 0x1280138) == 0 - && (getClipping(checkX - 1, checkY, height) & 0x1280108) == 0 - && (getClipping(checkX, checkY + 1, height) & 0x1280120) == 0; - } else if (moveTypeX == 1 && moveTypeY == 1) { - return (getClipping(x, y, height) & 0x12801e0) == 0 - && (getClipping(checkX + 1, checkY, height) & 0x1280180) == 0 - && (getClipping(checkX, checkY + 1, height) & 0x1280120) == 0; - } else { - System.out.println("[FATAL ERROR]: At getClipping: " + x + ", " - + y + ", " + height + ", " + moveTypeX + ", " - + moveTypeY); - return false; - } - } catch (Exception e) { - return true; - } - } - - public static void load() { - try { - File f = new File("./data/world/map_index"); - byte[] buffer = new byte[(int) f.length()]; - DataInputStream dis = new DataInputStream(new FileInputStream(f)); - dis.readFully(buffer); - dis.close(); - ByteStream in = new ByteStream(buffer); - int size = in.length() / 7; - regions = new Region[size]; - int[] regionIds = new int[size]; - int[] mapGroundFileIds = new int[size]; - int[] mapObjectsFileIds = new int[size]; - boolean[] isMembers = new boolean[size]; - for (int i = 0; i < size; i++) { - regionIds[i] = in.getUShort(); - mapGroundFileIds[i] = in.getUShort(); - mapObjectsFileIds[i] = in.getUShort(); - isMembers[i] = in.getUByte() == 0; - } - for (int i = 0; i < size; i++) { - regions[i] = new Region(regionIds[i], isMembers[i]); - } - for (int i = 0; i < size; i++) { - byte[] file1 = getBuffer(new File("./data/world/map/" - + mapObjectsFileIds[i] + ".gz")); - byte[] file2 = getBuffer(new File("./data/world/map/" - + mapGroundFileIds[i] + ".gz")); - if (file1 == null || file2 == null) { - continue; - } - try { - loadMaps(regionIds[i], new ByteStream(file1), - new ByteStream(file2)); - } catch (Exception e) { - System.out.println("Error loading map region: " - + regionIds[i]); - } - } - System.out.println("[Region] DONE LOADING REGION CONFIGURATIONS"); - } catch (Exception e) { - e.printStackTrace(); - } - } - - private static void loadMaps(int regionId, ByteStream str1, ByteStream str2) { - int absX = (regionId >> 8) * 64; - int absY = (regionId & 0xff) * 64; - int[][][] someArray = new int[4][64][64]; - for (int i = 0; i < 4; i++) { - for (int i2 = 0; i2 < 64; i2++) { - for (int i3 = 0; i3 < 64; i3++) { - while (true) { - int v = str2.getUByte(); - if (v == 0) { - break; - } else if (v == 1) { - str2.skip(1); - break; - } else if (v <= 49) { - str2.skip(1); - } else if (v <= 81) { - someArray[i][i2][i3] = v - 49; - } - } - } - } - } - for (int i = 0; i < 4; i++) { - for (int i2 = 0; i2 < 64; i2++) { - for (int i3 = 0; i3 < 64; i3++) { - if ((someArray[i][i2][i3] & 1) == 1) { - int height = i; - if ((someArray[1][i2][i3] & 2) == 2) { - height--; - } - if (height >= 0 && height <= 3) { - addClipping(absX + i2, absY + i3, height, 0x200000); - } - } - } - } - } - int objectId = -1; - int incr; - while ((incr = str1.getUSmart()) != 0) { - objectId += incr; - int location = 0; - int incr2; - while ((incr2 = str1.getUSmart()) != 0) { - location += incr2 - 1; - int localX = location >> 6 & 0x3f; - int localY = location & 0x3f; - int height = location >> 12; - int objectData = str1.getUByte(); - int type = objectData >> 2; - int direction = objectData & 0x3; - if (localX < 0 || localX >= 64 || localY < 0 || localY >= 64) { - continue; - } - if ((someArray[1][localX][localY] & 2) == 2) { - height--; - } - if (height >= 0 && height <= 3) { - addObject(objectId, absX + localX, absY + localY, height, - type, direction, false); - } - } - } - } - - public static byte[] getBuffer(File f) throws Exception { - if (!f.exists()) { - return null; - } - byte[] buffer = new byte[(int) f.length()]; - DataInputStream dis = new DataInputStream(new FileInputStream(f)); - dis.readFully(buffer); - dis.close(); - byte[] gzipInputBuffer = new byte[999999]; - int bufferlength = 0; - GZIPInputStream gzip = new GZIPInputStream(new ByteArrayInputStream( - buffer)); - do { - if (bufferlength == gzipInputBuffer.length) { - System.out - .println("Error inflating data.\nGZIP buffer overflow."); - break; - } - int readByte = gzip.read(gzipInputBuffer, bufferlength, - gzipInputBuffer.length - bufferlength); - if (readByte == -1) { - break; - } - bufferlength += readByte; - } while (true); - byte[] inflated = new byte[bufferlength]; - System.arraycopy(gzipInputBuffer, 0, inflated, 0, bufferlength); - buffer = inflated; - if (buffer.length < 10) { - return null; - } - return buffer; - } - -} +package com.rebotted.world.clip; + +import java.io.ByteArrayInputStream; +import java.io.DataInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.util.ArrayList; +import java.util.zip.GZIPInputStream; + +import com.rebotted.game.objects.Objects; + +public class Region { + + private ArrayList realObjects = new ArrayList(); + + public static Region getRegion(int x, int y) { + int regionX = x >> 3; + int regionY = y >> 3; + int regionId = (regionX / 8 << 8) + regionY / 8; + for (Region region : regions) { + if (region.id() == regionId) { + return region; + } + } + return null; + } + + public static Objects getObject(int id, int x, int y, int z) { + Region r = getRegion(x, y); + if (r == null) + return null; + for (Objects o : r.realObjects) { + if (o.objectId == id) { + if (o.objectX == x && o.objectY == y && o.objectHeight == z) { + return o; + } + } + } + return null; + } + + public static boolean objectExists(int id, int x, int y, int z) { + Region r = getRegion(x, y); + if (r == null) + return false; + for (Objects o : r.realObjects) { + if (o.objectId == id) { + if (o.objectX == x && o.objectY == y && o.objectHeight == z) { + return true; + } + } + } + return false; + } + + private void addClip(int x, int y, int height, int shift) { + int regionAbsX = (id >> 8) * 64; + int regionAbsY = (id & 0xff) * 64; + if (clips[height] == null) { + clips[height] = new int[64][64]; + } + clips[height][x - regionAbsX][y - regionAbsY] |= shift; + } + + private void addProjectileClip(int x, int y, int height, int shift) { + int regionAbsX = (id >> 8) * 64; + int regionAbsY = (id & 0xff) * 64; + if (projectileClips[height] == null) { + projectileClips[height] = new int[64][64]; + } + projectileClips[height][x - regionAbsX][y - regionAbsY] |= shift; + } + + public static boolean canMove(int x, int y, int z, int direction) { + if (direction == 6) { + if ((Region.getClipping(x, y - 1, z) & 0x1280102) == 0) { + return true; + } + } else if (direction == 3) { + if ((Region.getClipping(x - 1, y, z) & 0x1280108) == 0) { + return true; + } + } else if (direction == 1) { + if ((Region.getClipping(x, y + 1, z) & 0x1280120) == 0) { + return true; + } + } else if (direction == 4) { + if ((Region.getClipping(x + 1, y, z) & 0x1280180) == 0) { + return true; + } + } else if (direction == 5) { + if ((Region.getClipping(x - 1, y - 1, z) & 0x128010e) == 0 + && (Region.getClipping(x - 1, y, z) & 0x1280108) == 0 + && (Region.getClipping(x, y - 1, z) & 0x1280102) == 0) { + return true; + } + } else if (direction == 0) { + if ((Region.getClipping(x - 1, y + 1, z) & 0x1280138) == 0 + && (Region.getClipping(x - 1, y, z) & 0x1280108) == 0 + && (Region.getClipping(x, y + 1, z) & 0x1280120) == 0) { + return true; + } + } else if (direction == 7) { + if ((Region.getClipping(x + 1, y - 1, z) & 0x1280183) == 0 + && (Region.getClipping(x + 1, y, z) & 0x1280180) == 0 + && (Region.getClipping(x, y - 1, z) & 0x1280102) == 0) { + return true; + } + } else if (direction == 2) { + if ((Region.getClipping(x + 1, y + 1, z) & 0x12801e0) == 0 + && (Region.getClipping(x + 1, y, z) & 0x1280180) == 0 + && (Region.getClipping(x, y + 1, z) & 0x1280120) == 0) { + return true; + } + } else if (direction == -1) { + throw new IllegalArgumentException("Invalid direction: " + direction); + } + + return false; + } + + public static boolean canShoot(int x, int y, int z, int direction) { + if (direction == 0) { + return !projectileBlockedNorthWest(x, y, z) && !projectileBlockedNorth(x, y, z) + && !projectileBlockedWest(x, y, z); + } else if (direction == 1) { + return !projectileBlockedNorth(x, y, z); + } else if (direction == 2) { + return !projectileBlockedNorthEast(x, y, z) && !projectileBlockedNorth(x, y, z) + && !projectileBlockedEast(x, y, z); + } else if (direction == 3) { + return !projectileBlockedWest(x, y, z); + } else if (direction == 4) { + return !projectileBlockedEast(x, y, z); + } else if (direction == 5) { + return !projectileBlockedSouthWest(x, y, z) && !projectileBlockedSouth(x, y, z) + && !projectileBlockedWest(x, y, z); + } else if (direction == 6) { + return !projectileBlockedSouth(x, y, z); + } else if (direction == 7) { + return !projectileBlockedSouthEast(x, y, z) && !projectileBlockedSouth(x, y, z) + && !projectileBlockedEast(x, y, z); + } + return false; + } + + public static boolean projectileBlockedNorth(int x, int y, int z) { + return (getProjectileClipping(x, y + 1, z) & 0x1280120) != 0; + } + + public static boolean projectileBlockedEast(int x, int y, int z) { + return (getProjectileClipping(x + 1, y, z) & 0x1280180) != 0; + } + + public static boolean projectileBlockedSouth(int x, int y, int z) { + return (getProjectileClipping(x, y - 1, z) & 0x1280102) != 0; + } + + public static boolean projectileBlockedWest(int x, int y, int z) { + return (getProjectileClipping(x - 1, y, z) & 0x1280108) != 0; + } + + public static boolean projectileBlockedNorthEast(int x, int y, int z) { + return (getProjectileClipping(x + 1, y + 1, z) & 0x12801e0) != 0; + } + + public static boolean projectileBlockedNorthWest(int x, int y, int z) { + return (getProjectileClipping(x - 1, y + 1, z) & 0x1280138) != 0; + } + + public static boolean projectileBlockedSouthEast(int x, int y, int z) { + return (getProjectileClipping(x + 1, y - 1, z) & 0x1280183) != 0; + } + + public static boolean projectileBlockedSouthWest(int x, int y, int z) { + return (getProjectileClipping(x - 1, y - 1, z) & 0x128010e) != 0; + } + + public static boolean canMove(int startX, int startY, int endX, int endY, int height, int xLength, int yLength) { + int diffX = endX - startX; + int diffY = endY - startY; + int max = Math.max(Math.abs(diffX), Math.abs(diffY)); + for (int ii = 0; ii < max; ii++) { + int currentX = endX - diffX; + int currentY = endY - diffY; + for (int i = 0; i < xLength; i++) { + for (int i2 = 0; i2 < yLength; i2++) + if (diffX < 0 && diffY < 0) { + if ((getClipping((currentX + i) - 1, + (currentY + i2) - 1, height) & 0x128010e) != 0 + || (getClipping((currentX + i) - 1, currentY + + i2, height) & 0x1280108) != 0 + || (getClipping(currentX + i, + (currentY + i2) - 1, height) & 0x1280102) != 0) + return false; + } else if (diffX > 0 && diffY > 0) { + if ((getClipping(currentX + i + 1, currentY + i2 + 1, + height) & 0x12801e0) != 0 + || (getClipping(currentX + i + 1, + currentY + i2, height) & 0x1280180) != 0 + || (getClipping(currentX + i, + currentY + i2 + 1, height) & 0x1280120) != 0) + return false; + } else if (diffX < 0 && diffY > 0) { + if ((getClipping((currentX + i) - 1, currentY + i2 + 1, + height) & 0x1280138) != 0 + || (getClipping((currentX + i) - 1, currentY + + i2, height) & 0x1280108) != 0 + || (getClipping(currentX + i, + currentY + i2 + 1, height) & 0x1280120) != 0) + return false; + } else if (diffX > 0 && diffY < 0) { + if ((getClipping(currentX + i + 1, (currentY + i2) - 1, + height) & 0x1280183) != 0 + || (getClipping(currentX + i + 1, + currentY + i2, height) & 0x1280180) != 0 + || (getClipping(currentX + i, + (currentY + i2) - 1, height) & 0x1280102) != 0) + return false; + } else if (diffX > 0 && diffY == 0) { + if ((getClipping(currentX + i + 1, currentY + i2, + height) & 0x1280180) != 0) + return false; + } else if (diffX < 0 && diffY == 0) { + if ((getClipping((currentX + i) - 1, currentY + i2, + height) & 0x1280108) != 0) + return false; + } else if (diffX == 0 && diffY > 0) { + if ((getClipping(currentX + i, currentY + i2 + 1, + height) & 0x1280120) != 0) + return false; + } else if (diffX == 0 + && diffY < 0 + && (getClipping(currentX + i, (currentY + i2) - 1, + height) & 0x1280102) != 0) + return false; + + } + + if (diffX < 0) + diffX++; + else if (diffX > 0) + diffX--; + if (diffY < 0) + diffY++; + else if (diffY > 0) + diffY--; + } + + return true; + } + + private int getClip(int x, int y, int height) { + int regionAbsX = (id >> 8) * 64; + int regionAbsY = (id & 0xff) * 64; + if (clips[height] == null) { + return 0; + } + return clips[height][x - regionAbsX][y - regionAbsY]; + } + + private int getProjectileClip(int x, int y, int height) { + int regionAbsX = (id >> 8) * 64; + int regionAbsY = (id & 0xff) * 64; + if (projectileClips[height] == null) { + return 0; + } + return projectileClips[height][x - regionAbsX][y - regionAbsY]; + } + + private static void addClipping(int x, int y, int height, int shift) { + int regionX = x >> 3; + int regionY = y >> 3; + int regionId = (regionX / 8 << 8) + regionY / 8; + for (Region r : regions) { + if (r.id() == regionId) { + r.addClip(x, y, height, shift); + break; + } + } + } + + private static void addProjectileClipping(int x, int y, int height, int shift) { + int regionX = x >> 3; + int regionY = y >> 3; + int regionId = (regionX / 8 << 8) + regionY / 8; + for (Region r : regions) { + if (r.id() == regionId) { + r.addProjectileClip(x, y, height, shift); + break; + } + } + } + + + private static Region[] regions; + private final int id; + private final int[][][] clips = new int[4][][]; + private final int[][][] projectileClips = new int[4][][]; + private boolean members = false; + + public Region(int id, boolean members) { + this.id = id; + this.members = members; + } + + public int id() { + return id; + } + + public boolean members() { + return members; + } + + public static boolean isMembers(int x, int y, int height) { + if (x >= 3272 && x <= 3320 && y >= 2752 && y <= 2809) { + return false; + } + if (x >= 2640 && x <= 2677 && y >= 2638 && y <= 2679) { + return false; + } + int regionX = x >> 3; + int regionY = y >> 3; + int regionId = (regionX / 8 << 8) + regionY / 8; + for (Region r : regions) { + if (r.id() == regionId) { + return r.members(); + } + } + return false; + } + + private static void addClippingForVariableObject(int x, int y, int height, + int type, int direction, boolean flag) { + if (type == 0) { + if (direction == 0) { + addClipping(x, y, height, 128); + addClipping(x - 1, y, height, 8); + } else if (direction == 1) { + addClipping(x, y, height, 2); + addClipping(x, y + 1, height, 32); + } else if (direction == 2) { + addClipping(x, y, height, 8); + addClipping(x + 1, y, height, 128); + } else if (direction == 3) { + addClipping(x, y, height, 32); + addClipping(x, y - 1, height, 2); + } + } else if (type == 1 || type == 3) { + if (direction == 0) { + addClipping(x, y, height, 1); + addClipping(x - 1, y, height, 16); + } else if (direction == 1) { + addClipping(x, y, height, 4); + addClipping(x + 1, y + 1, height, 64); + } else if (direction == 2) { + addClipping(x, y, height, 16); + addClipping(x + 1, y - 1, height, 1); + } else if (direction == 3) { + addClipping(x, y, height, 64); + addClipping(x - 1, y - 1, height, 4); + } + } else if (type == 2) { + if (direction == 0) { + addClipping(x, y, height, 130); + addClipping(x - 1, y, height, 8); + addClipping(x, y + 1, height, 32); + } else if (direction == 1) { + addClipping(x, y, height, 10); + addClipping(x, y + 1, height, 32); + addClipping(x + 1, y, height, 128); + } else if (direction == 2) { + addClipping(x, y, height, 40); + addClipping(x + 1, y, height, 128); + addClipping(x, y - 1, height, 2); + } else if (direction == 3) { + addClipping(x, y, height, 160); + addClipping(x, y - 1, height, 2); + addClipping(x - 1, y, height, 8); + } + } + if (flag) { + if (type == 0) { + if (direction == 0) { + addClipping(x, y, height, 65536); + addClipping(x - 1, y, height, 4096); + } else if (direction == 1) { + addClipping(x, y, height, 1024); + addClipping(x, y + 1, height, 16384); + } else if (direction == 2) { + addClipping(x, y, height, 4096); + addClipping(x + 1, y, height, 65536); + } else if (direction == 3) { + addClipping(x, y, height, 16384); + addClipping(x, y - 1, height, 1024); + } + } + if (type == 1 || type == 3) { + if (direction == 0) { + addClipping(x, y, height, 512); + addClipping(x - 1, y + 1, height, 8192); + } else if (direction == 1) { + addClipping(x, y, height, 2048); + addClipping(x + 1, y + 1, height, 32768); + } else if (direction == 2) { + addClipping(x, y, height, 8192); + addClipping(x + 1, y + 1, height, 512); + } else if (direction == 3) { + addClipping(x, y, height, 32768); + addClipping(x - 1, y - 1, height, 2048); + } + } else if (type == 2) { + if (direction == 0) { + addClipping(x, y, height, 66560); + addClipping(x - 1, y, height, 4096); + addClipping(x, y + 1, height, 16384); + } else if (direction == 1) { + addClipping(x, y, height, 5120); + addClipping(x, y + 1, height, 16384); + addClipping(x + 1, y, height, 65536); + } else if (direction == 2) { + addClipping(x, y, height, 20480); + addClipping(x + 1, y, height, 65536); + addClipping(x, y - 1, height, 1024); + } else if (direction == 3) { + addClipping(x, y, height, 81920); + addClipping(x, y - 1, height, 1024); + addClipping(x - 1, y, height, 4096); + } + } + } + } + + private static void addProjectileClippingForVariableObject(int x, int y, int height, + int type, int direction, boolean flag) { + if (type == 0) { + if (direction == 0) { + addProjectileClipping(x, y, height, 128); + addProjectileClipping(x - 1, y, height, 8); + } else if (direction == 1) { + addProjectileClipping(x, y, height, 2); + addProjectileClipping(x, y + 1, height, 32); + } else if (direction == 2) { + addProjectileClipping(x, y, height, 8); + addProjectileClipping(x + 1, y, height, 128); + } else if (direction == 3) { + addProjectileClipping(x, y, height, 32); + addProjectileClipping(x, y - 1, height, 2); + } + } else if (type == 1 || type == 3) { + if (direction == 0) { + addProjectileClipping(x, y, height, 1); + addProjectileClipping(x - 1, y, height, 16); + } else if (direction == 1) { + addProjectileClipping(x, y, height, 4); + addProjectileClipping(x + 1, y + 1, height, 64); + } else if (direction == 2) { + addProjectileClipping(x, y, height, 16); + addProjectileClipping(x + 1, y - 1, height, 1); + } else if (direction == 3) { + addProjectileClipping(x, y, height, 64); + addProjectileClipping(x - 1, y - 1, height, 4); + } + } else if (type == 2) { + if (direction == 0) { + addProjectileClipping(x, y, height, 130); + addProjectileClipping(x - 1, y, height, 8); + addProjectileClipping(x, y + 1, height, 32); + } else if (direction == 1) { + addProjectileClipping(x, y, height, 10); + addProjectileClipping(x, y + 1, height, 32); + addProjectileClipping(x + 1, y, height, 128); + } else if (direction == 2) { + addProjectileClipping(x, y, height, 40); + addProjectileClipping(x + 1, y, height, 128); + addProjectileClipping(x, y - 1, height, 2); + } else if (direction == 3) { + addProjectileClipping(x, y, height, 160); + addProjectileClipping(x, y - 1, height, 2); + addProjectileClipping(x - 1, y, height, 8); + } + } + if (flag) { + if (type == 0) { + if (direction == 0) { + addProjectileClipping(x, y, height, 65536); + addProjectileClipping(x - 1, y, height, 4096); + } else if (direction == 1) { + addProjectileClipping(x, y, height, 1024); + addProjectileClipping(x, y + 1, height, 16384); + } else if (direction == 2) { + addProjectileClipping(x, y, height, 4096); + addProjectileClipping(x + 1, y, height, 65536); + } else if (direction == 3) { + addProjectileClipping(x, y, height, 16384); + addProjectileClipping(x, y - 1, height, 1024); + } + } + if (type == 1 || type == 3) { + if (direction == 0) { + addProjectileClipping(x, y, height, 512); + addProjectileClipping(x - 1, y + 1, height, 8192); + } else if (direction == 1) { + addProjectileClipping(x, y, height, 2048); + addProjectileClipping(x + 1, y + 1, height, 32768); + } else if (direction == 2) { + addProjectileClipping(x, y, height, 8192); + addProjectileClipping(x + 1, y + 1, height, 512); + } else if (direction == 3) { + addProjectileClipping(x, y, height, 32768); + addProjectileClipping(x - 1, y - 1, height, 2048); + } + } else if (type == 2) { + if (direction == 0) { + addProjectileClipping(x, y, height, 66560); + addProjectileClipping(x - 1, y, height, 4096); + addProjectileClipping(x, y + 1, height, 16384); + } else if (direction == 1) { + addProjectileClipping(x, y, height, 5120); + addProjectileClipping(x, y + 1, height, 16384); + addProjectileClipping(x + 1, y, height, 65536); + } else if (direction == 2) { + addProjectileClipping(x, y, height, 20480); + addProjectileClipping(x + 1, y, height, 65536); + addProjectileClipping(x, y - 1, height, 1024); + } else if (direction == 3) { + addProjectileClipping(x, y, height, 81920); + addProjectileClipping(x, y - 1, height, 1024); + addProjectileClipping(x - 1, y, height, 4096); + } + } + } + } + + private static void addClippingForSolidObject(int x, int y, int height, + int xLength, int yLength, boolean flag) { + int clipping = 256; + if (flag) { + clipping += 0x20000; + } + for (int i = x; i < x + xLength; i++) { + for (int i2 = y; i2 < y + yLength; i2++) { + addClipping(i, i2, height, clipping); + } + } + } + + private static void addProjectileClippingForSolidObject(int x, int y, int height, + int xLength, int yLength, boolean flag) { + int clipping = 256; + if (flag) { + clipping += 0x20000; + } + for (int i = x; i < x + xLength; i++) { + for (int i2 = y; i2 < y + yLength; i2++) { + addProjectileClipping(i, i2, height, clipping); + } + } + } + + public static void addObject(int objectId, int x, int y, int height, int type, int direction, boolean startUp) { + if (ObjectDef.getObjectDef(objectId) == null) { + } + int xLength; + int yLength; + if (direction != 1 && direction != 3) { + xLength = ObjectDef.getObjectDef(objectId).xLength(); + yLength = ObjectDef.getObjectDef(objectId).yLength(); + } else { + xLength = ObjectDef.getObjectDef(objectId).yLength(); + yLength = ObjectDef.getObjectDef(objectId).xLength(); + } + if (type == 22) { + if (ObjectDef.getObjectDef(objectId).hasActions() + && ObjectDef.getObjectDef(objectId).aBoolean767()) { + addClipping(x, y, height, 0x200000); + if (ObjectDef.getObjectDef(objectId).isUnshootable()) { + addProjectileClipping(x, y, height, 0x200000); + } + } + } else if (type >= 9) { + if (ObjectDef.getObjectDef(objectId).aBoolean767()) { + addClippingForSolidObject(x, y, height, xLength, yLength, + ObjectDef.getObjectDef(objectId).solid()); + if (ObjectDef.getObjectDef(objectId).isUnshootable()) { + addProjectileClippingForSolidObject(x, y, height, xLength, yLength, + ObjectDef.getObjectDef(objectId).solid()); + } + } + } else if (type >= 0 && type <= 3) { + if (ObjectDef.getObjectDef(objectId).aBoolean767()) { + addClippingForVariableObject(x, y, height, type, direction, + ObjectDef.getObjectDef(objectId).solid()); + if (ObjectDef.getObjectDef(objectId).isUnshootable()) { + addProjectileClippingForVariableObject(x, y, height, type, direction, ObjectDef.getObjectDef(objectId).solid()); + } + } + } + Region r = getRegion(x, y); + if (r != null) { + if (startUp) + r.realObjects.add(new Objects(objectId, x, y, height, direction, type, 0)); + else if (!objectExists(objectId, x, y, height)) + r.realObjects.add(new Objects(objectId, x, y, height, direction, type, 0)); + } + } + + public static int getClipping(int x, int y, int height) { + if (height > 3) { + height = 0; + } + int regionX = x >> 3; + int regionY = y >> 3; + int regionId = (regionX / 8 << 8) + regionY / 8; + for (Region r : regions) { + if (r.id() == regionId) { + return r.getClip(x, y, height); + } + } + return 0; + } + + public static int getProjectileClipping(int x, int y, int height) { + if (height > 3) { + height = 0; + } + int regionX = x >> 3; + int regionY = y >> 3; + int regionId = (regionX / 8 << 8) + regionY / 8; + for (Region r : regions) { + if (r.id() == regionId) { + return r.getProjectileClip(x, y, height); + } + } + return 0; + } + + public static boolean getClipping(int x, int y, int height, int moveTypeX, + int moveTypeY) { + try { + if (height > 3) { + height = 0; + } + int checkX = x + moveTypeX; + int checkY = y + moveTypeY; + if (moveTypeX == -1 && moveTypeY == 0) { + return (getClipping(x, y, height) & 0x1280108) == 0; + } else if (moveTypeX == 1 && moveTypeY == 0) { + return (getClipping(x, y, height) & 0x1280180) == 0; + } else if (moveTypeX == 0 && moveTypeY == -1) { + return (getClipping(x, y, height) & 0x1280102) == 0; + } else if (moveTypeX == 0 && moveTypeY == 1) { + return (getClipping(x, y, height) & 0x1280120) == 0; + } else if (moveTypeX == -1 && moveTypeY == -1) { + return (getClipping(x, y, height) & 0x128010e) == 0 + && (getClipping(checkX - 1, checkY, height) & 0x1280108) == 0 + && (getClipping(checkX - 1, checkY, height) & 0x1280102) == 0; + } else if (moveTypeX == 1 && moveTypeY == -1) { + return (getClipping(x, y, height) & 0x1280183) == 0 + && (getClipping(checkX + 1, checkY, height) & 0x1280180) == 0 + && (getClipping(checkX, checkY - 1, height) & 0x1280102) == 0; + } else if (moveTypeX == -1 && moveTypeY == 1) { + return (getClipping(x, y, height) & 0x1280138) == 0 + && (getClipping(checkX - 1, checkY, height) & 0x1280108) == 0 + && (getClipping(checkX, checkY + 1, height) & 0x1280120) == 0; + } else if (moveTypeX == 1 && moveTypeY == 1) { + return (getClipping(x, y, height) & 0x12801e0) == 0 + && (getClipping(checkX + 1, checkY, height) & 0x1280180) == 0 + && (getClipping(checkX, checkY + 1, height) & 0x1280120) == 0; + } else { + System.out.println("[FATAL ERROR]: At getClipping: " + x + ", " + + y + ", " + height + ", " + moveTypeX + ", " + + moveTypeY); + return false; + } + } catch (Exception e) { + return true; + } + } + + public static void load() { + try { + File f = new File("./data/world/map_index"); + byte[] buffer = new byte[(int) f.length()]; + DataInputStream dis = new DataInputStream(new FileInputStream(f)); + dis.readFully(buffer); + dis.close(); + ByteStream in = new ByteStream(buffer); + int size = in.length() / 7; + regions = new Region[size]; + int[] regionIds = new int[size]; + int[] mapGroundFileIds = new int[size]; + int[] mapObjectsFileIds = new int[size]; + boolean[] isMembers = new boolean[size]; + for (int i = 0; i < size; i++) { + regionIds[i] = in.getUShort(); + mapGroundFileIds[i] = in.getUShort(); + mapObjectsFileIds[i] = in.getUShort(); + isMembers[i] = in.getUByte() == 0; + } + for (int i = 0; i < size; i++) { + regions[i] = new Region(regionIds[i], isMembers[i]); + } + for (int i = 0; i < size; i++) { + byte[] file1 = getBuffer(new File("./data/world/map/" + + mapObjectsFileIds[i] + ".gz")); + byte[] file2 = getBuffer(new File("./data/world/map/" + + mapGroundFileIds[i] + ".gz")); + if (file1 == null || file2 == null) { + continue; + } + try { + loadMaps(regionIds[i], new ByteStream(file1), + new ByteStream(file2)); + } catch (Exception e) { + System.out.println("Error loading map region: " + + regionIds[i]); + } + } + System.out.println("[Region] DONE LOADING REGION CONFIGURATIONS"); + } catch (Exception e) { + e.printStackTrace(); + } + } + + private static void loadMaps(int regionId, ByteStream str1, ByteStream str2) { + int absX = (regionId >> 8) * 64; + int absY = (regionId & 0xff) * 64; + int[][][] someArray = new int[4][64][64]; + for (int i = 0; i < 4; i++) { + for (int i2 = 0; i2 < 64; i2++) { + for (int i3 = 0; i3 < 64; i3++) { + while (true) { + int v = str2.getUByte(); + if (v == 0) { + break; + } else if (v == 1) { + str2.skip(1); + break; + } else if (v <= 49) { + str2.skip(1); + } else if (v <= 81) { + someArray[i][i2][i3] = v - 49; + } + } + } + } + } + for (int i = 0; i < 4; i++) { + for (int i2 = 0; i2 < 64; i2++) { + for (int i3 = 0; i3 < 64; i3++) { + if ((someArray[i][i2][i3] & 1) == 1) { + int height = i; + if ((someArray[1][i2][i3] & 2) == 2) { + height--; + } + if (height >= 0 && height <= 3) { + addClipping(absX + i2, absY + i3, height, 0x200000); + } + } + } + } + } + int objectId = -1; + int incr; + while ((incr = str1.getUSmart()) != 0) { + objectId += incr; + int location = 0; + int incr2; + while ((incr2 = str1.getUSmart()) != 0) { + location += incr2 - 1; + int localX = location >> 6 & 0x3f; + int localY = location & 0x3f; + int height = location >> 12; + int objectData = str1.getUByte(); + int type = objectData >> 2; + int direction = objectData & 0x3; + if (localX < 0 || localX >= 64 || localY < 0 || localY >= 64) { + continue; + } + if ((someArray[1][localX][localY] & 2) == 2) { + height--; + } + if (height >= 0 && height <= 3) { + addObject(objectId, absX + localX, absY + localY, height, + type, direction, false); + } + } + } + } + + public static byte[] getBuffer(File f) throws Exception { + if (!f.exists()) { + return null; + } + byte[] buffer = new byte[(int) f.length()]; + DataInputStream dis = new DataInputStream(new FileInputStream(f)); + dis.readFully(buffer); + dis.close(); + byte[] gzipInputBuffer = new byte[999999]; + int bufferlength = 0; + GZIPInputStream gzip = new GZIPInputStream(new ByteArrayInputStream( + buffer)); + do { + if (bufferlength == gzipInputBuffer.length) { + System.out + .println("Error inflating data.\nGZIP buffer overflow."); + break; + } + int readByte = gzip.read(gzipInputBuffer, bufferlength, + gzipInputBuffer.length - bufferlength); + if (readByte == -1) { + break; + } + bufferlength += readByte; + } while (true); + byte[] inflated = new byte[bufferlength]; + System.arraycopy(gzipInputBuffer, 0, inflated, 0, bufferlength); + buffer = inflated; + if (buffer.length < 10) { + return null; + } + return buffer; + } + +} diff --git a/2006Redone Server/src/redone/event/Task.java b/2006Redone Server/src/redone/event/Task.java deleted file mode 100644 index ad49b5b0..00000000 --- a/2006Redone Server/src/redone/event/Task.java +++ /dev/null @@ -1,180 +0,0 @@ -package redone.event; - -/** - * Represents a periodic task that can be scheduled with a {@link TaskScheduler} - * . - * - * @author Graham - */ -public abstract class Task { - - /** - * The number of cycles between consecutive executions of this task. - */ - private final int delay; - - /** - * A flag which indicates if this task should be executed once immediately. - */ - private final boolean immediate; - - /** - * The current 'count down' value. When this reaches zero the task will be - * executed. - */ - private int countdown; - - /** - * A flag which indicates if this task is still running. - */ - private boolean running = true; - - /** - * Creates a new task with a delay of 1 cycle. - */ - public Task() { - this(1); - } - - /** - * Creates a new task with a delay of 1 cycle and immediate flag. - * - * @param immediate - * A flag that indicates if for the first execution there should - * be no delay. - */ - public Task(boolean immediate) { - this(1, immediate); - } - - /** - * Creates a new task with the specified delay. - * - * @param delay - * The number of cycles between consecutive executions of this - * task. - * @throws IllegalArgumentException - * if the {@code delay} is not positive. - */ - public Task(int delay) { - this(delay, false); - } - - /** - * Creates a new task with the specified delay and immediate flag. - * - * @param delay - * The number of cycles between consecutive executions of this - * task. - * @param immediate - * A flag which indicates if for the first execution there should - * be no delay. - * @throws IllegalArgumentException - * if the {@code delay} is not positive. - */ - public Task(int delay, boolean immediate) { - checkDelay(delay); - this.delay = delay; - countdown = delay; - this.immediate = immediate; - } - - /** - * Checks if this task is an immediate task. - * - * @return {@code true} if so, {@code false} if not. - */ - public boolean isImmediate() { - return immediate; - } - - /** - * Checks if the task is running. - * - * @return {@code true} if so, {@code false} if not. - */ - public boolean isRunning() { - return running; - } - - /** - * Checks if the task is stopped. - * - * @return {@code true} if so, {@code false} if not. - */ - public boolean isStopped() { - return !running; - } - - /** - * This method should be called by the scheduling class every cycle. It - * updates the {@link #countdown} and calls the {@link #execute()} method if - * necessary. - * - * @return A flag indicating if the task is running. - */ - public boolean tick() { - if (running && --countdown == 0) { - execute(); - countdown = delay; - } - return running; - } - - /** - * Performs this task's action. - */ - protected abstract void execute(); - - /** - * Changes the delay of this task. - * - * @param delay - * The number of cycles between consecutive executions of this - * task. - * @throws IllegalArgumentException - * if the {@code delay} is not positive. - */ - public void setDelay(int delay) { - checkDelay(delay); - delay = 0; - } - - /** - * Stops this task. - * - * @throws IllegalStateException - * if the task has already been stopped. - */ - public void stop() { - checkStopped(); - running = false; - } - - /** - * Checks if the delay is negative and throws an exception if so. - * - * @param delay - * The delay. - * @throws IllegalArgumentException - * if the delay is not positive. - */ - private void checkDelay(int delay) { - if (delay <= 0) { - throw new IllegalArgumentException("Delay must be positive."); - } - } - - /** - * Checks if this task has been stopped and throws an exception if so. - * - * @throws IllegalStateException - * if the task has been stopped. - */ - private void checkStopped() { - if (!running) { - throw new IllegalStateException(); - } - } - -} diff --git a/2006Redone Server/src/redone/event/TaskScheduler.java b/2006Redone Server/src/redone/event/TaskScheduler.java deleted file mode 100644 index d6bfe9ba..00000000 --- a/2006Redone Server/src/redone/event/TaskScheduler.java +++ /dev/null @@ -1,114 +0,0 @@ -package redone.event; - -import java.util.ArrayDeque; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Queue; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; -import java.util.logging.Level; -import java.util.logging.Logger; - -/** - * A class which schedules the execution of {@link Task}s. - * - * @author Graham - */ -public final class TaskScheduler implements Runnable { - - /** - * A logger used to report error messages. - */ - private static final Logger logger = Logger.getLogger(TaskScheduler.class - .getName()); - - /** - * The time period, in milliseconds, of a single cycle. - */ - private static final int TIME_PERIOD = 600; - - /** - * The {@link ScheduledExecutorService} which schedules calls to the - * {@link #run()} method. - */ - private final ScheduledExecutorService service = Executors - .newSingleThreadScheduledExecutor(); - - /** - * A list of active tasks. - */ - private final List tasks = new ArrayList(); - - /** - * A queue of tasks that still need to be added. - */ - private final Queue newTasks = new ArrayDeque(); - - /** - * Creates and starts the task scheduler. - */ - public TaskScheduler() { - service.scheduleAtFixedRate(this, 0, TIME_PERIOD, TimeUnit.MILLISECONDS); - } - - /** - * Stops the task scheduler. - */ - public void terminate() { - service.shutdown(); - } - - /** - * Schedules the specified task. If this scheduler has been stopped with the - * {@link #terminate()} method the task will not be executed or - * garbage-collected. - * - * @param task - * The task to schedule. - */ - public void schedule(final Task task) { - if (task.isImmediate()) { - service.execute(new Runnable() { - - @Override - public void run() { - task.execute(); - } - }); - } - - synchronized (newTasks) { - newTasks.add(task); - } - } - - /** - * This method is automatically called every cycle by the - * {@link ScheduledExecutorService} and executes, adds and removes - * {@link Task}s. It should not be called directly as this will lead to - * concurrency issues and inaccurate time-keeping. - */ - @Override - public void run() { - synchronized (newTasks) { - Task task; - while ((task = newTasks.poll()) != null) { - tasks.add(task); - } - } - - for (Iterator it = tasks.iterator(); it.hasNext();) { - Task task = it.next(); - try { - if (!task.tick()) { - it.remove(); - } - } catch (Throwable t) { - logger.log(Level.SEVERE, "Exception during task execution.", t); - } - } - } - -} diff --git a/2006Redone Server/src/redone/game/content/MemberShipHandler.java b/2006Redone Server/src/redone/game/content/MemberShipHandler.java deleted file mode 100644 index b737cad3..00000000 --- a/2006Redone Server/src/redone/game/content/MemberShipHandler.java +++ /dev/null @@ -1,90 +0,0 @@ -package redone.game.content; - -import redone.Constants; -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.players.Client; - -/** - * Membership Handler - * @author Andrew's - */ - -public class MemberShipHandler { - - public static final boolean MEMBERS_AREAS = true; - - public static boolean isMembers(Client player) { - if (!player.membership && player.playerRights < 2) { - player.getActionSender() - .sendMessage( - "You can't use this feature because this is a members only feature."); - player.getActionSender().sendClearScreen(); - return false; - } - return true; - } - - public static boolean membersAreas(Client player) { - player.getActionSender().sendMessage( - "This member area is currently disabled until finished sorry."); - player.getActionSender().sendClearScreen(); - return false; - } - - private static void updateBank(Client player) { - if (player.membership && Constants.MEMBERSHIP) { - Constants.BANK_SIZE = 352; - } else { - player.getActionSender().sendMessage( - "Error in the updating bank process."); - } - } - - public void teleHome(Client player) { - if (player.membership == true) { - String type = player.playerMagicBook == 0 ? "modern" : "ancient"; - player.getPlayerAssistant().startTeleport(Constants.RESPAWN_X, - Constants.RESPAWN_Y, 0, type); - player.getActionSender().sendMessage( - "You teleport to Lumbridge."); - } else { - player.getActionSender().sendMessage( - "Teleporting is disabled for non members."); - } - } - - public static void giveMembership(final Client other, final Client player) { - CycleEventHandler.getSingleton().addEvent(other, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (Constants.MEMBERSHIP) { - other.membership = true; - updateBank(other); - other.getActionSender().sendMessage( - "You have been awarded membership!"); - other.getActionSender().sendMessage( - "You now have " + Constants.BANK_SIZE - + " bank slots!");// to test - other.getActionSender().sendMessage( - "You can now do ::membercommands for commands!"); - other.getActionSender().sendMessage( - "You may now use the ancient magicks book!"); - other.getActionSender() - .sendMessage( - "Your membership lasts forever enjoy! You will be logged so the changes can take place."); - other.logout(); - stop(); - } else { - player.getActionSender().sendMessage("Awarding membership has been disabled."); - container.stop(); - } - } - @Override - public void stop() { - - } - }, 3); - } -} diff --git a/2006Redone Server/src/redone/game/content/combat/prayer/ActivatePrayers.java b/2006Redone Server/src/redone/game/content/combat/prayer/ActivatePrayers.java deleted file mode 100644 index 03468f84..00000000 --- a/2006Redone Server/src/redone/game/content/combat/prayer/ActivatePrayers.java +++ /dev/null @@ -1,351 +0,0 @@ -package redone.game.content.combat.prayer; - -import redone.Constants; -import redone.game.content.music.sound.SoundList; -import redone.game.players.Client; - -public class ActivatePrayers { - - public static void activatePrayer(Client c, int i) { - if (c.duelRule[7]) { - for (int p = 0; p < c.getPrayer().PRAYER.length; p++) { // reset - // prayer - // glows - c.getPrayer().prayerActive[p] = false; - c.getPlayerAssistant().sendConfig(c.getPrayer().PRAYER_GLOW[p], - 0); - } - c.getActionSender().sendMessage( - "Prayer has been disabled in this duel!"); - return; - } - if (i == 24 && c.playerLevel[1] < 65) { - c.getPlayerAssistant().sendConfig(c.getPrayer().PRAYER_GLOW[i], 0); - c.getActionSender().sendMessage( - "You may not use this prayer yet."); - return; - } - if (i == 25 && c.playerLevel[1] < 70) { - c.getPlayerAssistant().sendConfig(c.getPrayer().PRAYER_GLOW[i], 0); - c.getActionSender().sendMessage( - "You may not use this prayer yet."); - return; - } - int[] defencePrayer = { 0, 5, 13, 24, 25 }; - int[] strengthPrayer = { 1, 6, 14, 24, 25 }; - int[] attackPrayer = { 2, 7, 15, 24, 25 }; - int[] rangePrayer = { 3, 11, 19 }; - int[] magePrayer = { 4, 12, 20 }; - - if (c.playerLevel[5] > 0 || !Constants.PRAYER_POINTS_REQUIRED) { - if (c.getPlayerAssistant().getLevelForXP(c.playerXP[5]) >= c - .getPrayer().PRAYER_LEVEL_REQUIRED[i] - || !Constants.PRAYER_LEVEL_REQUIRED) { - boolean headIcon = false; - switch (i) { - case 0: - case 5: - case 13: - if (c.getPrayer().prayerActive[i] == false) { - for (int j = 0; j < defencePrayer.length; j++) { - if (defencePrayer[j] != i) { - c.getPrayer().prayerActive[defencePrayer[j]] = false; - c.getPlayerAssistant() - .sendConfig( - c.getPrayer().PRAYER_GLOW[defencePrayer[j]], - 0); - } - } - } - break; - - case 1: - case 6: - case 14: - if (c.getPrayer().prayerActive[i] == false) { - for (int j = 0; j < strengthPrayer.length; j++) { - if (strengthPrayer[j] != i) { - c.getPrayer().prayerActive[strengthPrayer[j]] = false; - c.getPlayerAssistant() - .sendConfig( - c.getPrayer().PRAYER_GLOW[strengthPrayer[j]], - 0); - } - } - for (int j = 0; j < rangePrayer.length; j++) { - if (rangePrayer[j] != i) { - c.getPrayer().prayerActive[rangePrayer[j]] = false; - c.getPlayerAssistant() - .sendConfig( - c.getPrayer().PRAYER_GLOW[rangePrayer[j]], - 0); - } - } - for (int j = 0; j < magePrayer.length; j++) { - if (magePrayer[j] != i) { - c.getPrayer().prayerActive[magePrayer[j]] = false; - c.getPlayerAssistant() - .sendConfig( - c.getPrayer().PRAYER_GLOW[magePrayer[j]], - 0); - } - } - } - break; - - case 2: - case 7: - case 15: - if (c.getPrayer().prayerActive[i] == false) { - for (int j = 0; j < attackPrayer.length; j++) { - if (attackPrayer[j] != i) { - c.getPrayer().prayerActive[attackPrayer[j]] = false; - c.getPlayerAssistant() - .sendConfig( - c.getPrayer().PRAYER_GLOW[attackPrayer[j]], - 0); - } - } - for (int j = 0; j < rangePrayer.length; j++) { - if (rangePrayer[j] != i) { - c.getPrayer().prayerActive[rangePrayer[j]] = false; - c.getPlayerAssistant() - .sendConfig( - c.getPrayer().PRAYER_GLOW[rangePrayer[j]], - 0); - } - } - for (int j = 0; j < magePrayer.length; j++) { - if (magePrayer[j] != i) { - c.getPrayer().prayerActive[magePrayer[j]] = false; - c.getPlayerAssistant() - .sendConfig( - c.getPrayer().PRAYER_GLOW[magePrayer[j]], - 0); - } - } - } - break; - - case 3:// range prays - case 11: - case 19: - if (c.getPrayer().prayerActive[i] == false) { - for (int j = 0; j < attackPrayer.length; j++) { - if (attackPrayer[j] != i) { - c.getPrayer().prayerActive[attackPrayer[j]] = false; - c.getPlayerAssistant() - .sendConfig( - c.getPrayer().PRAYER_GLOW[attackPrayer[j]], - 0); - } - } - for (int j = 0; j < strengthPrayer.length; j++) { - if (strengthPrayer[j] != i) { - c.getPrayer().prayerActive[strengthPrayer[j]] = false; - c.getPlayerAssistant() - .sendConfig( - c.getPrayer().PRAYER_GLOW[strengthPrayer[j]], - 0); - } - } - for (int j = 0; j < rangePrayer.length; j++) { - if (rangePrayer[j] != i) { - c.getPrayer().prayerActive[rangePrayer[j]] = false; - c.getPlayerAssistant() - .sendConfig( - c.getPrayer().PRAYER_GLOW[rangePrayer[j]], - 0); - } - } - for (int j = 0; j < magePrayer.length; j++) { - if (magePrayer[j] != i) { - c.getPrayer().prayerActive[magePrayer[j]] = false; - c.getPlayerAssistant() - .sendConfig( - c.getPrayer().PRAYER_GLOW[magePrayer[j]], - 0); - } - } - } - break; - case 4: - case 12: - case 20: - if (c.getPrayer().prayerActive[i] == false) { - for (int j = 0; j < attackPrayer.length; j++) { - if (attackPrayer[j] != i) { - c.getPrayer().prayerActive[attackPrayer[j]] = false; - c.getPlayerAssistant() - .sendConfig( - c.getPrayer().PRAYER_GLOW[attackPrayer[j]], - 0); - } - } - for (int j = 0; j < strengthPrayer.length; j++) { - if (strengthPrayer[j] != i) { - c.getPrayer().prayerActive[strengthPrayer[j]] = false; - c.getPlayerAssistant() - .sendConfig( - c.getPrayer().PRAYER_GLOW[strengthPrayer[j]], - 0); - } - } - for (int j = 0; j < rangePrayer.length; j++) { - if (rangePrayer[j] != i) { - c.getPrayer().prayerActive[rangePrayer[j]] = false; - c.getPlayerAssistant() - .sendConfig( - c.getPrayer().PRAYER_GLOW[rangePrayer[j]], - 0); - } - } - for (int j = 0; j < magePrayer.length; j++) { - if (magePrayer[j] != i) { - c.getPrayer().prayerActive[magePrayer[j]] = false; - c.getPlayerAssistant() - .sendConfig( - c.getPrayer().PRAYER_GLOW[magePrayer[j]], - 0); - } - } - } - break; - case 10: - c.lastProtItem = System.currentTimeMillis(); - break; - - case 16: - case 17: - case 18: - if (System.currentTimeMillis() - - c.getPrayer().stopPrayerDelay < 5000) { - c.getActionSender() - .sendMessage( - "You have been injured and can't use this prayer!"); - c.getPlayerAssistant().sendConfig( - c.getPrayer().PRAYER_GLOW[16], 0); - c.getPlayerAssistant().sendConfig( - c.getPrayer().PRAYER_GLOW[17], 0); - c.getPlayerAssistant().sendConfig( - c.getPrayer().PRAYER_GLOW[18], 0); - return; - } - if (i == 16) { - c.protMageDelay = System.currentTimeMillis(); - } else if (i == 17) { - c.protRangeDelay = System.currentTimeMillis(); - } else if (i == 18) { - c.protMeleeDelay = System.currentTimeMillis(); - } - case 21: - case 22: - case 23: - headIcon = true; - for (int p = 16; p < 24; p++) { - if (i != p && p != 19 && p != 20) { - c.getPrayer().prayerActive[p] = false; - c.getPlayerAssistant().sendConfig( - c.getPrayer().PRAYER_GLOW[p], 0); - } - } - break; - case 24: - case 25: - if (c.getPrayer().prayerActive[i] == false) { - for (int j = 0; j < attackPrayer.length; j++) { - if (attackPrayer[j] != i) { - c.getPrayer().prayerActive[attackPrayer[j]] = false; - c.getPlayerAssistant() - .sendConfig( - c.getPrayer().PRAYER_GLOW[attackPrayer[j]], - 0); - } - } - for (int j = 0; j < strengthPrayer.length; j++) { - if (strengthPrayer[j] != i) { - c.getPrayer().prayerActive[strengthPrayer[j]] = false; - c.getPlayerAssistant() - .sendConfig( - c.getPrayer().PRAYER_GLOW[strengthPrayer[j]], - 0); - } - } - for (int j = 0; j < rangePrayer.length; j++) { - if (rangePrayer[j] != i) { - c.getPrayer().prayerActive[rangePrayer[j]] = false; - c.getPlayerAssistant() - .sendConfig( - c.getPrayer().PRAYER_GLOW[rangePrayer[j]], - 0); - } - } - for (int j = 0; j < magePrayer.length; j++) { - if (magePrayer[j] != i) { - c.getPrayer().prayerActive[magePrayer[j]] = false; - c.getPlayerAssistant() - .sendConfig( - c.getPrayer().PRAYER_GLOW[magePrayer[j]], - 0); - } - } - for (int j = 0; j < defencePrayer.length; j++) { - if (defencePrayer[j] != i) { - c.getPrayer().prayerActive[defencePrayer[j]] = false; - c.getPlayerAssistant() - .sendConfig( - c.getPrayer().PRAYER_GLOW[defencePrayer[j]], - 0); - } - } - } - break; - } - - if (!headIcon) { - if (c.getPrayer().prayerActive[i] == false) { - c.getPrayer().prayerActive[i] = true; - c.getPlayerAssistant().sendConfig( - c.getPrayer().PRAYER_GLOW[i], 1); - } else { - c.getPrayer().prayerActive[i] = false; - c.getPlayerAssistant().sendConfig( - c.getPrayer().PRAYER_GLOW[i], 0); - } - } else { - if (c.getPrayer().prayerActive[i] == false) { - c.getPrayer().prayerActive[i] = true; - c.getPlayerAssistant().sendConfig( - c.getPrayer().PRAYER_GLOW[i], 1); - c.headIcon = c.getPrayer().PRAYER_HEAD_ICONS[i]; - c.getPlayerAssistant().requestUpdates(); - } else { - c.getPrayer().prayerActive[i] = false; - c.getPlayerAssistant().sendConfig( - c.getPrayer().PRAYER_GLOW[i], 0); - c.headIcon = -1; - c.getPlayerAssistant().requestUpdates(); - } - } - } else { - c.getPlayerAssistant().sendConfig(c.getPrayer().PRAYER_GLOW[i], - 0); - c.getPlayerAssistant().sendFrame126( - "You need a @blu@Prayer level of " - + c.getPrayer().PRAYER_LEVEL_REQUIRED[i] - + " to use " + c.getPrayer().PRAYER_NAME[i] - + ".", 357); - c.getPlayerAssistant() - .sendFrame126("Click here to continue", 358); - c.getPlayerAssistant().sendChatInterface(356); - } - } else { - c.getPlayerAssistant().sendConfig(c.getPrayer().PRAYER_GLOW[i], 0); - c.getActionSender().sendMessage( - "You have run out of prayer points!"); - c.getActionSender().sendSound(SoundList.NO_PRAY, 100, 0); - } - - } - -} diff --git a/2006Redone Server/src/redone/game/content/combat/prayer/PrayerDrain.java b/2006Redone Server/src/redone/game/content/combat/prayer/PrayerDrain.java deleted file mode 100644 index 9779308a..00000000 --- a/2006Redone Server/src/redone/game/content/combat/prayer/PrayerDrain.java +++ /dev/null @@ -1,49 +0,0 @@ -package redone.game.content.combat.prayer; - -import redone.game.players.Client; - -public class PrayerDrain { - - public static void handlePrayerDrain(Client c) { - c.getPrayer().usingPrayer = false; - double toRemove = 0.0; - for (int j = 0; j < PrayerData.prayerData.length; j++) { - if (c.getPrayer().prayerActive[j]) { - toRemove += PrayerData.prayerData[j] / 20; - c.getPrayer().usingPrayer = true; - } - } - if (toRemove > 0) { - toRemove /= 1 + 0.035 * c.playerBonus[11]; - } - PrayerData.prayerPoint -= toRemove; - if (PrayerData.prayerPoint <= 0) { - PrayerData.prayerPoint = 1.0 + PrayerData.prayerPoint; - reducePrayerLevel(c); - } - - } - - public static void reducePrayerLevel(Client c) { - if (c.playerLevel[5] - 1 > 0) { - c.playerLevel[5] -= 1; - } else { - c.getActionSender().sendMessage( - "You have run out of prayer points!"); - c.playerLevel[5] = 0; - resetPrayers(c); - c.getPrayer().prayerId = -1; - } - c.getPlayerAssistant().refreshSkill(5); - } - - public static void resetPrayers(Client c) { - for (int i = 0; i < c.getPrayer().prayerActive.length; i++) { - c.getPrayer().prayerActive[i] = false; - c.getPlayerAssistant().sendConfig(c.getPrayer().PRAYER_GLOW[i], 0); - } - c.headIcon = -1; - c.getPlayerAssistant().requestUpdates(); - } - -} diff --git a/2006Redone Server/src/redone/game/content/guilds/Guilds.java b/2006Redone Server/src/redone/game/content/guilds/Guilds.java deleted file mode 100644 index 70210369..00000000 --- a/2006Redone Server/src/redone/game/content/guilds/Guilds.java +++ /dev/null @@ -1,186 +0,0 @@ -package redone.game.content.guilds; - -import redone.Constants; -import redone.game.content.quests.QuestAssistant; -import redone.game.globalworldobjects.PassDoor; -import redone.game.objects.impl.Climbing; -import redone.game.objects.impl.UseOther; -import redone.game.players.Client; - -/** - * Guilds Class - * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) - */ - -public class Guilds { - - private static boolean hasCompletedLegends = false; - - public static void attemptGuild(Client c, int objectId) { - if (!Constants.GUILDS) { - c.getActionSender().sendMessage("Guilds are currently disabled."); - return; - } - if (checkRequirments(c, objectId)) { - c.getActionSender().sendMessage("You pass through the guild."); - movePlayer(c, objectId); - } - } - - public static void movePlayer(Client c, int objectId) { - switch (objectId) { - case 2514: // Range Guild - if (c.absX == 2659 && c.absY == 3438) { - PassDoor.passThroughDoor(c, objectId, 1, 2, 9, -1, 1, 0); - } else if (c.absX == 2658 && c.absY == 3437) { - PassDoor.passThroughDoor(c, objectId, 1, 2, 9, -1, 1, 0); - } else if (c.absX == 2658 && c.absY == 3439) { - PassDoor.passThroughDoor(c, objectId, 1, 2, 9, 1, -1, 0); - } else if (c.absX == 2657 && c.absY == 3438) { - PassDoor.passThroughDoor(c, objectId, 1, 2, 9, 1, -1, 0); - } - break; - case 1805: // Champions Guild - if (c.absY == 3362 && c.absX != 3192 && c.absX != 3190) { - c.getPlayerAssistant().movePlayer(c.absX, c.absY + 1, 0); - } else if (c.absY == 3363 && c.absX != 3192 && c.absX != 3190) { - c.getPlayerAssistant().movePlayer(c.absX, c.absY - 1, 0); - } - break; - case 2641: // Monastery - if (c.heightLevel == 0) { - Climbing.climbUp(c); - } else if (c.heightLevel == 1) { - Climbing.climbDown(c); - } - break; - case 2712: // Cooks Guild - if (c.absY == 3443) { - c.getPlayerAssistant().movePlayer(c.absX, c.absY + 1, 0); - } else if (c.absY == 3444) { - c.getPlayerAssistant().movePlayer(c.absX, c.absY - 1, 0); - } - break; - case 2647: // Crafting Guild - if (c.absY == 3289) { - c.getPlayerAssistant().movePlayer(c.absX, c.absY - 1, 0); - } else if (c.absY == 3288) { - c.getPlayerAssistant().movePlayer(c.absX, c.absY + 1, 0); - } - break; - case 2113: // Mining Guild - UseOther.useDown(c, objectId); - break; - case 1755: // Mining Guild - UseOther.useUp(c, objectId); - break; - case 2025: // Fishing Guild - if (c.absY == 3393) { - c.getPlayerAssistant().movePlayer(c.absX, c.absY + 1, 0); - } else if (c.absY == 3394) { - c.getPlayerAssistant().movePlayer(c.absX, c.absY - 1, 0); - } - break; - case 1600: // Wizards Guild - case 1601: - if (c.absX == 2597) { - c.getPlayerAssistant().movePlayer(c.absX - 1, c.absY, 0); - } else if (c.absX == 2596) { - c.getPlayerAssistant().movePlayer(c.absX + 1, c.absY, 0); - } - break; - case 2624: // Heroes Guild - case 2625: - if (c.absX == 2902) { - c.getPlayerAssistant().movePlayer(c.absX - 1, c.absY, 0); - } else if (c.absX == 2901) { - c.getPlayerAssistant().movePlayer(c.absX + 1, c.absY, 0); - } - break; - case 2392: // Legends Guild - case 2391: - if (c.absY == 3349) { - c.getPlayerAssistant().movePlayer(c.absX, c.absY + 1, 0); - } else if (c.absY == 3350) { - c.getPlayerAssistant().movePlayer(c.absX, c.absY - 1, 0); - } - break; - default: - c.getActionSender().sendMessage( - "You can't access this guild from here."); - break; - } - } - - public static boolean checkRequirments(Client c, int objectId) { - switch (objectId) { - case 1805: // Champions Guild - int requiredQP = Math.min(32, QuestAssistant.MAXIMUM_QUESTPOINTS); - if (c.questPoints < requiredQP) { - c.getDialogueHandler().sendStatement("You need " + requiredQP + " quest points to enter this guild!"); - c.nextChat = 0; - return false; - } - break; - case 2392: - case 2391: - if (hasCompletedLegends == false && c.playerRights < 3) { - c.getDialogueHandler().sendStatement("You need to complete Legends Quest to enter this guild!"); - c.nextChat = 0; - return false; - } - break; - case 2641: // Prayer Guild - if (c.getPlayerAssistant().getLevelForXP(c.playerXP[5]) < 31) { - c.getDialogueHandler().sendStatement("You need 31 prayer to enter this guild!"); - c.nextChat = 0; - return false; - } - break; - case 2712: // Cooking Guild - if (c.playerLevel[c.playerCooking] < 32 || c.playerEquipment[c.playerHat] != 1949) { - c.getDialogueHandler().sendStatement("You need 32 cooking and a chefs hat to enter this guild!"); - c.nextChat = 0; - return false; - } - break; - case 2647: // Crafting Guild - if (c.playerLevel[c.playerCrafting] < 40 || c.playerEquipment[c.playerChest] != 1757) { - c.getDialogueHandler().sendStatement("You need 40 Crafting and a Brown Apron to enter this guild!"); - c.nextChat = 0; - return false; - } - break; - case 2113: // Mining Guild - if (c.playerLevel[c.playerMining] < 60) { - c.getDialogueHandler().sendStatement("You need 60 Mining to enter this guild!"); - c.nextChat = 0; - return false; - } - break; - case 2025: // Fishing Guild - if (c.playerLevel[c.playerFishing] < 68) { - c.getDialogueHandler().sendStatement("You need 68 Fishing to enter this guild!"); - c.nextChat = 0; - return false; - } - break; - case 1600: - case 1601: // Wizards Guild - if (c.playerLevel[c.playerMagic] < 66) { - c.getDialogueHandler().sendStatement("You need 66 Magic to enter this guild!"); - c.nextChat = 0; - return false; - } - break; - case 2514: - if (c.playerLevel[c.playerRanged] < 40) { // Ranging Guild - c.getDialogueHandler().sendStatement("You need 40 Range to enter this guild!"); - c.nextChat = 0; - return false; - } - break; - } - return true; - } -} diff --git a/2006Redone Server/src/redone/game/content/guilds/impl/RangersGuild.java b/2006Redone Server/src/redone/game/content/guilds/impl/RangersGuild.java deleted file mode 100644 index eac8e255..00000000 --- a/2006Redone Server/src/redone/game/content/guilds/impl/RangersGuild.java +++ /dev/null @@ -1,363 +0,0 @@ -package redone.game.content.guilds.impl; - -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.content.combat.range.RangeData; -import redone.game.players.Client; -import redone.util.Misc; - -/** - * Rangers Guild - * - * @author Aintaro - * @edit Haile N. - * - */ -public class RangersGuild { - - public final int - ARROWS_REQ = 882, - HIT_CHANCE = 55, - RANGED_LV = 4; - - public final String - MISSED = "Missed!", - BLACK = "Hit Black!", - YELLOW = "Hit Yellow!", - BLUE = "Hit Blue!", - RED = "Hit Red!", - BULLSEYE = "Bulls-Eye"; - - public int - arrowsLeft = 0, - playerScore = 0, - hitChance; - - public boolean isFiringTarget; - - private Client c; - - public RangersGuild(Client c) { - this.c = c; - } - - public void fireAtTarget() { - if(isFiringTarget) { - return; - } - hitChance = Misc.random(HIT_CHANCE)+Misc.random(c.playerLevel[RANGED_LV]); - if (arrowsLeft != 0) { - for (int bowId : RangeData.BOWS) { - if(c.playerEquipment[c.playerWeapon] == bowId) { - c.usingBow = true; - if (c.playerEquipment[c.playerArrows] == ARROWS_REQ && c.usingBow) { - if (isInTargetArea()) { - if (hitChance >= 10) { - c.getPlayerAssistant().removeAllWindows(); - c.startAnimation(426); - isFiringTarget = true; - //c.getPlayerAction().setAction(true); - //c.getPlayerAction().canWalk(false); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (hitChance >= 10 && hitChance <= 20) { - playerScore += 10; - sendConfiguration(80 + Misc.random(10), -60 + Misc.random(90)); - c.getPlayerAssistant().sendFrame126(BLACK, 567); - c.getPlayerAssistant().addSkillXP(5, 4); - c.getItemAssistant().deleteArrow(); - //c.getPlayerAction().setAction(false); - //c.getPlayerAction().canWalk(true); - } else if (hitChance >= 20 && hitChance < 30) { - playerScore += 20; - sendConfiguration(-70 + Misc.random(10),10 - Misc.random(40)); - c.getPlayerAssistant().sendFrame126(BLUE,567); - c.getPlayerAssistant().addSkillXP(10, 4); - c.getItemAssistant().deleteArrow(); - //c.getPlayerAction().setAction(false); - //c.getPlayerAction().canWalk(true); - } else if (hitChance >= 30 && hitChance < 50) { - playerScore += 30; - sendConfiguration(-30 - Misc.random(15),10 - Misc.random(25)); - c.getPlayerAssistant().sendFrame126(RED, 567); - c.getPlayerAssistant().addSkillXP(15, 4); - c.getItemAssistant().deleteArrow(); - //c.getPlayerAction().setAction(false); - //c.getPlayerAction().canWalk(true); - } else if (hitChance >= 50 && hitChance < 75) { - playerScore += 50; - sendConfiguration(5 - Misc.random(20),0 - Misc.random(20)); - c.getPlayerAssistant().sendFrame126(YELLOW, 567); - c.getPlayerAssistant().addSkillXP(15, 4); - c.getItemAssistant().deleteArrow(); - //c.getPlayerAction().setAction(false); - //c.getPlayerAction().canWalk(true); - } else if (hitChance >= 75) { - playerScore += 100; - sendConfiguration(0, 0); - c.getPlayerAssistant().sendFrame126(BULLSEYE, 567); - c.getPlayerAssistant().addSkillXP(50, 4); - c.getItemAssistant().deleteArrow(); - //c.getPlayerAction().setAction(false); - //c.getPlayerAction().canWalk(true); - } else { - c.getPlayerAssistant().sendFrame126(MISSED, 567); - sendConfiguration(1200, 1200); - c.getItemAssistant().deleteArrow(); - //c.getPlayerAction().setAction(false); - //c.getPlayerAction().canWalk(true); - } - container.stop(); - } - @Override - public void stop() { - isFiringTarget = false; - } - }, 3); - } - } else { - c.getDialogueHandler().sendStatement("You can't shoot from here."); - } - } else { - c.getDialogueHandler().sendStatement("You need some bronze arrows and a bow to shoot the target."); - c.nextChat = 0; - }}} - } else { - c.getDialogueHandler().sendStatement("You should talk to the competition judge."); - c.nextChat = 0; - } - } - - private void sendConfiguration(int xPos, int yPos) { - switch (arrowsLeft) { - case 1: - arrowsLeft--; - c.getPlayerAssistant().sendFrame70(1200, 1200, 538); - c.getPlayerAssistant().sendFrame70(1200, 1200, 557); - c.getPlayerAssistant().sendFrame70(1200, 1200, 559); - c.getPlayerAssistant().sendFrame70(1200, 1200, 560); - c.getPlayerAssistant().sendFrame70(1200, 1200, 561); - c.getPlayerAssistant().sendFrame70(1200, 1200, 562); - c.getPlayerAssistant().sendFrame70(1200, 1200, 563); - c.getPlayerAssistant().sendFrame70(1200, 1200, 564); - c.getPlayerAssistant().sendFrame70(1200, 1200, 565); - c.getPlayerAssistant().sendFrame70(1200, 1200, 566); - c.getPlayerAssistant().sendFrame126("" + playerScore, 551); - c.getPlayerAssistant().sendFrame70(xPos, yPos, 536); - c.getPlayerAssistant().showInterface(446); - break; - - case 2: - arrowsLeft--; - c.getPlayerAssistant().sendFrame70(0, 0, 538); - c.getPlayerAssistant().sendFrame70(1200, 1200, 557); - c.getPlayerAssistant().sendFrame70(1200, 1200, 559); - c.getPlayerAssistant().sendFrame70(1200, 1200, 560); - c.getPlayerAssistant().sendFrame70(1200, 1200, 561); - c.getPlayerAssistant().sendFrame70(1200, 1200, 562); - c.getPlayerAssistant().sendFrame70(1200, 1200, 563); - c.getPlayerAssistant().sendFrame70(1200, 1200, 564); - c.getPlayerAssistant().sendFrame70(1200, 1200, 565); - c.getPlayerAssistant().sendFrame70(1200, 1200, 566); - c.getPlayerAssistant().sendFrame126("" + playerScore, 551); - c.getPlayerAssistant().sendFrame70(xPos, yPos, 536); - c.getPlayerAssistant().showInterface(446); - break; - - case 3: - arrowsLeft--; - c.getPlayerAssistant().sendFrame70(0, 0, 538); - c.getPlayerAssistant().sendFrame70(0, 0, 557); - c.getPlayerAssistant().sendFrame70(1200, 1200, 559); - c.getPlayerAssistant().sendFrame70(1200, 1200, 560); - c.getPlayerAssistant().sendFrame70(1200, 1200, 561); - c.getPlayerAssistant().sendFrame70(1200, 1200, 562); - c.getPlayerAssistant().sendFrame70(1200, 1200, 563); - c.getPlayerAssistant().sendFrame70(1200, 1200, 564); - c.getPlayerAssistant().sendFrame70(1200, 1200, 565); - c.getPlayerAssistant().sendFrame70(1200, 1200, 566); - c.getPlayerAssistant().sendFrame126("" + playerScore, 551); - c.getPlayerAssistant().sendFrame70(xPos, yPos, 536); - c.getPlayerAssistant().showInterface(446); - break; - - case 4: - arrowsLeft--; - c.getPlayerAssistant().sendFrame70(0, 0, 538); - c.getPlayerAssistant().sendFrame70(0, 0, 557); - c.getPlayerAssistant().sendFrame70(0, 0, 559); - c.getPlayerAssistant().sendFrame70(1200, 1200, 560); - c.getPlayerAssistant().sendFrame70(1200, 1200, 561); - c.getPlayerAssistant().sendFrame70(1200, 1200, 562); - c.getPlayerAssistant().sendFrame70(1200, 1200, 563); - c.getPlayerAssistant().sendFrame70(1200, 1200, 564); - c.getPlayerAssistant().sendFrame70(1200, 1200, 565); - c.getPlayerAssistant().sendFrame70(1200, 1200, 566); - c.getPlayerAssistant().sendFrame126("" + playerScore, 551); - c.getPlayerAssistant().sendFrame70(xPos, yPos, 536); - c.getPlayerAssistant().showInterface(446); - break; - - case 5: - arrowsLeft--; - c.getPlayerAssistant().sendFrame70(0, 0, 538); - c.getPlayerAssistant().sendFrame70(0, 0, 557); - c.getPlayerAssistant().sendFrame70(0, 0, 559); - c.getPlayerAssistant().sendFrame70(0, 0, 560); - c.getPlayerAssistant().sendFrame70(1200, 1200, 561); - c.getPlayerAssistant().sendFrame70(1200, 1200, 562); - c.getPlayerAssistant().sendFrame70(1200, 1200, 563); - c.getPlayerAssistant().sendFrame70(1200, 1200, 564); - c.getPlayerAssistant().sendFrame70(1200, 1200, 565); - c.getPlayerAssistant().sendFrame70(1200, 1200, 566); - c.getPlayerAssistant().sendFrame126("" + playerScore, 551); - c.getPlayerAssistant().sendFrame70(xPos, yPos, 536); - c.getPlayerAssistant().showInterface(446); - break; - - case 6: - arrowsLeft--; - c.getPlayerAssistant().sendFrame70(0, 0, 538); - c.getPlayerAssistant().sendFrame70(0, 0, 557); - c.getPlayerAssistant().sendFrame70(0, 0, 559); - c.getPlayerAssistant().sendFrame70(0, 0, 560); - c.getPlayerAssistant().sendFrame70(0, 0, 561); - c.getPlayerAssistant().sendFrame70(1200, 1200, 562); - c.getPlayerAssistant().sendFrame70(1200, 1200, 563); - c.getPlayerAssistant().sendFrame70(1200, 1200, 564); - c.getPlayerAssistant().sendFrame70(1200, 1200, 565); - c.getPlayerAssistant().sendFrame70(1200, 1200, 566); - c.getPlayerAssistant().sendFrame126("" + playerScore, 551); - c.getPlayerAssistant().sendFrame70(xPos, yPos, 536); - c.getPlayerAssistant().showInterface(446); - break; - - case 7: - arrowsLeft--; - c.getPlayerAssistant().sendFrame70(0, 0, 538); - c.getPlayerAssistant().sendFrame70(0, 0, 557); - c.getPlayerAssistant().sendFrame70(0, 0, 559); - c.getPlayerAssistant().sendFrame70(0, 0, 560); - c.getPlayerAssistant().sendFrame70(0, 0, 561); - c.getPlayerAssistant().sendFrame70(0, 0, 562); - c.getPlayerAssistant().sendFrame70(1200, 1200, 563); - c.getPlayerAssistant().sendFrame70(1200, 1200, 564); - c.getPlayerAssistant().sendFrame70(1200, 1200, 565); - c.getPlayerAssistant().sendFrame70(1200, 1200, 566); - c.getPlayerAssistant().sendFrame126("" + playerScore, 551); - c.getPlayerAssistant().sendFrame70(xPos, yPos, 536); - c.getPlayerAssistant().showInterface(446); - break; - - case 8: - arrowsLeft--; - c.getPlayerAssistant().sendFrame70(0, 0, 538); - c.getPlayerAssistant().sendFrame70(0, 0, 557); - c.getPlayerAssistant().sendFrame70(0, 0, 559); - c.getPlayerAssistant().sendFrame70(0, 0, 560); - c.getPlayerAssistant().sendFrame70(0, 0, 561); - c.getPlayerAssistant().sendFrame70(0, 0, 562); - c.getPlayerAssistant().sendFrame70(0, 0, 563); - c.getPlayerAssistant().sendFrame70(1200, 1200, 564); - c.getPlayerAssistant().sendFrame70(1200, 1200, 565); - c.getPlayerAssistant().sendFrame70(1200, 1200, 566); - c.getPlayerAssistant().sendFrame126("" + playerScore, 551); - c.getPlayerAssistant().sendFrame70(xPos, yPos, 536); - c.getPlayerAssistant().showInterface(446); - break; - - case 9: - arrowsLeft--; - c.getPlayerAssistant().sendFrame70(0, 0, 538); - c.getPlayerAssistant().sendFrame70(0, 0, 557); - c.getPlayerAssistant().sendFrame70(0, 0, 559); - c.getPlayerAssistant().sendFrame70(0, 0, 560); - c.getPlayerAssistant().sendFrame70(0, 0, 561); - c.getPlayerAssistant().sendFrame70(0, 0, 562); - c.getPlayerAssistant().sendFrame70(0, 0, 563); - c.getPlayerAssistant().sendFrame70(0, 0, 564); - c.getPlayerAssistant().sendFrame70(1200, 1200, 565); - c.getPlayerAssistant().sendFrame70(1200, 1200, 566); - c.getPlayerAssistant().sendFrame126("" + playerScore, 551); - c.getPlayerAssistant().sendFrame70(xPos, yPos, 536); - c.getPlayerAssistant().showInterface(446); - break; - - case 10: - arrowsLeft--; - c.getPlayerAssistant().sendFrame70(0, 0, 538); - c.getPlayerAssistant().sendFrame70(0, 0, 557); - c.getPlayerAssistant().sendFrame70(0, 0, 559); - c.getPlayerAssistant().sendFrame70(0, 0, 560); - c.getPlayerAssistant().sendFrame70(0, 0, 561); - c.getPlayerAssistant().sendFrame70(0, 0, 562); - c.getPlayerAssistant().sendFrame70(0, 0, 563); - c.getPlayerAssistant().sendFrame70(0, 0, 564); - c.getPlayerAssistant().sendFrame70(0, 0, 565); - c.getPlayerAssistant().sendFrame126("" + playerScore, 551); - c.getPlayerAssistant().sendFrame70(xPos, yPos, 536); - c.getPlayerAssistant().showInterface(446); - break; - } - } - - public boolean isInTargetArea() { - if (c.absX >= 2669 && c.absX <= 2674 && c.absY >= 3415 && c.absY <= 3421) { - return true; - } - return false; - } - - public void exchangePoints() { - if (arrowsLeft == 0 && playerScore > 0) { - if(c.getItemAssistant().freeSlots() > 0) { - int ticketsAmt = playerScore / 10; - c.getItemAssistant().addItem(1464, ticketsAmt); - c.getDialogueHandler().sendNpcChat2("Well done. Your score is : " + playerScore + ".", "You have earned " + ticketsAmt + " Archery tickets.", c.talkingNpc, "Tutor"); - playerScore = 0; - c.nextChat = 0; - } else { - c.getDialogueHandler().sendStatement("You need 1 free slot to exchange tickets."); - c.nextChat = 0; - } - } else { - c.getDialogueHandler().sendStatement("You still have " + arrowsLeft + " shots left."); - c.nextChat = 0; - } - } - - public void howAmIDoing() { - if (playerScore == 0) { - c.getDialogueHandler().sendNpcChat2("You haven't started yet. Stand behind the hay bales and", "shoot those arrows at the targets.", c.talkingNpc, "Tutor"); - c.nextChat = 0; - } else { - c.getDialogueHandler().sendNpcChat2("Your score is : " + playerScore, "Your doing very well!", c.talkingNpc, "Tutor"); - c.nextChat = 0; - } - } - - public void buyArrows() { - if (arrowsLeft == 0) { - if (c.getItemAssistant().playerHasItem(995, 200)) { - if (c.getItemAssistant().freeSlots() > 1) { - arrowsLeft = 10; - c.getItemAssistant().deleteItem(995, 200); - c.getItemAssistant().addItem(ARROWS_REQ, 10); - c.getItemAssistant().addItem(841, 1); - c.getDialogueHandler().sendStatement("The archer hands you 10 bronze arrows and a bow."); - c.nextChat = 0; - } else { - c.getDialogueHandler().sendStatement("You need 2 free slots to receive arrows and a bow."); - } - } else { - c.getDialogueHandler().sendStatement("You need at least 200 gp to buy 10 arrows and a bow."); - c.nextChat = 0; - } - } else { - c.getDialogueHandler().sendStatement("You still have " + arrowsLeft + " shots left."); - c.nextChat = 0; - } - } -} diff --git a/2006Redone Server/src/redone/game/content/minigames/castlewars/CastleWarObjects.java b/2006Redone Server/src/redone/game/content/minigames/castlewars/CastleWarObjects.java deleted file mode 100644 index e10e3887..00000000 --- a/2006Redone Server/src/redone/game/content/minigames/castlewars/CastleWarObjects.java +++ /dev/null @@ -1,280 +0,0 @@ -package redone.game.content.minigames.castlewars; - -import redone.game.players.Client; - -public class CastleWarObjects { - - public static void handleObject(Client c, int id, int x, int y) { - switch (id) { - case 4469: - if (CastleWars.getTeamNumber(c) == 2) { - c.getActionSender().sendMessage( - "You are not allowed in the other teams spawn point."); - break; - } - if (x == 2426) { - if (c.getY() == 3080) { - c.getPlayerAssistant() - .movePlayer(2426, 3081, c.heightLevel); - } else if (c.getY() == 3081) { - c.getPlayerAssistant() - .movePlayer(2426, 3080, c.heightLevel); - } - } else if (x == 2422) { - if (c.getX() == 2422) { - c.getPlayerAssistant() - .movePlayer(2423, 3076, c.heightLevel); - } else if (c.getX() == 2423) { - c.getPlayerAssistant() - .movePlayer(2422, 3076, c.heightLevel); - } - } - break; - case 4470: - if (CastleWars.getTeamNumber(c) == 1) { - c.getActionSender().sendMessage( - "You are not allowed in the other teams spawn point."); - break; - } - if (x == 2373 && y == 3126) { - if (c.getY() == 3126) { - c.getPlayerAssistant().movePlayer(2373, 3127, 1); - } else if (c.getY() == 3127) { - c.getPlayerAssistant().movePlayer(2373, 3126, 1); - } - } else if (x == 2377 && y == 3131) { - if (c.getX() == 2376) { - c.getPlayerAssistant().movePlayer(2377, 3131, 1); - } else if (c.getX() == 2377) { - c.getPlayerAssistant().movePlayer(2376, 3131, 1); - } - } - break; - case 4417: - if (x == 2428 && y == 3081 && c.heightLevel == 1) { - c.getPlayerAssistant().movePlayer(2430, 3080, 2); - } - if (x == 2425 && y == 3074 && c.heightLevel == 2) { - c.getPlayerAssistant().movePlayer(2426, 3074, 3); - } - if (x == 2419 && y == 3078 && c.heightLevel == 0) { - c.getPlayerAssistant().movePlayer(2420, 3080, 1); - } - break; - case 4415: - if (x == 2419 && y == 3080 && c.heightLevel == 1) { - c.getPlayerAssistant().movePlayer(2419, 3077, 0); - } - if (x == 2430 && y == 3081 && c.heightLevel == 2) { - c.getPlayerAssistant().movePlayer(2427, 3081, 1); - } - if (x == 2425 && y == 3074 && c.heightLevel == 3) { - c.getPlayerAssistant().movePlayer(2425, 3077, 2); - } - if (x == 2374 && y == 3133 && c.heightLevel == 3) { - c.getPlayerAssistant().movePlayer(2374, 3130, 2); - } - if (x == 2369 && y == 3126 && c.heightLevel == 2) { - c.getPlayerAssistant().movePlayer(2372, 3126, 1); - } - if (x == 2380 && y == 3127 && c.heightLevel == 1) { - c.getPlayerAssistant().movePlayer(2380, 3130, 0); - } - break; - case 4411: // castle wars jumping stones - if (x == c.getX() && y == c.getY()) { - c.getActionSender().sendMessage("You are standing on the rock you clicked."); - } else if (x > c.getX() && y == c.getY()) { - c.getPlayerAssistant().walkTo(1, 0); - } else if (x < c.getX() && y == c.getY()) { - c.getPlayerAssistant().walkTo(-1, 0); - } else if (y > c.getY() && x == c.getX()) { - c.getPlayerAssistant().walkTo(0, 1); - } else if (y < c.getY() && x == c.getX()) { - c.getPlayerAssistant().walkTo(0, -1); - } else { - c.getActionSender().sendMessage("Can't reach that."); - } - break; - case 4419: - if (x == 2417 && y == 3074 && c.heightLevel == 0) { - if (c.getX() == 2416) { - c.getPlayerAssistant().movePlayer(2417, 3077, 0); - } else { - c.getPlayerAssistant().movePlayer(2416, 3074, 0); - } - } - break; - - case 4911: - if (x == 2421 && y == 3073 && c.heightLevel == 1) { - c.getPlayerAssistant().movePlayer(2421, 3074, 0); - } - if (x == 2378 && y == 3134 && c.heightLevel == 1) { - c.getPlayerAssistant().movePlayer(2378, 3133, 0); - } - break; - case 1747: - if (x == 2421 && y == 3073 && c.heightLevel == 0) { - c.getPlayerAssistant().movePlayer(2421, 3074, 1); - } - if (x == 2378 && y == 3134 && c.heightLevel == 0) { - c.getPlayerAssistant().movePlayer(2378, 3133, 1); - } - break; - case 4912: - if (x == 2430 && y == 3082 && c.heightLevel == 0) { - c.getPlayerAssistant().movePlayer(c.getX(), c.getY() + 6400, 0); - } - if (x == 2369 && y == 3125 && c.heightLevel == 0) { - c.getPlayerAssistant().movePlayer(c.getX(), c.getY() + 6400, 0); - } - break; - case 1757: - if (x == 2430 && y == 9482) { - c.getPlayerAssistant().movePlayer(2430, 3081, 0); - } else if (c.absX == 2533) { - c.getPlayerAssistant().movePlayer(2532, 3155, 0); - } else { - c.getPlayerAssistant().movePlayer(2369, 3126, 0); - } - break; - - case 4418: - if (x == 2380 && y == 3127 && c.heightLevel == 0) { - c.getPlayerAssistant().movePlayer(2379, 3127, 1); - } - if (x == 2369 && y == 3126 && c.heightLevel == 1) { - c.getPlayerAssistant().movePlayer(2369, 3127, 2); - } - if (x == 2374 && y == 3131 && c.heightLevel == 2) { - c.getPlayerAssistant().movePlayer(2373, 3133, 3); - } - break; - case 4420: - if (x == 2382 && y == 3131 && c.heightLevel == 0) { - if (c.getX() >= 2383 && c.getX() <= 2385) { - c.getPlayerAssistant().movePlayer(2382, 3130, 0); - } else { - c.getPlayerAssistant().movePlayer(2383, 3133, 0); - } - } - break; - case 4437: - if (x == 2400 && y == 9512) { - c.getPlayerAssistant().movePlayer(2400, 9514, 0); - } else if (x == 2391 && y == 9501) { - c.getPlayerAssistant().movePlayer(2393, 9502, 0); - } else if (x == 2409 && y == 9503) { - c.getPlayerAssistant().movePlayer(2411, 9503, 0); - } else if (x == 2401 && y == 9494) { - c.getPlayerAssistant().movePlayer(2401, 9493, 0); - } - break; - case 1568: - if (x == 2399 && y == 3099) { - c.getPlayerAssistant().movePlayer(2399, 9500, 0); - } else { - c.getPlayerAssistant().movePlayer(2400, 9507, 0); - } - case 6281: - c.getPlayerAssistant().movePlayer(2370, 3132, 2); - break; - case 4472: - c.getPlayerAssistant().movePlayer(2370, 3132, 1); - break; - case 6280: - c.getPlayerAssistant().movePlayer(2429, 3075, 2); - break; - case 4471: - c.getPlayerAssistant().movePlayer(2429, 3075, 1); - break; - case 4406: - CastleWars.removePlayerFromCw(c); - break; - case 4407: - CastleWars.removePlayerFromCw(c); - break; - case 4458: - if (System.currentTimeMillis() - c.miscTimer > 1200) { - c.startAnimation(881); - c.getItemAssistant().addItem(4049, 1); - c.getActionSender().sendMessage("You get some bandages"); - c.miscTimer = System.currentTimeMillis(); - } - break; - case 4902: // sara flag - case 4377: - switch (CastleWars.getTeamNumber(c)) { - case 1: - CastleWars.returnFlag(c, c.playerEquipment[c.playerWeapon]); - break; - case 2: - CastleWars.captureFlag(c); - break; - } - break; - case 4903: // zammy flag - case 4378: - switch (CastleWars.getTeamNumber(c)) { - case 1: - CastleWars.captureFlag(c); - break; - case 2: - CastleWars.returnFlag(c, c.playerEquipment[c.playerWeapon]); - break; - } - break; - case 4461: // barricades - if (System.currentTimeMillis() - c.miscTimer > 1200) { - c.getActionSender().sendMessage("You get a barricade!"); - c.getItemAssistant().addItem(4053, 1); - c.miscTimer = System.currentTimeMillis(); - } - break; - case 4463: // explosive potion! - if (System.currentTimeMillis() - c.miscTimer > 1200) { - c.getActionSender().sendMessage( - "You get an explosive potion!"); - c.getItemAssistant().addItem(4045, 1); - c.miscTimer = System.currentTimeMillis(); - } - break; - case 4464: // pickaxe table - if (System.currentTimeMillis() - c.miscTimer > 1200) { - c.getActionSender().sendMessage( - "You get a bronzen pickaxe for mining."); - c.getItemAssistant().addItem(1265, 1); - c.miscTimer = System.currentTimeMillis(); - } - break; - case 4459: // tinderbox table - if (System.currentTimeMillis() - c.miscTimer > 1200) { - c.getActionSender().sendMessage("You take a tinderbox!"); - c.getItemAssistant().addItem(590, 1); - c.miscTimer = System.currentTimeMillis(); - } - break; - case 4462: - if (System.currentTimeMillis() - c.miscTimer > 1200) { - c.getActionSender().sendMessage("You take some rope!"); - c.getItemAssistant().addItem(954, 1); - c.miscTimer = System.currentTimeMillis(); - } - break; - case 4460: - if (System.currentTimeMillis() - c.miscTimer > 1200) { - c.getActionSender().sendMessage("You take a rock!"); - c.getItemAssistant().addItem(4043, 1); - c.miscTimer = System.currentTimeMillis(); - } - break; - case 4900: - case 4901: - CastleWars.pickupFlag(c); - default: - break; - - } - } -} diff --git a/2006Redone Server/src/redone/game/content/quests/QuestRewards.java b/2006Redone Server/src/redone/game/content/quests/QuestRewards.java deleted file mode 100644 index 9dde3b9a..00000000 --- a/2006Redone Server/src/redone/game/content/quests/QuestRewards.java +++ /dev/null @@ -1,163 +0,0 @@ -package redone.game.content.quests; - -import redone.game.players.Client; - -/** - * Quest Rewards - * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) - */ - -public class QuestRewards { - - public static String QUEST_NAME; - - public static void QuestReward(Client client, String questName, String Line1, String Line2, String Line3, String Line4, String Line5, String Line6, int itemID) { - client.getPlayerAssistant().sendFrame126("You have completed " + questName + "!", 12144); - client.getPlayerAssistant().sendFrame126("" + client.questPoints, 12147); - client.getPlayerAssistant().sendFrame126(Line1, 12150); - client.getPlayerAssistant().sendFrame126(Line2, 12151); - client.getPlayerAssistant().sendFrame126(Line3, 12152); - client.getPlayerAssistant().sendFrame126(Line4, 12153); - client.getPlayerAssistant().sendFrame126(Line5, 12154); - client.getPlayerAssistant().sendFrame126(Line6, 12155); - if (itemID > 0) { - client.getPlayerAssistant().sendFrame246(12145, 250, itemID); - } - client.getPlayerAssistant().showInterface(12140); - client.getActionSender().sendMessage("You completed " + questName + "!"); - QuestAssistant.sendStages(client); - client.getActionSender().sendQuickSong(93, 0); - } - - public static void knightsReward(Client client) { - QuestReward(client, "Knight's Sword Quest", "1 Quest Point", "12,725 Smithing XP", "", "", "", "", 0); - QUEST_NAME = "The Knight's Sword"; - client.getPlayerAssistant().sendFrame126("@gre@" + QUEST_NAME + "", 7346); - client.getPlayerAssistant().addNormalExperienceRate(12725, client.playerSmithing); - client.questPoints ++; - client.knightS = 9; - } - - public static void gertFinish(Client client) { - QuestReward(client, "Gertrude's Cat", "1 Quest Point", "1,525 Cooking XP", "A kitten!", "Ability to raise cats", "A chocolate cake", "A bowl of stew", 1897); - QUEST_NAME = "Gertrude's Cat"; - client.getPlayerAssistant().sendFrame126("@gre@" + QUEST_NAME + "", 7360); - client.getItemAssistant().addItem(1897, 1); - client.getItemAssistant().addItem(2003, 1); - client.getItemAssistant().addItem(1560, 1); - client.getPlayerAssistant().addNormalExperienceRate(1525, client.playerCooking); - client.questPoints++; - client.gertCat = 7; - } - - public static void pirateFinish(Client client) { - QuestReward(client, "Pirate's Treasure", "2 Quest Points", "One-Eyed Hector's Treasure", "", "", "", "", 2714); - QUEST_NAME = "Pirate's Treasure"; - client.getPlayerAssistant().sendFrame126("@gre@" + QUEST_NAME + "", 7341); - client.getItemAssistant().addItem(2714, 1); - client.questPoints += 2; - client.pirateTreasure = 6; - } - - public static void witchFinish(Client client) { - QuestReward(client, "Witch's Potion", "1 Quest Point", "325 Magic XP", "", "", "", "", 325); - QUEST_NAME = "Witch's Potion"; - client.getPlayerAssistant().sendFrame126("@gre@" + QUEST_NAME + "", 7348); - client.getPlayerAssistant().addNormalExperienceRate(325, client.playerMagic); - client.questPoints++; - client.witchspot = 3; - } - - public static void julietFinish(Client client) { - QuestReward(client, "Romeo and Juliet", "5 Quest Points", "", "", "", "", "", 0); - QUEST_NAME = "Romeo and Juliet"; - client.getPlayerAssistant().sendFrame126("@gre@" + QUEST_NAME + "", 7343); - client.questPoints += 5; - client.romeojuliet = 9; - } - - public static void restFinish(Client client) { - QuestReward(client, "Restless Ghost", "1 Quest Point", "125 Prayer XP", "", "", "", "", 0); - QUEST_NAME = "Restless Ghost"; - client.getPlayerAssistant().sendFrame126("@gre@" + QUEST_NAME + "", 7337); - client.getPlayerAssistant().addNormalExperienceRate(125, client.playerPrayer); - client.questPoints++; - client.restGhost = 5; - } - - public static void vampFinish(Client client) { - QuestReward(client, "Vampyre Slayer", "3 Quest Points", "4,825 Attack XP", "", "", "", "", 0); - QUEST_NAME = "Vampyre Slayer"; - client.getPlayerAssistant().sendFrame126("@gre@" + QUEST_NAME + "", 7347); - client.getPlayerAssistant().addNormalExperienceRate(4825, client.playerAttack); - client.questPoints += 3; - client.vampSlayer = 5; - } - - public static void runeFinish(Client client) { - QuestReward(client, "Rune Mysteries", "1 Quest Point", "Air Talisman", "", "", "", "", 1438); - QUEST_NAME = "Rune Mysteries"; - client.getPlayerAssistant().sendFrame126("@gre@" + QUEST_NAME + "", 7335); - client.getItemAssistant().addItem(1438, 1); - client.questPoints++; - client.runeMist = 4; - } - - public static void sheepFinish(Client client) { - QuestReward(client, "Sheep Shearer", "1 Quest Point", "150 Crafting Exp", "60 Coins", "", "", "", 995); - QUEST_NAME = "Sheep Shearer"; - client.getPlayerAssistant().sendFrame126("@gre@" + QUEST_NAME + "", 7344); - client.getItemAssistant().addItem(995, 60); - client.getPlayerAssistant().addNormalExperienceRate(150, client.playerCrafting); - client.questPoints++; - client.sheepShear = 2; - } - - public static void doricFinish(Client client) { - QuestReward(client, "Doric's Quest", "1 Quest Point", "1,300 Mining XP", "180 Coins", "", "", "", 995); - QUEST_NAME = "Doric's Quest"; - client.getPlayerAssistant().sendFrame126("@gre@" + QUEST_NAME + "", 7336); - client.getItemAssistant().addItem(995, 180); - client.getPlayerAssistant().addNormalExperienceRate(1300, client.playerMining); - client.questPoints++; - client.doricQuest = 3; - } - - public static void impFinish(Client client) { - QuestReward(client, "Imp Catcher", "1 Quest Point", "875 Magic XP", "Amulet of Accuracy", "", "", "", 1478); - QUEST_NAME = "Imp Catcher"; - client.getPlayerAssistant().sendFrame126("@gre@" + QUEST_NAME + "", 7340); - client.getItemAssistant().addItem(1478, 1); - client.getPlayerAssistant().addNormalExperienceRate(875, client.playerMagic); - client.questPoints++; - client.impsC = 2; - } - - public static void cookReward(Client client) { - QuestReward(client, "Cook's Assistant", "1 Quest Point", "500 Coins", "300 Cooking XP", "", "", "", 326); - QUEST_NAME = "Cook's Assistant"; - client.getPlayerAssistant().sendFrame126("@gre@" + QUEST_NAME + "", 7333); - client.getItemAssistant().addItem(995, 500); - client.getPlayerAssistant().addNormalExperienceRate(300, client.playerCooking); - client.questPoints++; - client.cookAss = 3; - } - - public static void blackKnightReward(Client client) { - QuestReward(client, "Black Knights' Fortress", "3 Quest Points", "2,500 Coins", "", "", "", "", 0); - QUEST_NAME = "Black Knights' Fortress"; - client.getPlayerAssistant().sendFrame126("@gre@" + QUEST_NAME + "", 7332); - client.getItemAssistant().addItem(995, 2500); - client.questPoints += 3; - client.blackKnight = 3; - } - - public static void shieldArravReward(Client client) { - QuestReward(client, "Shield of Arrav", "1 Quest Point", "1,200 Coins", "", "", "", "", 767); - QUEST_NAME = "Shield of Arrav"; - client.getPlayerAssistant().sendFrame126("@gre@" + QUEST_NAME + "", 7345); - client.getItemAssistant().addItem(995, 1200); - client.questPoints++; - client.shieldArrav = 8; - } -} diff --git a/2006Redone Server/src/redone/game/content/quests/impl/BlackKnightsFortress.java b/2006Redone Server/src/redone/game/content/quests/impl/BlackKnightsFortress.java deleted file mode 100644 index 0841ad58..00000000 --- a/2006Redone Server/src/redone/game/content/quests/impl/BlackKnightsFortress.java +++ /dev/null @@ -1,57 +0,0 @@ -package redone.game.content.quests.impl; - -import redone.game.players.Client; - -/** - * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) - * Cooks Assistant - */ - -public class BlackKnightsFortress { - - Client client; - - public BlackKnightsFortress(Client client) { - this.client = client; - } - - private static final int NOTES = 291; - - public void showInformation() { - for (int i = 8144; i < 8195; i++) { - client.getPlayerAssistant().sendFrame126("", i); - } - client.getPlayerAssistant().sendFrame126("Black Knights' Fortress", 8144); - if (client.blackKnight == 0) { - client.getPlayerAssistant().sendFrame126("I can start this quest by speaking to Sir Amik Varze in", 8147); - client.getPlayerAssistant().sendFrame126("Falador Castle.", 8148); - client.getPlayerAssistant().sendFrame126("", 8149); - client.getPlayerAssistant().sendFrame126("QUEST REQUIREMENTS:", 8150); - client.getPlayerAssistant().sendFrame126("12 Quest Points", 8151); - } else if (client.blackKnight == 1) { - client.getPlayerAssistant().sendFrame126("@str@I've Talked with Sir Amik Varze", 8147); - client.getPlayerAssistant().sendFrame126("He wants me to kill 30 Black Knights and", 8148); - client.getPlayerAssistant().sendFrame126("collect their notes.", 8149); - client.getPlayerAssistant().sendFrame126("", 8150); - client.getPlayerAssistant().sendFrame126("@red@30 Black Knight notes", 8151); - - } else if (client.blackKnight == 2) { - client.getPlayerAssistant().sendFrame126("@str@I talked to Sir Amik Varze.", 8147); - client.getPlayerAssistant().sendFrame126("@str@I've killed 30 Black Knights", 8148); - client.getPlayerAssistant().sendFrame126("@str@and given Sir Amik Varze his items.", 8149); - client.getPlayerAssistant().sendFrame126("I should go speak to Sir Amik Varze.", 8150); - } else if (client.blackKnight == 3) { - client.getPlayerAssistant().sendFrame126("@str@I talked to Sir Amik Varze.", 8147); - client.getPlayerAssistant().sendFrame126("@str@I've killed 30 Black Knights", 8148); - client.getPlayerAssistant().sendFrame126("@str@and given Sir Amik Varze his items.", 8149); - client.getPlayerAssistant().sendFrame126("", 8150); - client.getPlayerAssistant().sendFrame126("@red@QUEST COMPLETE", 8151); - client.getPlayerAssistant().sendFrame126("", 8152); - client.getPlayerAssistant().sendFrame126("REWARDS:", 8153); - client.getPlayerAssistant().sendFrame126("2,500 coins", 8154); - client.getPlayerAssistant().sendFrame126("3 Quest Points", 8155); - } - client.getPlayerAssistant().showInterface(8134); - } - -} diff --git a/2006Redone Server/src/redone/game/content/quests/impl/CooksAssistant.java b/2006Redone Server/src/redone/game/content/quests/impl/CooksAssistant.java deleted file mode 100644 index f6956497..00000000 --- a/2006Redone Server/src/redone/game/content/quests/impl/CooksAssistant.java +++ /dev/null @@ -1,68 +0,0 @@ -package redone.game.content.quests.impl; - -import redone.game.players.Client; - -/** - * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) - * Cooks Assistant - */ - -public class CooksAssistant { - - Client client; - - public CooksAssistant(Client client) { - this.client = client; - } - - private static final int EGG = 1944; - private static final int MILK = 1927; - private static final int FLOUR = 1933; - - public void showInformation() { - for (int i = 8144; i < 8195; i++) { - client.getPlayerAssistant().sendFrame126("", i); - } - client.getPlayerAssistant().sendFrame126("@dre@Cook's Assistant", 8144); - client.getPlayerAssistant().sendFrame126("", 8145); - if (client.cookAss == 0) { - client.getPlayerAssistant().sendFrame126("Cook's Assistant", 8144); - client.getPlayerAssistant().sendFrame126("I can start this quest by speaking to the Cook in the", 8147); - client.getPlayerAssistant().sendFrame126("Lumbridge Castle kitchen.", 8148); - client.getPlayerAssistant().sendFrame126("", 8149); - client.getPlayerAssistant().sendFrame126("There are no minimum requirements.", 8150); - } else if (client.cookAss == 1) { - client.getPlayerAssistant().sendFrame126("Cook's Assistant", 8144); - client.getPlayerAssistant().sendFrame126("@str@I've talked to the cook.", 8147); - client.getPlayerAssistant().sendFrame126("He wants me to gather the following materials:", 8148); - if (client.getItemAssistant().playerHasItem(EGG, 1)) { - client.getPlayerAssistant().sendFrame126("@str@1 egg", 8149); - } else { - client.getPlayerAssistant().sendFrame126("@red@1 egg", 8149); - } - if (client.getItemAssistant().playerHasItem(MILK, 1)) { - client.getPlayerAssistant().sendFrame126("@str@1 bucket of milk", 8150); - } else { - client.getPlayerAssistant().sendFrame126("@red@1 bucket of milk", 8150); - } - if (client.getItemAssistant().playerHasItem(FLOUR, 1)) { - client.getPlayerAssistant().sendFrame126("@str@1 heap of flour", 8151); - } else { - client.getPlayerAssistant().sendFrame126("@red@1 pot of flour", 8151); - } - } else if (client.cookAss == 2) { - client.getPlayerAssistant().sendFrame126("Cook's Assistant", 8144); - client.getPlayerAssistant().sendFrame126("@str@I talked to the cook.", 8147); - client.getPlayerAssistant().sendFrame126("@str@I gave the cook his items.", 8148); - client.getPlayerAssistant().sendFrame126("I should go speak to the cook.", 8149); - } else if (client.cookAss == 3) { - client.getPlayerAssistant().sendFrame126("Cook's Assistant", 8144); - client.getPlayerAssistant().sendFrame126("@str@I talked to the cook.", 8147); - client.getPlayerAssistant().sendFrame126("@str@I gave him his items.", 8148); - client.getPlayerAssistant().sendFrame126("@red@ QUEST COMPLETE", 8150); - client.getPlayerAssistant().sendFrame126("As a reward, I gained 150 Cooking Experience.", 8151); - } - client.getPlayerAssistant().showInterface(8134); - } - -} diff --git a/2006Redone Server/src/redone/game/content/quests/impl/DoricsQuest.java b/2006Redone Server/src/redone/game/content/quests/impl/DoricsQuest.java deleted file mode 100644 index ebd56ec5..00000000 --- a/2006Redone Server/src/redone/game/content/quests/impl/DoricsQuest.java +++ /dev/null @@ -1,78 +0,0 @@ -package redone.game.content.quests.impl; - -import redone.game.players.Client; - -/** - * Doric's Quest - * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) - */ - -public class DoricsQuest { - - Client client; - - public DoricsQuest(Client client) { - this.client = client; - } - - public void showInformation() { - for (int i = 8144; i < 8195; i++) { - client.getPlayerAssistant().sendFrame126("", i); - } - client.getPlayerAssistant().sendFrame126("@dre@Dorics Quest", 8144); - client.getPlayerAssistant().sendFrame126("", 8145); - if (client.doricQuest == 0) { - client.getPlayerAssistant().sendFrame126("Dorics Quest", 8144); - client.getPlayerAssistant().sendFrame126( - "I can start this quest by speaking to doric", 8147); - client.getPlayerAssistant().sendFrame126("Northwest of falador.", - 8148); - client.getPlayerAssistant().sendFrame126("", 8149); - client.getPlayerAssistant().sendFrame126( - "Recommended Levels: 15 Mining", 8150); - } else if (client.doricQuest == 1) { - client.getPlayerAssistant().sendFrame126("Dorics Quest", 8144); - client.getPlayerAssistant().sendFrame126( - "@str@I've talked to the doric.", 8147); - client.getPlayerAssistant().sendFrame126( - "He wants me to gather the following materials:", 8148); - if (client.getItemAssistant().playerHasItem(434, 6)) { - client.getPlayerAssistant().sendFrame126("@str@6 Clay", 8149); - } else { - client.getPlayerAssistant().sendFrame126("@red@6 Clay", 8149); - } - if (client.getItemAssistant().playerHasItem(436, 4)) { - client.getPlayerAssistant().sendFrame126("@str@4 Copper", 8150); - } else { - client.getPlayerAssistant().sendFrame126("@red@4 Copper", 8150); - } - if (client.getItemAssistant().playerHasItem(440, 2)) { - client.getPlayerAssistant().sendFrame126("@str@2 Iron ore", 8151); - } else { - client.getPlayerAssistant().sendFrame126("@red@2 Iron ore", 8151); - } - } else if (client.doricQuest == 2) { - client.getPlayerAssistant().sendFrame126("Dorics Quest", 8144); - client.getPlayerAssistant().sendFrame126( - "@str@I talked to the doric.", 8147); - client.getPlayerAssistant().sendFrame126( - "@str@I gave the doric his items.", 8148); - client.getPlayerAssistant().sendFrame126( - "I should go speak to the doric.", 8149); - } else if (client.doricQuest == 3) { - client.getPlayerAssistant().sendFrame126("Dorics Quest", 8144); - client.getPlayerAssistant().sendFrame126( - "@str@I talked to the doric.", 8147); - client.getPlayerAssistant().sendFrame126( - "@str@I gave him his items.", 8148); - client.getPlayerAssistant().sendFrame126("@red@ QUEST COMPLETE", - 8150); - client.getPlayerAssistant().sendFrame126( - "As a reward, I gained 26000 Mining Exp", 8151); - client.getPlayerAssistant().sendFrame126("180 Coins", 8152); - client.getPlayerAssistant().sendFrame126("And 1 Quest Point.", 8152); - } - client.getPlayerAssistant().showInterface(8134); - } - -} diff --git a/2006Redone Server/src/redone/game/content/quests/impl/GertrudesCat.java b/2006Redone Server/src/redone/game/content/quests/impl/GertrudesCat.java deleted file mode 100644 index 73a3353d..00000000 --- a/2006Redone Server/src/redone/game/content/quests/impl/GertrudesCat.java +++ /dev/null @@ -1,100 +0,0 @@ -package redone.game.content.quests.impl; - -import redone.game.players.Client; - -/** - * Gertrudes Cat - * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) - */ - -public class GertrudesCat { - - Client client; - - public GertrudesCat(Client client) { - this.client = client; - } - - public void showInformation() { - for (int i = 8144; i < 8195; i++) { - client.getPlayerAssistant().sendFrame126("", i); - } - client.getPlayerAssistant().sendFrame126("@dre@Gertrudes Cat", 8144); - client.getPlayerAssistant().sendFrame126("", 8145); - if (client.gertCat == 0) { - client.getPlayerAssistant().sendFrame126("Gertrudes Cat", 8144); - client.getPlayerAssistant().sendFrame126( - "I can start this quest by speaking to Gertrude in", 8147); - client.getPlayerAssistant().sendFrame126("Varrock.", 8148); - client.getPlayerAssistant() - .sendFrame126("Minimum Requirments:", 8149); - client.getPlayerAssistant().sendFrame126("5 Fishing.", 8150); - } else if (client.gertCat == 1) { - client.getPlayerAssistant().sendFrame126("Gertrudes Cat", 8144); - client.getPlayerAssistant().sendFrame126( - "@str@I've talked to Gertrude", 8147); - client.getPlayerAssistant().sendFrame126( - "I should speak to Wilough and Shilop.", 8148); - client.getPlayerAssistant().sendFrame126("They are in the varrock square.", 8149); - } else if (client.gertCat == 2) { - client.getPlayerAssistant().sendFrame126("Gertrudes Cat", 8144); - client.getPlayerAssistant().sendFrame126( - "@str@I've talked to Wilough and Shilop", 8147); - client.getPlayerAssistant().sendFrame126("@str@I gave them 100 coins", - 8148); - client.getPlayerAssistant().sendFrame126( - "I should try to find Gertrudes Cat.", 8149); - } else if (client.gertCat == 3) { - client.getPlayerAssistant().sendFrame126("Gertrudes Cat", 8144); - client.getPlayerAssistant().sendFrame126( - "@str@I've talked to the Gertrudes Cat", 8147); - client.getPlayerAssistant().sendFrame126( - "@str@She seemed mad so I gave her", 8148); - client.getPlayerAssistant().sendFrame126("@str@a bucket of milk", - 8149); - client.getPlayerAssistant().sendFrame126("The cat still seems mad you should give her some,", 8150); - client.getPlayerAssistant().sendFrame126("seasoned salmon.", 8151); - } else if (client.gertCat == 4) { - client.getPlayerAssistant().sendFrame126("Gertrudes Cat", 8144); - client.getPlayerAssistant().sendFrame126("@str@The cat is still mad", - 8147); - client.getPlayerAssistant().sendFrame126("@str@So i gave her some", - 8148); - client.getPlayerAssistant() - .sendFrame126("@str@seasoned samon.", 8149); - client.getPlayerAssistant().sendFrame126("I should talk to Gertrudes cat to see how she feels.", 8150); - } else if (client.gertCat == 5) { - client.getPlayerAssistant().sendFrame126("Gertrudes Cat", 8144); - client.getPlayerAssistant().sendFrame126( - "@str@The cat seems to be mad", 8147); - client.getPlayerAssistant().sendFrame126( - "@str@because she can't find her kittens.", 8148); - client.getPlayerAssistant().sendFrame126("I should go in the lumberyard and", 8149); - client.getPlayerAssistant().sendFrame126("check it out.", 8150); - } else if (client.gertCat == 6) { - client.getPlayerAssistant().sendFrame126("Gertrudes Cat", 8144); - client.getPlayerAssistant().sendFrame126("@str@I gave gertrudes cat", - 8147); - client.getPlayerAssistant().sendFrame126("@str@her kittens", 8148); - client.getPlayerAssistant().sendFrame126( - "@str@and she now seems happy.", 8149); - client.getPlayerAssistant().sendFrame126("I should head back to Gertrude.", 8150); - } else if (client.gertCat == 7) { - client.getPlayerAssistant().sendFrame126("Gertrudes Cat", 8144); - client.getPlayerAssistant().sendFrame126( - "@str@I helped gertrude with her", 8147); - client.getPlayerAssistant().sendFrame126( - "@str@Cat so she awarded me.", 8148); - client.getPlayerAssistant().sendFrame126("@red@ QUEST COMPLETE", - 8149); - client.getPlayerAssistant().sendFrame126( - "As a reward, I gained 1525 Cooking exp.", 8150); - client.getPlayerAssistant().sendFrame126( - "A kitten! And the ability to raise cats.", 8150); - client.getPlayerAssistant().sendFrame126("And 1 Quest Point", 8151); - client.getPlayerAssistant().sendFrame126("", 8152); - } - client.getPlayerAssistant().showInterface(8134); - } - -} diff --git a/2006Redone Server/src/redone/game/content/quests/impl/ImpCatcher.java b/2006Redone Server/src/redone/game/content/quests/impl/ImpCatcher.java deleted file mode 100644 index 5b2eb784..00000000 --- a/2006Redone Server/src/redone/game/content/quests/impl/ImpCatcher.java +++ /dev/null @@ -1,51 +0,0 @@ -package redone.game.content.quests.impl; - -import redone.game.players.Client; - -/** - * Imp Catcher - * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) - */ - -public class ImpCatcher { - - public Client client; - - public ImpCatcher(Client client) { - this.client = client; - } - - public void showInformation() { - for (int i = 8144; i < 8295; i++) { - client.getPlayerAssistant().sendFrame126("", i); - } - client.getPlayerAssistant().sendFrame126("@dre@Imp Catcher", 8144); - client.getPlayerAssistant().sendFrame126("", 8145); - if (client.impsC == 0) { - client.getPlayerAssistant().sendFrame126( "I can start this quest by speaking to Wizard Mizgog who is", 8147); - client.getPlayerAssistant().sendFrame126("in the Wizard's Tower.", 8148); - } else if (client.impsC == 1) { - client.getPlayerAssistant().sendFrame126("@str@I can start this quest by speaking to Wizard Mizgog who is", 8147); - client.getPlayerAssistant().sendFrame126("@str@in the Wizard's Tower.", 8148); - client.getPlayerAssistant().sendFrame126("", 8149); - client.getPlayerAssistant().sendFrame126("Wizard Mizgog have asked you to get the following items:", 8150); - client.getPlayerAssistant().sendFrame126("Red bead", 8151); - client.getPlayerAssistant().sendFrame126("Yellow bead", 8152); - client.getPlayerAssistant().sendFrame126("Black bead", 8153); - client.getPlayerAssistant().sendFrame126("White bead", 8154); - } else if (client.impsC == 2) { - client.getPlayerAssistant().sendFrame126("@str@I can start this quest by speaking to Wizard Mizgog who is", 8147); - client.getPlayerAssistant().sendFrame126("@str@in the Wizard's Tower.", 8148); - client.getPlayerAssistant().sendFrame126("", 8149); - client.getPlayerAssistant().sendFrame126("@str@Wizard Mizgog have asked you to get the following items:", 8150); - client.getPlayerAssistant().sendFrame126("@str@Red bead", 8151); - client.getPlayerAssistant().sendFrame126("@str@Yellow bead", 8152); - client.getPlayerAssistant().sendFrame126("@str@Black bead", 8153); - client.getPlayerAssistant().sendFrame126("@str@White bead", 8154); - client.getPlayerAssistant().sendFrame126("", 8155); - client.getPlayerAssistant().sendFrame126("You have completed this quest!", 8156); - } - client.getPlayerAssistant().showInterface(8134); - } - -} diff --git a/2006Redone Server/src/redone/game/content/quests/impl/KnightsSword.java b/2006Redone Server/src/redone/game/content/quests/impl/KnightsSword.java deleted file mode 100644 index edc73005..00000000 --- a/2006Redone Server/src/redone/game/content/quests/impl/KnightsSword.java +++ /dev/null @@ -1,193 +0,0 @@ -package redone.game.content.quests.impl; - -import redone.game.players.Client; - -public class KnightsSword { - - public static void showInformation(Client c) { - for(int i = 8144; i < 8195; i++) { - c.getPlayerAssistant().sendFrame126("", i); - } - c.getPlayerAssistant().sendFrame126("@dre@The Knight's Sword", 8144); - c.getPlayerAssistant().sendFrame126("", 8145); - if(c.knightS == 0) { - c.getPlayerAssistant().sendFrame126("I can start this quest by speaking to the squire", 8147); - c.getPlayerAssistant().sendFrame126("who is in the courtyard of the White Knight's castle", 8148); - c.getPlayerAssistant().sendFrame126("", 8149); - c.getPlayerAssistant().sendFrame126("I will need at least 10 mining to complete this quest", 8150); - } else if(c.knightS == 1) { - c.getPlayerAssistant().sendFrame126("The squire has lost Sir Vyvin's sword and asked me", 8147); - c.getPlayerAssistant().sendFrame126("to find a replacement. He suggested that I start", 8148); - c.getPlayerAssistant().sendFrame126("by speaking to Reldo, the librarian in the Varrock Castle", 8149); - } else if (c.knightS == 2) { - c.getPlayerAssistant().sendFrame126("@str@The squire has lost Sir Vyvin's sword and asked me", 8147); - c.getPlayerAssistant().sendFrame126("@str@to find a replacement. He suggested that I start", 8148); - c.getPlayerAssistant().sendFrame126("@str@by speaking to Reldo, the librarian in the Varrock Castle", 8149); - c.getPlayerAssistant().sendFrame126("", 8150); - c.getPlayerAssistant().sendFrame126("Reldo told me there may be an Imcando dwarf living near the", 8151); - c.getPlayerAssistant().sendFrame126("Asgarnian peninsula. He said I should bring him some", 8152); - c.getPlayerAssistant().sendFrame126("Red Berry Pie to get him to be willing to talk to me", 8153); - } else if(c.knightS == 3) { - c.getPlayerAssistant().sendFrame126("@str@The squire has lost Sir Vyvin's sword and asked me", 8147); - c.getPlayerAssistant().sendFrame126("@str@to find a replacement. He suggested that I start", 8148); - c.getPlayerAssistant().sendFrame126("@str@by speaking to Reldo, the librarian in the Varrock Castle", 8149); - c.getPlayerAssistant().sendFrame126("", 8150); - c.getPlayerAssistant().sendFrame126("@str@Reldo told me there may be an Imcando dwarf living near the", 8151); - c.getPlayerAssistant().sendFrame126("@str@Asgarnian peninsula. He said I should bring him some", 8152); - c.getPlayerAssistant().sendFrame126("@str@Red Berry Pie to get him to be willing to talk to me", 8153); - c.getPlayerAssistant().sendFrame126("", 8154); - c.getPlayerAssistant().sendFrame126("I found the Imcando dwarf named Thurgo and gave him some", 8155); - c.getPlayerAssistant().sendFrame126("Red berry pie. Now that he likes me I should talk to him", 8156); - c.getPlayerAssistant().sendFrame126("and find out if he'll make the sword for me.", 8157); - } else if(c.knightS == 4) { - c.getPlayerAssistant().sendFrame126("@str@The squire has lost Sir Vyvin's sword and asked me", 8147); - c.getPlayerAssistant().sendFrame126("@str@to find a replacement. He suggested that I start", 8148); - c.getPlayerAssistant().sendFrame126("@str@by speaking to Reldo, the librarian in the Varrock Castle", 8149); - c.getPlayerAssistant().sendFrame126("", 8150); - c.getPlayerAssistant().sendFrame126("@str@Reldo told me there may be an Imcando dwarf living near the", 8151); - c.getPlayerAssistant().sendFrame126("@str@Asgarnian peninsula. He said I should bring him some", 8152); - c.getPlayerAssistant().sendFrame126("@str@Red Berry Pie to get him to be willing to talk to me", 8153); - c.getPlayerAssistant().sendFrame126("", 8154); - c.getPlayerAssistant().sendFrame126("@str@I found the Imcando dwarf named Thurgo and gave him some", 8155); - c.getPlayerAssistant().sendFrame126("@str@Red berry pie. Now that he likes me I should talk to him", 8156); - c.getPlayerAssistant().sendFrame126("@str@and find out if he'll make the sword for me.", 8157); - c.getPlayerAssistant().sendFrame126("", 8158); - c.getPlayerAssistant().sendFrame126("Thurgo says he needs a picture of the sword.", 8159); - c.getPlayerAssistant().sendFrame126("Maybe the squire will have one?", 8160); - c.getPlayerAssistant().sendFrame126("", 8161); - } else if(c.knightS == 5) { - c.getPlayerAssistant().sendFrame126("@str@The squire has lost Sir Vyvin's sword and asked me", 8147); - c.getPlayerAssistant().sendFrame126("@str@to find a replacement. He suggested that I start", 8148); - c.getPlayerAssistant().sendFrame126("@str@by speaking to Reldo, the librarian in the Varrock Castle", 8149); - c.getPlayerAssistant().sendFrame126("", 8150); - c.getPlayerAssistant().sendFrame126("@str@Reldo told me there may be an Imcando dwarf living near the", 8151); - c.getPlayerAssistant().sendFrame126("@str@Asgarnian peninsula. He said I should bring him some", 8152); - c.getPlayerAssistant().sendFrame126("@str@Red Berry Pie to get him to be willing to talk to me.", 8153); - c.getPlayerAssistant().sendFrame126("", 8154); - c.getPlayerAssistant().sendFrame126("@str@I found the Imcando dwarf named Thurgo and gave him some", 8155); - c.getPlayerAssistant().sendFrame126("@str@Red berry pie. Now that he likes me I should talk to him", 8156); - c.getPlayerAssistant().sendFrame126("@str@and find out if he'll make the sword for me.", 8157); - c.getPlayerAssistant().sendFrame126("", 8158); - c.getPlayerAssistant().sendFrame126("Thurgo says he needs a picture of the sword.", 8159); - c.getPlayerAssistant().sendFrame126("@str@Maybe the squire will have one?", 8160); - c.getPlayerAssistant().sendFrame126("", 8161); - c.getPlayerAssistant().sendFrame126("The squire thinks Sir Vyvin keeps a picture of the sword in", 8162); - c.getPlayerAssistant().sendFrame126("a cupboard in his room, but I must be very careful not to", 8163); - c.getPlayerAssistant().sendFrame126("get caught.", 8164); - c.getPlayerAssistant().sendFrame126("", 8165); - c.getPlayerAssistant().sendFrame126("", 8166); - c.getPlayerAssistant().sendFrame126("", 8167); - c.getPlayerAssistant().sendFrame126("", 8168); - c.getPlayerAssistant().sendFrame126("", 8169); - } else if(c.knightS == 6) { - c.getPlayerAssistant().sendFrame126("@str@The squire has lost Sir Vyvin's sword and asked me", 8147); - c.getPlayerAssistant().sendFrame126("@str@to find a replacement. He suggested that I start", 8148); - c.getPlayerAssistant().sendFrame126("@str@by speaking to Reldo, the librarian in the Varrock Castle", 8149); - c.getPlayerAssistant().sendFrame126("", 8150); - c.getPlayerAssistant().sendFrame126("@str@Reldo told me there may be an Imcando dwarf living near the", 8151); - c.getPlayerAssistant().sendFrame126("@str@Asgarnian peninsula. He said I should bring him some", 8152); - c.getPlayerAssistant().sendFrame126("@str@Red Berry Pie to get him to be willing to talk to me.", 8153); - c.getPlayerAssistant().sendFrame126("", 8154); - c.getPlayerAssistant().sendFrame126("@str@I found the Imcando dwarf named Thurgo and gave him some", 8155); - c.getPlayerAssistant().sendFrame126("@str@Red berry pie. Now that he likes me I should talk to him", 8156); - c.getPlayerAssistant().sendFrame126("@str@and find out if he'll make the sword for me.", 8157); - c.getPlayerAssistant().sendFrame126("", 8158); - c.getPlayerAssistant().sendFrame126("Thurgo says he needs a picture of the sword.", 8159); - c.getPlayerAssistant().sendFrame126("@str@Maybe the squire will have one?", 8160); - c.getPlayerAssistant().sendFrame126("", 8161); - c.getPlayerAssistant().sendFrame126("@str@The squire thinks Sir Vyvin keeps a picture of the sword in", 8162); - c.getPlayerAssistant().sendFrame126("@str@a cupboard in his room, but I must be very careful not to", 8163); - c.getPlayerAssistant().sendFrame126("@str@get caught.", 8164); - c.getPlayerAssistant().sendFrame126("I should bring the picture to Thurgo", 8165); - c.getPlayerAssistant().sendFrame126("", 8166); - c.getPlayerAssistant().sendFrame126("", 8167); - c.getPlayerAssistant().sendFrame126("", 8168); - c.getPlayerAssistant().sendFrame126("", 8169); - } else if(c.knightS == 7) { - c.getPlayerAssistant().sendFrame126("The squire has lost Sir Vyvin's sword and asked me", 8147); - c.getPlayerAssistant().sendFrame126("to find a replacement.@str@ He suggested that I start", 8148); - c.getPlayerAssistant().sendFrame126("@str@by speaking to Reldo, the librarian in the Varrock Castle", 8149); - c.getPlayerAssistant().sendFrame126("", 8150); - c.getPlayerAssistant().sendFrame126("@str@Reldo told me there may be an Imcando dwarf living near the", 8151); - c.getPlayerAssistant().sendFrame126("@str@Asgarnian peninsula. He said I should bring him some", 8152); - c.getPlayerAssistant().sendFrame126("@str@Red Berry Pie to get him to be willing to talk to me.", 8153); - c.getPlayerAssistant().sendFrame126("", 8154); - c.getPlayerAssistant().sendFrame126("@str@I found the Imcando dwarf named Thurgo and gave him some", 8155); - c.getPlayerAssistant().sendFrame126("@str@Red berry Pie. Now that he likes me I should talk to him", 8156); - c.getPlayerAssistant().sendFrame126("@str@and find out if he'll make the sword for me.", 8157); - c.getPlayerAssistant().sendFrame126("", 8158); - c.getPlayerAssistant().sendFrame126("@str@Thurgo says he needs a picture of the sword.", 8159); - c.getPlayerAssistant().sendFrame126("@str@Maybe the squire will have one?", 8160); - c.getPlayerAssistant().sendFrame126("", 8161); - c.getPlayerAssistant().sendFrame126("@str@The squire thinks Sir Vyvin keeps a picture of the sword in", 8162); - c.getPlayerAssistant().sendFrame126("@str@cupboard in his room, but I must be very careful not to", 8163); - c.getPlayerAssistant().sendFrame126("@str@get caught.", 8164); - c.getPlayerAssistant().sendFrame126("@str@I should bring the picture to Thurgo", 8165); - c.getPlayerAssistant().sendFrame126("", 8166); - c.getPlayerAssistant().sendFrame126("Thurgo has asked me to bring him 2 iron bars and 1 blurite", 8167); - c.getPlayerAssistant().sendFrame126("ore for him to make the sword with. He says blurite can be", 8168); - c.getPlayerAssistant().sendFrame126("mined in the cave by his home, but it is guarded by", 8169); - c.getPlayerAssistant().sendFrame126("dangerous monsters. So I should be very careful.", 8170); - } else if(c.knightS == 8) { - c.getPlayerAssistant().sendFrame126("The squire has lost Sir Vyvin's sword and asked me", 8147); - c.getPlayerAssistant().sendFrame126("to find a replacement.@str@ He suggested that I start", 8148); - c.getPlayerAssistant().sendFrame126("@str@by speaking to Reldo, the librarian in the Varrock Castle", 8149); - c.getPlayerAssistant().sendFrame126("", 8150); - c.getPlayerAssistant().sendFrame126("@str@Reldo told me there may be an Imcando dwarf living near the", 8151); - c.getPlayerAssistant().sendFrame126("@str@Asgarnian peninsula. He said I should bring him some", 8152); - c.getPlayerAssistant().sendFrame126("@str@Red Berry Pie to get him to be willing to talk to me.", 8153); - c.getPlayerAssistant().sendFrame126("", 8154); - c.getPlayerAssistant().sendFrame126("@str@I found the Imcando dwarf named Thurgo and gave him some", 8155); - c.getPlayerAssistant().sendFrame126("@str@Red berry pie. Now that he likes me I should talk to him", 8156); - c.getPlayerAssistant().sendFrame126("@str@and find out if he'll make the sword for me.", 8157); - c.getPlayerAssistant().sendFrame126("", 8158); - c.getPlayerAssistant().sendFrame126("@str@Thurgo says he needs a picture of the sword.", 8159); - c.getPlayerAssistant().sendFrame126("@str@Maybe the squire will have one?", 8160); - c.getPlayerAssistant().sendFrame126("", 8161); - c.getPlayerAssistant().sendFrame126("@str@The squire thinks Sir Vyvin keeps a picture of the sword in", 8162); - c.getPlayerAssistant().sendFrame126("@str@cupboard in his room, but I must be very careful not to", 8163); - c.getPlayerAssistant().sendFrame126("@str@get caught.", 8164); - c.getPlayerAssistant().sendFrame126("@str@I should bring the picture to Thurgo", 8165); - c.getPlayerAssistant().sendFrame126("", 8166); - c.getPlayerAssistant().sendFrame126("@str@Thurgo has asked me to bring him 2 iron bars and 1 blurite", 8167); - c.getPlayerAssistant().sendFrame126("@str@ore for him to make the sword with. He says blurite can be", 8168); - c.getPlayerAssistant().sendFrame126("@str@mined in the cave by his home, but it is guarded by", 8169); - c.getPlayerAssistant().sendFrame126("@str@dangerous monsters. So I should be very careful.", 8170); - c.getPlayerAssistant().sendFrame126("", 8171); - c.getPlayerAssistant().sendFrame126("Thurgo made me the sword, I should bring it back to the", 8172); - c.getPlayerAssistant().sendFrame126("knight to get my reward!", 8173); - c.getPlayerAssistant().sendFrame126("", 8174); - } else if(c.knightS == 9) { - c.getPlayerAssistant().sendFrame126("@str@The squire has lost Sir Vyvin's sword and asked me", 8147); - c.getPlayerAssistant().sendFrame126("@str@to find a replacement. He suggested that I start", 8148); - c.getPlayerAssistant().sendFrame126("@str@by speaking to Reldo, the librarian in the Varrock Castle", 8149); - c.getPlayerAssistant().sendFrame126("", 8150); - c.getPlayerAssistant().sendFrame126("@str@Reldo told me there may be an Imcando dwarf living near the", 8151); - c.getPlayerAssistant().sendFrame126("@str@Asgarnian peninsula. He said I should bring him some", 8152); - c.getPlayerAssistant().sendFrame126("@str@Red Berry Pie to get him to be willing to talk to me.", 8153); - c.getPlayerAssistant().sendFrame126("", 8154); - c.getPlayerAssistant().sendFrame126("@str@I found the Imcando dwarf named Thurgo and gave him some", 8155); - c.getPlayerAssistant().sendFrame126("@str@Red berry pie. Now that he likes me I should talk to him", 8156); - c.getPlayerAssistant().sendFrame126("@str@and find out if he'll make the sword for me.", 8157); - c.getPlayerAssistant().sendFrame126("", 8158); - c.getPlayerAssistant().sendFrame126("@str@Thurgo says he needs a picture of the sword.", 8159); - c.getPlayerAssistant().sendFrame126("@str@Maybe the squire will have one?", 8160); - c.getPlayerAssistant().sendFrame126("", 8161); - c.getPlayerAssistant().sendFrame126("@str@The squire thinks Sir Vyvin keeps a picture of the sword in", 8162); - c.getPlayerAssistant().sendFrame126("@str@a cupboard in his room, but I must be very careful not to", 8163); - c.getPlayerAssistant().sendFrame126("@str@get caught.", 8164); - c.getPlayerAssistant().sendFrame126("@str@I should bring the picture to Thurgo", 8165); - c.getPlayerAssistant().sendFrame126("", 8166); - c.getPlayerAssistant().sendFrame126("@str@Thurgo has asked me to bring him 2 iron bars and 1 blurite", 8167); - c.getPlayerAssistant().sendFrame126("@str@ore for him to make the sword with. He says blurite can be", 8168); - c.getPlayerAssistant().sendFrame126("@str@mined in the cave by his home, but it is guarded by", 8169); - c.getPlayerAssistant().sendFrame126("@str@dangerous monsters. So I should be very careful.", 8170); - c.getPlayerAssistant().sendFrame126("@str@Thurgo made me the sword, I should bring it back to the", 8172); - c.getPlayerAssistant().sendFrame126("@str@knight to get my reward!", 8173); - c.getPlayerAssistant().sendFrame126("", 8173); - c.getPlayerAssistant().sendFrame126("@red@Quest Complete!", 8174); - } - c.getPlayerAssistant().showInterface(8134); - } - -} diff --git a/2006Redone Server/src/redone/game/content/quests/impl/PiratesTreasure.java b/2006Redone Server/src/redone/game/content/quests/impl/PiratesTreasure.java deleted file mode 100644 index 04d1ca9f..00000000 --- a/2006Redone Server/src/redone/game/content/quests/impl/PiratesTreasure.java +++ /dev/null @@ -1,105 +0,0 @@ -package redone.game.content.quests.impl; - -import redone.game.players.Client; - -/** - * Pirates Treasure - * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) - */ - -public class PiratesTreasure { - - Client client; - - public PiratesTreasure(Client client) { - this.client = client; - } - - public void showInformation() { - for (int i = 8144; i < 8195; i++) { - client.getPlayerAssistant().sendFrame126("", i); - } - client.getPlayerAssistant().sendFrame126("@dre@Pirate's Treasure", 8144); - client.getPlayerAssistant().sendFrame126("", 8145); - if (client.pirateTreasure == 0) { - client.getPlayerAssistant().sendFrame126("Pirate's Treasure", 8144); - client.getPlayerAssistant().sendFrame126( - "I can start this quest by speaking to Redbeard Frank in", - 8147); - client.getPlayerAssistant().sendFrame126("Port Sarim", 8148); - client.getPlayerAssistant().sendFrame126("", 8149); - client.getPlayerAssistant().sendFrame126( - "There are no minimum requirments.", 8150); - } else if (client.pirateTreasure == 1) { - client.getPlayerAssistant().sendFrame126("Pirate's Treasure", 8144); - client.getPlayerAssistant().sendFrame126( - "@str@I've talked to Redbeard.", 8147); - client.getPlayerAssistant().sendFrame126( - "He wants me to get him some rum", 8148); - } else if (client.pirateTreasure == 2) { - client.getPlayerAssistant().sendFrame126("Pirate's Treasure", 8144); - client.getPlayerAssistant().sendFrame126( - "@str@I talked to Redbeard.", 8147); - client.getPlayerAssistant().sendFrame126( - "@str@I found a way to get the rum", 8148); - client.getPlayerAssistant().sendFrame126( - "I should get the rum and return to Redbeard.", 8149); - } else if (client.pirateTreasure == 3) { - client.getPlayerAssistant().sendFrame126("Pirate's Treasure", 8144); - client.getPlayerAssistant().sendFrame126( - "@str@I talked to Redbeard.", 8147); - client.getPlayerAssistant().sendFrame126( - "@str@I found a way to get the rum", 8148); - client.getPlayerAssistant().sendFrame126("@str@I gave him the rum", - 8149); - client.getPlayerAssistant().sendFrame126( - "He told me I need to look at the chest in", 8149); - client.getPlayerAssistant().sendFrame126("The blue moon inn", 8150); - } else if (client.pirateTreasure == 4) { - client.getPlayerAssistant().sendFrame126("Pirate's Treasure", 8144); - client.getPlayerAssistant().sendFrame126( - "@str@I talked to Redbeard.", 8147); - client.getPlayerAssistant().sendFrame126( - "@str@I found a way to get the rum", 8148); - client.getPlayerAssistant().sendFrame126("@str@I gave him the rum", - 8149); - client.getPlayerAssistant().sendFrame126( - "@str@I looked in the chest", 8149); - client.getPlayerAssistant().sendFrame126( - "I need to go to falador and kill the gardener", 8150); - } else if (client.pirateTreasure == 5) { - client.getPlayerAssistant().sendFrame126( - "@str@I talked to Redbeard.", 8147); - client.getPlayerAssistant().sendFrame126( - "@str@I found a way to get the rum", 8148); - client.getPlayerAssistant().sendFrame126("@str@I gave him the rum", - 8149); - client.getPlayerAssistant().sendFrame126( - "@str@I looked in the chest", 8149); - client.getPlayerAssistant().sendFrame126( - "@str@I went to falador and killed the gardener", 8150); - client.getPlayerAssistant().sendFrame126( - "I should find the casket now", 8151); - } else if (client.pirateTreasure == 6) { - client.getPlayerAssistant().sendFrame126( - "@str@I talked to Redbeard.", 8147); - client.getPlayerAssistant().sendFrame126( - "@str@I found a way to get the rum", 8148); - client.getPlayerAssistant().sendFrame126("@str@I gave him the rum", - 8149); - client.getPlayerAssistant().sendFrame126( - "@str@I looked in the chest", 8149); - client.getPlayerAssistant().sendFrame126( - "@str@I went to falador and killed the gardener", 8150); - client.getPlayerAssistant().sendFrame126("@str@I found the casket ", - 8181); - client.getPlayerAssistant().sendFrame126("@red@QUEST COMPLETE", - 8152); - client.getPlayerAssistant().sendFrame126( - "As a reward, I gained a casket.", 8153); - client.getPlayerAssistant().sendFrame126("2 Quest Points.", 8153); - } - client.getPlayerAssistant().showInterface(8134); - } - -} diff --git a/2006Redone Server/src/redone/game/content/quests/impl/RestlessGhost.java b/2006Redone Server/src/redone/game/content/quests/impl/RestlessGhost.java deleted file mode 100644 index 4cbb1c97..00000000 --- a/2006Redone Server/src/redone/game/content/quests/impl/RestlessGhost.java +++ /dev/null @@ -1,81 +0,0 @@ -package redone.game.content.quests.impl; - -import redone.game.players.Client; - -/** - * Restless Ghost - * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) - */ - -public class RestlessGhost { - - Client client; - - public RestlessGhost(Client client) { - this.client = client; - } - - public void showInformation() { - for (int i = 8144; i < 8195; i++) { - client.getPlayerAssistant().sendFrame126("", i); - } - client.getPlayerAssistant().sendFrame126("@dre@Restless Ghost", 8144); - client.getPlayerAssistant().sendFrame126("", 8145); - if (client.restGhost == 0) { - client.getPlayerAssistant().sendFrame126("Restless Ghost", 8144); - client.getPlayerAssistant().sendFrame126( - "I can start this quest by speaking to Father Aereck in", - 8147); - client.getPlayerAssistant().sendFrame126("Lumbridge", 8148); - client.getPlayerAssistant() - .sendFrame126("Minimum Requirments:", 8149); - client.getPlayerAssistant().sendFrame126("None.", 8150); - } else if (client.restGhost == 1) { - client.getPlayerAssistant().sendFrame126("Restless Ghost", 8144); - client.getPlayerAssistant().sendFrame126( - "@str@I've talked to Father Aereck", 8147); - client.getPlayerAssistant().sendFrame126( - "I should speak to Father Urhey", 8148); - } else if (client.restGhost == 2) { - client.getPlayerAssistant().sendFrame126("Restless Ghost", 8144); - client.getPlayerAssistant().sendFrame126( - "@str@I've talked Father Urhey", 8147); - client.getPlayerAssistant().sendFrame126("@str@He gave me a amulet", - 8148); - client.getPlayerAssistant().sendFrame126( - "I should speak to the ghost", 8149); - } else if (client.restGhost == 3) { - client.getPlayerAssistant().sendFrame126("Restless Ghost", 8144); - client.getPlayerAssistant().sendFrame126( - "@str@I've talked to the Ghost", 8147); - client.getPlayerAssistant() - .sendFrame126( - "I should travel to the wizards tower and kill the skeleton", - 8148); - client.getPlayerAssistant().sendFrame126( - "I should find the ghosts skull", 8149); - } else if (client.restGhost == 4) { - client.getPlayerAssistant().sendFrame126("Restless Ghost", 8144); - client.getPlayerAssistant().sendFrame126("@str@I've found the skull", - 8147); - client.getPlayerAssistant().sendFrame126( - "@str@I killed the skeleton", 8148); - client.getPlayerAssistant().sendFrame126( - "I should travel back to the ghost", 8149); - } else if (client.restGhost == 5) { - client.getPlayerAssistant().sendFrame126("Restless Ghost", 8144); - client.getPlayerAssistant().sendFrame126( - "@str@I've set the skull in the coffin", 8147); - client.getPlayerAssistant().sendFrame126( - "@str@I've freed the ghost.", 8148); - client.getPlayerAssistant().sendFrame126("@red@ QUEST COMPLETE", - 8150); - client.getPlayerAssistant().sendFrame126( - "As a reward, I gained 125 Prayer Exp.", 8151); - client.getPlayerAssistant().sendFrame126("And 1 Quest Point", 8152); - client.getPlayerAssistant().sendFrame126("", 8152); - } - client.getPlayerAssistant().showInterface(8134); - } - -} diff --git a/2006Redone Server/src/redone/game/content/quests/impl/RomeoJuliet.java b/2006Redone Server/src/redone/game/content/quests/impl/RomeoJuliet.java deleted file mode 100644 index 44ab37bb..00000000 --- a/2006Redone Server/src/redone/game/content/quests/impl/RomeoJuliet.java +++ /dev/null @@ -1,361 +0,0 @@ -package redone.game.content.quests.impl; - -import redone.game.players.Client; - -/** - * Romeo and Juliet - * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) - */ - -public class RomeoJuliet { - - Client client; - - public RomeoJuliet(Client client) { - this.client = client; - } - - public void showInformation() { - for (int i = 8144; i < 8195; i++) { - client.getPlayerAssistant().sendFrame126("", i); - } - client.getPlayerAssistant().sendFrame126("@dre@Romeo & Juliet", 8144); - client.getPlayerAssistant().sendFrame126("", 8145); - if (client.romeojuliet == 0) { - client.getPlayerAssistant().sendFrame126( - "To start the quest, you should talk with Romeo", 8147); - client.getPlayerAssistant().sendFrame126("found in Varrock Square.", - 8148); - } else if (client.romeojuliet == 1) { - client.getPlayerAssistant() - .sendFrame126( - "@str@To start the quest, you should talk with Romeo", - 8147); - client.getPlayerAssistant().sendFrame126( - "@str@found in Varrock Square.", 8148); - client.getPlayerAssistant().sendFrame126("", 8149); - client.getPlayerAssistant().sendFrame126( - "Romeo has asked you to speak to Juliet for him", 8150); - client.getPlayerAssistant().sendFrame126( - "and return to him, as she hasn't been responding to any", - 8151); - client.getPlayerAssistant().sendFrame126("his letters lately.", 8152); - } else if (client.romeojuliet == 2) { - client.getPlayerAssistant() - .sendFrame126( - "@str@To start the quest, you should talk with Romeo", - 8147); - client.getPlayerAssistant().sendFrame126( - "@str@found in Varrock Square.", 8148); - client.getPlayerAssistant().sendFrame126("", 8149); - client.getPlayerAssistant() - .sendFrame126( - "@str@Romeo has asked you to speak to Juliet for him", - 8150); - client.getPlayerAssistant() - .sendFrame126( - "@str@and return to him, as she hasn't been responding to any", - 8151); - client.getPlayerAssistant().sendFrame126("@str@his letters lately.", - 8152); - client.getPlayerAssistant().sendFrame126("", 8153); - client.getPlayerAssistant() - .sendFrame126( - "You have spoken to Juliet who's been acting strange", - 8154); - client.getPlayerAssistant().sendFrame126( - "she gave you a message and asked you to leave", 8155); - client.getPlayerAssistant().sendFrame126("Could this be for Romeo?", - 8156); - } else if (client.romeojuliet == 4) { - client.getPlayerAssistant() - .sendFrame126( - "@str@To start the quest, you should talk with Romeo", - 8147); - client.getPlayerAssistant().sendFrame126( - "@str@found in Varrock Square.", 8148); - client.getPlayerAssistant().sendFrame126("", 8149); - client.getPlayerAssistant() - .sendFrame126( - "@str@Romeo has asked you to speak to Juliet for him", - 8150); - client.getPlayerAssistant() - .sendFrame126( - "@str@and return to him, as she hasn't been responding to any", - 8151); - client.getPlayerAssistant().sendFrame126("@str@his letters lately.", - 8152); - client.getPlayerAssistant().sendFrame126("", 8153); - client.getPlayerAssistant().sendFrame126( - "@str@You have spoken to Juliet who's been acting strange", - 8154); - client.getPlayerAssistant().sendFrame126( - "@str@she gave you a message and asked you to leave", 8155); - client.getPlayerAssistant().sendFrame126( - "@str@could this be for Romeo?", 8156); - client.getPlayerAssistant().sendFrame126("", 8157); - client.getPlayerAssistant().sendFrame126( - "You have spoken to Romeo and given him the message", 8158); - client.getPlayerAssistant().sendFrame126( - "You should try to talk to him again", 8159); - } else if (client.romeojuliet == 5) { - client.getPlayerAssistant() - .sendFrame126( - "@str@To start the quest, you should talk with Romeo", - 8147); - client.getPlayerAssistant().sendFrame126( - "@str@found in Varrock Square.", 8148); - client.getPlayerAssistant().sendFrame126("", 8149); - client.getPlayerAssistant() - .sendFrame126( - "@str@Romeo has asked you to speak to Juliet for him", - 8150); - client.getPlayerAssistant() - .sendFrame126( - "@str@and return to him, as she hasn't been responding to any", - 8151); - client.getPlayerAssistant().sendFrame126("@str@his letters lately.", - 8152); - client.getPlayerAssistant().sendFrame126("", 8153); - client.getPlayerAssistant().sendFrame126( - "@str@You have spoken to Juliet who's been acting strange", - 8154); - client.getPlayerAssistant().sendFrame126( - "@str@she gave you a message and asked you to leave", 8155); - client.getPlayerAssistant().sendFrame126( - "@str@could this be for Romeo?", 8156); - client.getPlayerAssistant().sendFrame126( - "@str@You have spoken to Juliet who's been acting strange", - 8154); - client.getPlayerAssistant().sendFrame126( - "@str@she gave you a message and asked you to leave", 8155); - client.getPlayerAssistant().sendFrame126( - "@str@could this be for Romeo?", 8156); - client.getPlayerAssistant().sendFrame126("", 8157); - client.getPlayerAssistant().sendFrame126( - "@str@You have spoken to Romeo and given him the message", - 8158); - client.getPlayerAssistant().sendFrame126( - "@str@You should try to talk to him again", 8159); - client.getPlayerAssistant().sendFrame126( - "Romeo says you should see a witch called Winelda", 8160); - } else if (client.romeojuliet == 6) { - client.getPlayerAssistant() - .sendFrame126( - "@str@To start the quest, you should talk with Romeo", - 8147); - client.getPlayerAssistant().sendFrame126( - "@str@found in Varrock Square.", 8148); - client.getPlayerAssistant().sendFrame126("", 8149); - client.getPlayerAssistant() - .sendFrame126( - "@str@Romeo has asked you to speak to Juliet for him", - 8150); - client.getPlayerAssistant() - .sendFrame126( - "@str@and return to him, as she hasn't been responding to any", - 8151); - client.getPlayerAssistant().sendFrame126("@str@his letters lately.", - 8152); - client.getPlayerAssistant().sendFrame126("", 8153); - client.getPlayerAssistant().sendFrame126( - "@str@You have spoken to Juliet who's been acting strange", - 8154); - client.getPlayerAssistant().sendFrame126( - "@str@she gave you a message and asked you to leave", 8155); - client.getPlayerAssistant().sendFrame126( - "@str@could this be for Romeo?", 8156); - client.getPlayerAssistant().sendFrame126( - "@str@You have spoken to Juliet who's been acting strange", - 8154); - client.getPlayerAssistant().sendFrame126( - "@str@she gave you a message and asked you to leave", 8155); - client.getPlayerAssistant().sendFrame126( - "@str@could this be for Romeo?", 8156); - client.getPlayerAssistant().sendFrame126("", 8157); - client.getPlayerAssistant().sendFrame126( - "@str@You have spoken to Romeo and given him the message", - 8158); - client.getPlayerAssistant().sendFrame126( - "@str@You should try to talk to him again", 8159); - client.getPlayerAssistant().sendFrame126( - "@str@Romeo says you should see a witch called Winelda", - 8160); - client.getPlayerAssistant().sendFrame126("", 8161); - client.getPlayerAssistant().sendFrame126( - "Winelda needs me to bring her 1 rats tail, 1 bone, and 1", - 8162); - client.getPlayerAssistant().sendFrame126("vial of water", 8163); - } else if (client.romeojuliet == 7) { - client.getPlayerAssistant() - .sendFrame126( - "@str@To start the quest, you should talk with Romeo", - 8147); - client.getPlayerAssistant().sendFrame126( - "@str@found in Varrock Square.", 8148); - client.getPlayerAssistant().sendFrame126("", 8149); - client.getPlayerAssistant() - .sendFrame126( - "@str@Romeo has asked you to speak to Juliet for him", - 8150); - client.getPlayerAssistant() - .sendFrame126( - "@str@and return to him, as she hasn't been responding to any", - 8151); - client.getPlayerAssistant().sendFrame126("@str@his letters lately.", - 8152); - client.getPlayerAssistant().sendFrame126("", 8153); - client.getPlayerAssistant().sendFrame126( - "@str@You have spoken to Juliet who's been acting strange", - 8154); - client.getPlayerAssistant().sendFrame126( - "@str@she gave you a message and asked you to leave", 8155); - client.getPlayerAssistant().sendFrame126( - "@str@could this be for Romeo?", 8156); - client.getPlayerAssistant().sendFrame126( - "@str@You have spoken to Juliet who's been acting strange", - 8154); - client.getPlayerAssistant().sendFrame126( - "@str@she gave you a message and asked you to leave", 8155); - client.getPlayerAssistant().sendFrame126( - "@str@could this be for Romeo?", 8156); - client.getPlayerAssistant().sendFrame126("", 8157); - client.getPlayerAssistant().sendFrame126( - "@str@You have spoken to Romeo and given him the message", - 8158); - client.getPlayerAssistant().sendFrame126( - "@str@You should try to talk to him again", 8159); - client.getPlayerAssistant().sendFrame126( - "@str@Romeo says you should see a witch called Winelda", - 8160); - client.getPlayerAssistant().sendFrame126("", 8161); - client.getPlayerAssistant().sendFrame126( - "@str@Winelda needs me to bring her 1 rats tail, 1 bone", - 8162); - client.getPlayerAssistant().sendFrame126("@str@and 1 vial of water", - 8163); - client.getPlayerAssistant().sendFrame126("", 8164); - client.getPlayerAssistant() - .sendFrame126( - "I brought Winelda 1 rats tail, 1 bone, and 1 vail of water", - 8162); - client.getPlayerAssistant().sendFrame126( - "I should go speak to Juliet", 8163); - } else if (client.romeojuliet == 8) { - client.getPlayerAssistant() - .sendFrame126( - "@str@To start the quest, you should talk with Romeo", - 8147); - client.getPlayerAssistant().sendFrame126( - "@str@found in Varrock Square.", 8148); - client.getPlayerAssistant().sendFrame126("", 8149); - client.getPlayerAssistant() - .sendFrame126( - "@str@Romeo has asked you to speak to Juliet for him", - 8150); - client.getPlayerAssistant() - .sendFrame126( - "@str@and return to him, as she hasn't been responding to any", - 8151); - client.getPlayerAssistant().sendFrame126("@str@his letters lately.", - 8152); - client.getPlayerAssistant().sendFrame126("", 8153); - client.getPlayerAssistant().sendFrame126( - "@str@You have spoken to Juliet who's been acting strange", - 8154); - client.getPlayerAssistant().sendFrame126( - "@str@she gave you a message and asked you to leave", 8155); - client.getPlayerAssistant().sendFrame126( - "@str@could this be for Romeo?", 8156); - client.getPlayerAssistant().sendFrame126( - "@str@You have spoken to Juliet who's been acting strange", - 8154); - client.getPlayerAssistant().sendFrame126( - "@str@she gave you a message and asked you to leave", 8155); - client.getPlayerAssistant().sendFrame126( - "@str@could this be for Romeo?", 8156); - client.getPlayerAssistant().sendFrame126("", 8157); - client.getPlayerAssistant().sendFrame126( - "@str@You have spoken to Romeo and given him the message", - 8158); - client.getPlayerAssistant().sendFrame126( - "@str@You should try to talk to him again", 8159); - client.getPlayerAssistant().sendFrame126( - "@str@Romeo says you should see a witch called Winelda", - 8160); - client.getPlayerAssistant().sendFrame126("", 8161); - client.getPlayerAssistant().sendFrame126( - "@str@Winelda needs me to bring her 1 rats tail, 1 bone", - 8162); - client.getPlayerAssistant().sendFrame126("@str@and 1 vial of water", - 8163); - client.getPlayerAssistant().sendFrame126("", 8164); - client.getPlayerAssistant() - .sendFrame126( - "@str@I brought Winelda 1 rats tail, 1 bone, and 1 vail of water", - 8165); - client.getPlayerAssistant().sendFrame126( - "@str@I should go speak to Juliet and give her the potion", - 8166); - client.getPlayerAssistant().sendFrame126("", 8167); - client.getPlayerAssistant().sendFrame126( - "I should speak to juliet and give her the potion", 8168); - client.getPlayerAssistant().sendFrame126( - "I should go speak to Romeo", 8169); - } else if (client.romeojuliet == 9) { - client.getPlayerAssistant() - .sendFrame126( - "@str@To start the quest, you should talk with Romeo", - 8147); - client.getPlayerAssistant().sendFrame126( - "@str@found in Varrock Square.", 8148); - client.getPlayerAssistant().sendFrame126("", 8149); - client.getPlayerAssistant() - .sendFrame126( - "@str@Romeo has asked you to speak to Juliet for him", - 8150); - client.getPlayerAssistant() - .sendFrame126( - "@str@and return to him, as she hasn't been responding to any", - 8151); - client.getPlayerAssistant().sendFrame126("@str@his letters lately.", - 8152); - client.getPlayerAssistant().sendFrame126("", 8153); - client.getPlayerAssistant().sendFrame126( - "@str@You have spoken to Juliet who's been acting strange", - 8154); - client.getPlayerAssistant().sendFrame126( - "@str@she gave you a message and asked you to leave", 8155); - client.getPlayerAssistant().sendFrame126( - "@str@could this be for Romeo?", 8156); - client.getPlayerAssistant().sendFrame126( - "@str@You have spoken to Juliet who's been acting strange", - 8154); - client.getPlayerAssistant().sendFrame126( - "@str@she gave you a message and asked you to leave", 8155); - client.getPlayerAssistant().sendFrame126( - "@str@could this be for Romeo?", 8156); - client.getPlayerAssistant().sendFrame126("", 8157); - client.getPlayerAssistant().sendFrame126( - "@str@You have spoken to Romeo and given him the message", - 8158); - client.getPlayerAssistant().sendFrame126("@str@You should try to talk to him again", 8159); - client.getPlayerAssistant().sendFrame126("@str@Romeo says you should see a witch called Winelda", 8160); - client.getPlayerAssistant().sendFrame126("", 8161); - client.getPlayerAssistant().sendFrame126("@str@Winelda needs me to bring her 1 rats tail, 1 bone", 8162); - client.getPlayerAssistant().sendFrame126("@str@and 1 vial of water",8163); - client.getPlayerAssistant().sendFrame126("", 8164); - client.getPlayerAssistant().sendFrame126("@str@I brought Winelda 1 rats tail, 1 bone, and 1 vail of water",8165); - client.getPlayerAssistant().sendFrame126("@str@I should go speak to Juliet and give her the potion", 8166); - client.getPlayerAssistant().sendFrame126("", 8167); - client.getPlayerAssistant().sendFrame126("@str@I have spoken to Juliet, she drank the potion", 8168); - client.getPlayerAssistant().sendFrame126("@str@I should go speak to Romeo", 8169); - client.getPlayerAssistant().sendFrame126("", 8168); - client.getPlayerAssistant().sendFrame126("I have spoken to Romeo, he's thankful for all of our help", 8169); - client.getPlayerAssistant().sendFrame126("@red@ QUEST COMPLETE", 8170); - client.getPlayerAssistant().sendFrame126("As a reward, I gained 5 quest points.", 8171); - } - client.getPlayerAssistant().showInterface(8134); - } - -} diff --git a/2006Redone Server/src/redone/game/content/quests/impl/RuneMysteries.java b/2006Redone Server/src/redone/game/content/quests/impl/RuneMysteries.java deleted file mode 100644 index 6769e64e..00000000 --- a/2006Redone Server/src/redone/game/content/quests/impl/RuneMysteries.java +++ /dev/null @@ -1,72 +0,0 @@ -package redone.game.content.quests.impl; - -import redone.game.players.Client; - -/** - * Rune Mysteries - * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) - */ - -public class RuneMysteries { - - Client client; - - public RuneMysteries(Client client) { - this.client = client; - } - - public void showInformation() { - for (int i = 8144; i < 8195; i++) { - client.getPlayerAssistant().sendFrame126("", i); - } - client.getPlayerAssistant().sendFrame126("@dre@Rune Mysteries", 8144); - client.getPlayerAssistant().sendFrame126("", 8145); - if (client.runeMist == 0) { - client.getPlayerAssistant().sendFrame126("Rune Mysteries", 8144); - client.getPlayerAssistant().sendFrame126( - "I can start this quest by speaking to Duke Horiaco", 8147); - client.getPlayerAssistant().sendFrame126( - "who is located on the 2nd floor of the Lumbridge Castle.", - 8148); - client.getPlayerAssistant().sendFrame126("", 8149); - client.getPlayerAssistant().sendFrame126( - "There are no minimum requirments.", 8150); - } else if (client.runeMist == 1) { - client.getPlayerAssistant().sendFrame126("Rune Mysteries", 8144); - client.getPlayerAssistant().sendFrame126( - "@str@I've talked to the duke", 8147); - client.getPlayerAssistant().sendFrame126( - "I should take the talisman to the Head Wizard.", 8148); - } else if (client.runeMist == 2) { - client.getPlayerAssistant().sendFrame126("Rune Mysteries", 8144); - client.getPlayerAssistant().sendFrame126( - "@str@I've talked to Sedridor", 8147); - client.getPlayerAssistant().sendFrame126( - "@str@I gave him the talisman", 8148); - client.getPlayerAssistant().sendFrame126( - "I should bring the notes to Aubury.", 8149); - } else if (client.runeMist == 3) { - client.getPlayerAssistant().sendFrame126("Rune Mysteries", 8144); - client.getPlayerAssistant().sendFrame126( - "@str@I've talked to Aubury.", 8147); - client.getPlayerAssistant().sendFrame126("@str@I gave him the notes", - 8148); - client.getPlayerAssistant().sendFrame126( - "I should go back to the wizard tower", 8149); - } else if (client.runeMist == 4) { - client.getPlayerAssistant().sendFrame126("Rune Mysteries", 8144); - client.getPlayerAssistant().sendFrame126("@str@I talked to Sedridor", - 8147); - client.getPlayerAssistant().sendFrame126( - "@str@I gave him his items.", 8148); - client.getPlayerAssistant().sendFrame126("@red@ QUEST COMPLETE", - 8150); - client.getPlayerAssistant().sendFrame126( - "As a reward, I gained 1 Quest point", 8151); - client.getPlayerAssistant() - .sendFrame126("And an air talisman.", 8152); - } - client.getPlayerAssistant().showInterface(8134); - } - -} diff --git a/2006Redone Server/src/redone/game/content/quests/impl/SheepShearer.java b/2006Redone Server/src/redone/game/content/quests/impl/SheepShearer.java deleted file mode 100644 index 65ed0702..00000000 --- a/2006Redone Server/src/redone/game/content/quests/impl/SheepShearer.java +++ /dev/null @@ -1,62 +0,0 @@ -package redone.game.content.quests.impl; - -import redone.game.players.Client; - -/** - * Sheep Shearer - * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) - */ - -public class SheepShearer { - - Client client; - - public SheepShearer(Client client) { - this.client = client; - } - - public void showInformation() { - for (int i = 8144; i < 8195; i++) { - client.getPlayerAssistant().sendFrame126("", i); - } - client.getPlayerAssistant().sendFrame126("@dre@Sheep Shearer", 8144); - client.getPlayerAssistant().sendFrame126("", 8145); - if (client.sheepShear == 0) { - client.getPlayerAssistant().sendFrame126("Sheep Shearer", 8144); - client.getPlayerAssistant().sendFrame126( - "I can start this quest by speaking to Fred in", 8147); - client.getPlayerAssistant().sendFrame126("Lumbridge.", 8148); - client.getPlayerAssistant() - .sendFrame126("Minimum Requirments:", 8149); - client.getPlayerAssistant().sendFrame126("None.", 8150); - } else if (client.sheepShear == 1) { - client.getPlayerAssistant().sendFrame126("Sheep Shearer", 8144); - client.getPlayerAssistant().sendFrame126("@str@I've talked to fred", - 8147); - client.getPlayerAssistant().sendFrame126( - "I've agreed to get him some wool.", 8148); - if (client.getItemAssistant().playerHasItem(1759, 20)) { - client.getPlayerAssistant() - .sendFrame126("@str@Bal of Wool", 8149); - } else { - client.getPlayerAssistant().sendFrame126("@red@Ball of Wool", - 8149); - } - } else if (client.sheepShear == 2) { - client.getPlayerAssistant().sendFrame126("Sheep Shearer", 8144); - client.getPlayerAssistant().sendFrame126("@str@I gave fred his wool", - 8147); - client.getPlayerAssistant().sendFrame126("@str@So he awarded me.", - 8148); - client.getPlayerAssistant().sendFrame126("@red@ QUEST COMPLETE", - 8149); - client.getPlayerAssistant().sendFrame126("As a reward, 60 coins.", - 8150); - client.getPlayerAssistant().sendFrame126("150 crating exp", 8150); - client.getPlayerAssistant().sendFrame126("And 1 Quest Point", 8151); - client.getPlayerAssistant().sendFrame126("", 8152); - } - client.getPlayerAssistant().showInterface(8134); - } - -} diff --git a/2006Redone Server/src/redone/game/content/quests/impl/WitchsPotion.java b/2006Redone Server/src/redone/game/content/quests/impl/WitchsPotion.java deleted file mode 100644 index b7c023c5..00000000 --- a/2006Redone Server/src/redone/game/content/quests/impl/WitchsPotion.java +++ /dev/null @@ -1,61 +0,0 @@ -package redone.game.content.quests.impl; - -import redone.game.players.Client; - -/** - * Witchs Potion - * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) - */ - -public class WitchsPotion { - - Client client; - - public WitchsPotion(Client client) { - this.client = client; - } - - public void showInformation() { - for (int i = 8144; i < 8195; i++) { - client.getPlayerAssistant().sendFrame126("", i); - } - client.getPlayerAssistant().sendFrame126("@dre@Witch's Potion", 8144); - client.getPlayerAssistant().sendFrame126("", 8145); - if (client.witchspot == 0) { - client.getPlayerAssistant().sendFrame126("Witch's Potion", 8144); - client.getPlayerAssistant().sendFrame126( - "I can start this quest by speaking to Hetty", 8147); - client.getPlayerAssistant().sendFrame126("Rimmington.", 8148); - client.getPlayerAssistant() - .sendFrame126("Minimum Requirments:", 8149); - client.getPlayerAssistant().sendFrame126("None.", 8150); - } else if (client.witchspot == 1) { - client.getPlayerAssistant().sendFrame126("Witch's Potion", 8144); - client.getPlayerAssistant().sendFrame126( - "@str@I've talked to the Hetty", 8147); - client.getPlayerAssistant().sendFrame126( - "I've agreed to get her the ingredients", 8148); - } else if (client.witchspot == 2) { - client.getPlayerAssistant().sendFrame126("Witch's Potion", 8144); - client.getPlayerAssistant().sendFrame126( - "@str@I have all the ingredients", 8147); - client.getPlayerAssistant().sendFrame126("I should talk to hetty.", - 8148); - client.getPlayerAssistant().sendFrame126("", 8149); - } else if (client.witchspot == 3) { - client.getPlayerAssistant().sendFrame126("Witch's Potion", 8144); - client.getPlayerAssistant().sendFrame126("@str@I've Talked to Hetty", - 8147); - client.getPlayerAssistant().sendFrame126( - "@str@I drank from the Cauldron", 8148); - client.getPlayerAssistant().sendFrame126("@red@ QUEST COMPLETE", - 8150); - client.getPlayerAssistant().sendFrame126( - "As a reward, I gained 325 Magic Exp.", 8151); - client.getPlayerAssistant().sendFrame126("And 1 Quest Point", 8152); - client.getPlayerAssistant().sendFrame126("", 8152); - } - client.getPlayerAssistant().showInterface(8134); - } - -} diff --git a/2006Redone Server/src/redone/game/content/randomevents/EvilChicken.java b/2006Redone Server/src/redone/game/content/randomevents/EvilChicken.java deleted file mode 100644 index 531fcd83..00000000 --- a/2006Redone Server/src/redone/game/content/randomevents/EvilChicken.java +++ /dev/null @@ -1,27 +0,0 @@ -package redone.game.content.randomevents; - -import redone.game.npcs.NpcHandler; -import redone.game.players.Client; -import redone.util.Misc; - -public class EvilChicken { - - // min cmb, maxcmb, npcid, maxhit, attack, defence - private static int[][] chicken = { { 3, 10, 2463, 19, 1, 10, 10 }, - { 11, 20, 2464, 40, 1, 30, 30 }, { 21, 40, 2465, 60, 2, 60, 60 }, - { 41, 60, 2466, 80, 3, 80, 80 }, - { 61, 90, 2467, 105, 4, 100, 100 }, - { 91, 138, 2468, 120, 5, 120, 120 }, }; - - public static void spawnChicken(Client player) { - for (int[] aChicken : chicken) { - if (player.chickenSpawned == false) { - if (player.combatLevel >= aChicken[0] && player.combatLevel <= aChicken[1]) { - NpcHandler.spawnNpc(player, aChicken[2], player.absX + Misc.random(1), player.absY + Misc.random(1), player.heightLevel, 0, aChicken[3], aChicken[4], aChicken[5], aChicken[6], true, false); - player.chickenSpawned = true; - player.randomActions = 0; - } - } - } - } -} \ No newline at end of file diff --git a/2006Redone Server/src/redone/game/content/randomevents/RandomEventHandler.java b/2006Redone Server/src/redone/game/content/randomevents/RandomEventHandler.java deleted file mode 100644 index fc3a0510..00000000 --- a/2006Redone Server/src/redone/game/content/randomevents/RandomEventHandler.java +++ /dev/null @@ -1,80 +0,0 @@ -package redone.game.content.randomevents; - -import redone.game.players.Client; -import redone.util.Misc; - -/** - * Eventhandler class - * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) - */ - -public class RandomEventHandler { - - public static int CALL_RANDOM = 350 + Misc.random(100); - - public static void resetEvent(Client player) { - player.randomActions = 0; - } - - private static int[][] FAIL_COORDS = { { 3333, 3333 }, { 3196, 3193 }, - { 3084, 3549 }, { 2974, 3346 }, { 2781, 3506 }, { 2810, 3508 }, }; - - public static void failEvent(Client player) { - int loc = Misc.random(FAIL_COORDS.length - 1); - player.teleportToX = FAIL_COORDS[loc][0]; - player.teleportToY = FAIL_COORDS[loc][1]; - player.heightLevel = 0; - player.getActionSender().sendMessage("You wake up in a strange location..."); - resetEvent(player); - player.getPlayerAssistant().closeAllWindows(); - } - - public static void callRandom(Client player) { // add all random events here - if (player.inFightCaves() || player.playerEquipment[player.playerWeapon] == 4024 || player.tutorialProgress < 36) { - return; - } - int randomEvent = Misc.random(3); - switch (randomEvent) { - case 0: - SandwhichLady.openSandwhichLady(player); - resetEvent(player); - break; - case 1: - if (player.chickenSpawned == false) { - EvilChicken.spawnChicken(player); - resetEvent(player); - } - break; - case 2: - FreakyForester.teleportToLocation(player); - resetEvent(player); - break; - case 3: - Swarm.spawnSwarm(player); - resetEvent(player); - break; - - default: - System.out.println("Error no random event called for " + player.playerName + "."); - break; - } - } - - public static void addRandom(Client player) { - if (player.randomEventsEnabled) - { - if (player.randomActions >= CALL_RANDOM) { - callRandom(player); - if (player.playerIsBusy() && !player.hasSandwhichLady) { - player.getPlayerAssistant().closeAllWindows(); - } - } else { - int nextRandom = CALL_RANDOM - player.randomActions; - if (player.playerRights == 3) { - player.getActionSender().sendMessage("Next random will be in " + nextRandom + " more random actions."); - } - player.randomActions += 1; - } - } - } -} diff --git a/2006Redone Server/src/redone/game/content/randomevents/RiverTroll.java b/2006Redone Server/src/redone/game/content/randomevents/RiverTroll.java deleted file mode 100644 index 99620d8b..00000000 --- a/2006Redone Server/src/redone/game/content/randomevents/RiverTroll.java +++ /dev/null @@ -1,28 +0,0 @@ -package redone.game.content.randomevents; - -import redone.game.npcs.NpcHandler; -import redone.game.players.Client; -import redone.util.Misc; - -public class RiverTroll { - - public static boolean hasRiverTroll = false; - - private static int[][] riverTroll = { { 3, 10, 391, 19, 1 }, - { 11, 20, 392, 40, 1 }, { 21, 40, 393, 80, 3 }, - { 61, 90, 394, 105, 4 }, { 91, 110, 395, 120, 5 }, - { 111, 138, 396, 150, 7 }, }; - - public static void spawnRiverTroll(Client c) { - for (int[] element : riverTroll) { - if (hasRiverTroll == false) { - if (c.combatLevel >= element[0] && c.combatLevel <= element[1] && hasRiverTroll == false) { - NpcHandler.spawnNpc(c, element[2], c.absX + Misc.random(1), c.absY + Misc.random(1), c.heightLevel, 0, element[3], element[4], c.playerLevel[c.playerAttack] * 2, c.playerLevel[c.playerDefence] * 2, true, false); - c.randomActions = 0; - hasRiverTroll = true; - NpcHandler.npcs[element[2]].forceChat("Fishies be mine! Leave dem fishies!"); - } - } - } - } -} \ No newline at end of file diff --git a/2006Redone Server/src/redone/game/content/randomevents/Shade.java b/2006Redone Server/src/redone/game/content/randomevents/Shade.java deleted file mode 100644 index 6ccbf36d..00000000 --- a/2006Redone Server/src/redone/game/content/randomevents/Shade.java +++ /dev/null @@ -1,35 +0,0 @@ -package redone.game.content.randomevents; - -import redone.game.npcs.NpcHandler; -import redone.game.players.Client; -import redone.util.Misc; - -public class Shade { - - private static int[][] shade = { { 3, 10, 425, 19, 1 }, - { 11, 20, 426, 40, 3 }, { 21, 40, 427, 60, 5 }, - { 41, 60, 428, 80, 8 }, { 61, 90, 429, 105, 11 }, - { 91, 138, 430, 120, 13 }, }; - - public static void spawnShade(Client client) { - for (int[] element : shade) { - if (client.shadeSpawned == false) { - if (client.combatLevel >= element[0] - && client.combatLevel <= element[1]) { - NpcHandler - .spawnNpc(client, element[2], - client.absX + Misc.random(1), client.absY - + Misc.random(1), client.heightLevel, - 0, - element[3], // HP - element[4], // maxhit - (int) (NpcHandler.getNpcListCombat(element[3]) * 1.5), // defence - (int) (NpcHandler.getNpcListCombat(element[3]) * 1.5), - true, false); // attack - client.randomActions = 0; - client.shadeSpawned = true; - } - } - } - } -} \ No newline at end of file diff --git a/2006Redone Server/src/redone/game/content/randomevents/TreeSpirit.java b/2006Redone Server/src/redone/game/content/randomevents/TreeSpirit.java deleted file mode 100644 index a3e43519..00000000 --- a/2006Redone Server/src/redone/game/content/randomevents/TreeSpirit.java +++ /dev/null @@ -1,35 +0,0 @@ -package redone.game.content.randomevents; - -import redone.game.npcs.NpcHandler; -import redone.game.players.Client; -import redone.util.Misc; - -public class TreeSpirit { - - private static int[][] treeSpirit = { - // combat, combat 2, npcid, hitpoints, levels - { 3, 10, 438, 28, 1 }, { 11, 20, 439, 36, 1 }, - { 21, 40, 440, 57, 3 }, { 61, 90, 441, 90, 4 }, - { 91, 110, 442, 130, 5 }, { 111, 138, 443, 160, 7 }, }; - - private static int checkStats(Client client) { - return client.getPlayerAssistant().getLevelForXP(client.playerXP[client.playerHitpoints]) * 2; - } - - public static void spawnTreeSpirit(Client c) { - for (int[] element : treeSpirit) { - if (c.treeSpiritSpawned == false) { - if (c.combatLevel >= element[0] && c.combatLevel <= element[1]) { - NpcHandler.spawnNpc(c, element[2], c.absX + Misc.random(1), - c.absY + Misc.random(1), c.heightLevel, 0, element[3], - element[4], checkStats(c), c.playerLevel[c.playerDefence] * 2, true, - false); - NpcHandler.npcs[element[2]] - .forceChat("Leave these woods and never return!"); - c.treeSpiritSpawned = true; - c.randomActions = 0; - } - } - } - } -} \ No newline at end of file diff --git a/2006Redone Server/src/redone/game/content/skills/SkillHandler.java b/2006Redone Server/src/redone/game/content/skills/SkillHandler.java deleted file mode 100644 index fef9ffb6..00000000 --- a/2006Redone Server/src/redone/game/content/skills/SkillHandler.java +++ /dev/null @@ -1,203 +0,0 @@ -package redone.game.content.skills; - -import redone.event.CycleEventHandler; -import redone.game.content.skills.cooking.Cooking; -import redone.game.content.skills.core.Fishing; -import redone.game.content.skills.core.Mining; -import redone.game.content.skills.core.Woodcutting; -import redone.game.content.skills.herblore.Herblore; -import redone.game.content.skills.smithing.Smelting; -import redone.game.items.ItemAssistant; -import redone.game.players.Client; - -/** - * Skillhandler - * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) - */ - -public class SkillHandler { - - public static final int SKILLING_EXP = 1; - public static boolean view190 = false; - private static long lastAction = 0; - public static boolean[] isSkilling = new boolean[25]; - public static long lastSkillingAction; - - public static boolean FISHING = true, AGILITY = true, COOKING = true, - FIREMAKING = true, HERBLORE = true, MINING = true, - RUNECRAFTING = true, THIEVING = true, WOODCUTTING = true, - PRAYER = true, FLETCHING = true, CRAFTING = true, MAGIC = true, - FARMING = false, SLAYER = true, SMITHING = true; - - public static final int WOODCUTTING_EXPERIENCE = SKILLING_EXP, - MINING_EXPERIENCE = SKILLING_EXP, - SMITHING_EXPERIENCE = SKILLING_EXP, - FARMING_EXPERIENCE = SKILLING_EXP, - FIREMAKING_EXPERIENCE = SKILLING_EXP, - HERBLORE_EXPERIENCE = SKILLING_EXP, - FISHING_EXPERIENCE = SKILLING_EXP, - AGILITY_EXPERIENCE = SKILLING_EXP, - PRAYER_EXPERIENCE = SKILLING_EXP, - RUNECRAFTING_EXPERIENCE = SKILLING_EXP, - CRAFTING_EXPERIENCE = SKILLING_EXP, - THIEVING_EXPERIENCE = SKILLING_EXP, - SLAYER_EXPERIENCE = SKILLING_EXP, - COOKING_EXPERIENCE = SKILLING_EXP, - FLETCHING_EXPERIENCE = SKILLING_EXP; - - public static boolean isSkilling(Client c) { - if (c.playerSkilling[10] || c.playerStun || c.playerSkilling[12] - || c.playerIsFletching || c.isFletching || c.playerIsCooking - || c.isMining || c.isWoodcutting || c.isSmithing - || c.isSmelting || c.isSpinning || c.isPotionMaking - || c.isPotCrafting || c.isFiremaking - || c.playerSkilling[c.playerHerblore] == true - || c.playerSkilling[13]) { - return true; - } - return false; - } - - - public static void resetItemOnNpc(Client player) { - if (player.isMining) {// mining - Mining.resetMining(player); - } else if (player.playerIsFletching == true) {// fletching - player.playerIsFletching = false; - } else if (player.playerIsCooking) {// cooking - Cooking.resetCooking(player); - } else if (player.isSmithing) {// smithing - player.isSmithing = false; - } else if (isSkilling[12]) {// crafting - isSkilling[12] = false; - } else if (player.isSmelting) { - player.isSmelting = false; - } else if (player.isCrafting == true) { - player.isCrafting = false; - } else if (player.isPotionMaking) {// herblore - Herblore.resetHerblore(player); - } else if (player.isWoodcutting) {// woodcutting - Woodcutting.stopWoodcutting(player); - } else if (player.isSpinning) {// spinning - player.isSpinning = false; - } else if (player.isPotCrafting == true) {// pot crafting - player.isPotCrafting = false; - } else if (player.playerIsCooking) {// cooking - Cooking.resetCooking(player); - } else if (player.playerSkilling[13]) {// smelting - Smelting.resetSmelting(player); - } - } - - public static void resetSkills(Client c) {// call when walking, dropping, - // picking up, leveling up - if (c.playerSkilling[10]) {// fishing - Fishing.resetFishing(c); - } else if (c.isMining) {// mining - Mining.resetMining(c); - } else if (c.playerIsFletching == true) {// fletching - c.playerIsFletching = false; - } else if (c.playerIsCooking) {// cooking - Cooking.resetCooking(c); - } else if (c.isSmithing) {// smithing - c.isSmithing = false; - } else if (isSkilling[12]) {// crafting - isSkilling[12] = false; - } else if (c.isSmelting) { - c.isSmelting = false; - } else if (c.isCrafting == true) { - c.isCrafting = false; - } else if (c.isPotionMaking) {// herblore - Herblore.resetHerblore(c); - } else if (c.isWoodcutting) {// woodcutting - Woodcutting.stopWoodcutting(c); - } else if (c.isSpinning) {// spinning - c.isSpinning = false; - } else if (c.isPotCrafting == true) {// pot crafting - c.isPotCrafting = false; - } - } - - public static boolean canDoAction(int timer) { - if (System.currentTimeMillis() >= lastAction) { - lastAction = System.currentTimeMillis() + timer; - return true; - } - return false; - } - - public static boolean membersOnly(Client c) { - if (c.membership == false) { - c.getActionSender() - .sendMessage("This is a members only skill."); - return false; - } - return true; - } - - public static boolean noInventorySpace(Client c, String skill) { - if (c.getItemAssistant().freeSlots() == 0) { - c.getActionSender().sendMessage( - "You don't have enough inventory space to continue " - + skill + "!"); - return false; - } - return true; - } - - public static void deleteTime(Client c) { - c.doAmount--; - } - - public static void stopEvents(Client c, int eventId) { - CycleEventHandler.getSingleton().stopEvents(c, eventId); - } - - public static void send1Item(Client c, int itemId) { - c.getPlayerAssistant().sendFrame246(1746, view190 ? 190 : 150, itemId); - c.getPlayerAssistant().sendFrame126( - getLine(c) + "" + ItemAssistant.getItemName(itemId) + "", 2799); - c.getPlayerAssistant().sendChatInterface(4429); - } - - public static boolean playerHasItem(Client c, String itemName, - String skill, int itemID) { - if (!c.getItemAssistant().playerHasItem(itemID, 1)) { - c.getActionSender().sendMessage( - "You dont have any " + itemName + " to continue " + skill - + "!"); - c.getDialogueHandler().sendStatement( - "You dont have any " + itemID + " to continue " + skill - + "!"); - return false; - } - return true; - } - - public static void resetPlayerSkillVariables(Client c) { - for (int i = 0; i < 20; i++) { - if (c.playerSkilling[i]) { - for (int l = 0; l < 15; l++) { - c.playerSkillProp[i][l] = -1; - } - } - } - } - - public static boolean hasRequiredLevel(final Client c, int id, int lvlReq, - String skill, String event) { - if (c.playerLevel[id] < lvlReq) { - c.getActionSender().sendMessage( - "You don't have a high enough " + skill + " level to " - + event + "."); - return false; - } - return true; - } - - public static String getLine(Client c) { - return c.below459 ? "\\n\\n\\n\\n" : "\\n\\n\\n\\n\\n"; - } - - -} diff --git a/2006Redone Server/src/redone/game/content/skills/agility/AgilityShortcut.java b/2006Redone Server/src/redone/game/content/skills/agility/AgilityShortcut.java deleted file mode 100644 index 53caacbd..00000000 --- a/2006Redone Server/src/redone/game/content/skills/agility/AgilityShortcut.java +++ /dev/null @@ -1,251 +0,0 @@ -package redone.game.content.skills.agility; - -import redone.game.players.Client; - -/** - * Agility Shortcuts - * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) - */ - -public class AgilityShortcut { - - private static final int WALK = 1, MOVE = 2, AGILITY = 3; - - private static void handleAgility(Client client, int x, int y, int levelReq, int anim, int walk, String message) { - if (client.playerLevel[client.playerAgility] < levelReq) { - client.getActionSender().sendMessage("You need " + levelReq + " agility to use this shortcut."); - return; - } - switch (walk) { - case 1: - client.getPlayerAssistant().walkTo(x, y); - break; - case 2: - client.getPlayerAssistant().movePlayer(x, y, client.heightLevel); - break; - case 3: - client.getAgility().walk(x, y, anim, -1); - break; - } - if (anim != 0 && anim != -1) { - client.startAnimation(anim); - } - client.getActionSender().sendMessage(message); - } - - public static void processAgilityShortcut(Client client) { - switch (client.objectId) { - case 993: - if (client.absY == 3435) { - handleAgility(client, 2761, 3438, 1, 3067, MOVE, "You jump over the stile."); - } else if (client.absY == 3438) { - handleAgility(client, 2761, 3435, 1, 3067, MOVE, "You jump over the stile."); - } - break; - case 9326: - if (client.absX == 2773) { - handleAgility(client, 2, 0, 81, 3067, WALK, "You jump over the strange floor."); - } else if (client.absX == 2775) { - handleAgility(client, -2, 0, 81, 3067, WALK, "You jump over the strange floor."); - } - break; - case 9321: - if (client.absX == 2735) { - handleAgility(client, -5, 0, 62, 2240, WALK, "You squeeze through the crevice."); - } else if (client.absX == 2730) { - handleAgility(client, 5, 0, 62, 2240, WALK, "You squeeze through the crevice."); - } - break; - case 12127: - if (client.absY == 4403) { - handleAgility(client, 0, -2, 66, 2240, WALK, - "You squeeze past the jutted wall."); - } else if (client.absY == 4401) { - handleAgility(client, 0, 2, 66, 2240, WALK, - "You squeeze past the jutted wall."); - } else if (client.absY == 4404) { - handleAgility(client, 0, -2, 46, 2240, WALK, - "You squeeze past the jutted wall."); - } else if (client.absY == 4402) { - handleAgility(client, 0, 2, 46, 2240, WALK, - "You squeeze past the jutted wall."); - } - break; - case 3933: - if (client.absY == 3232) { - handleAgility(client, 0, 7, 85, 762, WALK, - "You pass through the agility shortcut."); - } else if (client.absY == 3239) { - handleAgility(client, 0, -7, 85, 762, WALK, - "You pass through the agility shortcut."); - } - break; - case 4615: - case 4616: - if (client.absX == 2595) { - handleAgility(client, 2599, client.absY, 1, 3067, MOVE, - "You pass through the agility shortcut."); - } else if (client.absX == 2599) { - handleAgility(client, 2595, client.absY, 1, 3067, MOVE, - "You pass through the agility shortcut."); - } - break; - case 11844: - if (client.absX == 2936) { - handleAgility(client, -2, 0, 5, -1, WALK, - "You pass through the agility shortcut."); - } else if (client.absX == 2934) { - handleAgility(client, 2, 0, 5, -1, WALK, - "You pass through the agility shortcut."); - } - break; - case 5090: - if (client.absX == 2687) {// 2682, 9506 - handleAgility(client, -5, 0, 5, 762, WALK, - "You walk across the log balance."); - } - break; - case 5088: - if (client.absX == 2682) {// 2867, 9506 - handleAgility(client, 5, 0, 5, 762, WALK, - "You walk across the log balance."); - } - break; - case 14922: - if (client.objectX == 2344 && client.objectY == 3651) { - handleAgility(client, 2344, 3655, 1, 762, MOVE, - "You crawl through the hole."); - } else if (client.objectX == 2344 && client.objectY == 3654) { - handleAgility(client, 2344, 3650, 1, 762, MOVE, - "You crawl through the hole."); - } - break; - case 9330: - if (client.objectX == 2601 && client.objectY == 3336) { - handleAgility(client, -4, 0, 33, client.getAgility() - .getAnimation(Agility.PIPES_EMOTE), AGILITY, - "You pass through the agility shortcut."); - } - case 5100: - if (client.absY == 9566) { - handleAgility(client, 2655, 9573, 17, 762, MOVE, - "You pass through the agility shortcut."); - } else if (client.absY == 9573) { - handleAgility(client, 2655, 9573, 17, 762, MOVE, - "You pass through the agility shortcut."); - } - break; - case 9328: - if (client.objectX == 2599 && client.objectY == 3336) { - handleAgility(client, 4, 0, 33, client.getAgility() - .getAnimation(Agility.PIPES_EMOTE), AGILITY, - "You pass through the agility shortcut."); - } - break; - - case 9293: - if (client.absX < client.objectX) { - handleAgility(client, 2892, 9799, 70, client.getAgility() - .getAnimation(Agility.PIPES_EMOTE), MOVE, - "You pass through the agility shortcut."); - } else { - handleAgility(client, 2886, 9799, 70, client.getAgility() - .getAnimation(Agility.PIPES_EMOTE), MOVE, - "You pass through the agility shortcut."); - } - break; - - case 9294: - if (client.absX < client.objectX) { - client.getPlayerAssistant().movePlayer(client.objectX + 1, - client.absY, 0); - handleAgility(client, 2880, 9713, 80, 3067, MOVE, - "You jump over the strange wall."); - } else if (client.absX > client.objectX) { - handleAgility(client, 2878, 9713, 80, 3067, MOVE, - "You jump over the strange wall."); - } - break; - - case 9302: - if (client.absY == 3112) { - handleAgility(client, 2575, 3107, 16, 844, MOVE, - "You pass through the agility shortcut."); - } - break; - - case 9301: - if (client.absY == 3107) { - handleAgility(client, 2575, 3112, 16, 844, MOVE, - "You pass through the agility shortcut."); - } - break; - case 9309: - if (client.absY == 3309) { - handleAgility(client, 2948, 3313, 26, 844, MOVE, - "You pass through the agility shortcut."); - } - break; - case 9310: - if (client.absY == 3313) { - handleAgility(client, 2948, 3309, 26, 844, MOVE, - "You pass through the agility shortcut."); - } - break; - case 2322: - if (client.absX == 2709) { - handleAgility(client, 2704, 3209, 10, 3067, MOVE, - "You pass through the agility shortcut."); - } - break; - case 2323: - if (client.absX == 2705) { - handleAgility(client, 2709, 3205, 10, 3067, MOVE, - "You pass through the agility shortcut."); - } - break; - case 2332: - if (client.absX == 2906) { - handleAgility(client, 4, 0, 1, 762, WALK, - "You pass through the agility shortcut."); - } else if (client.absX == 2910) { - handleAgility(client, -4, 0, 1, 762, WALK, - "You pass through the agility shortcut."); - } - break; - case 3067: - if (client.absX == 2639) { - handleAgility(client, -1, 0, 1, 3067, WALK, - "You pass through the agility shortcut."); - } else if (client.absX == 2638) { - handleAgility(client, -1, 0, 1, 3067, WALK, - "You pass through the agility shortcut."); - } - break; - case 2618: - if (client.absY == 3492) { - handleAgility(client, 0, +2, 1, 3067, WALK, - "You jump over the broken fence."); - } else if (client.absY == 3494) { - handleAgility(client, -0, -2, 1, 3067, WALK, - "You jump over the broken fence."); - } - break; - case 5110: - Agility.brimhavenSkippingStone(client); - break; - case 5111: - Agility.brimhavenSkippingStone(client); - break; - case 2296: - if (client.absX == 2603) { - handleAgility(client, -5, 0, 1, -1, WALK, - "You pass through the agility shortcut."); - } else if (client.absX == 2598) { - handleAgility(client, 5, 0, 1, -1, WALK, - "You pass through the agility shortcut."); - } - break; - } - } -} diff --git a/2006Redone Server/src/redone/game/content/skills/crafting/GemCutting.java b/2006Redone Server/src/redone/game/content/skills/crafting/GemCutting.java deleted file mode 100644 index 8033ac4b..00000000 --- a/2006Redone Server/src/redone/game/content/skills/crafting/GemCutting.java +++ /dev/null @@ -1,76 +0,0 @@ -package redone.game.content.skills.crafting; - -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.content.music.sound.SoundList; -import redone.game.items.ItemAssistant; -import redone.game.players.Client; -import redone.util.Misc; - -public class GemCutting extends CraftingData { - - public static boolean cutGem(final Client c, final int itemUsed, - final int usedWith) { - /* - * if (c.isCrafting == true) { return false; } - */ - final int itemId = itemUsed == 1755 ? usedWith : itemUsed; - for (final cutGemData g : cutGemData.values()) { - if (itemId == g.getUncut()) { - if (c.playerLevel[12] < g.getLevel()) { - c.getActionSender().sendMessage( - "You need a crafting level of " + g.getLevel() - + " to cut this gem."); - return false; - } - if (!c.getItemAssistant().playerHasItem(itemId)) { - return false; - } - if (!CRAFTING) { - c.getActionSender().sendMessage( - "This skill is currently disabled."); - return false; - } - c.isCrafting = true; - c.startAnimation(g.getAnimation()); - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (Misc.random(2) == 0 && itemUsed > 1624 && itemUsed < 1630 || usedWith > 1624 && usedWith < 1630 && Misc.random(2) == 0) { - c.getActionSender().sendMessage("You fail to cut the gem."); - c.getItemAssistant().addItem(1633, 1); - c.getItemAssistant().deleteItem(itemId, 1); - c.getPlayerAssistant().addSkillXP(1, 12); - } - if (c.isCrafting == true) { - if (c.getItemAssistant().playerHasItem(itemId)) { - c.getItemAssistant().deleteItem(itemId, 1); - c.getItemAssistant().addItem(g.getCut(), 1); - c.getPlayerAssistant().addSkillXP((int) g.getXP(), 12); - c.getItemAssistant(); - c.getActionSender().sendMessage( - "You cut the " - + ItemAssistant.getItemName( - itemId).toLowerCase() - + "."); - c.startAnimation(g.getAnimation()); - c.getActionSender().sendSound( - SoundList.CUT_GEM, 100, 0); - } else { - container.stop(); - } - } else { - container.stop(); - } - } - @Override - public void stop() { - - } - }, 4); - } - } - return false; - } -} diff --git a/2006Redone Server/src/redone/game/content/skills/crafting/Pottery.java b/2006Redone Server/src/redone/game/content/skills/crafting/Pottery.java deleted file mode 100644 index ef4f26a2..00000000 --- a/2006Redone Server/src/redone/game/content/skills/crafting/Pottery.java +++ /dev/null @@ -1,190 +0,0 @@ -package redone.game.content.skills.crafting; - -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.items.ItemAssistant; -import redone.game.players.Client; - -/** - * @author Tom - */ - -public class Pottery { - - public static int unFire = 896; - public static int Fire = 899; - public static int softClay = 1761; - - public static void showUnfire(Client c) { - c.getPlayerAssistant().sendChatInterface(8938); - c.getPlayerAssistant().sendFrame126("What would you like to make?", 8879); - c.getPlayerAssistant().sendFrame246(8941, 120, 1787); // first - c.getPlayerAssistant().sendFrame246(8942, 150, 1789); // second - c.getPlayerAssistant().sendFrame246(8943, 150, 1791); // third - c.getPlayerAssistant().sendFrame246(8944, 120, 5352); // 4th - c.getPlayerAssistant().sendFrame246(8945, 150, 4438); // 5th - c.getPlayerAssistant().sendFrame126("Pot", 8949); - c.getPlayerAssistant().sendFrame126("Pie Dish", 8953); - c.getPlayerAssistant().sendFrame126("Bowl", 8957); - c.getPlayerAssistant().sendFrame126("Plant pot", 8961); - c.getPlayerAssistant().sendFrame126("Pot lid", 8965); - c.showedUnfire = true; - } - - public static void showFire(Client c) { - c.getPlayerAssistant().sendChatInterface(8938); - c.getPlayerAssistant().sendFrame126("What would you like to make?", 8879); - c.getPlayerAssistant().sendFrame246(8941, 120, 1931); // first - c.getPlayerAssistant().sendFrame246(8942, 150, 2313); // second - c.getPlayerAssistant().sendFrame246(8943, 150, 1923); // third - c.getPlayerAssistant().sendFrame246(8944, 120, 5350); // 4th - c.getPlayerAssistant().sendFrame246(8945, 150, 4440); // 5th - c.getPlayerAssistant().sendFrame126("Pot", 8949); - c.getPlayerAssistant().sendFrame126("Pie Dish", 8953); - c.getPlayerAssistant().sendFrame126("Bowl", 8957); - c.getPlayerAssistant().sendFrame126("Plant pot", 8961); - c.getPlayerAssistant().sendFrame126("Pot lid", 8965); - c.showedFire = true; - } - - public static void makeUnfire(final Client c, final int id, - final double xp, final int level, int amount) { - c.getPlayerAssistant().closeAllWindows(); - c.doAmount = amount; - c.isPotCrafting = true; - if (c.getItemAssistant().playerHasItem(softClay) - && c.playerLevel[12] >= level && c.isPotCrafting == true) { - c.startAnimation(unFire); - c.getItemAssistant().deleteItem(softClay, 1); - c.getItemAssistant().addItem(id, 1); - c.getActionSender().sendMessage( - "You make the soft clay into a " - + ItemAssistant.getItemName(id) + "."); - c.getPlayerAssistant().addSkillXP(xp, c.playerCrafting); - c.doAmount--; - } - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - - @Override - public void execute(CycleEventContainer container) { - if (c.getItemAssistant().playerHasItem(softClay) - && c.playerLevel[12] >= level && !(c.doAmount <= 0) - && c.isPotCrafting == true) { - c.startAnimation(unFire); - c.getItemAssistant().deleteItem(softClay, 1); - c.getItemAssistant().addItem(id, 1); - c.getActionSender().sendMessage( - "You make the soft clay into a " - + ItemAssistant.getItemName(id) + "."); - c.getPlayerAssistant().addSkillXP(xp, c.playerCrafting); - c.doAmount--; - } - - if (c.playerLevel[12] < level) { - container.stop(); - c.getActionSender().sendMessage( - "You need a crafting level of " + level - + " to make this."); - } - - if (!c.getItemAssistant().playerHasItem(softClay)) { - container.stop(); - c.getActionSender().sendMessage( - "You need soft clay to do this."); - } - - if (c.isPotCrafting == false) { - container.stop(); - } - - if (c.doAmount <= 0) { - container.stop(); - } - - } - - @Override - public void stop() { - c.isPotCrafting = false; - c.startAnimation(65535); - } - }, 3); - } - - public static void makeFire(final Client c, final int startId, - final int finishId, final int level, final double xp, int amount) { - c.getPlayerAssistant().closeAllWindows(); - c.doAmount = amount; - c.isPotCrafting = true; - if (c.getItemAssistant().playerHasItem(startId) - && c.playerLevel[12] >= level && c.isPotCrafting == true) { - c.getItemAssistant().deleteItem(startId, 1); - c.getItemAssistant().addItem(finishId, 1); - c.startAnimation(Fire); - c.getActionSender().sendSound(469, 100, 0); - c.getActionSender().sendMessage( - "You put a " + ItemAssistant.getItemName(startId) - + " into the oven."); - c.getActionSender().sendMessage( - "You retrieve the " + ItemAssistant.getItemName(finishId) - + " from the oven."); - c.getPlayerAssistant().addSkillXP(xp, c.playerCrafting); - c.doAmount--; - } - - if (c.playerLevel[12] < level) { - c.getActionSender().sendMessage( - "You need a crafting level of " + level + " to make this."); - } - - if (!c.getItemAssistant().playerHasItem(startId) - && c.playerLevel[12] >= level) { - c.getActionSender().sendMessage( - "You need an " + ItemAssistant.getItemName(startId) - + " to do this."); - } - - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - - @Override - public void execute(CycleEventContainer container) { - if (c.getItemAssistant().playerHasItem(startId) - && c.playerLevel[12] >= level - && c.isPotCrafting == true && !(c.doAmount <= 0)) { - c.getItemAssistant().deleteItem(startId, 1); - c.getItemAssistant().addItem(finishId, 1); - c.startAnimation(Fire); - c.getActionSender().sendSound(469, 100, 0); - c.getActionSender().sendMessage( - "You put a " + ItemAssistant.getItemName(startId) - + " into the oven."); - c.getActionSender().sendMessage( - "You retrieve the " - + ItemAssistant.getItemName(finishId) - + " from the oven."); - c.getPlayerAssistant().addSkillXP(xp, c.playerCrafting); - c.doAmount--; - } - - if (c.isPotCrafting == false - || !c.getItemAssistant().playerHasItem(startId) - || c.playerLevel[12] < level) { - container.stop(); - } - - if (c.doAmount <= 0) { - container.stop(); - } - - } - - @Override - public void stop() { - c.isPotCrafting = false; - c.startAnimation(65535); - } - }, 5); - } - -} diff --git a/2006Redone Server/src/redone/game/content/skills/crafting/SoftClay.java b/2006Redone Server/src/redone/game/content/skills/crafting/SoftClay.java deleted file mode 100644 index 1908b6b7..00000000 --- a/2006Redone Server/src/redone/game/content/skills/crafting/SoftClay.java +++ /dev/null @@ -1,54 +0,0 @@ -package redone.game.content.skills.crafting; - -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.content.randomevents.RandomEventHandler; -import redone.game.players.Client; - -/** - * Soft Clay - * - * @author Andrew - */ - -public class SoftClay { - - public static final int SOFT_CLAY = 1761, CLAY = 434; - - public static void makeClay(final Client client) { - if (!client.getItemAssistant().playerHasItem(CLAY)) { - client.getActionSender().sendMessage( - "You need clay to do this."); - return; - } - CycleEventHandler.getSingleton().addEvent(client, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - int amountToSubtract = client.getItemAssistant().getItemAmount(CLAY); - int amountToAdd = amountToSubtract; - client.doAmount = amountToSubtract; - client.addAmount = amountToAdd; - if (client.getItemAssistant().playerHasItem(CLAY)) { - client.getItemAssistant().deleteItem(CLAY, client.doAmount); - client.doAmount--; - client.getItemAssistant().addItem(SOFT_CLAY, client.addAmount); - client.addAmount++; - RandomEventHandler.addRandom(client); - if (client.doAmount == 0) { - client.getActionSender().sendMessage("You have ran out of clay to turn to soft clay."); - container.stop(); - } - if (client.disconnected) { - container.stop(); - } - } - } - @Override - public void stop() { - - } - }, 1); - } - -} diff --git a/2006Redone Server/src/redone/game/content/skills/crafting/Tanning.java b/2006Redone Server/src/redone/game/content/skills/crafting/Tanning.java deleted file mode 100644 index f6df6d29..00000000 --- a/2006Redone Server/src/redone/game/content/skills/crafting/Tanning.java +++ /dev/null @@ -1,64 +0,0 @@ -package redone.game.content.skills.crafting; - -import redone.game.players.Client; - -public class Tanning extends CraftingData { - - public static void sendTanningInterface(final Client c) { - c.getPlayerAssistant().showInterface(14670); - for (final tanningData t : tanningData.values()) { - c.getActionSender().itemOnInterface(t.getItemFrame(), 250, - t.getLeatherId()); - c.getPlayerAssistant().sendFrame126(t.getName(), t.getNameFrame()); - if (c.getItemAssistant().playerHasItem(995, t.getPrice())) { - c.getPlayerAssistant().sendFrame126( - "@gre@Price: " + t.getPrice(), t.getCostFrame()); - } else { - c.getPlayerAssistant().sendFrame126( - "@red@Price: " + t.getPrice(), t.getCostFrame()); - } - } - } - - public static void tanHide(final Client c, final int buttonId) { - for (final tanningData t : tanningData.values()) { - if (buttonId == t.getButtonId(buttonId)) { - int amount = c.getItemAssistant().getItemCount(t.getHideId()); - if (amount > t.getAmount(buttonId)) { - amount = t.getAmount(buttonId); - } - int price = amount * t.getPrice(); - int coins = c.getItemAssistant().getItemCount(995); - if (price > coins) { - price = coins - coins % t.getPrice(); - } - if (price == 0) { - c.getActionSender().sendMessage( - "You do not have enough coins to tan this hide."); - return; - } - amount = price / t.getPrice(); - final int hide = t.getHideId(); - final int leather = t.getLeatherId(); - if (c.getItemAssistant().playerHasItem(995, price)) { - if (c.getItemAssistant().playerHasItem(hide)) { - c.getItemAssistant().deleteItem(hide, amount); - c.getItemAssistant().deleteItem(995, - c.getItemAssistant().getItemSlot(995), price); - c.getItemAssistant().addItem(leather, amount); - c.getActionSender().sendMessage( - "The tanner tans the hides for you."); - } else { - c.getActionSender().sendMessage( - "You do not have any hides to tan."); - return; - } - } else { - c.getActionSender().sendMessage( - "You do not have enough coins to tan this hide."); - return; - } - } - } - } -} diff --git a/2006Redone Server/src/redone/game/content/skills/farming/Herbs.java b/2006Redone Server/src/redone/game/content/skills/farming/Herbs.java deleted file mode 100644 index 41f21943..00000000 --- a/2006Redone Server/src/redone/game/content/skills/farming/Herbs.java +++ /dev/null @@ -1,24 +0,0 @@ -package redone.game.content.skills.farming; - -import redone.game.players.Client; - -/** - * Herbs - * @author Andrew (I'm A Boss on Rune-Server and Mr Extremez on Mopar & Runelocus) - */ - -public class Herbs { - - private static final int[] HERB_PATCH = {8150, 8151}; - - public static boolean isHerb(Client player, int objectType) { - for (int i = 0; i < HERB_PATCH.length; i++) { - if (objectType == HERB_PATCH[i]) { - return true; - } - } - return false; - - } - -} diff --git a/2006Redone Server/src/redone/game/content/skills/fletching/LogCuttingInterface.java b/2006Redone Server/src/redone/game/content/skills/fletching/LogCuttingInterface.java deleted file mode 100644 index a239a3a7..00000000 --- a/2006Redone Server/src/redone/game/content/skills/fletching/LogCuttingInterface.java +++ /dev/null @@ -1,104 +0,0 @@ -package redone.game.content.skills.fletching; - -import redone.game.items.ItemAssistant; -import redone.game.players.Client; - -/** - * @author Tom - */ - -public class LogCuttingInterface { - - public static int log; - - public static void handleLog(Client c, int item1, int item2) { - if (item1 == 946) { - Interface(c, item2); - } else { - Interface(c, item1); - } - } - - public static void Interface(Client c, int item) { - if (c.playerIsFletching == true && (item > 1510 && item < 1522)) { - LogCutting.resetFletching(c); - return; - } else if (c.playerIsFletching == true && (item < 1510 || item > 1521)) { - c.playerIsFletching = false; - c.getActionSender().sendMessage("Nothing interesting happens."); - } - log = item; - if (item == 1511) { - c.getPlayerAssistant().sendChatInterface(8880); - c.getPlayerAssistant().sendFrame126("What would you like to make?", - 8879); - c.getPlayerAssistant().sendFrame246(8883, 180, 52); // left - c.getPlayerAssistant().sendFrame246(8884, 180, 50); // middle - c.getPlayerAssistant().sendFrame246(8885, 180, 48); // right - c.getPlayerAssistant().sendFrame126(ItemAssistant.getItemName(52), - 8889); - c.getPlayerAssistant().sendFrame126(ItemAssistant.getItemName(50), - 8893); - c.getPlayerAssistant().sendFrame126(ItemAssistant.getItemName(48), - 8897); - } else if (item == 1521) { - c.getPlayerAssistant().sendChatInterface(8866); - c.getPlayerAssistant().sendFrame126("What would you like to make?", - 8879); - c.getPlayerAssistant().sendFrame246(8869, 180, 54); // left - c.getPlayerAssistant().sendFrame246(8870, 180, 56); // right - c.getPlayerAssistant().sendFrame126(ItemAssistant.getItemName(54), - 8874); - c.getPlayerAssistant().sendFrame126(ItemAssistant.getItemName(56), - 8878); - } else if (item == 1519) { - c.getPlayerAssistant().sendChatInterface(8866); - c.getPlayerAssistant().sendFrame126("What would you like to make?", - 8879); - c.getPlayerAssistant().sendFrame246(8869, 180, 60); // left - c.getPlayerAssistant().sendFrame246(8870, 180, 58); // right - c.getPlayerAssistant().sendFrame126(ItemAssistant.getItemName(60), - 8874); - c.getPlayerAssistant().sendFrame126(ItemAssistant.getItemName(58), - 8878); - } else if (item == 1517) { - c.getPlayerAssistant().sendChatInterface(8866); - c.getPlayerAssistant().sendFrame126("What would you like to make?", - 8879); - c.getPlayerAssistant().sendFrame246(8869, 180, 64); // left - c.getPlayerAssistant().sendFrame246(8870, 180, 62); // right - c.getPlayerAssistant().sendFrame126(ItemAssistant.getItemName(64), - 8874); - c.getPlayerAssistant().sendFrame126(ItemAssistant.getItemName(62), - 8878); - } else if (item == 1515) { - c.getPlayerAssistant().sendChatInterface(8866); - c.getPlayerAssistant().sendFrame126("What would you like to make?", - 8879); - c.getPlayerAssistant().sendFrame246(8869, 180, 68); // left - c.getPlayerAssistant().sendFrame246(8870, 180, 66); // right - c.getPlayerAssistant().sendFrame126(ItemAssistant.getItemName(68), - 8874); - c.getPlayerAssistant().sendFrame126(ItemAssistant.getItemName(66), - 8878); - } else if (item == 1513) { - c.getPlayerAssistant().sendChatInterface(8866); - c.getPlayerAssistant().sendFrame126("What would you like to make?", - 8879); - c.getPlayerAssistant().sendFrame246(8869, 180, 72); // left - c.getPlayerAssistant().sendFrame246(8870, 180, 70); // right - c.getPlayerAssistant().sendFrame126(ItemAssistant.getItemName(72), - 8874); - c.getPlayerAssistant().sendFrame126(ItemAssistant.getItemName(70), - 8878); - } - c.playerIsFletching = true; - } - - public static void handleItemOnItem(Client c, int itemUsed, int useWith) { - - if (itemUsed == 946 || useWith == 946) { - handleLog(c, itemUsed, useWith); - } - } -} diff --git a/2006Redone Server/src/redone/game/content/skills/herblore/GrindingAction.java b/2006Redone Server/src/redone/game/content/skills/herblore/GrindingAction.java deleted file mode 100644 index 84ad5848..00000000 --- a/2006Redone Server/src/redone/game/content/skills/herblore/GrindingAction.java +++ /dev/null @@ -1,50 +0,0 @@ -package redone.game.content.skills.herblore; - -import redone.game.content.music.sound.SoundList; -import redone.game.items.ItemAssistant; -import redone.game.players.Client; - -public class GrindingAction { - - public static final int PESTLE_AND_MORTAR = 233; - - public enum Data { - UNICORN(237, 235), CHOCO(1973, 1975), NEST(5075, 6693), SCALE(243, 241), SHARDS( - 6466, 6467), WEED1(401, 6683), WEED2(403, 6683), BAT(530, 2391), CHARCOAL( - 973, 704), COD(341, 7528), KELP(7516, 7517), CRABMEAT(7518, - 7527), THISLE(3263, 3264), MUSHROOM(4620, 4622); - - public int id; - public int end; - - Data(int id, int end) { - this.id = id; - this.end = end; - } - - public int getId() { - return id; - } - - public int getEnd() { - return end; - } - } - - public static void init(Client c, int itemUsed, int useWith) { - for (Data d : Data.values()) { - if (itemUsed == PESTLE_AND_MORTAR && useWith == d.getId() - || itemUsed == d.getId() && useWith == PESTLE_AND_MORTAR) { - c.startAnimation(364); - c.getActionSender().sendSound(SoundList.PESTLE_MOTAR, 100, - 0); - c.getItemAssistant().deleteItem(d.getId(), 1); - c.getItemAssistant().addItem(d.getEnd(), 1); - c.getActionSender().sendMessage( - "You carefully grind the " - + ItemAssistant.getItemName(d.getId()) + "."); - c.getPlayerAssistant().addSkillXP(1, c.playerHerblore); - } - } - } -} diff --git a/2006Redone Server/src/redone/game/content/skills/runecrafting/AbyssalHandler.java b/2006Redone Server/src/redone/game/content/skills/runecrafting/AbyssalHandler.java deleted file mode 100644 index bf341f7a..00000000 --- a/2006Redone Server/src/redone/game/content/skills/runecrafting/AbyssalHandler.java +++ /dev/null @@ -1,52 +0,0 @@ -package redone.game.content.skills.runecrafting; - -import redone.game.players.Client; - -public class AbyssalHandler { - - public static void handleAbyssalTeleport(Client c, int objectId) { - switch (objectId) { - case 7147: // squeeze through gap - c.getPlayerAssistant().movePlayer(3030, 4842, 0); - break; - case 7133: // nature - c.getPlayerAssistant().startTeleport(2395, 4841, 0, "modern"); - break; - case 7132: // cosmic - c.getPlayerAssistant().startTeleport(2144, 4831, 0, "modern"); - break; - case 7129: // fire - c.getPlayerAssistant().startTeleport(2585, 4836, 0, "modern"); - break; - case 7130: // earth - c.getPlayerAssistant().startTeleport(2658, 4839, 0, "modern"); - break; - case 7131: // body - c.getPlayerAssistant().startTeleport(2525, 4830, 0, "modern"); - break; - case 7140: // mind - c.getPlayerAssistant().startTeleport(2786, 4834, 0, "modern"); - break; - case 7139: // air - c.getPlayerAssistant().startTeleport(2844, 4837, 0, "modern"); - break; - case 7137: // water - c.getPlayerAssistant().startTeleport(2722, 4833, 0, "modern"); - break; - case 7136: // death - c.getPlayerAssistant().startTeleport(2205, 4834, 0, "modern"); - break; - case 7135: // law - c.getPlayerAssistant().startTeleport(2464, 4830, 0, "modern"); - break; - case 7134: // chaos - c.getPlayerAssistant().startTeleport(2274, 4842, 0, "modern"); - break; - case 7138: // soul - case 7141: // blood - c.getActionSender().sendMessage("This altar is currently disabled."); - break; - } - } - -} diff --git a/2006Redone Server/src/redone/game/content/skills/runecrafting/RuneCraftingActions.java b/2006Redone Server/src/redone/game/content/skills/runecrafting/RuneCraftingActions.java deleted file mode 100644 index fbcb0ec4..00000000 --- a/2006Redone Server/src/redone/game/content/skills/runecrafting/RuneCraftingActions.java +++ /dev/null @@ -1,222 +0,0 @@ -package redone.game.content.skills.runecrafting; - -import redone.game.players.Client; - -/** - * Handles runecrafting actions - * - * @author Andrew - */ - -public class RuneCraftingActions { - - public static void handleRuneCrafting(Client client, int objectId) { - switch (objectId) { - case 2465:// air altar portal - if (client.objectX == 2841 && client.objectY == 4828) { - client.getPlayerAssistant().startTeleport(2983, 3293, 0, "modern"); - } - break; - - case 2466:// mind altar portal - if (client.objectX == 2793 && client.objectY == 4827) { - client.getPlayerAssistant().startTeleport(2980, 3514, 0, "modern"); - } - break; - - case 2467:// water altar portal - if (client.objectX == 2727 && client.objectY == 4832) { - client.getPlayerAssistant().startTeleport(3184, 3162, 0, "modern"); - } - break; - - case 2468:// earth rune portal - if (client.objectX == 2655 && client.objectY == 4829) { - client.getPlayerAssistant().startTeleport(3308, 3476, 0, "modern"); - } - break; - - case 2469:// fire rune portal - if (client.objectX == 2574 && client.objectY == 4850) { - client.getPlayerAssistant().startTeleport(3311, 3256, 0, "modern"); - } - break; - - case 2470:// body altar portal - if (client.objectX == 2523 && client.objectY == 4825) { - client.getPlayerAssistant().startTeleport(3051, 3444, 0, "modern"); - } - break; - - case 2471:// cosmic altar portal - if (client.objectX == 2163 && client.objectY == 4833 || client.objectX == 2142 && client.objectY == 4854 || client.objectX == 2121 && client.objectY == 4833 || client.objectX == 2412 && client.objectY == 4812) { - client.getPlayerAssistant().startTeleport(2410, 4379, 0, "modern"); - } - break; - - case 2472:// law altar portal - if (client.objectX == 2464 && client.objectY == 4817) { - client.getPlayerAssistant().startTeleport(2857, 3379, 0, "modern"); - } - break; - - case 2473:// nature portal altar - if (client.objectX == 2400 && client.objectY == 4834) { - client.getPlayerAssistant().startTeleport(2866, 3022, 0, "modern"); - } - break; - - case 2474: - if (client.objectX == 3233 && client.objectY == 9312) {// desert - // treasure - // portal - client.getPlayerAssistant().startTeleport(3233, 2887, 0, "modern"); - } else if (client.objectX == 2282 && client.objectY == 4837) {// chaos - // altar - // portal - client.getPlayerAssistant().startTeleport(3062, 3593, 0, "modern"); - } - break; - - case 2475:// death altar portal - if (client.objectX == 2208 && client.objectY == 4829) { - client.getPlayerAssistant().startTeleport(1863, 4639, 0, - "modern"); - } - break; - - case 2478:// air altar crafting - if (client.objectX == 2843 && client.objectY == 4833) { - client.getRC().craftRunes(objectId); - } - break; - - case 2479:// mind altar crafting - if (client.objectX == 2785 && client.objectY == 4840) { - client.getRC().craftRunes(objectId); - } - break; - - case 2480:// water altar crafting - if (client.objectX == 2715 && client.objectY == 4835) { - client.getRC().craftRunes(objectId); - } - break; - - case 2481:// earth altar crafting - if (client.objectX == 2657 && client.objectY == 4840) { - client.getRC().craftRunes(objectId); - } - break; - - case 2482:// fire altar crafting - if (client.objectX == 2584 && client.objectY == 4837) { - client.getRC().craftRunes(objectId); - } - break; - - case 2483:// body altar crafting - if (client.objectX == 2524 && client.objectY == 4831) { - client.getRC().craftRunes(objectId); - } - break; - - case 2484:// cosmic altar crafting - if (client.objectX == 2141 && client.objectY == 4832) { - client.getRC().craftRunes(objectId); - } - break; - - case 2485:// law altar crafting - if (client.objectX == 2463 && client.objectY == 4831) { - client.getRC().craftRunes(objectId); - } - break; - - case 2486:// nature altar crafting - if (client.objectX == 2399 && client.objectY == 4840) { - client.getRC().craftRunes(objectId); - } - break; - - case 2487:// chaos altar crafting - if (client.objectX == 2270 && client.objectY == 4841) { - client.getRC().craftRunes(objectId); - } - break; - - case 2488:// death altar crafting - if (client.objectX == 2204 && client.objectY == 4835) { - client.getRC().craftRunes(objectId); - } - break; - - case 2452:// air altar entrance - if (client.objectX == 2984 && client.objectY == 3291) { - client.getRC().enterAltar(objectId, 0); - } - break; - - case 2453:// mind altar entrance - if (client.objectX == 2981 && client.objectY == 3513) { - client.getRC().enterAltar(objectId, 0); - } - break; - - case 2454:// water altar entrance - if (client.objectX == 3184 && client.objectY == 3164) { - client.getRC().enterAltar(objectId, 0); - } - break; - - case 2455:// earth altar entrance - if (client.objectX == 3305 && client.objectY == 3473) { - client.getRC().enterAltar(objectId, 0); - } - break; - - case 2456:// fire altar entrance - if (client.objectX == 3312 && client.objectY == 3254) { - client.getRC().enterAltar(objectId, 0); - } - break; - - case 2457:// body altar entrance - if (client.objectX == 3052 && client.objectY == 3444) { - client.getRC().enterAltar(objectId, 0); - } - break; - - case 2458:// cosmic altar entrance - if (client.objectX == 2407 && client.objectY == 4376) { - client.getRC().enterAltar(objectId, 0); - } - break; - - case 2459:// law altar entrance - if (client.objectX == 2857 && client.objectY == 3380) { - client.getRC().enterAltar(objectId, 0); - } - break; - - case 2460:// nature altar entrance - if (client.objectX == 2868 && client.objectY == 3018) { - client.getRC().enterAltar(objectId, 0); - } - break; - - case 2461:// chaos altar entrance - if (client.objectX == 3059 && client.objectY == 3590) { - client.getRC().enterAltar(objectId, 0); - } - break; - - case 2462:// death altar entrance - if (client.objectX == 1859 && client.objectY == 4638) { - client.getRC().enterAltar(objectId, 0); - } - break; - } - } - -} diff --git a/2006Redone Server/src/redone/game/content/skills/slayer/SlayerRequirements.java b/2006Redone Server/src/redone/game/content/skills/slayer/SlayerRequirements.java deleted file mode 100644 index e673c484..00000000 --- a/2006Redone Server/src/redone/game/content/skills/slayer/SlayerRequirements.java +++ /dev/null @@ -1,83 +0,0 @@ -package redone.game.content.skills.slayer; - -import redone.game.npcs.NpcHandler; -import redone.game.players.Client; - -/** - * Slayer Item Requirements - * - * @author Andrew - */ - -public class SlayerRequirements { - - private static final int NOSE_PEG = 4168, MIRROR_SHIELD = 4156, - EAR_MUFFS = 4166, ROCK_HAMMER = 4162, FACEMASK = 4164, - LEAF_BLADED_SPEAR = 4158, BROAD_ARROWS = 4172, BAG_OF_SALT = 4161; - - public static boolean itemNeededSlayer(Client client, int i) { - int npcType = NpcHandler.npcs[i].npcType; - switch (NpcHandler.npcs[i].npcType) { - case 1622: - case 1623: //rock slug - if (!client.getItemAssistant().playerHasItem(BAG_OF_SALT, 1)) { - client.getActionSender().sendMessage("You need a Bag of Salt to attack Rock Slugs."); - client.getCombatAssistant().resetPlayerAttack(); - return false; - } - break; - case 1632: // turoth - if (client.playerEquipment[client.playerWeapon] != LEAF_BLADED_SPEAR && client.playerEquipment[client.playerArrows] != BROAD_ARROWS) { - client.getActionSender().sendMessage("You need a Leaf Bladed Spear or Broad Arrows to attack Turoths."); - client.getCombatAssistant().resetPlayerAttack(); - return false; - } else if (client.playerEquipment[client.playerArrows] != BROAD_ARROWS && client.playerEquipment[client.playerWeapon] != LEAF_BLADED_SPEAR) { - client.getActionSender().sendMessage("You need a Leaf Bladed Spear or Broad Arrows to attack Turoths."); - client.getCombatAssistant().resetPlayerAttack(); - return false; - } - break; - case 1612:// banshee - if (client.playerEquipment[client.playerHat] != EAR_MUFFS) { - client.getActionSender().sendMessage("You need some Ear Muffs to attack Banshees."); - client.getCombatAssistant().resetPlayerAttack(); - return false; - } - break; - case 1620: //basilisk - case 1616:// cockatrice - if (client.playerEquipment[client.playerShield] != MIRROR_SHIELD) { - client.getActionSender().sendMessage("You need a Mirror Shield to attack a " + NpcHandler.getNpcListName(npcType).toLowerCase() + "."); - client.getCombatAssistant().resetPlayerAttack(); - return false; - } - break; - case 1624:// dust devil - if (client.playerEquipment[client.playerHat] != FACEMASK) { - client.getActionSender().sendMessage("You need a Face Mask to attack Dust devils."); - client.getCombatAssistant().resetPlayerAttack(); - return false; - } - break; - case 1604: - case 1605: - case 1606: - case 1607:// spectre - if (client.playerEquipment[client.playerHat] != NOSE_PEG) { - client.getActionSender().sendMessage("You need a Nose Peg to attack Aberrant specter."); - client.getCombatAssistant().resetPlayerAttack(); - return false; - } - break; - case 1611:// garg - if (!client.getItemAssistant().playerHasItem(ROCK_HAMMER)) { - client.getActionSender().sendMessage("You need a Rock Hammer to attack gargoyles."); - client.getCombatAssistant().resetPlayerAttack(); - return false; - } - break; - } - return true; - } - -} diff --git a/2006Redone Server/src/redone/game/content/skills/smithing/SmithingInterface.java b/2006Redone Server/src/redone/game/content/skills/smithing/SmithingInterface.java deleted file mode 100644 index 6c001206..00000000 --- a/2006Redone Server/src/redone/game/content/skills/smithing/SmithingInterface.java +++ /dev/null @@ -1,679 +0,0 @@ -package redone.game.content.skills.smithing; - -import redone.game.players.Client; - -public class SmithingInterface { - - Client c; - - public SmithingInterface(Client c) { - this.c = c; - } - - public void showSmithInterface(int itemId) { - if (itemId == 2349 && c.tutorialProgress == 20) { - c.getActionSender().chatbox(6180); - c.getDialogueHandler().chatboxText(c, "Now you have the Smithing menu open, you will see a list of all", "the things you can make. Only the dagger can be made at your", "skill level, this is shown by the white text under it. You'll need", "to select the dagger to continue.", "Smithing a dagger"); - c.getActionSender().chatbox(6179); - makeBronzeInterface(c); - c.isSmithing = true; - } else if (itemId == 2349 && c.tutorialProgress > 20) { - makeBronzeInterface(c); - } else if (itemId == 2351) { - makeIronInterface(c); - } else if (itemId == 2353) { - makeSteelInterface(c); - } else if (itemId == 2359) { - makeMithInterface(c); - } else if (itemId == 2361) { - makeAddyInterface(c); - } else if (itemId == 2363) { - makeRuneInterface(c); - } - } - - private void makeRuneInterface(Client c) { - String fiveb = GetForBars(2363, 5, c); - String threeb = GetForBars(2363, 3, c); - String twob = GetForBars(2363, 2, c); - String oneb = GetForBars(2363, 1, c); - c.getPlayerAssistant().sendFrame126(fiveb + "5 Bars" + fiveb, 1112); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1109); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1110); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1118); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1111); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1095); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1115); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1090); - c.getPlayerAssistant().sendFrame126(twob + "2 Bars" + twob, 1113); - c.getPlayerAssistant().sendFrame126(twob + "2 Bars" + twob, 1116); - c.getPlayerAssistant().sendFrame126(twob + "2 Bars" + twob, 1114); - c.getPlayerAssistant().sendFrame126(twob + "2 Bars" + twob, 1089); - c.getPlayerAssistant().sendFrame126(twob + "2 Bars" + twob, 8428); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1124); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1125); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1126); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1127); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1128); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1129); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1130); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1131); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 13357); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 11459); - c.getPlayerAssistant().sendFrame126( - GetForlvl(88, c) + "Plate Body" + GetForlvl(18, c), 1101); - c.getPlayerAssistant().sendFrame126( - GetForlvl(99, c) + "Plate Legs" + GetForlvl(16, c), 1099); - c.getPlayerAssistant().sendFrame126( - GetForlvl(99, c) + "Plate Skirt" + GetForlvl(16, c), 1100); - c.getPlayerAssistant().sendFrame126( - GetForlvl(99, c) + "2 Hand Sword" + GetForlvl(14, c), 1088); - c.getPlayerAssistant().sendFrame126( - GetForlvl(97, c) + "Kite Shield" + GetForlvl(12, c), 1105); - c.getPlayerAssistant().sendFrame126( - GetForlvl(96, c) + "Chain Body" + GetForlvl(11, c), 1098); - c.getPlayerAssistant().sendFrame126( - GetForlvl(95, c) + "Battle Axe" + GetForlvl(10, c), 1092); - c.getPlayerAssistant().sendFrame126( - GetForlvl(26, c) + "Claws" + GetForlvl(11, c), 8429); // claws - c.getPlayerAssistant().sendFrame126( - GetForlvl(94, c) + "Warhammer" + GetForlvl(9, c), 1083); - c.getPlayerAssistant().sendFrame126( - GetForlvl(93, c) + "Square Shield" + GetForlvl(8, c), 1104); - c.getPlayerAssistant().sendFrame126( - GetForlvl(92, c) + "Full Helm" + GetForlvl(7, c), 1103); - c.getPlayerAssistant().sendFrame126( - GetForlvl(92, c) + "Throwing Knives" + GetForlvl(7, c), 1106); - c.getPlayerAssistant().sendFrame126( - GetForlvl(91, c) + "Long Sword" + GetForlvl(6, c), 1086); - c.getPlayerAssistant().sendFrame126( - GetForlvl(90, c) + "Scimitar" + GetForlvl(5, c), 1087); - c.getPlayerAssistant().sendFrame126( - GetForlvl(90, c) + "Arrowtips" + GetForlvl(5, c), 1108); - c.getPlayerAssistant().sendFrame126( - GetForlvl(89, c) + "Sword" + GetForlvl(4, c), 1085); - c.getPlayerAssistant().sendFrame126( - GetForlvl(89, c) + "Dart Tips" + GetForlvl(4, c), 1107); - c.getPlayerAssistant().sendFrame126( - GetForlvl(89, c) + "Nails" + GetForlvl(4, c), 13358); - c.getPlayerAssistant().sendFrame126( - GetForlvl(88, c) + "Medium Helm" + GetForlvl(3, c), 1102); - c.getPlayerAssistant().sendFrame126( - GetForlvl(87, c) + "Mace" + GetForlvl(2, c), 1093); - c.getPlayerAssistant().sendFrame126( - GetForlvl(85, c) + "Dagger" + GetForlvl(1, c), 1094); - c.getPlayerAssistant().sendFrame126( - GetForlvl(86, c) + "Axe" + GetForlvl(1, c), 1091); - c.getPlayerAssistant().sendFrame34(1213, 0, 1119, 1); // dagger - c.getPlayerAssistant().sendFrame34(1359, 0, 1120, 1); // axe - c.getPlayerAssistant().sendFrame34(1113, 0, 1121, 1); // chain body - c.getPlayerAssistant().sendFrame34(1147, 0, 1122, 1); // med helm - c.getPlayerAssistant().sendFrame34(824, 0, 1123, 10); // Dart Tips - c.getPlayerAssistant().sendFrame34(1289, 1, 1119, 1); // s-sword - c.getPlayerAssistant().sendFrame34(1432, 1, 1120, 1); // mace - c.getPlayerAssistant().sendFrame34(1079, 1, 1121, 1); // platelegs - c.getPlayerAssistant().sendFrame34(1163, 1, 1122, 1); // full helm - c.getPlayerAssistant().sendFrame34(44, 1, 1123, 15); // arrowtips - c.getPlayerAssistant().sendFrame34(1333, 2, 1119, 1); // scimmy - c.getPlayerAssistant().sendFrame34(1347, 2, 1120, 1); // warhammer - c.getPlayerAssistant().sendFrame34(1093, 2, 1121, 1); // plateskirt - c.getPlayerAssistant().sendFrame34(1185, 2, 1122, 1); // Sq. Shield - c.getPlayerAssistant().sendFrame34(868, 2, 1123, 5); // throwing-knives - - c.getPlayerAssistant().sendFrame34(1303, 3, 1119, 1); // longsword - c.getPlayerAssistant().sendFrame34(1373, 3, 1120, 1); // battleaxe - c.getPlayerAssistant().sendFrame34(1127, 3, 1121, 1); // platebody - c.getPlayerAssistant().sendFrame34(1201, 3, 1122, 1); // kiteshield - c.getPlayerAssistant().sendFrame34(1319, 4, 1119, 1); // 2h sword - c.getPlayerAssistant().sendFrame34(3101, 4, 1120, 1); // claws - c.getPlayerAssistant().sendFrame34(4824, 4, 1122, 15); // nails - c.getPlayerAssistant().sendFrame34(-1, 3, 1123, 1); - c.getPlayerAssistant().sendFrame126("", 1135); - c.getPlayerAssistant().sendFrame126("", 1134); - c.getPlayerAssistant().sendFrame126("", 11461); - c.getPlayerAssistant().sendFrame126("", 11459); - c.getPlayerAssistant().sendFrame126("", 1132); - c.getPlayerAssistant().sendFrame126("", 1096); - c.getPlayerAssistant().showInterface(994); - } - - private void makeAddyInterface(Client c) { - String fiveb = GetForBars(2361, 5, c); - String threeb = GetForBars(2361, 3, c); - String twob = GetForBars(2361, 2, c); - String oneb = GetForBars(2361, 1, c); - c.getPlayerAssistant().sendFrame126(fiveb + "5 Bars" + fiveb, 1112); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1109); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1110); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1118); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1111); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1095); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1115); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1090); - c.getPlayerAssistant().sendFrame126(twob + "2 Bars" + twob, 1113); - c.getPlayerAssistant().sendFrame126(twob + "2 Bars" + twob, 1116); - c.getPlayerAssistant().sendFrame126(twob + "2 Bars" + twob, 1114); - c.getPlayerAssistant().sendFrame126(twob + "2 Bars" + twob, 1089); - c.getPlayerAssistant().sendFrame126(twob + "2 Bars" + twob, 8428); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1124); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1125); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1126); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1127); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1128); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1129); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1130); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1131); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 13357); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 11459); - c.getPlayerAssistant().sendFrame126( - GetForlvl(88, c) + "Plate Body" + GetForlvl(18, c), 1101); - c.getPlayerAssistant().sendFrame126( - GetForlvl(86, c) + "Plate Legs" + GetForlvl(16, c), 1099); - c.getPlayerAssistant().sendFrame126( - GetForlvl(86, c) + "Plate Skirt" + GetForlvl(16, c), 1100); - c.getPlayerAssistant().sendFrame126( - GetForlvl(26, c) + "Claws" + GetForlvl(11, c), 8429); // claws - c.getPlayerAssistant().sendFrame126( - GetForlvl(84, c) + "2 Hand Sword" + GetForlvl(14, c), 1088); - c.getPlayerAssistant().sendFrame126( - GetForlvl(82, c) + "Kite Shield" + GetForlvl(12, c), 1105); - c.getPlayerAssistant().sendFrame126( - GetForlvl(81, c) + "Chain Body" + GetForlvl(11, c), 1098); - c.getPlayerAssistant().sendFrame126( - GetForlvl(80, c) + "Battle Axe" + GetForlvl(10, c), 1092); - c.getPlayerAssistant().sendFrame126( - GetForlvl(79, c) + "Warhammer" + GetForlvl(9, c), 1083); - c.getPlayerAssistant().sendFrame126( - GetForlvl(78, c) + "Square Shield" + GetForlvl(8, c), 1104); - c.getPlayerAssistant().sendFrame126( - GetForlvl(77, c) + "Full Helm" + GetForlvl(7, c), 1103); - c.getPlayerAssistant().sendFrame126( - GetForlvl(77, c) + "Throwing Knives" + GetForlvl(7, c), 1106); - c.getPlayerAssistant().sendFrame126( - GetForlvl(76, c) + "Long Sword" + GetForlvl(6, c), 1086); - c.getPlayerAssistant().sendFrame126( - GetForlvl(75, c) + "Scimitar" + GetForlvl(5, c), 1087); - c.getPlayerAssistant().sendFrame126( - GetForlvl(75, c) + "Arrowtips" + GetForlvl(5, c), 1108); - c.getPlayerAssistant().sendFrame126( - GetForlvl(74, c) + "Sword" + GetForlvl(4, c), 1085); - c.getPlayerAssistant().sendFrame126( - GetForlvl(74, c) + "Dart Tips" + GetForlvl(4, c), 1107); - c.getPlayerAssistant().sendFrame126( - GetForlvl(74, c) + "Nails" + GetForlvl(4, c), 13358); - c.getPlayerAssistant().sendFrame126( - GetForlvl(73, c) + "Medium Helm" + GetForlvl(3, c), 1102); - c.getPlayerAssistant().sendFrame126( - GetForlvl(72, c) + "Mace" + GetForlvl(2, c), 1093); - c.getPlayerAssistant().sendFrame126( - GetForlvl(70, c) + "Dagger" + GetForlvl(1, c), 1094); - c.getPlayerAssistant().sendFrame126( - GetForlvl(71, c) + "Axe" + GetForlvl(1, c), 1091); - c.getPlayerAssistant().sendFrame34(1211, 0, 1119, 1); // dagger - c.getPlayerAssistant().sendFrame34(1357, 0, 1120, 1); // axe - c.getPlayerAssistant().sendFrame34(1111, 0, 1121, 1); // chain body - c.getPlayerAssistant().sendFrame34(1145, 0, 1122, 1); // med helm - c.getPlayerAssistant().sendFrame34(823, 0, 1123, 10); // Dart Tips - c.getPlayerAssistant().sendFrame34(1287, 1, 1119, 1); // s-sword - c.getPlayerAssistant().sendFrame34(1430, 1, 1120, 1); // mace - c.getPlayerAssistant().sendFrame34(1073, 1, 1121, 1); // platelegs - c.getPlayerAssistant().sendFrame34(1161, 1, 1122, 1); // full helm - c.getPlayerAssistant().sendFrame34(43, 1, 1123, 15); // arrowtips - c.getPlayerAssistant().sendFrame34(1331, 2, 1119, 1); // scimmy - c.getPlayerAssistant().sendFrame34(1345, 2, 1120, 1); // warhammer - c.getPlayerAssistant().sendFrame34(1091, 2, 1121, 1); // plateskirt - c.getPlayerAssistant().sendFrame34(1183, 2, 1122, 1); // Sq. Shield - c.getPlayerAssistant().sendFrame34(867, 2, 1123, 5); // throwing-knives - c.getPlayerAssistant().sendFrame34(1301, 3, 1119, 1); // longsword - c.getPlayerAssistant().sendFrame34(1371, 3, 1120, 1); // battleaxe - c.getPlayerAssistant().sendFrame34(1123, 3, 1121, 1); // platebody - c.getPlayerAssistant().sendFrame34(1199, 3, 1122, 1); // kiteshield - c.getPlayerAssistant().sendFrame34(1317, 4, 1119, 1); // 2h sword - c.getPlayerAssistant().sendFrame34(3100, 4, 1120, 1); // claws - c.getPlayerAssistant().sendFrame34(4823, 4, 1122, 15); // nails - c.getPlayerAssistant().sendFrame34(-1, 3, 1123, 1); - c.getPlayerAssistant().sendFrame126("", 1135); - c.getPlayerAssistant().sendFrame126("", 1134); - c.getPlayerAssistant().sendFrame126("", 11461); - c.getPlayerAssistant().sendFrame126("", 11459); - c.getPlayerAssistant().sendFrame126("", 1132); - c.getPlayerAssistant().sendFrame126("", 1096); - c.getPlayerAssistant().showInterface(994); - } - - private void makeMithInterface(Client c) { - String fiveb = GetForBars(2359, 5, c); - String threeb = GetForBars(2359, 3, c); - String twob = GetForBars(2359, 2, c); - String oneb = GetForBars(2359, 1, c); - c.getPlayerAssistant().sendFrame126(fiveb + "5 Bars" + fiveb, 1112); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1109); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1110); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1118); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1111); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1095); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1115); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1090); - c.getPlayerAssistant().sendFrame126(twob + "2 Bars" + twob, 1113); - c.getPlayerAssistant().sendFrame126(twob + "2 Bars" + twob, 1116); - c.getPlayerAssistant().sendFrame126(twob + "2 Bars" + twob, 1114); - c.getPlayerAssistant().sendFrame126(twob + "2 Bars" + twob, 1089); - c.getPlayerAssistant().sendFrame126(twob + "2 Bars" + twob, 8428); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1124); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1125); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1126); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1127); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1128); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1129); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1130); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1131); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 13357); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 11459); - c.getPlayerAssistant().sendFrame126( - GetForlvl(68, c) + "Plate Body" + GetForlvl(18, c), 1101); - c.getPlayerAssistant().sendFrame126( - GetForlvl(66, c) + "Plate Legs" + GetForlvl(16, c), 1099); - c.getPlayerAssistant().sendFrame126( - GetForlvl(66, c) + "Plate Skirt" + GetForlvl(16, c), 1100); - c.getPlayerAssistant().sendFrame126( - GetForlvl(64, c) + "2 Hand Sword" + GetForlvl(14, c), 1088); - c.getPlayerAssistant().sendFrame126( - GetForlvl(62, c) + "Kite Shield" + GetForlvl(12, c), 1105); - c.getPlayerAssistant().sendFrame126( - GetForlvl(61, c) + "Chain Body" + GetForlvl(11, c), 1098); - c.getPlayerAssistant().sendFrame126( - GetForlvl(60, c) + "Battle Axe" + GetForlvl(10, c), 1092); - c.getPlayerAssistant().sendFrame126( - GetForlvl(59, c) + "Warhammer" + GetForlvl(9, c), 1083); - c.getPlayerAssistant().sendFrame126( - GetForlvl(58, c) + "Square Shield" + GetForlvl(8, c), 1104); - c.getPlayerAssistant().sendFrame126( - GetForlvl(26, c) + "Claws" + GetForlvl(11, c), 8429); // claws - c.getPlayerAssistant().sendFrame126( - GetForlvl(57, c) + "Full Helm" + GetForlvl(7, c), 1103); - c.getPlayerAssistant().sendFrame126( - GetForlvl(57, c) + "Throwing Knives" + GetForlvl(7, c), 1106); - c.getPlayerAssistant().sendFrame126( - GetForlvl(56, c) + "Long Sword" + GetForlvl(6, c), 1086); - c.getPlayerAssistant().sendFrame126( - GetForlvl(55, c) + "Scimitar" + GetForlvl(5, c), 1087); - c.getPlayerAssistant().sendFrame126( - GetForlvl(55, c) + "Arrowtips" + GetForlvl(5, c), 1108); - c.getPlayerAssistant().sendFrame126( - GetForlvl(54, c) + "Sword" + GetForlvl(4, c), 1085); - c.getPlayerAssistant().sendFrame126( - GetForlvl(54, c) + "Dart Tips" + GetForlvl(4, c), 1107); - c.getPlayerAssistant().sendFrame126( - GetForlvl(54, c) + "Nails" + GetForlvl(4, c), 13358); - c.getPlayerAssistant().sendFrame126( - GetForlvl(53, c) + "Medium Helm" + GetForlvl(3, c), 1102); - c.getPlayerAssistant().sendFrame126( - GetForlvl(52, c) + "Mace" + GetForlvl(2, c), 1093); - c.getPlayerAssistant().sendFrame126( - GetForlvl(50, c) + "Dagger" + GetForlvl(1, c), 1094); - c.getPlayerAssistant().sendFrame126( - GetForlvl(51, c) + "Axe" + GetForlvl(1, c), 1091); - c.getPlayerAssistant().sendFrame34(1209, 0, 1119, 1); // dagger - c.getPlayerAssistant().sendFrame34(1355, 0, 1120, 1); // axe - c.getPlayerAssistant().sendFrame34(1109, 0, 1121, 1); // chain body - c.getPlayerAssistant().sendFrame34(1143, 0, 1122, 1); // med helm - c.getPlayerAssistant().sendFrame34(822, 0, 1123, 10); // Dart Tips - c.getPlayerAssistant().sendFrame34(1285, 1, 1119, 1); // s-sword - c.getPlayerAssistant().sendFrame34(1428, 1, 1120, 1); // mace - c.getPlayerAssistant().sendFrame34(1071, 1, 1121, 1); // platelegs - c.getPlayerAssistant().sendFrame34(1159, 1, 1122, 1); // full helm - c.getPlayerAssistant().sendFrame34(42, 1, 1123, 15); // arrowtips - c.getPlayerAssistant().sendFrame34(1329, 2, 1119, 1); // scimmy - c.getPlayerAssistant().sendFrame34(1343, 2, 1120, 1); // warhammer - c.getPlayerAssistant().sendFrame34(1085, 2, 1121, 1); // plateskirt - c.getPlayerAssistant().sendFrame34(1181, 2, 1122, 1); // Sq. Shield - c.getPlayerAssistant().sendFrame34(866, 2, 1123, 5); // throwing-knives - c.getPlayerAssistant().sendFrame34(1299, 3, 1119, 1); // longsword - c.getPlayerAssistant().sendFrame34(1369, 3, 1120, 1); // battleaxe - c.getPlayerAssistant().sendFrame34(1121, 3, 1121, 1); // platebody - c.getPlayerAssistant().sendFrame34(1197, 3, 1122, 1); // kiteshield - c.getPlayerAssistant().sendFrame34(1315, 4, 1119, 1); // 2h sword - c.getPlayerAssistant().sendFrame34(3099, 4, 1120, 1); // claws - c.getPlayerAssistant().sendFrame34(4822, 4, 1122, 15); // nails - c.getPlayerAssistant().sendFrame34(-1, 3, 1123, 1); - c.getPlayerAssistant().sendFrame126("", 1135); - c.getPlayerAssistant().sendFrame126("", 1134); - c.getPlayerAssistant().sendFrame126("", 11461); - c.getPlayerAssistant().sendFrame126("", 11459); - c.getPlayerAssistant().sendFrame126("", 1132); - c.getPlayerAssistant().sendFrame126("", 1096); - c.getPlayerAssistant().showInterface(994); - } - - private void makeSteelInterface(Client c) { - String fiveb = GetForBars(2353, 5, c); - String threeb = GetForBars(2353, 3, c); - String twob = GetForBars(2353, 2, c); - String oneb = GetForBars(2353, 1, c); - c.getPlayerAssistant().sendFrame126(fiveb + "5 Bars" + fiveb, 1112); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1109); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1110); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1118); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1111); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1095); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1115); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1090); - c.getPlayerAssistant().sendFrame126(twob + "2 Bars" + twob, 1113); - c.getPlayerAssistant().sendFrame126(twob + "2 Bars" + twob, 1116); - c.getPlayerAssistant().sendFrame126(twob + "2 Bars" + twob, 1114); - c.getPlayerAssistant().sendFrame126(twob + "2 Bars" + twob, 1089); - c.getPlayerAssistant().sendFrame126(twob + "2 Bars" + twob, 8428); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1124); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1125); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1126); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1127); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1128); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1129); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1130); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1131); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 13357); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1132); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1135); - c.getPlayerAssistant().sendFrame126("", 11459); - c.getPlayerAssistant().sendFrame126( - GetForlvl(48, c) + "Plate Body" + GetForlvl(18, c), 1101); - c.getPlayerAssistant().sendFrame126( - GetForlvl(46, c) + "Plate Legs" + GetForlvl(16, c), 1099); - c.getPlayerAssistant().sendFrame126( - GetForlvl(46, c) + "Plate Skirt" + GetForlvl(16, c), 1100); - c.getPlayerAssistant().sendFrame126( - GetForlvl(44, c) + "2 Hand Sword" + GetForlvl(14, c), 1088); - c.getPlayerAssistant().sendFrame126( - GetForlvl(42, c) + "Kite Shield" + GetForlvl(12, c), 1105); - c.getPlayerAssistant().sendFrame126( - GetForlvl(41, c) + "Chain Body" + GetForlvl(11, c), 1098); - c.getPlayerAssistant().sendFrame126("", 11461); - c.getPlayerAssistant().sendFrame126( - GetForlvl(40, c) + "Battle Axe" + GetForlvl(10, c), 1092); - c.getPlayerAssistant().sendFrame126( - GetForlvl(39, c) + "Warhammer" + GetForlvl(9, c), 1083); - c.getPlayerAssistant().sendFrame126( - GetForlvl(26, c) + "Claws" + GetForlvl(11, c), 8429); // claws - c.getPlayerAssistant().sendFrame126( - GetForlvl(38, c) + "Square Shield" + GetForlvl(8, c), 1104); - c.getPlayerAssistant().sendFrame126( - GetForlvl(37, c) + "Full Helm" + GetForlvl(7, c), 1103); - c.getPlayerAssistant().sendFrame126( - GetForlvl(37, c) + "Throwing Knives" + GetForlvl(7, c), 1106); - c.getPlayerAssistant().sendFrame126( - GetForlvl(36, c) + "Long Sword" + GetForlvl(6, c), 1086); - c.getPlayerAssistant().sendFrame126( - GetForlvl(35, c) + "Scimitar" + GetForlvl(5, c), 1087); - c.getPlayerAssistant().sendFrame126( - GetForlvl(35, c) + "Arrowtips" + GetForlvl(5, c), 1108); - c.getPlayerAssistant().sendFrame126( - GetForlvl(34, c) + "Sword" + GetForlvl(4, c), 1085); - c.getPlayerAssistant().sendFrame126( - GetForlvl(34, c) + "Dart Tips" + GetForlvl(4, c), 1107); - c.getPlayerAssistant().sendFrame126( - GetForlvl(34, c) + "Nails" + GetForlvl(4, c), 13358); - c.getPlayerAssistant().sendFrame126( - GetForlvl(33, c) + "Medium Helm" + GetForlvl(3, c), 1102); - c.getPlayerAssistant().sendFrame126( - GetForlvl(32, c) + "Mace" + GetForlvl(2, c), 1093); - c.getPlayerAssistant().sendFrame126( - GetForlvl(30, c) + "Dagger" + GetForlvl(1, c), 1094); - c.getPlayerAssistant().sendFrame126( - GetForlvl(31, c) + "Axe" + GetForlvl(1, c), 1091); - c.getPlayerAssistant().sendFrame126( - GetForlvl(35, c) + "Cannon Ball" + GetForlvl(35, c), 1096); - c.getPlayerAssistant().sendFrame126( - GetForlvl(36, c) + "Studs" + GetForlvl(36, c), 1134); - c.getPlayerAssistant().sendFrame34(1207, 0, 1119, 1); - c.getPlayerAssistant().sendFrame34(1353, 0, 1120, 1); - c.getPlayerAssistant().sendFrame34(1105, 0, 1121, 1); - c.getPlayerAssistant().sendFrame34(1141, 0, 1122, 1); - c.getPlayerAssistant().sendFrame34(821, 0, 1123, 10); - c.getPlayerAssistant().sendFrame34(1281, 1, 1119, 1); - c.getPlayerAssistant().sendFrame34(1424, 1, 1120, 1); - c.getPlayerAssistant().sendFrame34(1069, 1, 1121, 1); - c.getPlayerAssistant().sendFrame34(1157, 1, 1122, 1); - c.getPlayerAssistant().sendFrame34(41, 1, 1123, 15); - c.getPlayerAssistant().sendFrame34(1325, 2, 1119, 1); - c.getPlayerAssistant().sendFrame34(1339, 2, 1120, 1); - c.getPlayerAssistant().sendFrame34(1083, 2, 1121, 1); - c.getPlayerAssistant().sendFrame34(1177, 2, 1122, 1); - c.getPlayerAssistant().sendFrame34(865, 2, 1123, 5); - c.getPlayerAssistant().sendFrame34(1295, 3, 1119, 1); - c.getPlayerAssistant().sendFrame34(1365, 3, 1120, 1); - c.getPlayerAssistant().sendFrame34(1119, 3, 1121, 1); - c.getPlayerAssistant().sendFrame34(1193, 3, 1122, 1); - c.getPlayerAssistant().sendFrame34(1311, 4, 1119, 1); - c.getPlayerAssistant().sendFrame34(3097, 4, 1120, 1); // claws - c.getPlayerAssistant().sendFrame34(1539, 4, 1122, 15); - c.getPlayerAssistant().sendFrame34(2, 3, 1123, 4); - c.getPlayerAssistant().sendFrame34(2370, 4, 1123, 1); - c.getPlayerAssistant().showInterface(994); - } - - private void makeIronInterface(Client c) { - String fiveb = GetForBars(2351, 5, c); - String threeb = GetForBars(2351, 3, c); - String twob = GetForBars(2351, 2, c); - String oneb = GetForBars(2351, 1, c); - c.getPlayerAssistant().sendFrame126(fiveb + "5 Bars" + fiveb, 1112); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1109); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1110); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1118); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1111); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1095); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1115); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1090); - c.getPlayerAssistant().sendFrame126(twob + "2 Bars" + twob, 1113); - c.getPlayerAssistant().sendFrame126(twob + "2 Bars" + twob, 1116); - c.getPlayerAssistant().sendFrame126(twob + "2 Bars" + twob, 1114); - c.getPlayerAssistant().sendFrame126(twob + "2 Bars" + twob, 1089); - c.getPlayerAssistant().sendFrame126(twob + "2 Bars" + twob, 8428); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1124); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1125); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1126); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1127); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1128); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1129); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1130); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1131); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 13357); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 11459); - c.getPlayerAssistant().sendFrame126( - GetForlvl(33, c) + "Plate Body" + GetForlvl(18, c), 1101); - c.getPlayerAssistant().sendFrame126( - GetForlvl(31, c) + "Plate Legs" + GetForlvl(16, c), 1099); - c.getPlayerAssistant().sendFrame126( - GetForlvl(31, c) + "Plate Skirt" + GetForlvl(16, c), 1100); - c.getPlayerAssistant().sendFrame126( - GetForlvl(29, c) + "2 Hand Sword" + GetForlvl(14, c), 1088); - c.getPlayerAssistant().sendFrame126( - GetForlvl(27, c) + "Kite Shield" + GetForlvl(12, c), 1105); - c.getPlayerAssistant().sendFrame126( - GetForlvl(26, c) + "Chain Body" + GetForlvl(11, c), 1098); - c.getPlayerAssistant().sendFrame126( - GetForlvl(26, c) + "Oil Lantern Frame" + GetForlvl(11, c), - 11461); - c.getPlayerAssistant().sendFrame126( - GetForlvl(25, c) + "Battle Axe" + GetForlvl(10, c), 1092); - c.getPlayerAssistant().sendFrame126( - GetForlvl(24, c) + "Warhammer" + GetForlvl(9, c), 1083); - c.getPlayerAssistant().sendFrame126( - GetForlvl(26, c) + "Claws" + GetForlvl(11, c), 8429); // claws - c.getPlayerAssistant().sendFrame126( - GetForlvl(23, c) + "Square Shield" + GetForlvl(8, c), 1104); - c.getPlayerAssistant().sendFrame126( - GetForlvl(22, c) + "Full Helm" + GetForlvl(7, c), 1103); - c.getPlayerAssistant().sendFrame126( - GetForlvl(21, c) + "Throwing Knives" + GetForlvl(7, c), 1106); - c.getPlayerAssistant().sendFrame126( - GetForlvl(21, c) + "Long Sword" + GetForlvl(6, c), 1086); - c.getPlayerAssistant().sendFrame126( - GetForlvl(20, c) + "Scimitar" + GetForlvl(5, c), 1087); - c.getPlayerAssistant().sendFrame126( - GetForlvl(20, c) + "Arrowtips" + GetForlvl(5, c), 1108); - c.getPlayerAssistant().sendFrame126( - GetForlvl(19, c) + "Sword" + GetForlvl(4, c), 1085); - c.getPlayerAssistant().sendFrame126( - GetForlvl(19, c) + "Dart Tips" + GetForlvl(4, c), 1107); - c.getPlayerAssistant().sendFrame126( - GetForlvl(19, c) + "Nails" + GetForlvl(4, c), 13358); - c.getPlayerAssistant().sendFrame126( - GetForlvl(18, c) + "Medium Helm" + GetForlvl(3, c), 1102); - c.getPlayerAssistant().sendFrame126( - GetForlvl(17, c) + "Mace" + GetForlvl(2, c), 1093); - c.getPlayerAssistant().sendFrame126( - GetForlvl(15, c) + "Dagger" + GetForlvl(1, c), 1094); - c.getPlayerAssistant().sendFrame126( - GetForlvl(16, c) + "Axe" + GetForlvl(1, c), 1091); - c.getPlayerAssistant().sendFrame34(1203, 0, 1119, 1); - c.getPlayerAssistant().sendFrame34(1349, 0, 1120, 1); - c.getPlayerAssistant().sendFrame34(1101, 0, 1121, 1); - c.getPlayerAssistant().sendFrame34(1137, 0, 1122, 1); - c.getPlayerAssistant().sendFrame34(820, 0, 1123, 10); - c.getPlayerAssistant().sendFrame34(1279, 1, 1119, 1); - c.getPlayerAssistant().sendFrame34(1420, 1, 1120, 1); - c.getPlayerAssistant().sendFrame34(1067, 1, 1121, 1); - c.getPlayerAssistant().sendFrame34(1153, 1, 1122, 1); - c.getPlayerAssistant().sendFrame34(40, 1, 1123, 15); - c.getPlayerAssistant().sendFrame34(1323, 2, 1119, 1); - c.getPlayerAssistant().sendFrame34(1335, 2, 1120, 1); - c.getPlayerAssistant().sendFrame34(1081, 2, 1121, 1); - c.getPlayerAssistant().sendFrame34(1175, 2, 1122, 1); - c.getPlayerAssistant().sendFrame34(863, 2, 1123, 5); - c.getPlayerAssistant().sendFrame34(1293, 3, 1119, 1); - c.getPlayerAssistant().sendFrame34(1363, 3, 1120, 1); - c.getPlayerAssistant().sendFrame34(1115, 3, 1121, 1); - c.getPlayerAssistant().sendFrame34(1191, 3, 1122, 1); - c.getPlayerAssistant().sendFrame34(1309, 4, 1119, 1); - c.getPlayerAssistant().sendFrame34(4820, 4, 1122, 15); - c.getPlayerAssistant().sendFrame34(4540, 4, 1121, 1); - c.getPlayerAssistant().sendFrame34(3096, 4, 1120, 1); // claws - c.getPlayerAssistant().sendFrame126("", 1135); - c.getPlayerAssistant().sendFrame126("", 1134); - c.getPlayerAssistant().sendFrame126("", 1132); - c.getPlayerAssistant().sendFrame126("", 1096); - c.getPlayerAssistant().showInterface(994); - } - - private void makeBronzeInterface(Client c) { - String fiveb = GetForBars(2349, 5, c); - String threeb = GetForBars(2349, 3, c); - String twob = GetForBars(2349, 2, c); - String oneb = GetForBars(2349, 1, c); - c.getPlayerAssistant().sendFrame126(fiveb + "5 Bars" + fiveb, 1112); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1109); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1110); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1118); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1111); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1095); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1115); - c.getPlayerAssistant().sendFrame126(threeb + "3 Bars" + threeb, 1090); - c.getPlayerAssistant().sendFrame126(twob + "2 Bars" + twob, 1113); - c.getPlayerAssistant().sendFrame126(twob + "2 Bars" + twob, 1116); - c.getPlayerAssistant().sendFrame126(twob + "2 Bars" + twob, 1114); - c.getPlayerAssistant().sendFrame126(twob + "2 Bars" + twob, 1089); - c.getPlayerAssistant().sendFrame126(twob + "2 Bars" + twob, 8428); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1124); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1125); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1126); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1127); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1128); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1129); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1130); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 1131); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 13357); - c.getPlayerAssistant().sendFrame126(oneb + "1 Bar" + oneb, 11459); - c.getPlayerAssistant().sendFrame126( - GetForlvl(18, c) + "Plate Body" + GetForlvl(18, c), 1101); - c.getPlayerAssistant().sendFrame126( - GetForlvl(16, c) + "Plate Legs" + GetForlvl(16, c), 1099); - c.getPlayerAssistant().sendFrame126( - GetForlvl(16, c) + "Plate Skirt" + GetForlvl(16, c), 1100); - c.getPlayerAssistant().sendFrame126( - GetForlvl(14, c) + "2 Hand Sword" + GetForlvl(14, c), 1088); - c.getPlayerAssistant().sendFrame126( - GetForlvl(26, c) + "Claws" + GetForlvl(11, c), 8429); // claws - c.getPlayerAssistant().sendFrame126( - GetForlvl(12, c) + "Kite Shield" + GetForlvl(12, c), 1105); - c.getPlayerAssistant().sendFrame126( - GetForlvl(11, c) + "Chain Body" + GetForlvl(11, c), 1098); - c.getPlayerAssistant().sendFrame126( - GetForlvl(10, c) + "Battle Axe" + GetForlvl(10, c), 1092); - c.getPlayerAssistant().sendFrame126( - GetForlvl(9, c) + "Warhammer" + GetForlvl(9, c), 1083); - c.getPlayerAssistant().sendFrame126( - GetForlvl(8, c) + "Square Shield" + GetForlvl(8, c), 1104); - c.getPlayerAssistant().sendFrame126( - GetForlvl(7, c) + "Full Helm" + GetForlvl(7, c), 1103); - c.getPlayerAssistant().sendFrame126( - GetForlvl(7, c) + "Throwing Knives" + GetForlvl(7, c), 1106); - c.getPlayerAssistant().sendFrame126( - GetForlvl(6, c) + "Long Sword" + GetForlvl(6, c), 1086); - c.getPlayerAssistant().sendFrame126( - GetForlvl(5, c) + "Scimitar" + GetForlvl(5, c), 1087); - c.getPlayerAssistant().sendFrame126( - GetForlvl(5, c) + "Arrowtips" + GetForlvl(5, c), 1108); - c.getPlayerAssistant().sendFrame126( - GetForlvl(4, c) + "Sword" + GetForlvl(4, c), 1085); - c.getPlayerAssistant().sendFrame126( - GetForlvl(4, c) + "Dart Tips" + GetForlvl(4, c), 1107); - c.getPlayerAssistant().sendFrame126( - GetForlvl(4, c) + "Nails" + GetForlvl(4, c), 13358); - c.getPlayerAssistant().sendFrame126( - GetForlvl(3, c) + "Medium Helm" + GetForlvl(3, c), 1102); - c.getPlayerAssistant().sendFrame126( - GetForlvl(2, c) + "Mace" + GetForlvl(2, c), 1093); - c.getPlayerAssistant().sendFrame126( - GetForlvl(1, c) + "Dagger" + GetForlvl(1, c), 1094); - c.getPlayerAssistant().sendFrame126( - GetForlvl(1, c) + "Axe" + GetForlvl(1, c), 1091); - c.getPlayerAssistant().sendFrame34(1205, 0, 1119, 1); - c.getPlayerAssistant().sendFrame34(1351, 0, 1120, 1); - c.getPlayerAssistant().sendFrame34(1103, 0, 1121, 1); - c.getPlayerAssistant().sendFrame34(1139, 0, 1122, 1); - c.getPlayerAssistant().sendFrame34(819, 0, 1123, 10); - c.getPlayerAssistant().sendFrame34(1277, 1, 1119, 1); - c.getPlayerAssistant().sendFrame34(1422, 1, 1120, 1); - c.getPlayerAssistant().sendFrame34(1075, 1, 1121, 1); - c.getPlayerAssistant().sendFrame34(1155, 1, 1122, 1); - c.getPlayerAssistant().sendFrame34(39, 1, 1123, 15); - c.getPlayerAssistant().sendFrame34(1321, 2, 1119, 1); - c.getPlayerAssistant().sendFrame34(1337, 2, 1120, 1); - c.getPlayerAssistant().sendFrame34(1087, 2, 1121, 1); - c.getPlayerAssistant().sendFrame34(1173, 2, 1122, 1); - c.getPlayerAssistant().sendFrame34(864, 2, 1123, 5); - c.getPlayerAssistant().sendFrame34(1291, 3, 1119, 1); - c.getPlayerAssistant().sendFrame34(1375, 3, 1120, 1); - c.getPlayerAssistant().sendFrame34(1117, 3, 1121, 1); - c.getPlayerAssistant().sendFrame34(1189, 3, 1122, 1); - c.getPlayerAssistant().sendFrame34(1307, 4, 1119, 1); - c.getPlayerAssistant().sendFrame34(3095, 4, 1120, 1); // claws - c.getPlayerAssistant().sendFrame34(4819, 4, 1122, 15); - c.getPlayerAssistant().sendFrame34(-1, 3, 1123, 1); - c.getPlayerAssistant().sendFrame126("", 1135); - c.getPlayerAssistant().sendFrame126("", 1134); - c.getPlayerAssistant().sendFrame126("", 11461); - c.getPlayerAssistant().sendFrame126("", 11459); - c.getPlayerAssistant().sendFrame126("", 1132); - c.getPlayerAssistant().sendFrame126("", 1096); - c.getPlayerAssistant().showInterface(994); - } - - private String GetForlvl(int i, Client c) { - if (c.playerLevel[13] >= i) { - return "@whi@"; - } - - return "@bla@"; - } - - private String GetForBars(int i, int j, Client c) { - if (c.getItemAssistant().playerHasItem(i, j)) { - return "@gre@"; - } - - return "@red@"; - } - -} diff --git a/2006Redone Server/src/redone/game/content/skills/smithing/Superheat.java b/2006Redone Server/src/redone/game/content/skills/smithing/Superheat.java deleted file mode 100644 index 3ebad9bf..00000000 --- a/2006Redone Server/src/redone/game/content/skills/smithing/Superheat.java +++ /dev/null @@ -1,80 +0,0 @@ -package redone.game.content.skills.smithing; - -import redone.game.content.combat.magic.CastRequirements; -import redone.game.content.combat.magic.MagicRequirements; -import redone.game.content.music.sound.SoundList; -import redone.game.items.ItemAssistant; -import redone.game.players.Client; - -/** - * @author Andrew - */ - -public class Superheat { - - // ore1, ore1amount, ore2, ore2amount, item, xp, smith lvl req - private static final int[][] SMELT = { { 436, 1, 438, 1, 2349, 6, 1, 6 }, // TIN - { 438, 1, 436, 1, 2349, 6, 1, 6 }, // COPPER - { 440, 1, 453, 2, 2353, 18, 30, 17 }, // STEEL ORE - { 440, 1, -1, -1, 2351, 13, 15, 12 }, // IRON ORE - { 442, 1, -1, -1, 2355, 14, 20, 13 }, // SILVER ORE - { 444, 1, -1, -1, 2357, 23, 40, 22 }, // GOLD BAR - { 447, 1, 453, 4, 2359, 30, 50, 30 }, // MITHRIL ORE - { 449, 1, 453, 6, 2361, 38, 70, 37 }, // ADDY ORE - { 451, 1, 453, 8, 2363, 50, 85, 50 }, // RUNE ORE - }; - - public static boolean superHeatItem(Client c, int itemID) { - for (int smelt[] : SMELT) { - if (itemID == smelt[0]) { - if (!c.getItemAssistant().playerHasItem(smelt[2], smelt[3])) { - if (itemID == 440 && smelt[2] == 453) { - continue; - } else { - c.getActionSender().sendMessage("You haven't got enough " + ItemAssistant.getItemName(smelt[2]).toLowerCase() + " to cast this spell!"); - return false; - } - } - if (!CastRequirements.hasRunes(c, new int[][]{{554, 4}, {561, 1}})) { - c.getActionSender().sendMessage("You don't have the correct runes to cast this spell."); - return false; - } - if (itemID == 444 && c.playerEquipment[c.playerHands] == 776) { - c.getPlayerAssistant().addSkillXP(56.2, c.playerSmithing); - } else { - c.getPlayerAssistant().addSkillXP(smelt[7], - c.playerSmithing); - } - if (c.playerLevel[c.playerSmithing] < smelt[6]) { - c.getActionSender().sendMessage( - "You need a smithing level of " + smelt[6] - + " to superheat this ore."); - return false; - } - if (c.playerLevel[c.playerMagic] < 43) { - c.getActionSender() - .sendMessage( - "You need a magic level of 43 to superheat this ore."); - return false; - } - c.getItemAssistant().deleteItem(itemID, 1); - c.getItemAssistant().deleteItem(smelt[2], smelt[3]); - CastRequirements.deleteRunes(c, new int[][]{{554, 4}, {561, 1}}); - c.getItemAssistant().addItem(smelt[4], 1); - c.getPlayerAssistant().addSkillXP(53, c.playerMagic); - c.startAnimation(722); - c.gfx0(148); - c.getActionSender().sendSound(SoundList.SUPERHEAT, 100, 0); - if (itemID != 444) { - c.getPlayerAssistant().addSkillXP(smelt[7], c.playerSmithing); - } - c.getPlayerAssistant().sendFrame106(6); - return true; - } - } - c.getActionSender().sendMessage( - "You can only cast superheat item on ores!"); - c.getActionSender().sendSound(SoundList.SUPERHEAT_FAIL, 100, 0); - return false; - } -} diff --git a/2006Redone Server/src/redone/game/content/traveling/Sailing.java b/2006Redone Server/src/redone/game/content/traveling/Sailing.java deleted file mode 100644 index 63163419..00000000 --- a/2006Redone Server/src/redone/game/content/traveling/Sailing.java +++ /dev/null @@ -1,151 +0,0 @@ -package redone.game.content.traveling; - -import redone.Constants; -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.npcs.NpcHandler; -import redone.game.players.Client; - -/** - * @author Andrew - */ - -public class Sailing { - - private static final int[][] TRAVEL_DATA = { {}, // 0 - Null - { 2834, 3335, 15 }, // 1 - From Port Sarim to Entrana - { 3048, 3234, 15 }, // 2 - From Entrana to Port Sarim - { 2853, 3237, 12 }, // 3 - From Port Sarim to Crandor - { 2834, 3335, 13 }, // 4 - From Crandor to Port Sarim - { 2956, 3146, 9 }, // 5 - From Port Sarim to Karajama - { 3029, 3217, 8 }, // 6 - From Karajama to Port Sarim - { 2772, 3234, 3 }, // 7 - From Ardougne to Brimhaven - { 2683, 3271, 3 }, // 8 - From Brimhaven to Ardougne - { 2998, 3043, 23 }, // 11 - From Port Khazard to Ship Yard - { 2676, 3170, 23 }, // 12 - From Ship Yard to Port Khazard - { 2998, 3043, 17 }, // 13 - From Cairn Island to Ship Yard - { 2659, 2676, 12 }, // 14 - From Port Sarim to Pest Control - { 3041, 3202, 12 }, // 15 - From Pest Control to Port Sarim - { 2763, 2956, 10 }, // 16 - To Cairn Isle from Feldip Hills - { 2551, 3759, 20}, // 17 - To Waterbirth from Relleka - { 2620, 3686, 20}, //18 - To Relleka from Waterbirth - }; - - //2620, 3686 - relleka - //2551, 3759 - waterbirth - - public static boolean checkForCash(Client player) { - if (!player.getItemAssistant().playerHasItem(995, 1000)) { - player.getDialogueHandler().sendNpcChat1("You need 1000 coins to to travel on this ship!", 2437, NpcHandler.getNpcListName(player.npcType)); - player.nextChat = 0; - return false; - } - player.getItemAssistant().deleteItem(995, 1000); - player.getActionSender().sendMessage("Your free to go and pay the 1000 coins."); - return true; - } - - public static boolean checkForCoins(Client player) { - if (!player.getItemAssistant().playerHasItem(995, 30)) { - player.getDialogueHandler().sendNpcChat1("You need 30 coins to to travel on this ship!", 381, NpcHandler.getNpcListName(player.npcType)); - player.nextChat = 0; - return false; - } - player.getItemAssistant().deleteItem(995, 30); - player.getActionSender().sendMessage("Your free to go and pay the 30 coins."); - return true; - } - - public static boolean searchForAlcohol(Client player) { - for (int element : Constants.ALCOHOL_RELATED_ITEMS) { - if (player.getItemAssistant().playerHasItem(element, 1)) { - player.getDialogueHandler().sendNpcChat1("You can't bring intoxicating items to Asgarnia!", player.npcType, NpcHandler.getNpcListName(player.npcType)); - player.nextChat = 0; - return false; - } - } - player.getActionSender().sendMessage( - "Your clean of any possible alchohol."); - return true; - } - - public static boolean quickSearch(Client player) { - for (int element : Constants.COMBAT_RELATED_ITEMS) { - if (player.getItemAssistant().playerHasItem(element, 1) || player.getItemAssistant().playerHasEquipped(element)) { - player.getDialogueHandler().sendNpcChat2("Grr! I see you brought some illegal items! Get", "out of my sight immediately!", 657, NpcHandler.getNpcListName(player.npcType)); - player.nextChat = 0; - return false; - } - } - player.getActionSender().sendMessage("Your clean of any possible weapons."); - return true; - } - - public static void startTravel(final Client player, final int i) { - if (i == 1) {// entrana check - if (!quickSearch(player)) { - return; - } - } - if (i == 2) {// entrana check - if (!searchForAlcohol(player)) { - return; - } - } - if (i == 7 || i == 8) { - if (!checkForCoins(player)) { - return; - } - } - if (i == 17 || i == 18) { - if (!checkForCash(player)) { - return; - } - } - player.stopPlayerPacket = true; - player.getPlayerAssistant().showInterface(3281); - player.getPlayerAssistant().sendConfig(75, i); - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - player.getPlayerAssistant().movePlayer(getX(i), getY(i), 0); - container.stop(); - } - @Override - public void stop() { - - } - }, getTime(i) - 1); - - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - player.stopPlayerPacket = false; - player.getPlayerAssistant().sendConfig(75, -1); - player.getPlayerAssistant().closeAllWindows(); - player.getDialogueHandler().sendStatement("You arrive safely."); - player.nextChat = 0; - container.stop(); - } - @Override - public void stop() { - - } - }, getTime(i)); - - } - - public static int getX(int i) { - return TRAVEL_DATA[i][0]; - } - - public static int getY(int i) { - return TRAVEL_DATA[i][1]; - } - - public static int getTime(int i) { - return TRAVEL_DATA[i][2]; - } - -} diff --git a/2006Redone Server/src/redone/game/globalworldobjects/PassDoor.java b/2006Redone Server/src/redone/game/globalworldobjects/PassDoor.java deleted file mode 100644 index 57b04c84..00000000 --- a/2006Redone Server/src/redone/game/globalworldobjects/PassDoor.java +++ /dev/null @@ -1,114 +0,0 @@ -package redone.game.globalworldobjects; - -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.players.Client; -import redone.game.players.Position; - -/** - * Passdoor - * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) - */ - -public class PassDoor { - - private static long doorDelay; - - public static boolean passThroughDoor(final Client client, final int objectType, int face1, final int face2, final int type, int x, int y, final int height) { - if (System.currentTimeMillis() - doorDelay < 1200) { - client.getActionSender().sendMessage("You must wait longer to pass this door."); - return false; - } - - final int objX = client.objectX; - final int objY = client.objectY; - - client.getActionSender().object(objectType, objX, objY, height, face1, type); - client.getPlayerAssistant().walkTo(x, y); - client.stopPlayer = true; - CycleEventHandler.getSingleton().addEvent(client, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - client.getActionSender().object(objectType, objX, objY, height, face2, type); - container.stop(); - } - - @Override - public void stop() { - client.stopPlayer = false; - doorDelay = System.currentTimeMillis(); - } - }, 2); - return true; - } - - public static void processDoor(Client client, int objectType) { - //player, object, face1, face2, type, x, y, height - switch (objectType) { - case 2550: - if (Position.checkPosition(client, 2674, 3306, 0)) { - passThroughDoor(client, objectType, 0, 1, 0, 0, -1, 0); - } - break; - case 2551: - if (Position.checkPosition(client, 2674, 3303, 0)) { - passThroughDoor(client, objectType, 0, 3, 0, 0, 1, 0); - } - break; - case 1530: - if (Position.checkPosition(client, 2715, 3472, 0)) { - passThroughDoor(client, objectType, 1, 0, 0, 1, 0, 0); - } else if (Position.checkPosition(client, 2716, 3472, 0)) { - passThroughDoor(client, objectType, 1, 0, 0, -1, 0, 0); - } else if (Position.checkPosition(client, 3246, 9892, 0)) { - passThroughDoor(client, objectType, 1, 0, 0, 1, 0, 0); - } else if (Position.checkPosition(client, 3247, 9892, 0)) { - passThroughDoor(client, objectType, 1, 0, 0, -1, 0, 0); - } else if (Position.checkPosition(client, 3108, 9570, 0)) { - passThroughDoor(client, objectType, 1, 0, 0, -1, 0, 0); - } else if (Position.checkPosition(client, 3107, 9570, 0)) { - passThroughDoor(client, objectType, 1, 0, 0, 1, 0, 0); - } else if (Position.checkPosition(client, 3110, 9559, 0)) { - passThroughDoor(client, objectType, 3, 0, 0, 1, 0, 0); - } else if (Position.checkPosition(client, 3111, 9559, 0)) { - passThroughDoor(client, objectType, 3, 0, 0, -1, 0, 0); - } - break; - case 11993: - if (Position.checkPlayerY(client, 3167, 0)) { - passThroughDoor(client, objectType, 0, 3, 0, 0, -1, 0); - } else if (Position.checkPlayerY(client, 3166, 0)) { - passThroughDoor(client, objectType, 0, 3, 0, 0, 1, 0); - } else if (Position.checkPlayerY(client, 3163, 0) && client.absX != 3107) { - passThroughDoor(client, objectType, 2, 1, 0, 0, -1, 0); - } else if (Position.checkPlayerY(client, 3162, 0) && client.absX != 3108 && client.absX != 3106) { - passThroughDoor(client, objectType, 2, 1, 0, 0, 1, 0); - } else if (Position.checkPosition(client, 3107, 3162, 2)) { - passThroughDoor(client, objectType, 1, 2, 0, 1, 0, 2); - } else if (Position.checkPosition(client, 3108, 3162, 2)) { - passThroughDoor(client, objectType, 1, 2, 0, -1, 0, 2); - } else if (Position.checkPosition(client, 3109, 3159, 1)) { - passThroughDoor(client, objectType, 1, 2, 0, 1, 0, 1); - } else if (Position.checkPosition(client, 3110, 3159, 1)) { - passThroughDoor(client, objectType, 1, 2, 0, -1, 0, 1); - } else if (Position.checkPosition(client, 3108, 3159, 1)) { - passThroughDoor(client, objectType, 2, 1, 0, 0, -1, 1); - } else if (Position.checkPosition(client, 3108, 3158, 1)) { - passThroughDoor(client, objectType, 2, 1, 0, 0, 1, 1); - } else if (Position.checkObject(client, 3107, 3162, 0)) { - if (Position.checkPosition(client, 3108, 3162, 0)) { - passThroughDoor(client, objectType, 2, 1, 9, -1, -1, 0); - } else if (Position.checkPosition(client, 3107, 3163, 0)) { - // wizz tower - passThroughDoor(client, objectType, 2, 1, 9, -1, -1, 0); - } else { - if (client.heightLevel == 0) { - passThroughDoor(client, objectType, 2, 1, 9, 1, 1, 0); - } - } - } - break; - } - } -} diff --git a/2006Redone Server/src/redone/game/items/GameItem.java b/2006Redone Server/src/redone/game/items/GameItem.java deleted file mode 100644 index 29d63abe..00000000 --- a/2006Redone Server/src/redone/game/items/GameItem.java +++ /dev/null @@ -1,16 +0,0 @@ -package redone.game.items; - -public class GameItem { - - public int id, amount; - public boolean stackable = false; - - public GameItem(int id, int amount) { - if (Item.itemStackable[id]) { - stackable = true; - } - this.id = id; - this.amount = amount; - } - -} \ No newline at end of file diff --git a/2006Redone Server/src/redone/game/items/UseItem.java b/2006Redone Server/src/redone/game/items/UseItem.java deleted file mode 100644 index 38d30bc3..00000000 --- a/2006Redone Server/src/redone/game/items/UseItem.java +++ /dev/null @@ -1,379 +0,0 @@ -package redone.game.items; - -import redone.game.content.skills.cooking.Cooking; -import redone.game.content.skills.crafting.GemCutting; -import redone.game.content.skills.crafting.JewelryMaking; -import redone.game.content.skills.crafting.LeatherMaking; -import redone.game.content.skills.crafting.SoftClay; -import redone.game.content.skills.firemaking.Firemaking; -import redone.game.content.skills.fletching.ArrowMaking; -import redone.game.content.skills.fletching.LogCutting; -import redone.game.content.skills.fletching.LogCuttingInterface; -import redone.game.content.skills.fletching.Stringing; -import redone.game.content.skills.herblore.GrindingAction; -import redone.game.content.skills.herblore.Herblore; -import redone.game.items.impl.CapeDye; -import redone.game.items.impl.WeaponPoison; -import redone.game.npcs.impl.MilkCow; -import redone.game.objects.impl.CrystalChest; -import redone.game.objects.impl.FlourMill; -import redone.game.objects.impl.Webs; -import redone.game.players.Client; -import redone.util.Misc; - -/** - * @author Ryan / Lmctruck30 - */ - -public class UseItem { - - public static void ItemonObject(Client c, int objectID, int objectX, - int objectY, int itemId) { - final int goodPosXType1 = objectX - 5; - final int goodPosXType2 = objectX + 5; - final int goodPosYType1 = objectY - 5; - final int goodPosYType2 = objectY + 5; - if (c.absX >= goodPosXType1 && c.absX <= goodPosXType2 && c.absY >= goodPosYType1 && c.absY <= goodPosYType2) { - c.turnPlayerTo(objectX, objectY); - } else { - c.getPlayerAssistant().playerWalk(objectX, objectY); - } - if (!c.getItemAssistant().playerHasItem(itemId, 1)) { - return; - } - switch (objectID) { - case 733: - if (itemId == 946) { - Webs.slashWeb(c, objectID, objectX, objectY); - } - break; - case 8689: - if (c.milking == false) { - MilkCow.milk(c); - } - break; - case 2783: - c.getSmithingInt().showSmithInterface(itemId); - break; - case 2782: - if (c.doricQuest >= 3) { - c.getSmithingInt().showSmithInterface(itemId); - } else { - c.getActionSender().sendMessage( - "You need to beat dorics quest to use his anvils"); - } - break; - case 879: - case 12279: - case 14868: - if (itemId == SoftClay.CLAY) { - SoftClay.makeClay(c); - } - break; - case 2714: - FlourMill.grainOnHopper(c, objectID, itemId); - break; - case 172: - if (itemId == CrystalChest.KEY) { - CrystalChest.searchChest(c, objectID, objectX, objectY); - } - break; - - case 364: - if (itemId == 1919) { - c.getItemAssistant().deleteItem(1919, 1); - c.getItemAssistant().addItem(1917, 1); - c.getActionSender().sendMessage( - "You refill your beer glass."); - } - break; - - default: - if (c.playerRights == 3) { - Misc.println("Player At Object id: " + objectID + " objectX: " - + objectX + " objectY: " + objectY + " with Item id: " - + itemId); - } - break; - } - - } - - public static void ItemonItem(Client c, int itemUsed, int useWith) { - LogCuttingInterface.handleItemOnItem(c, itemUsed, useWith); - ArrowMaking.makeArrow(c, itemUsed, useWith); - Stringing.StringBow(c, itemUsed, useWith); - WeaponPoison.execute(c, itemUsed, useWith); - c.getGlassBlowing().ItemOnItem(itemUsed, useWith); - //CapeDye.execute(c, itemUsed, useWith); - if (ItemAssistant.getItemName(itemUsed).contains("(") - && ItemAssistant.getItemName(useWith).contains("(")) { - c.getPotMixing().mixPotion2(itemUsed, useWith); - } - GrindingAction.init(c, itemUsed, useWith); - CapeDye.capeOnDye(c, itemUsed, useWith); - if (Herblore.isIngredient(itemUsed) || Herblore.isIngredient(useWith)) { - Herblore.setupPotion(c, itemUsed, useWith); - } - if (itemUsed == 6703 || useWith == 6703) { - c.getPTS().handlePotato(itemUsed, useWith); - } - if (itemUsed == 1755 || useWith == 1755) { - GemCutting.cutGem(c, itemUsed, useWith); - } - if (itemUsed == 1759 || useWith == 1759) { - JewelryMaking.stringAmulet(c, itemUsed, useWith); - } - if (itemUsed == 946 || useWith == 2862) { - LogCutting.makeShafts(c); - } - if (itemUsed == 2862 || useWith == 946) { - LogCutting.makeShafts(c); - } - if (itemUsed == 314 || useWith == 2864) { - LogCutting.flightedArrow(c); - } - if (itemUsed == 2864 || useWith == 314) { - LogCutting.flightedArrow(c); - } - if (itemUsed == 2861 || useWith == 2865) { - LogCutting.ogreArrow(c); - } - if (itemUsed == 2865 || useWith == 2861) { - LogCutting.ogreArrow(c); - } - if (itemUsed == 2859 || useWith == 1755) { - LogCutting.wolfBoneArrow(c); - } - if (itemUsed == 1755 || useWith == 2859) { - LogCutting.wolfBoneArrow(c); - } - if (itemUsed == 771 && useWith == 946 - && c.playerLevel[c.playerCrafting] > 30) { - c.getItemAssistant().deleteItem(771, 1); - c.getItemAssistant().addItem(772, 1); - } else if (c.playerLevel[c.playerCrafting] < 31 && itemUsed == 771 - && useWith == 946) { - c.getActionSender().sendMessage( - "You need 31 crafting to make this."); - } - if (itemUsed == 946 && useWith == 771 - && c.playerLevel[c.playerCrafting] > 30) { - c.getItemAssistant().deleteItem(771, 1); - c.getItemAssistant().addItem(772, 1); - } else if (c.playerLevel[c.playerCrafting] < 31 && itemUsed == 946 - && useWith == 771) { - c.getActionSender().sendMessage( - "You need 31 crafting to make this."); - } - if (useWith == 7051 && itemUsed == 590 || itemUsed == 590 - && useWith == 7051) { - c.getItemAssistant().deleteItem(7051, 1); - c.getItemAssistant().addItem(7053, 1); - } - int firemakingItems[] = {590, 7329, 7330, 7331}; - for (int i = 0; i < firemakingItems.length; i++) { - if (itemUsed == firemakingItems[i] || useWith == firemakingItems[i] && c.isFiremaking == false) { - Firemaking.attemptFire(c, itemUsed, useWith, c.absX, c.absY, false); - } else if (itemUsed == firemakingItems[i] || useWith == firemakingItems[i] && c.isFiremaking == true) { - c.getActionSender().sendMessage("You can't do that, you are already firemaking."); - } - } - if (itemUsed == 1733 || useWith == 1733) { - LeatherMaking.craftLeatherDialogue(c, itemUsed, useWith); - } - if (itemUsed == 1573 && useWith == 327 || itemUsed == 327 && useWith == 1573) { - c.getItemAssistant().deleteItem(1573, 1); - c.getItemAssistant().deleteItem(327, 1); - c.getItemAssistant().addItem(1552, 1); - } - if (itemUsed == 38 && useWith == 590 || useWith == 38 - && itemUsed == 590) {// - c.getItemAssistant().addItem(32, 1); - c.getItemAssistant().deleteItem(38, 1); - } - if (itemUsed == 36 && useWith == 590 || useWith == 36 - && itemUsed == 590) { - c.getItemAssistant().addItem(33, 1); - c.getItemAssistant().deleteItem(36, 1); - } - if (itemUsed == 596 && useWith == 590 || useWith == 596 - && itemUsed == 590) { - c.getItemAssistant().addItem(594, 1); - c.getItemAssistant().deleteItem(596, 1); - } - if (itemUsed == 4537 && useWith == 590 || useWith == 4537 - && itemUsed == 590) { - c.getItemAssistant().addItem(4539, 1); - c.getItemAssistant().deleteItem(4537, 1); - } - if (itemUsed == 4548 && useWith == 590 || useWith == 4548 - && itemUsed == 590) { - c.getItemAssistant().addItem(4550, 1); - c.getItemAssistant().deleteItem(4548, 1); - } - if (itemUsed == 1095 && useWith == 2370 || itemUsed == 2370 - && useWith == 1095 && c.playerLevel[c.playerCrafting] > 43) {// chaps - c.getItemAssistant().deleteItem(2370, 1); - c.getItemAssistant().deleteItem(1095, 1); - c.getItemAssistant().addItem(1097, 1); - c.getPlayerAssistant().addSkillXP(42, c.playerCrafting); - } else if (itemUsed == 1095 && useWith == 2370 || itemUsed == 2370 && useWith == 1095 && c.playerLevel[c.playerCrafting] < 44) { - c.getActionSender().sendMessage("You need 44 crafting to make this."); - } - if (itemUsed == 946 && useWith == 1963 || itemUsed == 1963 && useWith == 946) { - c.getItemAssistant().deleteItem(1963, 1); - c.getItemAssistant().addItem(3162, 1); - c.getActionSender().sendMessage("You slice your banana."); - } - if (itemUsed == 946 && useWith == 1973 || itemUsed == 1973 && useWith == 946) { - c.getItemAssistant().deleteItem(1973, 1); - c.getItemAssistant().addItem(1975, 1); - c.getActionSender().sendMessage("You slice your chocolate bar."); - } - if (itemUsed == 1129 && useWith == 2370 || itemUsed == 2370 && useWith == 1129 && c.playerLevel[c.playerCrafting] > 40) {// body - c.getItemAssistant().deleteItem(2370, 1); - c.getItemAssistant().deleteItem(1129, 1); - c.getItemAssistant().addItem(1133, 1); - c.getPlayerAssistant().addSkillXP(40, c.playerCrafting); - } else if (itemUsed == 1129 && useWith == 2370 || itemUsed == 2370 && useWith == 1129 && c.playerLevel[c.playerCrafting] < 41) { - c.getActionSender().sendMessage("You need 41 crafting to make this."); - } - if (itemUsed == 4593 && useWith == 4591 || useWith == 4591 && itemUsed == 4593) { - c.getItemAssistant().deleteItem(4591, 1); - c.getItemAssistant().deleteItem(4593, 1); - c.getItemAssistant().addItem(4611, 1); - } - if (itemUsed == 985 && useWith == 987 || itemUsed == 987 && useWith == 985) { - c.getItemAssistant().deleteItem(985, 1); - c.getItemAssistant().deleteItem(987, 1); - c.getItemAssistant().addItem(989, 1); - } - if (itemUsed == 2313 && useWith == 1953 || itemUsed == 1953 && useWith == 2313) { - c.getItemAssistant().deleteItem(2313, 1); - c.getItemAssistant().deleteItem(1953, 1); - c.getItemAssistant().addItem(2315, 1); - } - - /** - * Pizza Creation - */ - if (itemUsed == 1982 && useWith == 2283 || itemUsed == 2283 - && useWith == 1982) { - Cooking.pastryCreation(c, 1982, 2283, 2285, ""); - } - if (itemUsed == 2285 && useWith == 1985 || itemUsed == 1985 - && useWith == 2285) { - Cooking.pastryCreation(c, 2285, 1985, 2287, ""); - } - if (itemUsed == 2140 && useWith == 2289 || itemUsed == 2289 - && useWith == 2140) { - Cooking.cookingAddon(c, 2140, 2289, 2293, 45, 26); - } - if (itemUsed == 319 && useWith == 2289 || itemUsed == 2289 - && useWith == 319) { - Cooking.cookingAddon(c, 319, 2289, 2297, 55, 39); - } - if (itemUsed == 2116 && useWith == 2289 || itemUsed == 2289 - && useWith == 2116) { - Cooking.cookingAddon(c, 2116, 2289, 2301, 65, 45); - } - /** - * Pie Making - */ - if (itemUsed == 2313 && useWith == 1953 || itemUsed == 1953 - && useWith == 2313) { - Cooking.pastryCreation(c, 2313, 1953, 2315, - "You put the pastry dough into the pie dish to make a pie shell."); - } - if (itemUsed == 2315 && useWith == 1955 || itemUsed == 1955 - && useWith == 2315) { - Cooking.pastryCreation(c, 2315, 1955, 2317, - "You fill the pie with cooking apple."); - } - if (itemUsed == 2315 && useWith == 5504 || itemUsed == 5504 - && useWith == 2315) { - Cooking.pastryCreation(c, 2315, 5504, 7212, ""); - } - if (itemUsed == 7212 && useWith == 5982 || itemUsed == 5982 - && useWith == 7212) { - Cooking.pastryCreation(c, 7212, 5982, 7214, ""); - } - if (itemUsed == 1955 && useWith == 7214 || itemUsed == 7214 - && useWith == 1955) { - Cooking.pastryCreation(c, 1955, 7214, 7216, ""); - } - if (itemUsed == 2315 && useWith == 1951 || itemUsed == 1951 && useWith == 2315) { - Cooking.pastryCreation(c, 1951, 2315, 2321, ""); - } - /** - * Pitta/ Ugthanki Kebab - */ - if (itemUsed == 1865 && useWith == 1881 || itemUsed == 1881 - && useWith == 1865) { - Cooking.cookingAddon(c, 1865, 1881, 1883, 0, 40); - } - - if (c.tutorialProgress < 36) { - if (itemUsed == 1929 && useWith == 1933 || itemUsed == 1933 && useWith == 1929) { - c.getItemAssistant().deleteItem(1929, 1); - c.getItemAssistant().deleteItem(1933, 1); - c.getItemAssistant().addItem(2307, 1); - c.getItemAssistant().addItem(1925, 1); - c.getItemAssistant().addItem(1931, 1); - if (c.tutorialProgress == 8) { - c.getDialogueHandler().sendDialogues(3026, -1); - } - } - } - - if (c.tutorialProgress > 35) { - if (itemUsed == 1929 && useWith == 1933 || itemUsed == 1933 && useWith == 1929) { - c.getDialogueHandler().sendDialogues(3204, -1); - } - } - - if (c.tutorialProgress > 35) { - if (itemUsed == 1933 && useWith == 1937 || itemUsed == 1937 && useWith == 1933) { - c.getDialogueHandler().sendDialogues(3205, -1); - } - } - - if (itemUsed == 1987 && useWith == 1937 || itemUsed == 1937 - && useWith == 1987) { - if (c.playerLevel[c.playerCooking] >= 35) { - c.getItemAssistant().addItem(1993, 1); - c.getItemAssistant().deleteItem(1937, 1); - c.getItemAssistant().deleteItem(1987, 1); - c.getPlayerAssistant().addSkillXP(200, c.playerCooking); - } else { - c.getActionSender().sendMessage( - "You need grapes and a jug of water to make wine."); - } - } - - switch (itemUsed) { - - default: - if (c.playerRights == 3) { - Misc.println("Player used Item id: " + itemUsed - + " with Item id: " + useWith); - } - break; - } - } - - public static void ItemonNpc(final Client c, final int itemId, - final int npcId, final int slot) { - switch (itemId) { - - default: - if (c.playerRights == 3) { - Misc.println("Player used Item id: " + itemId - + " with Npc id: " + npcId + " With Slot : " + slot); - } - break; - } - - } -} diff --git a/2006Redone Server/src/redone/game/items/impl/CapeDye.java b/2006Redone Server/src/redone/game/items/impl/CapeDye.java deleted file mode 100644 index 7469c33d..00000000 --- a/2006Redone Server/src/redone/game/items/impl/CapeDye.java +++ /dev/null @@ -1,82 +0,0 @@ -package redone.game.items.impl; - -import redone.game.items.ItemAssistant; -import redone.game.players.Client; - -/** - * Cape Dye - * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) - */ - -public class CapeDye { - - /** - * Capes - */ - - private static final int BLUE_CAPE = 1021, RED_CAPE = 1007; - private static final int GREEN_CAPE = 1027, PINK_CAPE = 6959; - private static final int ORANGE_CAPE = 1031, PURPLE_CAPE = 1029; - private static final int YELLOW_CAPE = 1023, BLACK_CAPE = 1019; - - /** - * Dyes - */ - - private static final int RED_DYE = 1763, BLUE_DYE = 1767; - private static final int GREEN_DYE = 1771, PINK_DYE = 6955; - private static final int ORANGE_DYE = 1769, PURPLE_DYE = 1773; - private static final int YELLOW_DYE = 1765; - - /** - * Deleting items used + adding skill xp - */ - - private static void cleanUp(Client c, int itemUsed, int useWith) { - c.getPlayerAssistant().addSkillXP(2.5, c.playerCrafting); - c.getItemAssistant().deleteItem(itemUsed, 1); - c.getItemAssistant().deleteItem(useWith, 1); - } - - /** - * Cape on Dye Method - */ - - public static void capeOnDye(Client c, int itemUsed, int useWith) { - if (itemUsed == RED_DYE && useWith == BLUE_CAPE || useWith == PURPLE_CAPE && itemUsed == RED_DYE || useWith == GREEN_CAPE && itemUsed == RED_DYE || useWith == ORANGE_CAPE && itemUsed == RED_DYE || useWith == YELLOW_CAPE && itemUsed == RED_DYE || useWith == PINK_CAPE || useWith == BLACK_CAPE && itemUsed == RED_DYE) { - c.getItemAssistant().addItem(RED_CAPE, 1); - cleanUp(c, itemUsed, useWith); - c.getActionSender().sendMessage("You use your " + ItemAssistant.getItemName(itemUsed) + " on " + ItemAssistant.getItemName(useWith) + " to make a " + ItemAssistant.getItemName(RED_CAPE) + "."); - } else if (itemUsed == BLUE_DYE && useWith == RED_CAPE || useWith == PURPLE_CAPE && itemUsed == BLUE_DYE || useWith == GREEN_CAPE && itemUsed == BLUE_DYE || useWith == ORANGE_CAPE && itemUsed == BLUE_DYE || useWith == YELLOW_CAPE && itemUsed == BLUE_DYE || useWith == PINK_CAPE || useWith == BLACK_CAPE && itemUsed == BLUE_DYE) { - c.getItemAssistant().addItem(BLUE_CAPE, 1); - cleanUp(c, itemUsed, useWith); - c.getActionSender().sendMessage("You use your " + ItemAssistant.getItemName(itemUsed) + " on " + ItemAssistant.getItemName(useWith) + " to make a " + ItemAssistant.getItemName(BLUE_CAPE) + "."); - } else if (itemUsed == GREEN_DYE && useWith == RED_CAPE || useWith == PURPLE_CAPE && itemUsed == GREEN_DYE || useWith == BLUE_CAPE && itemUsed == GREEN_DYE || useWith == ORANGE_CAPE && itemUsed == GREEN_DYE || useWith == YELLOW_CAPE && itemUsed == GREEN_DYE || useWith == PINK_CAPE || useWith == BLACK_CAPE && itemUsed == GREEN_DYE) { - c.getItemAssistant().addItem(GREEN_CAPE, 1); - cleanUp(c, itemUsed, useWith); - c.getActionSender().sendMessage("You use your " + ItemAssistant.getItemName(itemUsed) + " on " + ItemAssistant.getItemName(useWith) + " to make a " + ItemAssistant.getItemName(GREEN_CAPE) + "."); - } else if (itemUsed == PINK_DYE && useWith == RED_CAPE || useWith == PURPLE_CAPE && itemUsed == PINK_DYE || useWith == GREEN_CAPE && itemUsed == PINK_DYE || useWith == ORANGE_CAPE && itemUsed == PINK_DYE || useWith == YELLOW_CAPE && itemUsed == PINK_DYE || useWith == BLUE_CAPE || useWith == BLACK_CAPE && itemUsed == PINK_DYE) { - c.getItemAssistant().addItem(PINK_CAPE, 1); - cleanUp(c, itemUsed, useWith); - c.getActionSender().sendMessage("You use your " + ItemAssistant.getItemName(itemUsed) + " on " + ItemAssistant.getItemName(useWith) + " to make a " + ItemAssistant.getItemName(BLUE_CAPE) + "."); - } else if (itemUsed == ORANGE_DYE && useWith == RED_CAPE || useWith == PURPLE_CAPE && itemUsed == ORANGE_DYE || useWith == GREEN_CAPE && itemUsed == ORANGE_DYE || useWith == PINK_CAPE && itemUsed == ORANGE_DYE || useWith == YELLOW_CAPE && itemUsed == ORANGE_DYE || useWith == BLUE_CAPE || useWith == BLACK_CAPE && itemUsed == ORANGE_DYE) { - c.getItemAssistant().addItem(ORANGE_CAPE, 1); - cleanUp(c, itemUsed, useWith); - c.getActionSender().sendMessage("You use your " + ItemAssistant.getItemName(itemUsed) + " on " + ItemAssistant.getItemName(useWith) + " to make a " + ItemAssistant.getItemName(ORANGE_CAPE) + "."); - } else if (itemUsed == PURPLE_DYE && useWith == RED_CAPE || useWith == ORANGE_CAPE && itemUsed == PURPLE_DYE || useWith == GREEN_CAPE && itemUsed == PURPLE_DYE || useWith == PINK_CAPE && itemUsed == PURPLE_DYE || useWith == YELLOW_CAPE && itemUsed == PURPLE_DYE || useWith == BLUE_CAPE || useWith == BLACK_CAPE && itemUsed == PURPLE_DYE) { - c.getItemAssistant().addItem(PURPLE_CAPE, 1); - cleanUp(c, itemUsed, useWith); - c.getActionSender().sendMessage("You use your " + ItemAssistant.getItemName(itemUsed) + " on " + ItemAssistant.getItemName(useWith) + " to make a " + ItemAssistant.getItemName(PURPLE_CAPE) + "."); - } else if (itemUsed == YELLOW_DYE && useWith == RED_CAPE || useWith == ORANGE_CAPE && itemUsed == YELLOW_DYE || useWith == GREEN_CAPE && itemUsed == YELLOW_DYE || useWith == PINK_CAPE && itemUsed == YELLOW_DYE || useWith == PURPLE_CAPE && itemUsed == YELLOW_DYE || useWith == BLUE_CAPE || useWith == BLACK_CAPE && itemUsed == YELLOW_DYE) { - c.getItemAssistant().addItem(YELLOW_CAPE, 1); - cleanUp(c, itemUsed, useWith); - c.getActionSender().sendMessage("You use your " + ItemAssistant.getItemName(itemUsed) + " on " + ItemAssistant.getItemName(useWith) + " to make a " + ItemAssistant.getItemName(YELLOW_CAPE) + "."); - } else if (itemUsed == RED_DYE || itemUsed == BLUE_DYE || itemUsed == GREEN_DYE || itemUsed == PINK_DYE || itemUsed == ORANGE_DYE || itemUsed == PURPLE_DYE || itemUsed == YELLOW_DYE && useWith != BLUE_CAPE || useWith != RED_CAPE || useWith != PURPLE_CAPE || useWith != GREEN_CAPE || useWith != ORANGE_CAPE || useWith != YELLOW_CAPE || useWith != PINK_CAPE || useWith != BLACK_CAPE) { - if (ItemAssistant.getItemName(useWith).contains("Cape") && ItemAssistant.getItemName(itemUsed).contains("dye")) { - c.getActionSender().sendMessage("You can't use " + ItemAssistant.getItemName(itemUsed) + " on that " + ItemAssistant.getItemName(useWith) + "!"); - } else if (!ItemAssistant.getItemName(useWith).contains("Cape") && ItemAssistant.getItemName(itemUsed).contains("dye")) { - c.getActionSender().sendMessage("You can't use " + ItemAssistant.getItemName(itemUsed) + " on " + ItemAssistant.getItemName(useWith) + "!"); - } - } - } -} diff --git a/2006Redone Server/src/redone/game/items/impl/ExperienceLamp.java b/2006Redone Server/src/redone/game/items/impl/ExperienceLamp.java deleted file mode 100644 index dc7611d6..00000000 --- a/2006Redone Server/src/redone/game/items/impl/ExperienceLamp.java +++ /dev/null @@ -1,162 +0,0 @@ -package redone.game.items.impl; - -import redone.game.players.Client; - -public class ExperienceLamp { - - public static int LAMP = 4447, LAMP_2 = 2528, SKILL_MENU = 2808, - skill = -1; - - /** - * Handles the actionbuttons - * - * @param c - * @param id - */ - public static void buttons(Client c, int id) { - switch (id) { - case 10252: - skill = 0; - c.getActionSender().sendMessage("You select Attack."); - break; - case 10253: - skill = 2; - c.getActionSender().sendMessage("You select Strength."); - break; - case 10254: - skill = 4; - c.getActionSender().sendMessage("You select Ranged."); - break; - case 10255: - skill = 6; - c.getActionSender().sendMessage("You select Magic."); - break; - case 11000: - skill = 1; - c.getActionSender().sendMessage("You select Defence."); - break; - case 11001: - skill = 3; - c.getActionSender().sendMessage("You select Hitpoints."); - break; - case 11002: - skill = 5; - c.getActionSender().sendMessage("You select Prayer."); - break; - case 11003: - skill = 16; - c.getActionSender().sendMessage("You select Agility."); - break; - case 11004: - skill = 15; - c.getActionSender().sendMessage("You select Herblore."); - break; - case 11005: - skill = 17; - c.getActionSender().sendMessage("You select Thieving."); - break; - case 11006: - skill = 12; - c.getActionSender().sendMessage("You select Crafting."); - break; - case 11007: - skill = 20; - c.getActionSender().sendMessage("You select Runecrafting."); - break; - case 47002: - skill = 18; - c.getActionSender().sendMessage("You select Slayer."); - break; - case 54090: - skill = -1; - c.getActionSender().sendMessage("You can't select this skill."); - break; - case 11008: - skill = 14; - c.getActionSender().sendMessage("You select Mining."); - break; - case 11009: - skill = 13; - c.getActionSender().sendMessage("You select Smithing."); - break; - case 11010: - skill = 10; - c.getActionSender().sendMessage("You select Fishing."); - break; - case 11011: - skill = 7; - c.getActionSender().sendMessage("You select Cooking."); - break; - case 11012: - skill = 11; - c.getActionSender().sendMessage("You select Firemaking."); - break; - case 11013: - skill = 8; - c.getActionSender().sendMessage("You select Woodcutting."); - break; - case 11014: - skill = 9; - c.getActionSender().sendMessage("You select Fletching."); - break; - case 11015: - if (skill == -1) { - c.getPlayerAssistant().removeAllWindows(); - } - if (c.getItemAssistant().playerHasItem(LAMP, 1) && skill > -1) {// normal - // lamp - int xp = c.getPlayerAssistant() - .getLevelForXP(c.playerXP[skill]) * 10; - c.getPlayerAssistant().addNormalExperienceRate(xp, skill); - c.getItemAssistant().deleteItem(LAMP, 1); - c.getActionSender().sendMessage( - "@blu@Your wish has been granted!"); - c.getActionSender().sendMessage( - "@blu@You have been awarded " + xp - + " experience in your selected skill!"); - c.getPlayerAssistant().removeAllWindows(); - } else if (c.getItemAssistant().playerHasItem(LAMP_2, 1) - && skill > -1) {// vote - // reward - c.getItemAssistant().deleteItem(LAMP_2, 1); - c.getActionSender().sendMessage( - "@blu@Your wish has been granted!"); - addExp(c); - c.getPlayerAssistant().removeAllWindows(); - } - break; - } - } - - public static void addExp(Client c) { - if (c.getPlayerAssistant().getLevelForXP(c.playerXP[skill]) < 20) { - c.getPlayerAssistant().addNormalExperienceRate(1000, skill); - c.getActionSender() - .sendMessage( - "@blu@You have been awarded 1000 experience in your selected skill!"); - } else if (c.getPlayerAssistant().getLevelForXP(c.playerXP[skill]) > 19 - && c.getPlayerAssistant().getLevelForXP(c.playerXP[skill]) < 35) { - c.getPlayerAssistant().addNormalExperienceRate(2000, skill); - c.getActionSender() - .sendMessage( - "@blu@You have been awarded 2000 experience in your selected skill!"); - } else { - c.getPlayerAssistant().addNormalExperienceRate(3000, skill); - c.getActionSender() - .sendMessage( - "@blu@You have been awarded 3000 experience in your selected skill!"); - } - } - - /** - * Rubbing the lamp. ClickItem - * - * @param c - * @param id - */ - public static void rubLamp(Client c, int id) { - c.getActionSender().sendMessage("You rub the lamp."); - c.getPlayerAssistant().showInterface(SKILL_MENU); - } - -} diff --git a/2006Redone Server/src/redone/game/items/impl/LightSources.java b/2006Redone Server/src/redone/game/items/impl/LightSources.java deleted file mode 100644 index 5aa810b9..00000000 --- a/2006Redone Server/src/redone/game/items/impl/LightSources.java +++ /dev/null @@ -1,84 +0,0 @@ -package redone.game.items.impl; - -import redone.game.players.Client; - -/** - * Lightsources - * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) - */ - -public class LightSources { - - public static void saveBrightness(Client client) { - if (client.brightness == 1) { - brightness1(client); - } else if (client.brightness == 2) { - brightness2(client); - } else if (client.brightness == 4) { - brightness4(client); - } else { - brightness3(client); - } - } - - public static void brightness1(Client c) { - c.getPlayerAssistant().sendConfig(505, 1); - c.getPlayerAssistant().sendConfig(506, 0); - c.getPlayerAssistant().sendConfig(507, 0); - c.getPlayerAssistant().sendConfig(508, 0); - c.getPlayerAssistant().sendConfig(166, 1); - c.brightness = 1; - } - - public static void brightness2(Client c) { - c.getPlayerAssistant().sendConfig(505, 0); - c.getPlayerAssistant().sendConfig(506, 1); - c.getPlayerAssistant().sendConfig(507, 0); - c.getPlayerAssistant().sendConfig(508, 0); - c.getPlayerAssistant().sendConfig(166, 2); - c.brightness = 2; - } - - public static void brightness3(Client c) { - c.getPlayerAssistant().sendConfig(505, 0); - c.getPlayerAssistant().sendConfig(506, 0); - c.getPlayerAssistant().sendConfig(507, 1); - c.getPlayerAssistant().sendConfig(508, 0); - c.getPlayerAssistant().sendConfig(166, 3); - c.brightness = 3; - } - - public static void brightness4(Client c) { - c.getPlayerAssistant().sendConfig(505, 0); - c.getPlayerAssistant().sendConfig(506, 0); - c.getPlayerAssistant().sendConfig(507, 0); - c.getPlayerAssistant().sendConfig(508, 1); - c.getPlayerAssistant().sendConfig(166, 4); - c.brightness = 4; - } - - public static void setBrightness(Client c) { - if (c.getItemAssistant().playerHasItem(594) || c.getItemAssistant().playerHasItem(32) || c.getItemAssistant().playerHasItem(33)) { - brightness2(c); - } else if (c.getItemAssistant().playerHasItem(4535) || c.getItemAssistant().playerHasItem(4524)) { - brightness3(c); - } else if (c.getItemAssistant().playerHasItem(4550)) { - brightness4(c); - } - } - - public static final int[] lightSources = { 594, 32, 33, 4524, 4539, 4550 }; - - public static boolean playerHasLightSource(Client c) { - for (int lightSource : lightSources) { - if (c.getItemAssistant().playerHasItem(lightSource)) { - setBrightness(c); - return true; - } - } - c.getActionSender().sendMessage("It's recommended that you get a light source to continue."); - brightness1(c); - return false; - } - -} diff --git a/2006Redone Server/src/redone/game/items/impl/RareProtection.java b/2006Redone Server/src/redone/game/items/impl/RareProtection.java deleted file mode 100644 index a6ccbdcd..00000000 --- a/2006Redone Server/src/redone/game/items/impl/RareProtection.java +++ /dev/null @@ -1,76 +0,0 @@ -package redone.game.items.impl; - -import redone.game.players.Client; - -/** - * Rare Protection - * @author Andrew (Mr Extremez) - */ - -public class RareProtection { - - public static final boolean RARES = false, CRACKERS = false; - private static final int[] RARE_ITEMS = { 1037, 1038, 1039, 1040, 1041, - 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 962, 963, 1959, 1961, 1989 }; - private static final int[] EDIBLE_RARES = { 1959, 1961, 1989 }; - - public static boolean equipItem(Client c) {// check when wearing, removing - for (int element : RARE_ITEMS) { - if (!RARES && c.wearId == element && c.playerRights < 3) { - c.getActionSender().sendMessage("You shouldn't have that item!"); - int amountToDelete = c.getItemAssistant().getItemCount(element); - c.getItemAssistant().deleteItem(element, amountToDelete); - return false; - } - } - return true; - } - - public static boolean removeItem(Client c, int itemId) { - for (int element : RARE_ITEMS) { - if (!RARES && itemId == element && c.playerRights < 3) { - c.getActionSender().sendMessage("You shouldn't have that item!"); - c.getItemAssistant().deleteEquipment(element, 0); - return false; - } - } - return true; - } - - public static boolean hasDupedItem(Client c) {// check on login - for (int element : RARE_ITEMS) { - if (!RARES && c.getItemAssistant().playerHasItem(element) - && c.playerRights < 3) { - c.getActionSender().sendMessage("You can't have these items!"); - int amountToDelete = c.getItemAssistant().getItemCount(element); - c.getItemAssistant().deleteItem(element, amountToDelete); - return false; - } - } - return true; - } - - public static boolean eatDupedItem(Client c, int itemId) { - for (int element : EDIBLE_RARES) { - if (!RARES && itemId == element && c.playerRights < 3) { - c.getActionSender().sendMessage("You can't eat that item!"); - int amountToDelete = c.getItemAssistant().getItemCount(element); - c.getItemAssistant().deleteItem(element, amountToDelete); - return false; - } - } - return true; - } - - public static boolean doOtherDupe(Client c, int itemId) { - for (int element : RARE_ITEMS) { - if (!RARES && c.getItemAssistant().playerHasItem(element) && c.playerRights < 3) { - c.getActionSender().sendMessage("You shouldnt have that item!"); - int amountToDelete = c.getItemAssistant().getItemCount(element); - c.getItemAssistant().deleteItem(element, amountToDelete); - return false; - } - } - return true; - } -} diff --git a/2006Redone Server/src/redone/game/items/impl/Trails.java b/2006Redone Server/src/redone/game/items/impl/Trails.java deleted file mode 100644 index 52407c43..00000000 --- a/2006Redone Server/src/redone/game/items/impl/Trails.java +++ /dev/null @@ -1,724 +0,0 @@ -package redone.game.items.impl; - - -public class Trails { - - /*public Client c; - - public Trails(Client client) { - this.c = client; - } - - public int clue1[] = { 1077, 1089, 1107, 1125, 1131, 1129, 1133, 1511, - 1168, 1165, 1179, 1195, 1217, 1283, 1297, 1313, 1327, 1341, 1361, - 1367, 1426, 2633, 2635, 2637, 7388, 7386, 7392, 7390, 7396, 7394, - 2631, 7364, 7362, 7368, 7366, 2583, 2585, 2587, 2589, 2591, 2593, - 2595, 2597, 7332, 7338, 7350, 7356, 10404, 10406, 10408, 10410, - 10412, 10414, 10424, 10426, 10428, 10430, 10432, 10434, 10458, - 10460, 10462, 10464, 10466, 10468 }; - - public int clue2[] = { 2599, 2601, 2603, 2605, 2607, 2609, 2611, 2613, - 7334, 7340, 7346, 7352, 7358, 7319, 7321, 7323, 7325, 7327, 7372, - 7370, 7380, 7378, 2645, 2647, 2649, 2577, 2579, 1073, 1091, 1099, - 1111, 1135, 1124, 1145, 1161, 1169, 1183, 1199, 1211, 1245, 1271, - 1287, 1301, 1317, 1332, 1357, 1371, 1430, 6916, 6918, 6920, 6922, - 6924, 10400, 10402, 10416, 10418, 10420, 10422, 10436, 10438, - 10446, 10448, 10450, 10452, 10454, 10456, 6889 }; - - public int clue3[] = { - 1079, 1093, 1113, 1127, 1147, 1163, 1185, 1201, - 1275, 1303, 1319, 1333, 1359, 1373, 2491, 2497, 2503, 861, 859, - 2581, 2651, 1079, 1093, 1113, 1127, 1147, 1163, 1185, 1201, 1275, - 1303, 1319, 1333, 1359, 1373, 2491, 2497, 2503, 861, 859, 2581, - 2651, 2615, 2617, 2619, 2621, 2623, 2625, 2627, 2629, 2639, 2641, - 2643, 2651, 2653, 2655, 2657, 2659, 2661, 2663, 2665, 2667, 2669, - 2671, 2673, 2675, 2581, 7342, 7348, 7454, 7460, 7374, 7376, 7382, - 7384, 7398, 7399, 7400, 3481, 3483, 3485, 3486, 3488, 1079, 1093, - 1113, 1127, 1148, 1164, 1185, 1201, 1213, 1247, 1275, 1289, 1303, - 1319, 1333, 1347, 1359, 1374, 1432, 2615, 2617, 2619, 2621, 2623, - 2625, 2627, 2629, 2639, 2641, 2643, 2651, 2653, 2655, 2657, 2659, - 2661, 2663, 2665, 2667, 2669, 2671, 2673, 2675, 2581, 7342, 7348, - 7454, 7460, 7374, 7376, 7382, 7384, 7398, 7399, 7400, 3481, 3483, - 3485, 3486, 3488, 1079, 1093, 1113, 1127, 1148, 1164, 1185, 1201, - 1213, 1247, 1275, 1289, 1303, 1319, 1333, 1347, 1359, 1374, 1432, - 10330, 10338, 10348, 10332, 10340, 10346, 10334, 10342, 10350, - 10336, 10344, 10352, 10368, 10376, 10384, 10370, 10378, 10386, - 10372, 10380, 10388, 10374, 10382, 10390, 10470, 10472, 10474, - 10440, 10442, 10444, 6914 }; - - public void clueReward(int i1, int a1, int i2, int a2, int i3, int a3, - int i4, int a4) { - c.getPA().showInterface(6960); - c.getPA().sendFrame34(6963, i1, 0, a1); - c.getPA().sendFrame34(6963, i2, 1, a2); - c.getPA().sendFrame34(6963, i3, 2, a3); - c.getPA().sendFrame34(6963, i4, 3, a4); - c.getItems().addItem(i1, a1); - c.getItems().addItem(i2, a2); - c.getItems().addItem(i3, a3); - c.getItems().addItem(i4, a4); - } - - public void Clue(String a, String b, String c1, String d, String e, - String f, String g, String h) { - c.getPA().sendFrame126(a, 6968); - c.getPA().sendFrame126(b, 6969); - c.getPA().sendFrame126(c1, 6970); - c.getPA().sendFrame126(d, 6971); - c.getPA().sendFrame126(e, 6972); - c.getPA().sendFrame126(f, 6973); - c.getPA().sendFrame126(g, 6974); - c.getPA().sendFrame126(h, 6975); - c.getPA().showInterface(6965); - } - - public void showitem(int item, String s1) { - c.getPA().sendFrame246(11860, 150, item); - c.getPA().sendFrame126(s1, 11861); - c.getPA().sendFrame164(11859); - } - - /** - * Puzzle Boxes - */ - - /*public int freeSlot; - public int[] puzzleSlot = new int[26]; // 24 increasing - public boolean canMove; - public boolean doingPuzzle; - public int fourthSlot; - public boolean puzzleDone = false; - public boolean openedAlready = false; - public int puzzleId; - public int[] castlePuzzle = { 2749, 2750, 2751, 2752, 2753, 2754, 2755, - 2756, 2757, 2758, 2759, 2760, 2761, 2762, 2763, 2764, 2765, 2766, - 2767, 2768, 2769, 2770, 2771, 2772 }; - public int[] treePuzzle = { 3619, 3620, 3621, 3622, 3623, 3624, 3625, 3626, - 3627, 3628, 3629, 3630, 3631, 3632, 3633, 3634, 3635, 3636, 3637, - 3638, 3639, 3640, 3641, 3642 }; - public int[] trollPuzzle = { 3643, 3644, 3645, 3646, 3647, 3648, 3649, - 3650, 3651, 3652, 3653, 3654, 3655, 3656, 3657, 3658, 3659, 3660, - 3661, 3662, 3663, 3664, 3665, 3666 }; - - public void findFreeSlot() { - for (int i = 0; i < 27; i++) { - if (puzzleSlot[i] < 5) { - freeSlot = i; - // c.getActionSender().sendMessage("FreeSlot " + freeSlot + ""); - break; - } - } - } - - public void Hints(int puzzle) { - int v = 0; - switch (puzzle) { - case 1: - for (int i = 2749; i < 2773; i++) { - c.getPA().sendFrame34P2(i, v, 6985, 1); - v += 1; - } - c.getPA().sendFrame34P2(2753, 4, 6985, 1); - break; - case 3: - v = 0; - for (int i = 3619; i < 3643; i++) { - c.getPA().sendFrame34P2(i, v, 6985, 1); - v += 1; - } - c.getPA().sendFrame34P2(3623, 4, 6985, 1); - break; - case 2: - v = 0; - for (int i = 3643; i < 3667; i++) { - c.getPA().sendFrame34P2(i, v, 6985, 1); - v += 1; - } - c.getPA().sendFrame34P2(3647, 4, 6985, 1); - break; - } - } - - public void openPuzzle(int puzzle) { - int v = 0; - int notfilled = Misc.random(22); - puzzleId = puzzle; - switch (puzzle) { - - case 1: - for (int i = 0; i < 24; i++) { - int d = Misc.random(castlePuzzle.length - 1); - if (castlePuzzle[d] == 0) { - i -= 1; - } - if (v == notfilled) { - v = notfilled + 1; - } - if (castlePuzzle[d] != 0) { - c.getPA().sendFrame34P2(castlePuzzle[d], v, 6980, 1); // 11126 - puzzleSlot[v] = castlePuzzle[d]; - castlePuzzle[d] = 0; - if (v != notfilled) { - v += 1; - } - if (v == notfilled) { - v = notfilled + 1; - } - } - } - break; - - case 2: - for (int i = 0; i < 24; i++) { - int d = Misc.random(trollPuzzle.length - 1); - if (trollPuzzle[d] == 0) { - i -= 1; - } - if (v == notfilled) { - v = notfilled + 1; - } - if (trollPuzzle[d] != 0) { - c.getPA().sendFrame34P2(trollPuzzle[d], v, 6980, 1); // 11126 - puzzleSlot[v] = trollPuzzle[d]; - trollPuzzle[d] = 0; - if (v != notfilled) { - v += 1; - } - if (v == notfilled) { - v = notfilled + 1; - } - } - } - break; - - case 3: - for (int i = 0; i < 24; i++) { - int d = Misc.random(treePuzzle.length - 1); - if (treePuzzle[d] == 0) { - i -= 1; - } - if (v == notfilled) { - v = notfilled + 1; - } - if (treePuzzle[d] != 0) { - c.getPA().sendFrame34P2(treePuzzle[d], v, 6980, 1); // 11126 - puzzleSlot[v] = treePuzzle[d]; - treePuzzle[d] = 0; - if (v != notfilled) { - v += 1; - } - if (v == notfilled) { - v = notfilled + 1; - } - } - } - break; - } - c.getPA().sendFrame34P2(puzzleSlot[4], 4, 6980, 1); // 11126 - } - - public void clickPuzzle(int item) { - switch (item) { - case 2795: // castle - if (openedAlready == false) { - openPuzzle(1); - Hints(1); - openedAlready = true; - } - c.getPA().showInterface(6976); - break; - case 3576: // troll - if (openedAlready == false) { - openPuzzle(2); - Hints(2); - openedAlready = true; - } - c.getPA().showInterface(6976); - break; - case 3565: - if (openedAlready == false) { - openPuzzle(3); - Hints(3); - openedAlready = true; - } - c.getPA().showInterface(6976); - break; - } - doingPuzzle = true; - } - - public void clearPuzzle() { - for (int i = 0; i < 25; i++) { - c.getPA().sendFrame34P2(-1, i, 6980, 0); // 11126 - puzzleSlot[i] = -1; - } - int z = 0; - switch (puzzleId) { - case 1: - z = 0; - for (int i = 2749; i < 2773; i++) { - castlePuzzle[z] = i; - z += 1; - } - break; - case 2: - z = 0; - for (int i = 3619; i < 3643; i++) { - treePuzzle[z] = i; - z += 1; - - } - break; - case 3: - z = 0; - for (int i = 3643; i < 3667; i++) { - trollPuzzle[z] = i; - z += 1; - - } - break; - } - openedAlready = false; - doingPuzzle = false; - puzzleDone = false; - puzzleId = -1; - c.getPA().removeAllWindows(); - } - - public void hasDonePuzzle() { - int z = 0; - switch (puzzleId) { - case 1: - z = 0; - for (int i = 2749; i < 2773; i++) { - if (puzzleSlot[z] == i) { - z += 1; - } - } - if (z == 24) { - puzzleDone = true; - } - if (puzzleDone) { - c.getItems().deleteItem2(2795, 1); - c.getItems().addItem(lvl3(), 1); - showitem(lvl3(), "You've find another clue!"); - c.level3 += 1; - clearPuzzle(); - } - break; - case 2: - z = 0; - for (int i = 3643; i < 3667; i++) { - if (puzzleSlot[z] == i) { - z += 1; - } - } - if (z == 24) { - puzzleDone = true; - } - if (puzzleDone) { - c.getItems().deleteItem2(3576, 1); - c.getItems().addItem(lvl3(), 1); - showitem(lvl3(), "You've find another clue!"); - c.level3 += 1; - clearPuzzle(); - } - break; - - case 3: - z = 0; - for (int i = 3619; i < 3643; i++) { - if (puzzleSlot[z] == i) { - z += 1; - } - } - if (z == 24) { - puzzleDone = true; - } - if (puzzleDone) { - c.getItems().deleteItem2(3565, 1); - c.getItems().addItem(lvl3(), 1); - showitem(lvl3(), "You've find another clue!"); - c.level3 += 1; - clearPuzzle(); - } - break; - } - } - - public void findMove(int slot) { - findFreeSlot(); - if (slot == freeSlot - 1) { - canMove = true; - } - if (slot == freeSlot + 1) { - canMove = true; - } - if (slot == freeSlot - 5) { - canMove = true; - } - if (slot - 1 == freeSlot) { - canMove = true; - } - if (slot - 1 == freeSlot) { - canMove = true; - } - if (slot + 1 == freeSlot) { - canMove = true; - } - if (slot - 5 == freeSlot) { - canMove = true; - } - if (slot + 5 == freeSlot) { - canMove = true; - } - } - - /** - * Clue scroll data - */ - - /*public static int trail1[] = { 2677, 2678, 2679, 2680, 2681, 2682, 2683, - 2684 }; - - public static int trail2[] = { 2685, 2686, 2687, 2688, 2689, 2690, 2691, - 2692 }; - - public static int trail3[] = { 2693, 2694, 2695, 2696, 2697, 2698, 2699, - 2700 }; - - public static int puzzles[] = { 3576, 3565 }; - - public static int lvl1() { - return trail1[(int) (Math.random() * trail1.length)]; - } - - public static int lvl2() { - return trail2[(int) (Math.random() * trail2.length)]; - } - - public static int lvl3() { - return trail3[(int) (Math.random() * trail3.length)]; - } - - public int c1() { - return clue1[(int) (Math.random() * clue1.length)]; - } - - public int c2() { - return clue2[(int) (Math.random() * clue2.length)]; - } - - public int c3() { - return clue3[(int) (Math.random() * clue3.length)]; - } - - public int puzzle() { - return puzzles[(int) (Math.random() * puzzles.length)]; - } - - public void searchObject(int x, int y, int ob) { - switch (ob) { - case 299: - if (x == 3249 && y == 3432) { - if (c.getItems().playerHasItem(2677, 1)) { - if (c.level1 >= 5 && Misc.random(2) == 0) { - clueReward(c1(), 1, c1(), 1, c1(), 1, c1(), 1); - c.sendMessage("Well done, you've completed the Treasure Trail!"); - c.level1 = 0; - } else { - c.getItems().addItem(lvl1(), 1); - showitem(lvl1(), "You've found another clue!"); - c.level1 += 1; - } - c.getItems().deleteItem2(2677, 1); - } - } - break; - case 11745: - if (x == 2955 && y == 3390) { - if (c.getItems().playerHasItem(2682, 1)) { - if (c.level1 >= 5 && Misc.random(2) == 0) { - clueReward(c1(), 1, c1(), 1, c1(), 1, c1(), 1); - c.sendMessage("Well done, you've completed the Treasure Trail!"); - c.level1 = 0; - } else { - c.getItems().addItem(lvl1(), 1); - showitem(lvl1(), "You've found another clue!"); - c.level1 += 1; - } - c.getItems().deleteItem2(2682, 1); - } - } - break; - case 356: - if (x == 2804 && y == 3428) { - if (c.getItems().playerHasItem(2686, 1)) { - if (c.level2 >= 8 && Misc.random(2) == 0) { - clueReward(c2(), 1, c2(), 1, c2(), 1, c2(), 1); - c.sendMessage("Well done, you've completed the Treasure Trail!"); - c.level2 = 0; - } else { - c.getItems().addItem(lvl2(), 1); - showitem(lvl2(), "You've found another clue!"); - c.level2 += 1; - } - c.getItems().deleteItem2(2686, 1); - } - } - break; - } - } - - public boolean clueNpc(int npc) { - if (npc == 541 && c.getItems().playerHasItem(2678, 1)) { - c.getItems().deleteItem2(2678, 1); - c.getItems().addItem(lvl1(), 1); - showitem(lvl1(), "Zeke gives you another clue!"); - c.level1 += 1; - return true; - } else if (npc == 0 && c.getItems().playerHasItem(2679, 1)) { - c.getItems().deleteItem2(2679, 1); - c.getItems().addItem(lvl1(), 1); - showitem(lvl1(), "Hans gives you another clue!"); - c.level1 += 1; - return true; - } else if (npc == 388 && c.getItems().playerHasItem(2680, 1)) { - c.getItems().deleteItem2(2680, 1); - c.getItems().addItem(lvl1(), 1); - showitem(lvl1(), "The seer gives you another clue!"); - c.level1 += 1; - return true; - } else if (npc == 548 && c.getItems().playerHasItem(2681, 1)) { - c.getItems().deleteItem2(2681, 1); - c.getItems().addItem(lvl1(), 1); - showitem(lvl1(), "Thessalia gives you another clue!"); - c.level1 += 1; - return true; - } else if (npc == 379 && c.getItems().playerHasItem(2683, 1)) { - c.getItems().deleteItem2(2683, 1); - c.getItems().addItem(lvl1(), 1); - showitem(lvl1(), "Luthas gives you another clue!"); - c.level1 += 1; - return true; - } else if (npc == 2290 && c.getItems().playerHasItem(2685, 1)) { - c.getItems().deleteItem2(2685, 1); - c.getItems().addItem(lvl2(), 1); - showitem(lvl2(), "Sir Tiffy gives you another clue!"); - c.level2 += 1; - return true; - } else if (npc == 5141 && c.getItems().playerHasItem(2690, 1)) { - c.getItems().deleteItem2(2690, 1); - c.getItems().addItem(2777, 1); - showitem(2777, "Uri gives you a casket."); - return true; - } else if (npc == 3217 && c.getItems().playerHasItem(2691, 1)) { - c.getItems().deleteItem2(2691, 1); - c.getItems().addItem(lvl2(), 1); - showitem(lvl2(), "Kaylee gives you another clue!"); - c.level2 += 1; - return true; - } else if (npc == 538 && c.getItems().playerHasItem(2692, 1)) { - c.getItems().deleteItem2(2692, 1); - c.getItems().addItem(lvl2(), 1); - showitem(lvl2(), "Peska gives you another clue!"); - c.level2 += 1; - return true; - } else if (npc == 5142 && c.getItems().playerHasItem(2694, 1)) { - c.getItems().deleteItem2(2694, 1); - c.getItems().addItem(2779, 1); - showitem(2779, "Uri gives you a casket."); - return true; - } else if (npc == 5143 && c.getItems().playerHasItem(2695, 1)) { - c.getItems().deleteItem2(2695, 1); - c.getItems().addItem(2779, 1); - showitem(2779, "Uri gives you a casket."); - return true; - } else if (npc == 657 && c.getItems().playerHasItem(2696, 1)) { - c.getItems().deleteItem2(2696, 1); - c.getItems().addItem(lvl3(), 1); - showitem(lvl3(), "The monk gives you another clue!"); - c.level3 += 1; - return true; - } else if (npc == 4494 && c.getItems().playerHasItem(2697, 1)) { - c.getItems().deleteItem2(2697, 1); - c.getItems().addItem(lvl3(), 1); - showitem(lvl3(), "General Wartface gives you another clue!"); - c.level3 += 1; - return true; - } else if (npc == 1060 && c.getItems().playerHasItem(2700, 1)) { - c.getItems().deleteItem2(2700, 1); - c.getItems().addItem(lvl3(), 1); - showitem(lvl3(), "Denulth gives you another clue!"); - c.level3 += 1; - return true; - } - return false; - } - - public void getDigLoc(int x, int y) { - if (c.getItems().playerHasItem(2688, 1)) { - if (x == 2906 && y == 3294) { - c.getItems().deleteItem2(2688, 1); - c.getItems().addItem(2777, 1); - showitem(2777, "You've found a casket!"); - } - } else if (c.getItems().playerHasItem(2689, 1)) { - if (x == 2650 && y == 3229) { - c.getItems().deleteItem2(2689, 1); - c.getItems().addItem(2777, 1); - showitem(2777, "You've found a casket!"); - } - } else if (c.getItems().playerHasItem(2693, 1)) { - if (x == 3092 && y == 3226) { - c.getItems().deleteItem2(2693, 1); - c.getItems().addItem(2779, 1); - showitem(2779, "You've found a casket!"); - } - } - - else if (c.getItems().playerHasItem(2698, 1)) { - if ((x == 3167 && y == 3360) || (x == 3167 && y == 3361)) { - c.getItems().deleteItem2(2698, 1); - c.getItems().addItem(2779, 1); - showitem(2779, "You've found a casket!"); - } - } - } - - public void clues(int clueScroll) { - switch (clueScroll) { - case 2677:// lvl 1 - Clue("", "", "", "Search the haybales in Varrock's", - "training facility.", "", "", "");// obj:299 x:3249 y:3432 - break; - case 2678:// lvl 1 - Clue("", "", "", "Speak to Zeke for your next clue.", "", "", "", - "");// npc:541 - break; - case 2679:// lvl 1 - Clue("", "", "This anagram reveals", "who to speak to next:", "", - "SNHA", "", "");// npc:0 - break; - case 2680:// lvl 1 - Clue("", "", "", "Speak with a Seer for your next clue.", "", "", - "", "");// npc:388 - break; - case 2681:// lvl 1 - Clue("", "", "This anagram reveals", "who to speak to next:", "", - "ESALITHAS", "", ""); - break; - case 2682:// lvl 1 - Clue("", "", "", "Search the crates in the Falador", - "General Store.", "", "", ""); - break; - case 2683:// lvl 1 - Clue("", "", "", "Speak to Luthas in Edgeville for", - "your next clue.", "", "", ""); - break; - case 2684:// lvl 1 - Clue("", "", "", "Kill a goblin for your next clue.", "", "", "", - ""); - break; - case 2685:// lvl 2 - Clue("", "", "This anagram reveals", "who to speak to next:", "", - "RSI FTIYF NEISACH", "", ""); - break; - case 2686:// lvl 2 - Clue("", "", "", "Search a crate on Catherby port.", "", "", "", ""); - break; - case 2687:// lvl 2 - Clue("", "", "The Falador guards, they do not see,", - "my thievery fingers steal all things,", - "though I tend to aim at their pocketries.", "", "", ""); - break; - case 2688:// lvl2 - c.getPA().showInterface(4305); - break; - case 2689:// lvl2 - c.getPA().showInterface(9632); - break; - case 2690:// lvl 2 - Clue("", "", "Jig in the bank of Canifis.", - "Equip a bronze platebody, a iron sword", - "and climbing boots.", "", "", ""); - break; - case 2691:// lvl 2 - Clue("", "", "", "Speak with Kaylee in Falador.", "", "", "", ""); - break; - case 2692:// lvl 2 - Clue("", "", "This anagram reveals", "who to speak to next:", "", - "SKEPA", "", ""); - break; - case 2693:// lvl3 - c.getPA().showInterface(7113); - break; - case 2694:// lvl 3 - Clue("", "", "Dance in the Falador General store.", - "Equip a rune scimitar, a mystic hat", "and a blue skirt.", - "", "", ""); - break; - case 2695:// lvl 3 - Clue("", "", "Salute in the Banana Plantation.", - "Beware of double agents!", - "Equip a Iban's Staff, rune platelegs", - "and an adamant kiteshield.", "", ""); - break; - case 2696:// lvl 3 - Clue("", "", "This anagram reveals", "who to speak to next:", "", - "NOKM FO NTERNAN", "", ""); - break; - case 2697:// lvl 3 - Clue("", "", "", "Speak with General Wartface for", - "your next clue.", "", "", ""); - break; - case 2698:// lvl3 - c.getPA().showInterface(6994); - break; - case 2699:// lvl 3 - Clue("", "", "", "Kill a green dragon for your next clue.", "", "", - "", ""); - break; - case 2700:// lvl 3 - Clue("", "", "This anagram reveals", "who to speak to next:", "", - "HTENDLU", "", ""); - break; - case 2775:// level1 Chest - if (c.level1 >= 5 && Misc.random(2) == 0) { - clueReward(c1(), 1, c1(), 1, c1(), 1, c1(), 1); - c.sendMessage("Well done, you've completed the Treasure Trail!"); - c.level1 = 0; - } else { - c.getItems().addItem(lvl1(), 1); - showitem(lvl1(), "You've found another clue!"); - c.level1 += 1; - } - c.getItems().deleteItem2(2775, 1); - break; - case 2777:// level2 Chest - if (c.level2 >= 8 && Misc.random(2) == 0) { - clueReward(c2(), 1, c2(), 1, c2(), 1, c2(), 1); - c.sendMessage("Well done, you've completed the Treasure Trail!"); - c.level2 = 0; - } else { - c.getItems().addItem(lvl2(), 1); - showitem(lvl2(), "You've found another clue!"); - c.level2 += 1; - } - c.getItems().deleteItem2(2777, 1); - break; - case 2779:// level3 Chest - if (c.level3 >= 13 && Misc.random(3) == 0) { - clueReward(c3(), 1, c3(), 1, c3(), 1, c3(), 1); - c.sendMessage("Well done, you've completed the Treasure Trail!"); - c.level3 = 0; - } else { - c.getItems().addItem(lvl3(), 1); - showitem(lvl3(), "You've found another clue!"); - c.level3 += 1; - } - c.getItems().deleteItem2(2779, 1); - break; - } - }*/ -} \ No newline at end of file diff --git a/2006Redone Server/src/redone/game/npcs/impl/MilkCow.java b/2006Redone Server/src/redone/game/npcs/impl/MilkCow.java deleted file mode 100644 index 8b1a73f3..00000000 --- a/2006Redone Server/src/redone/game/npcs/impl/MilkCow.java +++ /dev/null @@ -1,50 +0,0 @@ -package redone.game.npcs.impl; - -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.players.Client; - -/** - * @author Tom - */ - -public class MilkCow { - - /** - * The empty bucket Id - */ - private static int BUCKET = 1925; - - /** - * The bucket of milk Id - */ - private static int BUCKET_OF_MILK = 1927; - - public static void milk(final Client c) { - if (!c.getItemAssistant().playerHasItem(BUCKET)) { - c.getActionSender().sendMessage("You need a bucket in order to milk this cow."); - return; - } else { - c.startAnimation(2305); - c.milking = true; - CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() { - - @Override - public void execute(CycleEventContainer container) { - c.getItemAssistant().deleteItem(BUCKET, 1); - c.getActionSender().sendMessage("You milk the cow."); - c.getItemAssistant().addItem(BUCKET_OF_MILK, 1); - container.stop(); - } - - @Override - public void stop() { - c.milking = false; - } - }, 7); - return; - } - } - -} diff --git a/2006Redone Server/src/redone/game/objects/impl/AxeInLog.java b/2006Redone Server/src/redone/game/objects/impl/AxeInLog.java deleted file mode 100644 index c3599ff9..00000000 --- a/2006Redone Server/src/redone/game/objects/impl/AxeInLog.java +++ /dev/null @@ -1,21 +0,0 @@ -package redone.game.objects.impl; - -import redone.game.objects.Object; -import redone.game.players.Client; - -public class AxeInLog { - - public static void pullAxeFromLog(Client client, int x, int y) { - if (client.getItemAssistant().freeSlots() <= 0) { - client.getActionSender().sendMessage( - "Not enough space in your inventory."); - return; - } - client.startAnimation(832); - client.getItemAssistant().addItem(1351, 1); - client.getActionSender().sendMessage( - "You take the axe from the log."); - new Object(5582, x, y, client.heightLevel, 2, 10, 5581, 100); - } - -} diff --git a/2006Redone Server/src/redone/game/objects/impl/BrimhavenVines.java b/2006Redone Server/src/redone/game/objects/impl/BrimhavenVines.java deleted file mode 100644 index 444369c6..00000000 --- a/2006Redone Server/src/redone/game/objects/impl/BrimhavenVines.java +++ /dev/null @@ -1,60 +0,0 @@ -package redone.game.objects.impl; - -import redone.game.content.skills.core.Woodcutting; -import redone.game.players.Client; - -/** - * @author Genesis - */ -public class BrimhavenVines { - - public static void handleBrimhavenVines(Client c, int objectType) { - if (!Woodcutting.hasAxe(c)) { - c.getActionSender().sendMessage("You will need an axe to chop through these!"); - return; - } - c.getActionSender().sendMessage("You chop your way through the vines."); - switch (objectType) { - case 12987: - case 12986: - BrimhavenVines.moveThroughVinesX(c, 3213, -2, 0, 2, 0); - break; - case 5103: - BrimhavenVines.moveThroughVinesX(c, 2689, 2, 0, -2, 0); - break; - case 5104: - BrimhavenVines.moveThroughVinesY(c, 9568, 0, 2, 0, -2); - break; - case 5105: - BrimhavenVines.moveThroughVinesX(c, 2672, 2, 0, -2, 0); - break; - case 5106: - BrimhavenVines.moveThroughVinesX(c, 2675, 2, 0, -2, 0); - break; - case 5107: - BrimhavenVines.moveThroughVinesX(c, 2694, 2, 0, -2, 0); - break; - } - } - - public static void moveThroughVinesX(Client c, int originX, int x1, int y1, int x2, int y2) { - int x = c.getX(); - int y = c.getY(); - if (c.absX <= originX) { - c.getPlayerAssistant().movePlayer(x + x1, y + y1, 0); - } else { - c.getPlayerAssistant().movePlayer(x + x2, y + y2, 0); - } - } - - public static void moveThroughVinesY(Client c, int originY, int x1, int y1, int x2, int y2) { - int x = c.getX(); - int y = c.getY(); - if (c.absY <= originY) { - c.getPlayerAssistant().movePlayer(x + x1, y + y1, 0); - } else { - c.getPlayerAssistant().movePlayer(x + x2, y + y2, 0); - } - } - -} diff --git a/2006Redone Server/src/redone/game/objects/impl/UseOther.java b/2006Redone Server/src/redone/game/objects/impl/UseOther.java deleted file mode 100644 index 26b18eab..00000000 --- a/2006Redone Server/src/redone/game/objects/impl/UseOther.java +++ /dev/null @@ -1,30 +0,0 @@ -package redone.game.objects.impl; - -import redone.game.players.Client; - -public class UseOther { - - - public static void useUp(final Client c, final int objectId) { - c.stopPlayerPacket = true; - c.startAnimation(828); - c.getPlayerAssistant().removeAllWindows(); - c.teleportToX = c.absX; - c.teleportToY = c.absY - 6400; - c.getActionSender().sendMessage("You climb up."); - c.stopPlayerPacket = false; - } - - public static void useDown(final Client c, final int objectId) { - if (c.objectX == 2647 && c.objectY == 3657 || c.objectX == 2650 && c.objectY == 3661) { - c.getActionSender().sendMessage("This trapdoor is currently disabled."); - return; - } - c.stopMovement(); - c.startAnimation(827); - c.getPlayerAssistant().removeAllWindows(); - c.teleportToX = c.absX; - c.teleportToY = c.absY + 6400; - c.getActionSender().sendMessage("You climb down."); - } -} diff --git a/2006Redone Server/src/redone/game/objects/impl/Webs.java b/2006Redone Server/src/redone/game/objects/impl/Webs.java deleted file mode 100644 index 6b0e75ed..00000000 --- a/2006Redone Server/src/redone/game/objects/impl/Webs.java +++ /dev/null @@ -1,41 +0,0 @@ -package redone.game.objects.impl; - -import redone.Server; -import redone.game.content.music.sound.SoundList; -import redone.game.players.Client; -import redone.util.Misc; - -/** - * @author Andrew - */ - -public class Webs { - - public static int[] CLICKING_OBJECTS = { 733 }; - - public static boolean webs(Client c, int object) { - for (int element : CLICKING_OBJECTS) { - if (object == element) { - return true; - } - } - return false; - } - - public static void slashWeb(Client c, final int objectClickId, - final int objectX, final int objectY) { - if (System.currentTimeMillis() - c.webSlashDelay > 1800) { - if (Misc.random(3) > 0) { - Server.objectHandler.createAnObject(c, -1, objectX, objectY); - // c.startAnimation(451); - c.startAnimation(c.getCombatAssistant().getWepAnim()); - c.webSlashDelay = System.currentTimeMillis(); - c.getActionSender().sendSound(SoundList.SLASH_WEB, 100, 0); - c.getActionSender().sendMessage("You successfully slash open the web."); - } else { - c.getActionSender().sendMessage("You fail to slash through the web."); - return; - } - } - } -} diff --git a/2006Redone Server/src/redone/game/players/Client.java b/2006Redone Server/src/redone/game/players/Client.java deleted file mode 100644 index c3488bec..00000000 --- a/2006Redone Server/src/redone/game/players/Client.java +++ /dev/null @@ -1,1400 +0,0 @@ -package redone.game.players; - -import java.util.ArrayList; -import java.util.Calendar; -import java.util.GregorianCalendar; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.Map; -import java.util.Queue; -import java.util.concurrent.Future; - -import org.apache.mina.common.IoSession; - -import redone.Connection; -import redone.Constants; -import redone.Server; -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.content.BankPin; -import redone.game.content.EmoteHandler; -import redone.game.content.combat.CombatAssistant; -import redone.game.content.combat.Specials; -import redone.game.content.combat.magic.Enchanting; -import redone.game.content.combat.magic.MagicTeleports; -import redone.game.content.combat.prayer.PrayerData; -import redone.game.content.combat.prayer.PrayerDrain; -import redone.game.content.combat.range.DwarfCannon; -import redone.game.content.combat.range.RangeData; -import redone.game.content.consumables.Food; -import redone.game.content.consumables.Potions; -import redone.game.content.guilds.impl.RangersGuild; -import redone.game.content.minigames.Barrows; -import redone.game.content.minigames.Dueling; -import redone.game.content.minigames.FightPits; -import redone.game.content.minigames.PestControl; -import redone.game.content.minigames.castlewars.CastleWars; -import redone.game.content.music.PlayList; -import redone.game.content.music.sound.SoundList; -import redone.game.content.quests.QuestAssistant; -import redone.game.content.quests.impl.*; -import redone.game.content.skills.SkillInterfaces; -import redone.game.content.skills.agility.Agility; -import redone.game.content.skills.agility.ApeAtollAgility; -import redone.game.content.skills.agility.BarbarianAgility; -import redone.game.content.skills.agility.GnomeAgility; -import redone.game.content.skills.agility.PyramidAgility; -import redone.game.content.skills.agility.WerewolfAgility; -import redone.game.content.skills.agility.WildernessAgility; -import redone.game.content.skills.cooking.Potatoes; -import redone.game.content.skills.core.Mining; -import redone.game.content.skills.crafting.GlassBlowing; -import redone.game.content.skills.runecrafting.Runecrafting; -import redone.game.content.skills.slayer.Slayer; -import redone.game.content.skills.smithing.Smithing; -import redone.game.content.skills.smithing.SmithingInterface; -import redone.game.content.traveling.Desert; -import redone.game.dialogues.DialogueHandler; -import redone.game.items.GameItem; -import redone.game.items.ItemAssistant; -import redone.game.items.impl.LightSources; -import redone.game.items.impl.PotionMixing; -import redone.game.items.impl.Teles; -import redone.game.items.impl.Weight; -import redone.game.npcs.NpcActions; -import redone.game.npcs.NpcHandler; -import redone.game.objects.ObjectsActions; -import redone.game.players.antimacro.AntiBotting; -import redone.game.shops.ShopAssistant; -import redone.net.ActionSender; -import redone.net.HostList; -import redone.net.Packet; -import redone.net.StaticPacketBuilder; -import redone.net.packets.PacketHandler; -import redone.net.packets.impl.ChallengePlayer; -import redone.util.Misc; -import redone.util.Stream; -import redone.world.ObjectManager; - -public class Client extends Player { - - public byte buffer[] = null; - public Stream inStream = null, outStream = null; - private IoSession session; - private final ItemAssistant itemAssistant = new ItemAssistant(this); - private final ShopAssistant shopAssistant = new ShopAssistant(this); - private final Trading trading = new Trading(this); - private final Dueling duel = new Dueling(this); - private final PlayerAssistant playerAssistant = new PlayerAssistant(this); - private final CombatAssistant combatAssistant = new CombatAssistant(this); - private final ObjectsActions actionHandler = new ObjectsActions(this); - private final NpcActions npcs = new NpcActions(this); - private final Queue queuedPackets = new LinkedList(); - private final Potions potions = new Potions(this); - private final PotionMixing potionMixing = new PotionMixing(this); - private final Food food = new Food(this); - private final EmoteHandler emoteHandler = new EmoteHandler(this); - private final SkillInterfaces skillInterfaces = new SkillInterfaces(this); - private final Enchanting enchanting = new Enchanting(this); - private final Potatoes potatoes = new Potatoes(this); - private final PlayerAction playeraction = new PlayerAction(this); - private final Desert desert = new Desert(); - private final Specials specials = new Specials(this); - private final SoundList sound = new SoundList(this); - public String creationAddress = ""; - private final HashMap temporary = new HashMap(); - private final PlayList playList = new PlayList(this); - private final Agility agility = new Agility(this); - private final Runecrafting runecrafting = new Runecrafting(this); - private final Teles teles = new Teles(); - private final BankPin bankPin = new BankPin(this); - private final Slayer slayer = new Slayer(this); - private final ImpCatcher impCatcher = new ImpCatcher(this); - private final BlackKnightsFortress blackKnightF = new BlackKnightsFortress(this); - private final CooksAssistant cooksAssistant = new CooksAssistant(this); - private final RomeoJuliet romeoJuliet = new RomeoJuliet(this); - private final DoricsQuest doricsQuest = new DoricsQuest(this); - private final VampyreSlayer vampyreSlayer = new VampyreSlayer(this); - private final RestlessGhost restlessGhost = new RestlessGhost(this); - private final GertrudesCat gertrudesCat = new GertrudesCat(this); - private final SheepShearer sheepShearer = new SheepShearer(this); - private final RuneMysteries runeMysteries = new RuneMysteries(this); - private final WitchsPotion witchsPotion = new WitchsPotion(this); - private final PiratesTreasure piratesTreasure = new PiratesTreasure(this); - private final ActionSender actionSender = new ActionSender(this); - private final DialogueHandler dialogues = new DialogueHandler(this); - private final GnomeAgility gnomeStrongHold = new GnomeAgility(this); - private final WildernessAgility wildernessAgility = new WildernessAgility(this); - private final BarbarianAgility barbarianAgility = new BarbarianAgility(this); - private final PyramidAgility pyramidAgility = new PyramidAgility(this); - private final WerewolfAgility werewolfAgility = new WerewolfAgility(this); - private final ApeAtollAgility apeAtollAgility = new ApeAtollAgility(this); - private final Smithing smithing = new Smithing(); - private final SmithingInterface smithingInterface = new SmithingInterface(this); - private final PrayerData prayer = new PrayerData(); - private final ObjectManager objectManager = new ObjectManager(); - public ArrayList fishingTrawlerReward = new ArrayList(); - private final RangersGuild rangersGuild = new RangersGuild(this); - private GlassBlowing glassBlowing = new GlassBlowing(this); - private Barrows barrows = new Barrows(this); - private Mining mining = new Mining(); - private ChallengePlayer challengePlayer = new ChallengePlayer(); - private DwarfCannon dwarfCannon = new DwarfCannon(this); - private CycleEventContainer currentTask; - - public DwarfCannon getCannon() { - return dwarfCannon; - } - - public ChallengePlayer getChallengePlayer() { - return challengePlayer; - } - - public Mining getMining() { - return mining; - } - - public Barrows getBarrows() { - return barrows; - } - - public GlassBlowing getGlassBlowing() { - return glassBlowing; - } - - public RangersGuild getRangersGuild() { - return rangersGuild; - } - - public ObjectManager getObjectManager() { - return objectManager; - } - - public SmithingInterface getSmithingInt() { - return smithingInterface; - } - - public Smithing getSmithing() { - return smithing; - } - - public ApeAtollAgility getApeAtollAgility() { - return apeAtollAgility; - } - - public WerewolfAgility getWerewolfAgility() { - return werewolfAgility; - } - - public PyramidAgility getPyramidAgility() { - return pyramidAgility; - } - - public BarbarianAgility getBarbarianAgility() { - return barbarianAgility; - } - - public WildernessAgility getWildernessAgility() { - return wildernessAgility; - } - - public GnomeAgility getGnomeStrongHold() { - return gnomeStrongHold; - } - - public DialogueHandler getDialogueHandler() { - return dialogues; - } - - public ActionSender getActionSender() { - return actionSender; - } - - public SoundList getSound() { - return sound; - } - - public Object getTemporary(String name) { - return temporary.get(name); - } - - public void addTemporary(String name, Object value) { - temporary.put(name, value); - } - - public PlayList getPlayList() { - return playList; - } - - public Specials getSpecials() { - return specials; - } - - public Potatoes getPTS() { - return potatoes; - } - - public EmoteHandler getEmoteHandler() { - return emoteHandler; - } - - public SkillInterfaces getSkillInterfaces() { - return skillInterfaces; - } - - public Enchanting getEnchanting() { - return enchanting; - } - - public PlayerAction getPlayerAction() { - return playeraction; - } - - public Desert getDesert() { - return desert; - } - - public Agility getAgility() { - return agility; - } - - public Runecrafting getRC() { - return runecrafting; - } - - public Slayer getSlayer() { - return slayer; - } - - public Teles getTeles() { - return teles; - } - - public BankPin getBankPin() { - return bankPin; - } - - public ImpCatcher getImpCatcher() { - return impCatcher; - } - - public BlackKnightsFortress getBlackKnightsFortress() { - return blackKnightF; - } - - public PiratesTreasure getPiratesTreasure() { - return piratesTreasure; - } - - public CooksAssistant getCooksAssistant() { - return cooksAssistant; - } - - public RomeoJuliet getRomeoJuliet() { - return romeoJuliet; - } - - public DoricsQuest getDoricsQuest() { - return doricsQuest; - } - - public VampyreSlayer getVampyreSlayer() { - return vampyreSlayer; - } - - public RestlessGhost getRestlessGhost() { - return restlessGhost; - } - - public GertrudesCat getGertrudesCat() { - return gertrudesCat; - } - - public SheepShearer getSheepShearer() { - return sheepShearer; - } - - public RuneMysteries getRuneMysteries() { - return runeMysteries; - } - - public WitchsPotion getWitchesPotion() { - return witchsPotion; - } - - public synchronized Stream getInStream() { - return inStream; - } - - public synchronized int getPacketType() { - return packetType; - } - - public synchronized int getPacketSize() { - return packetSize; - } - - public synchronized Stream getOutStream() { - return outStream; - } - - public ItemAssistant getItemAssistant() { - return itemAssistant; - } - - public PlayerAssistant getPlayerAssistant() { - return playerAssistant; - } - - public ShopAssistant getShopAssistant() { - return shopAssistant; - } - - public Trading getTrading() { - return trading; - } - - public Dueling getDueling() { - return duel; - } - - public CombatAssistant getCombatAssistant() { - return combatAssistant; - } - - public PrayerData getPrayer() { - return prayer; - } - - public ObjectsActions getObjects() { - return actionHandler; - } - - public NpcActions getNpcs() { - return npcs; - } - - public IoSession getSession() { - return session; - } - - public Potions getPotions() { - return potions; - } - - public PotionMixing getPotMixing() { - return potionMixing; - } - - public Food getFood() { - return food; - } - - public int TotalShopItems; - - public void startCurrentTask(int ticksBetweenExecution, CycleEvent event) { - endCurrentTask(); - currentTask = CycleEventHandler.getSingleton().addEvent(this, event, ticksBetweenExecution); - } - - public CycleEventContainer getCurrentTask() { - return currentTask; - } - - public void endCurrentTask() { - if (currentTask != null && currentTask.isRunning()) { - currentTask.stop(); - currentTask = null; - } - } - - private Map interfaceText = new HashMap(); - - public class TinterfaceText { - public int id; - public String currentState; - - public TinterfaceText(String s, int id) { - this.currentState = s; - this.id = id; - } - - } - - public boolean checkPacket126Update(String text, int id) { - if(!interfaceText.containsKey(id)) { - interfaceText.put(id, new TinterfaceText(text, id)); - } else { - TinterfaceText t = interfaceText.get(id); - if(text.equals(t.currentState)) { - return false; - } - t.currentState = text; - } - return true; - } - - public int lowMemoryVersion = 0; - public int timeOutCounter = 0; - public int returnCode = 2; - - // used for bots - public Client(IoSession s) { - super(-1); - isBot = true; - session = null; - inStream = new Stream(new byte[Constants.BUFFER_SIZE]); - inStream.currentOffset = 0; - buffer = new byte[Constants.BUFFER_SIZE]; - } - - public Client(IoSession s, int _playerId) { - super(_playerId); - session = s; - synchronized (this) { - outStream = new Stream(new byte[Constants.BUFFER_SIZE]); - outStream.currentOffset = 0; - } - inStream = new Stream(new byte[Constants.BUFFER_SIZE]); - inStream.currentOffset = 0; - buffer = new byte[Constants.BUFFER_SIZE]; - } - - /** - * Resets the shaking of the player's screen. - */ - public void resetShaking() { - getActionSender().shakeScreen(1, 0, 0, 0); - } - - public final String disabled() { - return "Skill is disabled for testing period."; - } - - public void puzzleBarrow() { - getPlayerAssistant().sendFrame246(4545, 250, 6833); - getPlayerAssistant().sendFrame126("1.", 4553); - getPlayerAssistant().sendFrame246(4546, 250, 6832); - getPlayerAssistant().sendFrame126("2.", 4554); - getPlayerAssistant().sendFrame246(4547, 250, 6830); - getPlayerAssistant().sendFrame126("3.", 4555); - getPlayerAssistant().sendFrame246(4548, 250, 6829); - getPlayerAssistant().sendFrame126("4.", 4556); - getPlayerAssistant().sendFrame246(4550, 250, 3454); - getPlayerAssistant().sendFrame246(4551, 250, 8746); - getPlayerAssistant().sendFrame246(4552, 250, 6830); - getPlayerAssistant().showInterface(4543); - } - - public void flushOutStream() { - if (disconnected || outStream == null || outStream.currentOffset == 0) { - return; - } - synchronized (this) { - StaticPacketBuilder out = new StaticPacketBuilder().setBare(true); - byte[] temp = new byte[outStream.currentOffset]; - System.arraycopy(outStream.buffer, 0, temp, 0, temp.length); - out.addBytes(temp); - session.write(out.toPacket()); - outStream.currentOffset = 0; - } - } - - public void sendClan(String name, String message, String clan, int rights) { - if (outStream != null) { - outStream.createFrameVarSizeWord(217); - outStream.writeString(name); - outStream.writeString(message); - outStream.writeString(clan); - outStream.writeWord(rights); - outStream.endFrameVarSize(); - } - } - - public static final int PACKET_SIZES[] = { 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, // 0 - 0, 0, 0, 0, 8, 0, 6, 2, 2, 0, // 10 - 0, 2, 0, 6, 0, 12, 0, 0, 0, 0, // 20 - 0, 0, 0, 0, 0, 8, 4, 0, 0, 2, // 30 - 2, 6, 0, 6, 0, -1, 0, 0, 0, 0, // 40 - 0, 0, 0, 12, 0, 0, 0, 8, 8, 12, // 50 - 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, // 60 - 6, 0, 2, 2, 8, 6, 0, -1, 0, 6, // 70 - 0, 0, 0, 0, 0, 1, 4, 6, 0, 0, // 80 - 0, 0, 0, 0, 0, 3, 0, 0, -1, 0, // 90 - 0, 13, 0, -1, 0, 0, 0, 0, 0, 0,// 100 - 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, // 110 - 1, 0, 6, 0, 0, 0, -1, 0, 2, 6, // 120 - 0, 4, 6, 8, 0, 6, 0, 0, 0, 2, // 130 - 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, // 140 - 0, 0, 1, 2, 0, 2, 6, 0, 0, 0, // 150 - 0, 0, 0, 0, -1, -1, 0, 0, 0, 0,// 160 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 170 - 0, 8, 0, 3, 0, 2, 0, 0, 8, 1, // 180 - 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, // 190 - 2, 0, 0, 0, 0, 0, 0, 0, 4, 0, // 200 - 4, 0, 0, 0, 7, 8, 0, 0, 10, 0, // 210 - 0, 0, 0, 0, 0, 0, -1, 0, 6, 0, // 220 - 1, 0, 0, 0, 6, 0, 6, 8, 1, 0, // 230 - 0, 4, 0, 0, 0, 0, -1, 0, -1, 4,// 240 - 0, 0, 6, 6, 0, 0, 0 // 250 - }; - - @Override - public void destruct() { - if (session == null) { - return; - } - if (getCannon().hasCannon()) { - getCannon().removeObject(cannonX, cannonY); - for(int i = 0; i < Server.cannonsX.length; i++) { - if (Server.cannonsX[i] == cannonX && Server.cannonsY[i] == cannonY) { - Server.cannonsX[i] = 0; - Server.cannonsY[i] = 0; - Server.cannonsO[i] = null; - } - lostCannon = true; - cannonX = -1; - cannonY = -1; - } - } - if(Server.trawler.players.contains(this)) { - Server.trawler.players.remove(this); - } - if (CastleWars.isInCwWait(this)) { - CastleWars.leaveWaitingRoom(this); - } - if (CastleWars.isInCw(this)) { - CastleWars.removePlayerFromCw(this); - } - if (FightPits.getState(this) != null) { - FightPits.removePlayer(this, true); - } - if (PestControl.isInGame(this)) { - PestControl.removePlayerGame(this); - getPlayerAssistant().movePlayer(2657, 2639, 0); - } - if (PestControl.isInPcBoat(this)) { - PestControl.leaveWaitingBoat(this); - getPlayerAssistant().movePlayer(2657, 2639, 0); - } - if (hasNpc == true) { - getSummon().pickUpClean(this, summonId); - } - if (clanId >= 0) { - Server.clanChat.leaveClan(playerId, clanId); - } - - if(Server.ersSecret != null && !Server.ersSecret.equals("") && this.playerRights < 2) { - boolean debugMessage = false; - System.out.println("Updating highscores for " + this.playerName + "!"); - com.everythingrs.hiscores.Hiscores.update(Server.ersSecret, "Normal Mode", this.playerName, this.playerRights, this.playerXP, debugMessage); - } else { - System.out.println("EverythingRS API Disabled, highscores not saved!"); - } - - Misc.println("[DEREGISTERED]: " + playerName + ""); - HostList.getHostList().remove(session); - CycleEventHandler.getSingleton().stopEvents(this); - disconnected = true; - session.close(); - session = null; - inStream = null; - outStream = null; - isActive = false; - buffer = null; - super.destruct(); - // PlayerSave.saveGame(this); - } - - @Override - public void initialize() { - getPlayerAssistant().loginScreen(); - if (Connection.isNamedBanned(playerName)) { - logout(); - return; - } - synchronized (this) { - if (getOutStream() != null) { - outStream.createFrame(249); - outStream.writeByteA(membership ? 1 : 0); - outStream.writeWordBigEndianA(playerId); - for (int j = 0; j < PlayerHandler.players.length; j++) { - if (j == playerId) { - continue; - } - if (PlayerHandler.players[j] != null) { - if (PlayerHandler.players[j].playerName.equalsIgnoreCase(playerName)) { - disconnected = true; - } - } - } - } - lastLoginDate = getLastLogin(); - QuestAssistant.sendStages(this); - if (hasNpc == true) { - if (summonId > 0) { - Server.npcHandler.spawnNpc3(this, summonId, absX, absY - 1, - heightLevel, 0, 120, 25, 200, 200, true, false, - true); - } - } - if (isBotting == true) { - AntiBotting.botCheckInterface(this); - } - if (questPoints > QuestAssistant.MAXIMUM_QUESTPOINTS || playerRights > 2) { - questPoints = QuestAssistant.MAXIMUM_QUESTPOINTS;// check for abusers - } - if (playerHitpoints < 0) { - isDead = true; - } - if (playerLevel[playerHitpoints] > 99) { - playerLevel[playerHitpoints] = 99;// check for abusers - getPlayerAssistant().refreshSkill(3); - } - if (playerLevel[playerFarming] > 1 && playerRights < 3) { - playerLevel[playerFarming] = 1; - getPlayerAssistant().refreshSkill(playerFarming); - } - if (tutorialProgress > 0 && tutorialProgress < 36 && Constants.TUTORIAL_ISLAND) { - getActionSender().sendMessage("@blu@Continue the tutorial from the last step you were on.@bla@"); - } - if (tutorialProgress > 35) { - getPlayerAssistant().sendSidebars(); - Weight.updateWeight(this); - getActionSender().sendMessage("Welcome to @blu@" + Constants.SERVER_NAME + "@bla@ - we are currently in Server Stage v@blu@" + Constants.TEST_VERSION + "@bla@."); - getActionSender().sendMessage("@red@Did you know?@bla@ We're open source! Pull requests are welcome"); - getActionSender().sendMessage("Source code at github.com/dginovker/2006rebotted"); - getActionSender().sendMessage("Join our Discord: discord.gg/4zrA2Wy"); - /*if (!hasBankpin) { //Kind of annoying. Maybe add Random % 10 or something. - getActionSender().sendMessage("You do not have a bank pin it is highly recommended you set one."); - }*/ - } - getPlayerAssistant().firstTimeTutorial(); - getItemAssistant().sendWeapon(playerEquipment[playerWeapon], ItemAssistant.getItemName(playerEquipment[playerWeapon])); - for (int i = 0; i < 25; i++) { - getActionSender().setSkillLevel(i, playerLevel[i], playerXP[i]); - getPlayerAssistant().refreshSkill(i); - } - for (int p = 0; p < getPrayer().PRAYER.length; p++) { // reset - // prayer - // glows - getPrayer().prayerActive[p] = false; - getPlayerAssistant().sendConfig(getPrayer().PRAYER_GLOW[p], 0); - } - lastX = absX; - lastY = absY; - lastH = heightLevel; - if (inWild()) { - WildernessWarning = true; - } - if (splitChat == true) { - getPlayerAssistant().sendConfig(502, 1); - getPlayerAssistant().sendConfig(287, 1); - } else { - getPlayerAssistant().sendConfig(502, 0); - getPlayerAssistant().sendConfig(287, 0); - } - if (isRunning2) { - getPlayerAssistant().sendConfig(504, 1); - getPlayerAssistant().sendConfig(173, 1); - } else { - getPlayerAssistant().sendConfig(504, 0); - getPlayerAssistant().sendConfig(173, 0); - } - - getPlayList().fixAllColors(); - getPlayerAction().setAction(false); - getPlayerAction().canWalk(true); - getPlayerAssistant().handleWeaponStyle(); - MagicTeleports.handleLoginText(this); - accountFlagged = getPlayerAssistant().checkForFlags(); - getPlayerAssistant().sendConfig(108, 0);// resets autocast button - getPlayerAssistant().sendFrame107(); // reset screen - getPlayerAssistant().setChatOptions(0, 0, 0); // reset private - // messaging options - correctCoordinates(); - getActionSender().showOption(4, 0, "Trade With", 3); - getActionSender().showOption(5, 0, "Follow", 4); - getItemAssistant().resetItems(3214); - getItemAssistant().resetBonus(); - getItemAssistant().getBonus(); - getItemAssistant().writeBonus(); - getItemAssistant().setEquipment(playerEquipment[playerHat], 1, - playerHat); - getItemAssistant().setEquipment(playerEquipment[playerCape], 1, - playerCape); - getItemAssistant().setEquipment(playerEquipment[playerAmulet], 1, - playerAmulet); - getItemAssistant().setEquipment(playerEquipment[playerArrows], - playerEquipmentN[playerArrows], playerArrows); - getItemAssistant().setEquipment(playerEquipment[playerChest], 1, - playerChest); - getItemAssistant().setEquipment(playerEquipment[playerShield], 1, - playerShield); - getItemAssistant().setEquipment(playerEquipment[playerLegs], 1, - playerLegs); - getItemAssistant().setEquipment(playerEquipment[playerHands], 1, - playerHands); - getItemAssistant().setEquipment(playerEquipment[playerFeet], 1, - playerFeet); - getItemAssistant().setEquipment(playerEquipment[playerRing], 1, - playerRing); - getItemAssistant().setEquipment(playerEquipment[playerWeapon], - playerEquipmentN[playerWeapon], playerWeapon); - getCombatAssistant().getPlayerAnimIndex(); - getPlayerAssistant().logIntoPM(); - getItemAssistant().addSpecialBar(playerEquipment[playerWeapon]); - saveTimer = Constants.SAVE_TIMER; - saveCharacter = true; - Misc.println("[REGISTERED]: " + playerName + ""); - handler.updatePlayer(this, outStream); - handler.updateNPC(this, outStream); - flushOutStream(); - getPlayerAssistant().clearClanChat(); - getPlayerAssistant().resetFollow(); - LightSources.saveBrightness(this); - getPlayerAssistant().sendAutoRetalitate(); - getCannon().loginCheck(); - } - } - - @Override - public void update() { - synchronized (this) { - handler.updatePlayer(this, outStream); - handler.updateNPC(this, outStream); - flushOutStream(); - } - } - - public void logout() { - logout(false); - } - - public void logout(boolean forceLogout) { - synchronized (this) { - if(Server.trawler.players.contains(this)) { - Server.trawler.players.remove(this); - } - if (getCannon().hasCannon()) { - getCannon().removeObject(cannonX, cannonY); - for(int i = 0; i < Server.cannonsX.length; i++) { - if (Server.cannonsX[i] == cannonX && Server.cannonsY[i] == cannonY) { - Server.cannonsX[i] = 0; - Server.cannonsY[i] = 0; - Server.cannonsO[i] = null; - } - lostCannon = true; - cannonX = -1; - cannonY = -1; - } - } - if (CastleWars.isInCw(this)) { - CastleWars.removePlayerFromCw(this); - } - if (CastleWars.isInCwWait(this)) { - CastleWars.leaveWaitingRoom(this); - } - if (FightPits.getState(this) != null) { - FightPits.removePlayer(this, true); - } - if (PestControl.isInGame(this)) { - PestControl.removePlayerGame(this); - getPlayerAssistant().movePlayer(2657, 2639, 0); - } - if (PestControl.isInPcBoat(this)) { - PestControl.leaveWaitingBoat(this); - getPlayerAssistant().movePlayer(2657, 2639, 0); - } - if(!forceLogout && (underAttackBy > 0 || underAttackBy2 > 0)) { - getActionSender().sendMessage("You can't logout during combat!"); - return; - } - lastLoginDate = getLastLogin(); - lastX = absX; - lastY = absY; - lastH = heightLevel; - CycleEventHandler.getSingleton().stopEvents(this); - if (hasNpc == true) { - getSummon().pickUpClean(this, summonId); - } - if (forceLogout || System.currentTimeMillis() - logoutDelay > 2500) { - if (!isBot) - outStream.createFrame(109); - properLogout = true; - } else { - getActionSender().sendMessage("You must wait a few seconds from being out of combat to logout."); - } - } - } - - - public int packetSize = 0, packetType = -1; - public boolean WildernessWarning = false; - - public void antiFirePotion() { - CycleEventHandler.getSingleton().addEvent(this, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - antiFirePot = false; - getActionSender().sendMessage("Your resistance to dragon fire has worn off."); - container.stop(); - } - @Override - public void stop() { - - } - }, 200); - } - - public boolean isBusy = false; - - public boolean checkBusy() { - return isBusy; - } - - public void setBusy(boolean isBusy) { - this.isBusy = isBusy; - } - - public boolean isBusy() { - return isBusy; - } - - public int getLastLogin() { - Calendar cal = new GregorianCalendar(); - int day = cal.get(Calendar.DAY_OF_MONTH); - int month = cal.get(Calendar.MONTH); - int year = cal.get(Calendar.YEAR); - return (year * 10000) + (month * 100) + day; - } - - @Override - public void updateWalkEntities() { - if (inWild() && !inCw()) { - int modY = absY > 6400 ? absY - 6400 : absY; - wildLevel = (modY - 3520) / 8 + 1; - getPlayerAssistant().walkableInterface(197); - if (Constants.SINGLE_AND_MULTI_ZONES) { - if (inMulti()) { - getPlayerAssistant().sendFrame126("@yel@Level: " + wildLevel, - 199); - } else { - getPlayerAssistant().sendFrame126("@yel@Level: " + wildLevel, - 199); - } - } else { - getActionSender().multiWay(-1); - getPlayerAssistant().sendFrame126("@yel@Level: " + wildLevel, 199); - } - getActionSender().showOption(3, 0, "Attack", 1); - } else if (inDuelArena()) { - getPlayerAssistant().walkableInterface(201); - if (duelStatus == 5) { - getActionSender().showOption(3, 0, "Attack", 1); - } else { - getActionSender().showOption(3, 0, "Challenge", 1); - } - } else if (getPlayerAssistant().inPitsWait()) { - getActionSender().showOption(3, 0, "Null", 1); - } else if(Server.trawler.players.contains(this)) { - getPlayerAssistant().walkableInterface(11908); - } else if (isInBarrows() || isInBarrows2()) { - getPlayerAssistant().sendFrame126("Kill Count: " + barrowsKillCount, 4536); - getPlayerAssistant().walkableInterface(4535); - } else if (inCw() || inPits) { - getActionSender().showOption(3, 0, "Attack", 1); - } else { - getPlayerAssistant().sendMapState(0); - getPlayerAssistant().walkableInterface(-1); - getActionSender().showOption(3, 0, "Null", 1); - } - } - - public Client getClient(String name) { - name = name.toLowerCase(); - for (int i = 0; i < Constants.MAX_PLAYERS; i++) { - if (validClient(i)) { - Client client = getClient(i); - if (client.playerName.toLowerCase().equalsIgnoreCase(name)) { - return client; - } - } - } - return null; - } - - public Client getClient(int id) { - return (Client) PlayerHandler.players[id]; - } - - public boolean validClient(int id) { - if (id < 0 || id > Constants.MAX_PLAYERS) { - return false; - } - return validClient(getClient(id)); - } - - public boolean validClient(String name) { - return validClient(getClient(name)); - } - - public boolean validClient(Client client) { - return client != null && !client.disconnected; - } - - @Override - public void process() { - - if (playerEnergy < 100 && System.currentTimeMillis() - lastIncrease >= getPlayerAssistant().raiseTimer()) { - playerEnergy += 1; - lastIncrease = System.currentTimeMillis(); - } - if (playerEnergy <= 0 && isRunning2) { - isRunning2 = false; - getPlayerAssistant().sendConfig(504, 0); - getPlayerAssistant().sendConfig(173, 0); - } - getPlayerAssistant().writeEnergy(); - - if (System.currentTimeMillis() - specDelay > Constants.INCREASE_SPECIAL_AMOUNT) { - specDelay = System.currentTimeMillis(); - if (specAmount < 10) { - specAmount += .5; - if (specAmount > 10) { - specAmount = 10; - } - getItemAssistant().addSpecialBar(playerEquipment[playerWeapon]); - } - } - - if (followId > 0) { - getPlayerAssistant().followPlayer(); - } else if (followId2 > 0) { - getPlayerAssistant().followNpc(); - } - - if (System.currentTimeMillis() - duelDelay > 800 && duelCount > 0) { - if (duelCount != 1) { - forcedChat("" + --duelCount); - duelDelay = System.currentTimeMillis(); - } else { - damageTaken = new int[Constants.MAX_PLAYERS]; - forcedChat("FIGHT!"); - duelCount = 0; - } - } - - PrayerDrain.handlePrayerDrain(this); - - if (System.currentTimeMillis() - singleCombatDelay > 3300) { - underAttackBy = 0; - } - if (System.currentTimeMillis() - singleCombatDelay2 > 3300) { - underAttackBy2 = 0; - } - - if (System.currentTimeMillis() - restoreStatsDelay > 60000) { - restoreStatsDelay = System.currentTimeMillis(); - for (int level = 0; level < playerLevel.length; level++) { - if (playerLevel[level] < getLevelForXP(playerXP[level])) { - if (level != 5) { // prayer doesn't restore - playerLevel[level] += 1; - getActionSender().setSkillLevel(level, - playerLevel[level], playerXP[level]); - getPlayerAssistant().refreshSkill(level); - } - } else if (playerLevel[level] > getLevelForXP(playerXP[level])) { - playerLevel[level] -= 1; - getActionSender().setSkillLevel(level, - playerLevel[level], playerXP[level]); - getPlayerAssistant().refreshSkill(level); - } - } - } - - if (!hasMultiSign && inMulti()) { - hasMultiSign = true; - getActionSender().multiWay(1); - } - - if (hasMultiSign && !inMulti()) { - hasMultiSign = false; - getActionSender().multiWay(-1); - } - - if (skullTimer > 0) { - skullTimer--; - if (skullTimer == 1) { - isSkulled = false; - attackedPlayers.clear(); - headIconPk = -1; - skullTimer = -1; - getPlayerAssistant().requestUpdates(); - } - } - - if (isDead && respawnTimer == -6) { - getPlayerAssistant().applyDead(); - } - - if (respawnTimer == 7) { - respawnTimer = -6; - getPlayerAssistant().giveLife(); - } else if (respawnTimer == 12) { - respawnTimer--; - startAnimation(0x900); - poisonDamage = -1; - } - - if (respawnTimer > -6) { - respawnTimer--; - } - - if (freezeTimer > -6) { - freezeTimer--; - if (frozenBy > 0) { - if (PlayerHandler.players[frozenBy] == null) { - freezeTimer = -1; - frozenBy = -1; - } else if (!goodDistance(absX, absY, - PlayerHandler.players[frozenBy].absX, - PlayerHandler.players[frozenBy].absY, 20)) { - freezeTimer = -1; - frozenBy = -1; - } - } - } - - if (hitDelay > 0) { - hitDelay--; - } - - if (teleTimer > 0) { - teleTimer--; - if (!isDead) { - if (teleTimer == 1 && newLocation > 0) { - teleTimer = 0; - getPlayerAssistant().changeLocation(); - } - if (teleTimer == 4) { - teleTimer--; - getPlayerAssistant().processTeleport(); - } - if (teleTimer == 7 && teleGfx > 0) { - teleTimer--; - gfx100(teleGfx); - } - } else { - teleTimer = 0; - } - } - - if (hitDelay == 1) { - if (oldNpcIndex > 0) { - getCombatAssistant().delayedHit(oldNpcIndex); - } - if (oldPlayerIndex > 0) { - getCombatAssistant().playerDelayedHit(oldPlayerIndex); - } - } - - combatAssistant.attackingNpcTick(); - combatAssistant.attackingPlayerTick(); - - if (attackTimer > 0) { - attackTimer--; - } - - if (attackTimer == 1) { - if (npcIndex > 0 && clickNpcType == 0) { - getCombatAssistant().attackNpc(npcIndex); - } - if (playerIndex > 0) { - getCombatAssistant().attackPlayer(playerIndex); - } - } else if (attackTimer <= 0 && (npcIndex > 0 || playerIndex > 0)) { - if (npcIndex > 0) { - attackTimer = 0; - getCombatAssistant().attackNpc(npcIndex); - } else if (playerIndex > 0) { - attackTimer = 0; - getCombatAssistant().attackPlayer(playerIndex); - } - } - - if (timeOutCounter > Constants.TIMEOUT) { - if (!isBot) - logout(true); - } - - timeOutCounter++; - } - - public void queueMessage(Packet arg1) { - // synchronized(queuedPackets) { - // if (arg1.getId() != 41) - queuedPackets.add(arg1); - // else - // processPacket(arg1); - // } - } - - @Override - public synchronized boolean processQueuedPackets() { - Packet p = null; - synchronized (queuedPackets) { - p = queuedPackets.poll(); - } - if (p == null) { - return false; - } - inStream.currentOffset = 0; - packetType = p.getId(); - packetSize = p.getLength(); - inStream.buffer = p.getData(); - if (packetType > 0) { - // getPacketDispatcher().sendMessage("PacketType: " + packetType); - PacketHandler.processPacket(this, packetType, packetSize); - } - timeOutCounter = 0; - return true; - } - - public synchronized boolean processPacket(Packet p) { - synchronized (this) { - if (p == null) { - return false; - } - inStream.currentOffset = 0; - packetType = p.getId(); - packetSize = p.getLength(); - inStream.buffer = p.getData(); - if (packetType > 0) { - // getPacketDispatcher().sendMessage("PacketType: " + - // packetType); - PacketHandler.processPacket(this, packetType, packetSize); - } - timeOutCounter = 0; - return true; - } - } - - public int soundVolume = 10; - - /** - * Outputs a send packet which is built from the data params provided - * towards a connected user client channel. - * - * @param id - * The identification number of the sound. - * @param volume - * The volume amount of the sound (1-100) - * @param delay - * The delay (0 = immediately 30 = 1/2cycle 60=full cycle) before - * the sound plays. - */ - public void sendSound(int id, int volume, int delay) { - try { - outStream.createFrameVarSize(174); - outStream.writeWord(id); - outStream.writeByte(volume); - outStream.writeWord(delay); - updateRequired = true; - appearanceUpdateRequired = true; - outStream.endFrameVarSize(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * Outputs a send packet which is built from the data params provided - * towards a connected user client channel. - * - * @param id - * The identification number of the sound. - * @param volume - * The volume amount of the sound (1-100) - */ - public void sendSound(int id, int volume) { - sendSound(id, volume, 0); - } - - /** - * Outputs a send packet which is built from the data params provided - * towards a connected user client channel. - * - * @param id - * The identification number of the sound. - */ - public void sendSound(int id) { - sendSound(id, 100);// pretty sure it's 100 just double check - } - - /** - * Play sounds - * - * @param SOUNDID - * : ID - * @param delay - * : SOUND DELAY - */ - public void playSound(Client c, int SOUNDID, int delay) { - if (Constants.SOUND) { - if (soundVolume <= -1) { - return; - } - /** - * Deal with regions We dont need to play this again because you are - * in the current region - */ - if (c != null) { - if (c.soundVolume >= 0) { - if (c.goodDistance(c.absX, c.absY, absX, absY, 2)) { - System.out.println("Playing sound " + c.playerName - + ", Id: " + SOUNDID + ", Vol: " - + c.soundVolume); - if (c.getOutStream() != null) { - c.getOutStream().createFrame(174); - c.getOutStream().writeWord(SOUNDID); - c.getOutStream().writeByte(c.soundVolume); - c.getOutStream().writeWord( /* delay */0); - } - } - } - } - - } - } - - public void correctCoordinates() { - if (inPcGame()) { - getPlayerAssistant().movePlayer(2657, 2639, 0); - if (FightPitsArea()) { - getPlayerAssistant().movePlayer(2399, 5178, 0); - if (inFightCaves()) { - getDialogueHandler().sendDialogues(101, 2617); - getPlayerAssistant().movePlayer(absX, absY, playerId * 4); - getActionSender().sendMessage("Your wave will start in 10 seconds."); - CycleEventHandler.getSingleton().addEvent(this, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - Server.fightCaves.spawnNextWave((Client) PlayerHandler.players[playerId]); - container.stop(); - } - @Override - public void stop() { - - } - }, 16); - } - } - } - } - - public void trawlerFade(final int x, final int y, final int height) { - if (System.currentTimeMillis() - lastAction > 5000) { - lastAction = System.currentTimeMillis(); - resetWalkingQueue(); - CycleEventHandler.getSingleton().addEvent(this, new CycleEvent() { - int tStage = 5; - public void execute(CycleEventContainer container) { - if (tStage == 5) { - getPlayerAssistant().showInterface(18460); - } - if (tStage == 4) { - getPlayerAssistant().movePlayer(x, y, height); - getPlayerAssistant().resetAnimationsToPrevious(); - appearanceUpdateRequired = true; - } - if (tStage == 3) { - getPlayerAssistant().showInterface(18452); - } - if (tStage == 1) { - container.stop(); - return; - } - if (tStage > 0) { - tStage--; - } - } - public void stop() { - getPlayerAssistant().closeAllWindows(); - tStage = 0; - } - }, 1); - } - } - - public void fade(final int x, final int y, final int height) { - if (System.currentTimeMillis() - lastAction > 5000) { - lastAction = System.currentTimeMillis(); - resetWalkingQueue(); - CycleEventHandler.getSingleton().addEvent(this, new CycleEvent() { - int tStage = 6; - public void execute(CycleEventContainer container) { - if (tStage == 6) { - getPlayerAssistant().showInterface(18460); - } - if (tStage == 5) { - getPlayerAssistant().movePlayer(x, y, height); - updateRequired = true; - appearanceUpdateRequired = true; - } - if (tStage == 4) { - getPlayerAssistant().showInterface(18452); - } - if (tStage == 1) { - container.stop(); - return; - } - if (tStage > 0) { - tStage--; - } - } - public void stop() { - getPlayerAssistant().closeAllWindows(); - tStage = 0; - } - }, 1); - } - } - - /** - * The option the player clicked - */ - - private int optionClicked = -1; - - /** - * @return the option clicked - */ - - public int getOptionClicked() { - return optionClicked; - } - - /** - * Sets the option clicked - * - * @param i - * the option clicked - */ - - public void setOptionClicked(int i) { - optionClicked = i; - } - - public String statedInterface = ""; - - public String getStatedInterface() { - return statedInterface; - } - - public void setStatedInterface(String statedInterface) { - this.statedInterface = statedInterface; - } - -} diff --git a/2006Redone Server/src/redone/game/players/Position.java b/2006Redone Server/src/redone/game/players/Position.java deleted file mode 100644 index 83b50fd1..00000000 --- a/2006Redone Server/src/redone/game/players/Position.java +++ /dev/null @@ -1,37 +0,0 @@ -package redone.game.players; - -/** - * Position - * @author Andrew (I'm A Boss on Rune-Server, Mr Extremez on Moparscape & Runelocus) - */ - -public class Position { - - public static boolean checkPosition(Client client, int x, int y, int h) { - return client.absX == x && client.absY == y && client.heightLevel == h; - } - - public static boolean checkPlayerX(Client client, int x, int h) { - return client.absX == x && client.heightLevel == h; - } - - public static boolean checkPlayerY(Client client, int y, int h) { - return client.absY == y && client.heightLevel == h; - } - - public static boolean checkPlayerH(Client client, int h) { - return client.heightLevel == h; - } - - public static boolean checkObject(Client client, int x, int y, int h) { - return client.objectX == x && client.objectY == y && client.heightLevel == h; - } - - public static boolean checkObjectX(Client client, int x, int h) { - return client.objectX == x && client.heightLevel == h; - } - - public static boolean checkObjectY(Client client, int y, int h) { - return client.objectY == y && client.heightLevel == h; - } -} diff --git a/2006Redone Server/src/redone/game/players/antimacro/AntiBotting.java b/2006Redone Server/src/redone/game/players/antimacro/AntiBotting.java deleted file mode 100644 index b4c23d98..00000000 --- a/2006Redone Server/src/redone/game/players/antimacro/AntiBotting.java +++ /dev/null @@ -1,30 +0,0 @@ -package redone.game.players.antimacro; - -import redone.game.players.Client; -import redone.util.Misc; - -/** - * Anti bot - * @author Andrew - */ - -public class AntiBotting { - - public static void botCheckInterface(Client client) { - /*int x = Misc.random(190); - int y = Misc.random(190); - - client.getActionSender().setInterfaceOffset(x, y, 6015); - client.getActionSender().setInterfaceOffset(x, y, 6016); - client.getActionSender().setInterfaceOffset(x, y, 6017); - client.getActionSender().setInterfaceOffset(x, y, 6018); - client.getActionSender().setInterfaceOffset(x, y, 6019); - client.getActionSender().setInterfaceOffset(x-18, y, 6020); - client.getPlayerAssistant().sendFrame126("I'm not a bot!", 6020); - client.getPlayerAssistant().showInterface(6014); - client.isBotting = true; - client.getActionSender().sendMessage("@red@Are you a bot?@bla@");*/ - client.isBotting = false; - } - -} diff --git a/2006Redone Server/src/redone/game/shops/ShopHandler.java b/2006Redone Server/src/redone/game/shops/ShopHandler.java deleted file mode 100644 index 54949106..00000000 --- a/2006Redone Server/src/redone/game/shops/ShopHandler.java +++ /dev/null @@ -1,239 +0,0 @@ -package redone.game.shops; - -import java.io.BufferedReader; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.IOException; - -import redone.game.bots.Bot; -import redone.game.players.Client; -import redone.game.players.PlayerHandler; -import redone.util.Misc; - -/** - * Shops - **/ - -public class ShopHandler { - - public static int MaxShops = 400; - public static int MaxShopItems = 40; - public static int MaxShowDelay = 2; - public static int MaxSpecShowDelay = 60; - public static int TotalShops = 0; - public static int[][] ShopItems = new int[MaxShops][MaxShopItems]; - public static int[][] ShopItemsN = new int[MaxShops][MaxShopItems]; - public static int[][] ShopItemsDelay = new int[MaxShops][MaxShopItems]; - public static int[][] ShopItemsSN = new int[MaxShops][MaxShopItems]; - public static int[] ShopItemsStandard = new int[MaxShops]; - public static String[] ShopName = new String[MaxShops]; - public static int[] ShopSModifier = new int[MaxShops]; - public static int[] ShopBModifier = new int[MaxShops]; - public static long[][] ShopItemsRestock = new long[MaxShops][MaxShopItems]; - - public ShopHandler() { - for (int i = 0; i < MaxShops; i++) { - for (int j = 0; j < MaxShopItems; j++) { - ResetItem(i, j); - ShopItemsSN[i][j] = 0; - } - ShopItemsStandard[i] = 0; - ShopSModifier[i] = 0; - ShopBModifier[i] = 0; - ShopName[i] = ""; - } - TotalShops = 0; - loadShops("shops.cfg"); - } - - public static int restockTimeItem(int itemId) { - switch(itemId) { - default: - return 1000; - } - - } - - public void process() { - boolean DidUpdate = false; - for (int i = 1; i <= TotalShops; i++) { - if (ShopBModifier[i] == 0 || ShopSModifier[i] == 0) continue; - for (int j = 0; j < MaxShopItems; j++) { - if (ShopItems[i][j] > 0) { - if (ShopItemsDelay[i][j] >= MaxShowDelay) { - if (j <= ShopItemsStandard[i] && ShopItemsN[i][j] <= ShopItemsSN[i][j]) { - if (ShopItemsN[i][j] < ShopItemsSN[i][j] && System.currentTimeMillis() - ShopItemsRestock[i][j] > restockTimeItem(ShopItems[i][j])) { - ShopItemsN[i][j] += 1; - ShopItemsDelay[i][j] = 1; - ShopItemsDelay[i][j] = 0; - DidUpdate = true; - ShopItemsRestock[i][j] = System.currentTimeMillis(); - } - } else if (ShopItemsDelay[i][j] >= MaxSpecShowDelay) { - DiscountItem(i, j); - ShopItemsDelay[i][j] = 0; - DidUpdate = true; - } - refreshShop(i); - } - ShopItemsDelay[i][j]++; - } - } - if (DidUpdate) { - for (int k = 1; k < PlayerHandler.players.length; k++) { - if (PlayerHandler.players[k] != null) { - if (PlayerHandler.players[k].isShopping && PlayerHandler.players[k].myShopId == i) { - PlayerHandler.players[k].updateShop = true; - PlayerHandler.players[k].updateshop(i); - } - } - } - DidUpdate = false; - } - } - } - - private void DiscountItem(int ShopID, int ArrayID) { - ShopItemsN[ShopID][ArrayID] -= 1; - if (ShopItemsN[ShopID][ArrayID] <= 0) { - ShopItemsN[ShopID][ArrayID] = 0; - ResetItem(ShopID, ArrayID); - } - } - - private static void ResetItem(int ShopID, int ArrayID) { - ShopItems[ShopID][ArrayID] = 0; - ShopItemsN[ShopID][ArrayID] = 0; - ShopItemsDelay[ShopID][ArrayID] = 0; - } - - - public boolean loadShops(String FileName) { - String line = ""; - String token = ""; - String token2 = ""; - String token2_2 = ""; - String[] token3 = new String[(MaxShopItems * 2)]; - boolean EndOfFile = false; - BufferedReader characterfile = null; - try { - characterfile = new BufferedReader(new FileReader("./data/cfg/" + FileName)); - } catch (FileNotFoundException fileex) { - Misc.println(FileName + ": file not found."); - return false; - } - try { - line = characterfile.readLine(); - } catch (IOException ioexception) { - Misc.println(FileName + ": error loading file."); - } - while (EndOfFile == false && line != null) { - line = line.trim(); - int spot = line.indexOf("="); - if (spot > -1) { - token = line.substring(0, spot); - token = token.trim(); - token2 = line.substring(spot + 1); - token2 = token2.trim(); - token2_2 = token2.replaceAll("\t+", "\t"); - token3 = token2_2.split("\t"); - if (token.equals("shop")) { - int ShopID = Integer.parseInt(token3[0]); - ShopName[ShopID] = token3[1].replaceAll("_", " "); - ShopSModifier[ShopID] = Integer.parseInt(token3[2]); - ShopBModifier[ShopID] = Integer.parseInt(token3[3]); - for (int i = 0; i < ((token3.length - 4) / 2); i++) { - if (token3[(4 + (i * 2))] != null) { - ShopItems[ShopID][i] = (Integer.parseInt(token3[(4 + (i * 2))]) + 1); - ShopItemsN[ShopID][i] = Integer.parseInt(token3[(5 + (i * 2))]); - ShopItemsSN[ShopID][i] = Integer.parseInt(token3[(5 + (i * 2))]); - ShopItemsStandard[ShopID]++; - } else { - break; - } - } - TotalShops++; - } - } else { - if (line.equals("[ENDOFSHOPLIST]")) { - try { - characterfile.close(); - } catch (IOException ioexception) { - } - } - } - try { - line = characterfile.readLine(); - } catch (IOException ioexception1) { - EndOfFile = true; - } - } - try { - characterfile.close(); - } catch (IOException ioexception) { - } - return false; - } - - public static void createPlayerShop(Client player){ - int id = getEmptyShop(); - player.myShopId = id; - ShopSModifier[id] = 0; - ShopBModifier[id] = 0; - ShopName[id] = player.properName + "'s Store"; - for (int i = 0; i < MaxShopItems; i++){ - ShopItems[id][i] = player.bankItems[i]; - ShopItemsN[id][i] = player.bankItemsN[i]; - ShopItemsSN[id][i] = 0; - ShopItemsDelay[id][i] = 0; - } - TotalShops++; - } - - private static int getEmptyShop(){ - for (int i = 0; i < MaxShops; i++) { - if (ShopName[i] == "") return i; - } - return -1; - } - - public static void refreshShop(int shop_id){ - // We don't want to remove items that should be kept in stock - for (int j = ShopItemsStandard[shop_id]; j < MaxShopItems; j++) { - if (ShopItemsN[shop_id][j] <= 0) { - ResetItem(shop_id, j); - int next = j + 1; - if (next < MaxShopItems && ShopItemsN[shop_id][next] > 0) { - ShopItems[shop_id][j] = ShopItems[shop_id][next]; - ShopItemsN[shop_id][j] = ShopItemsN[shop_id][next]; - ShopItemsDelay[shop_id][j] = ShopItemsDelay[shop_id][next]; - ResetItem(shop_id, next); - } - } - } - } - - public static int getStock(int shop_id, int item_id){ - item_id++; - for (int j = 0; j < MaxShopItems; j++) { - if (ShopItems[shop_id][j] == item_id) { - return ShopItemsN[shop_id][j]; - } - } - return -1; - } - - public static void buyItem(int shop_id, int item_id, int amount){ - item_id++; - for (int j = 0; j < MaxShopItems; j++) { - if (ShopItems[shop_id][j] == item_id) { - ShopItemsN[shop_id][j] -= amount; - } - } - refreshShop(shop_id); - } - - public static boolean playerOwnsStore(int shop_id, Client player){ - return ShopSModifier[shop_id] == 0 && ShopBModifier[shop_id] == 0 && ShopName[shop_id].equalsIgnoreCase(player.properName + "'s Store"); - } -} diff --git a/2006Redone Server/src/redone/net/packets/PacketType.java b/2006Redone Server/src/redone/net/packets/PacketType.java deleted file mode 100644 index 286f161d..00000000 --- a/2006Redone Server/src/redone/net/packets/PacketType.java +++ /dev/null @@ -1,8 +0,0 @@ -package redone.net.packets; - -import redone.game.players.Client; - -public interface PacketType { - - public void processPacket(Client c, int packetType, int packetSize); -} diff --git a/2006Redone Server/src/redone/net/packets/impl/ChallengePlayer.java b/2006Redone Server/src/redone/net/packets/impl/ChallengePlayer.java deleted file mode 100644 index af3db04f..00000000 --- a/2006Redone Server/src/redone/net/packets/impl/ChallengePlayer.java +++ /dev/null @@ -1,36 +0,0 @@ -package redone.net.packets.impl; - -import redone.game.players.Client; -import redone.game.players.PlayerHandler; -import redone.net.packets.PacketType; - -/** - * Challenge Player - **/ -public class ChallengePlayer implements PacketType { - - @Override - public void processPacket(Client c, int packetType, int packetSize) { - switch (packetType) { - case 128: - int answerPlayer = c.getInStream().readUnsignedWord(); - if(PlayerHandler.players[answerPlayer] == null || answerPlayer == c.playerId) - return; - - if (c.duelingArena() || c.duelStatus == 5) { - c.getActionSender().sendMessage("You can't challenge inside the arena!"); - return; - } - - if (c.isBotting == true) { - c.getActionSender().sendMessage("You can't challenge players, until you confirm you are not botting."); - c.getActionSender().sendMessage("If you need to you can type ::amibotting, to see if your botting."); - return; - } - if (c.inDuelArena()) { - c.getDueling().requestDuel(answerPlayer); - } - break; - } - } -} diff --git a/2006Redone Server/src/redone/net/packets/impl/ChangeRegions.java b/2006Redone Server/src/redone/net/packets/impl/ChangeRegions.java deleted file mode 100644 index 728b91b7..00000000 --- a/2006Redone Server/src/redone/net/packets/impl/ChangeRegions.java +++ /dev/null @@ -1,34 +0,0 @@ -package redone.net.packets.impl; - -import redone.Constants; -import redone.Server; -import redone.game.content.music.Music; -import redone.game.globalworldobjects.Doors; -import redone.game.players.Client; -import redone.net.packets.PacketType; -import redone.world.GlobalDropsHandler; - -/** - * Change Regions - */ -public class ChangeRegions implements PacketType { - - @Override - public void processPacket(Client c, int packetType, int packetSize) { - if (Constants.SOUND && c.musicOn) { - Music.playMusic(c); - } - Server.objectHandler.updateObjects(c);//testing - Doors.getSingleton().load(); - Server.itemHandler.reloadItems(c); - Server.objectManager.loadObjects(c); - GlobalDropsHandler.reset(c); - c.getPlayerAssistant().removeObjects();// testing - c.saveFile = true; - if (c.skullTimer > 0) { - c.isSkulled = true; - c.headIconPk = 0; - c.getPlayerAssistant().requestUpdates(); - } - } -} diff --git a/2006Redone Server/src/redone/net/packets/impl/ClanChat.java b/2006Redone Server/src/redone/net/packets/impl/ClanChat.java deleted file mode 100644 index b94e1bb1..00000000 --- a/2006Redone Server/src/redone/net/packets/impl/ClanChat.java +++ /dev/null @@ -1,20 +0,0 @@ -package redone.net.packets.impl; - -import redone.Server; -import redone.game.players.Client; -import redone.net.packets.PacketType; -import redone.util.Misc; - -/** - * Chat - **/ -public class ClanChat implements PacketType { - - @Override - public void processPacket(Client c, int packetType, int packetSize) { - String textSent = Misc.longToPlayerName2(c.getInStream().readQWord()); - textSent = textSent.replaceAll("_", " "); - // c.sendMessage(textSent); - Server.clanChat.handleClanChat(c, textSent); - } -} diff --git a/2006Redone Server/src/redone/net/packets/impl/ClickObject.java b/2006Redone Server/src/redone/net/packets/impl/ClickObject.java deleted file mode 100644 index 7a8f53b6..00000000 --- a/2006Redone Server/src/redone/net/packets/impl/ClickObject.java +++ /dev/null @@ -1,493 +0,0 @@ -package redone.net.packets.impl; - -import redone.Server; -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.content.minigames.castlewars.CastleWarObjects; -import redone.game.content.minigames.castlewars.CastleWars; -import redone.game.content.skills.core.Mining; -import redone.game.content.skills.core.Woodcutting; -import redone.game.content.skills.thieving.Stalls; -import redone.game.globalworldobjects.Doors; -import redone.game.npcs.NpcHandler; -import redone.game.objects.Objects; -import redone.game.players.Client; -import redone.net.packets.PacketType; -import redone.util.Misc; -import redone.world.clip.ObjectDef; -import redone.world.clip.Region; - -import java.util.function.Consumer; - -public class ClickObject implements PacketType { - - public static final int FIRST_CLICK = 132, SECOND_CLICK = 252, - THIRD_CLICK = 70, FOURTH_CLICK = 234; - - public void onObjectReached(Client player, Consumer consumer) { - if (System.currentTimeMillis() - player.clickDelay < 300) - return; - player.clickDelay = System.currentTimeMillis(); - - final int objectX = player.objectX; - final int objectY = player.objectY; - final int objectId = player.objectId; - - Objects object = Region.getObject(objectId, objectX, objectY, player.heightLevel); - if (object == null) { - // Since most content is coded poorly we will have to assume the object is valid - // but we won't know the face direction, so some objects will behave incorrectly - // if the object size is not equal on both axes and the face - // is not set to zero. The proper fix would be when an object is removed or added - // they are added into the region configuration properly so we can retrieve - // the object at runtime. This will suffice for now. - object = new Objects(objectId, objectX, objectY, player.heightLevel, 0, 10, 0); - } - - int[] size = object.getObjectSize(); - - CycleEvent objectWalkToEvent = new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (objectX != player.objectX || objectY != player.objectY || objectId != player.objectId) { - container.stop(); - return; - } - - int x = player.absX; - int y = player.absY; - int xMin = objectX - 1; - int xMax = xMin + size[0] + 1; - int yMin = objectY - 1; - int yMax = yMin + size[1] + 1; - - if (x >= xMin && y >= yMin && x <= xMax && y <= yMax) { - consumer.accept(player); - container.stop(); - } - } - - @Override - public void stop() {} - }; - - player.startCurrentTask(1, objectWalkToEvent); - objectWalkToEvent.execute(player.getCurrentTask()); // cheap hax for instant event execution, since we don't support it - } - - @Override - public void processPacket(final Client player, int packetType, int packetSize) { - player.clickObjectType = player.objectX = player.objectId = player.objectY = 0; - player.getPlayerAssistant().resetFollow(); - player.getCombatAssistant().resetPlayerAttack(); - player.getPlayerAssistant().requestUpdates(); - player.endCurrentTask(); - switch (packetType) { - - case FIRST_CLICK: - player.objectX = player.getInStream().readSignedWordBigEndianA(); - player.objectId = player.getInStream().readUnsignedWord(); - player.objectY = player.getInStream().readUnsignedWordA(); - onObjectReached(player, (p) -> completeObjectClick(p, 1)); - break; - - case SECOND_CLICK: - player.objectId = player.getInStream().readUnsignedWordBigEndianA(); - player.objectY = player.getInStream().readSignedWordBigEndian(); - player.objectX = player.getInStream().readUnsignedWordA(); - onObjectReached(player, (p) -> completeObjectClick(p, 2)); - break; - - case THIRD_CLICK: // 'F' - player.objectX = player.getInStream().readSignedWordBigEndian(); - player.objectY = player.getInStream().readUnsignedWord(); - player.objectId = player.getInStream().readUnsignedWordBigEndianA(); - onObjectReached(player, (p) -> completeObjectClick(p, 3)); - break; - - - case FOURTH_CLICK: - player.objectX = player.getInStream().readSignedWordBigEndianA(); - player.objectId = player.getInStream().readUnsignedWordA(); - player.objectY = player.getInStream().readUnsignedWordBigEndianA(); - onObjectReached(player, (p) -> completeObjectClick(p, 4)); - break; - } - } - - public void completeObjectClick(final Client player, int objectOption) { - player.turnPlayerTo(player.objectX, player.objectY); - - switch (objectOption) { - case 1: - if (player.playerRights == 3 || player.debugMode) { - player.getActionSender().sendMessage("ObjectId: " + player.objectId + " ObjectX: " + player.objectX + " ObjectY: " + player.objectY + " Objectclick = 1, Xoff: " + (player.getX() - player.objectX) + " Yoff: " + (player.getY() - player.objectY)); - } - - //todo: check if it's a door before fire handle - Doors.getSingleton().handleDoor(player.objectId, player.objectX, player.objectY, player.heightLevel, player); - - /*if (client.performingAction) { - return; - }*/ - - if (Stalls.isObject(player.objectId)) { - Stalls.attemptStall(player, player.objectId, player.objectX, player.objectX); - return; - } - - if (player.teleTimer > 0) { - player.getActionSender().sendMessage( - "You cannot use objects while teleporting."); - return; - } - if (Math.abs(player.getX() - player.objectX) > 25 || Math.abs(player.getY() - player.objectY) > 25) { - player.resetWalkingQueue(); - break; - } - switch (player.objectId) { - case 1276: - Woodcutting.startWoodcutting(player, 0, player.objectX, player.objectY, player.clickObjectType); - break; - case 1278: - Woodcutting.startWoodcutting(player, 1, player.objectX, player.objectY, player.clickObjectType); - break; - case 1286: - Woodcutting.startWoodcutting(player, 2, player.objectX, player.objectY, player.clickObjectType); - break; - case 1281: - Woodcutting.startWoodcutting(player, 3, player.objectX, player.objectY, player.clickObjectType); - break; - case 1308: - Woodcutting.startWoodcutting(player, 4, player.objectX, player.objectY, player.clickObjectType); - break; - case 5552: - Woodcutting.startWoodcutting(player, 5, player.objectX, player.objectY, player.clickObjectType); - break; - case 1307: - Woodcutting.startWoodcutting(player, 6, player.objectX, player.objectY, player.clickObjectType); - break; - case 1309: - Woodcutting.startWoodcutting(player, 7, player.objectX, player.objectY, player.clickObjectType); - break; - case 1306: - Woodcutting.startWoodcutting(player, 8, player.objectX, player.objectY, player.clickObjectType); - break; - case 5551: - Woodcutting.startWoodcutting(player, 9, player.objectX, player.objectY, player.clickObjectType); - break; - case 5553: - Woodcutting.startWoodcutting(player, 10, player.objectX, player.objectY, player.clickObjectType); - break; - case 3033: - Woodcutting.startWoodcutting(player, 11, player.objectX, player.objectY, player.clickObjectType); - break; - case 3037: - Woodcutting.startWoodcutting(player, 12, player.objectX, player.objectY, player.clickObjectType); - break; - case 1282: - Woodcutting.startWoodcutting(player, 13, player.objectX, player.objectY, player.clickObjectType); - break; - case 1383: - Woodcutting.startWoodcutting(player, 14, player.objectX, player.objectY, player.clickObjectType); - break; - case 2023: - Woodcutting.startWoodcutting(player, 15, player.objectX, player.objectY, player.clickObjectType); - break; - case 1319: - Woodcutting.startWoodcutting(player, 16, player.objectX, player.objectY, player.clickObjectType); - break; - case 1318: - Woodcutting.startWoodcutting(player, 17, player.objectX, player.objectY, player.clickObjectType); - break; - case 1315: - Woodcutting.startWoodcutting(player, 18, player.objectX, player.objectY, player.clickObjectType); - break; - case 1316: - Woodcutting.startWoodcutting(player, 19, player.objectX, player.objectY, player.clickObjectType); - break; - case 1332: - Woodcutting.startWoodcutting(player, 20, player.objectX, player.objectY, player.clickObjectType); - break; - - case 1292: - if (player.spiritTree == false && player.clickedTree == true) { - player.getActionSender().sendMessage("You have already spawned a tree spirit."); - return; - } - if (player.spiritTree == false && player.clickedTree == false) { - player.getActionSender().sendMessage("You attempt to chop the tree, and a tree spirit appears."); - NpcHandler.spawnNpc(player, 655, player.getX(), player.getY(), 0, 0, 225, 20, 80, 80, true, false); - player.clickedTree = true; - } else if (player.spiritTree == true) { - Woodcutting.startWoodcutting(player, 21, player.objectX, player.objectY, player.clickObjectType); - } - break; - - case 1294: - case 1293: - case 1317: - player.getPlayerAssistant().spiritTree(); - break; - - case 2164: - case 2165: - Server.trawler.fixNet(player); - break; - - case 4462: - case 4460: - case 4461: - case 4463: - case 4464: - case 4459: - if (!CastleWars.isInCw(player)) { - player.getActionSender().sendMessage("You have to be in castle wars to use these objects."); - CastleWars.resetPlayer(player); - return; - } - CastleWarObjects.handleObject(player, player.objectId, player.objectX, player.objectY); - break; - - case 2513: - player.getRangersGuild().fireAtTarget(); - break; - - case 8930: - player.fade(1975, 4409, 3); - break; - case 8929: - player.fade(2442, 10147, 0); - break; - - case 1568: - if (player.objectX == 2399 && player.objectY == 3099) { - player.getActionSender() - .object(9472, 2399, 3099, 0, 10); - } - if (player.objectX == 2400 && player.objectY == 3108) { - player.getActionSender() - .object(9472, 2400, 3108, 2, 10); - } - break; - - case 4437: - if (player.getItemAssistant().playerHasItem(1265, 1)) { - player.getActionSender().sendMessage( - "You start to break up the rocks..."); - player.startAnimation(625); - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - container.stop(); - player.startAnimation(65535); - } - - @Override - public void stop() { - player.getActionSender().object(-1, - player.objectX, player.objectY, 0, 10); - player.getActionSender().object(4438, - player.objectX, player.objectY, 0, 10); - player.getActionSender().sendMessage( - "You break up the rocks."); - } - }, 3); - } - break; - - case 4438: - if (player.getItemAssistant().playerHasItem(1265, 1)) { - player.getActionSender().sendMessage( - "You start to break up the rocks..."); - player.startAnimation(625); - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - stop(); - player.startAnimation(65535); - } - - @Override - public void stop() { - player.getActionSender().object(-1, - player.objectX, player.objectY, 0, 10); - player.getActionSender().sendMessage( - "You break up the rocks."); - } - }, 3); - } - break; - - case 4448: - if (player.getItemAssistant().playerHasItem(1265, 1)) { - player.getActionSender().sendMessage( - "You start to mine the wall..."); - player.startAnimation(625); - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - stop(); - player.startAnimation(65535); - player.getActionSender().sendMessage( - "You collapse the cave wall."); - } - - @Override - public void stop() { - if ((player.objectX == 2390 || player.objectX == 2393) - && (player.objectY == 9503 || player.objectY == 9500)) { // east - // cave - // side - player.getActionSender().object(-1, 2391, - 9501, 0, 10); - player.getActionSender().object(4437, 2391, - 9501, 0, 10); - CastleWars.collapseCave(1); - } - if ((player.objectX == 2399 || player.objectX == 2402) - && (player.objectY == 9511 || player.objectY == 9514)) { // north - // cave - // side - player.getActionSender().object(-1, 2400, - 9512, 1, 10); - player.getActionSender().object(4437, 2400, - 9512, 1, 10); - CastleWars.collapseCave(0); - } - if ((player.objectX == 2408 || player.objectX == 2411) - && (player.objectY == 9502 || player.objectY == 9505)) { // west - // cave - // side - player.getActionSender().object(-1, 2409, - 9503, 0, 10); - player.getActionSender().object(4437, 2409, - 9503, 0, 10); - CastleWars.collapseCave(3); - } - if ((player.objectX == 2400 || player.objectX == 2403) - && (player.objectY == 9496 || player.objectY == 9493)) { // south - // cave - // side - player.getActionSender().object(-1, 2401, - 9494, 1, 10); - player.getActionSender().object(4437, 2401, - 9494, 1, 10); - CastleWars.collapseCave(2); - } - } - }, 3); - } - break; - - case 1733: - if (player.objectX == 3058 && player.objectY == 3376) { - player.getPlayerAssistant().movePlayer(3058, 9776, 0); - } else if (player.objectX == 2603 && player.objectY == 3078) { - } - break; - - case 55: - if (player.objectX == 3061 && player.objectY == 3374) { - player.getPlayerAssistant().movePlayer(3058, 9776, 0); - } - break; - - case 9472: - if (player.objectX == 2399 && player.objectY == 3099) { - player.startAnimation(828); - player.stopMovement(); - player.resetWalkingQueue(); - player.getPlayerAssistant().requestUpdates(); - player.getPlayerAssistant().removeAllWindows(); - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - container.stop(); - player.startAnimation(65535); - player.getPlayerAssistant().movePlayer(2400, 9507, - 0); - } - - @Override - public void stop() { - - } - }, 1); - } - if (player.objectX == 2400 && player.objectY == 3108) { - player.startAnimation(828); - player.stopMovement(); - player.resetWalkingQueue(); - player.getPlayerAssistant().requestUpdates(); - player.getPlayerAssistant().removeAllWindows(); - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - stop(); - player.startAnimation(65535); - player.getPlayerAssistant().movePlayer(2399, 9500, 0); - } - - @Override - public void stop() { - - } - }, 1); - } - break; - - case 4387: - CastleWars.addToWaitRoom(player, 1); // saradomin - break; - - case 4388: - CastleWars.addToWaitRoom(player, 2); // zamorak - break; - - case 4408: - CastleWars.addToWaitRoom(player, 3); // guthix - break; - - case 4389: // sara - case 4390: // zammy waiting room portal - CastleWars.leaveWaitingRoom(player); - break; - } - player.getObjects().firstClickObject(player.objectId, player.objectX, player.objectY); - break; - - case 2: - if (player.playerRights == 3) { - player.getActionSender().sendMessage("ObjectId: " + player.objectId + " ObjectX: " + player.objectX + " ObjectY: " + player.objectY + " Objectclick = 2, Xoff: " + (player.getX() - player.objectX) + " Yoff: " + (player.getY() - player.objectY)); - } - if (Stalls.isObject(player.objectId)) { - Stalls.attemptStall(player, player.objectId, player.objectX, player.objectX); - return; - } - player.getObjects().secondClickObject(player.objectId, player.objectX, player.objectY); - break; - - case 3: // 'F' - if (player.playerRights == 3) { - player.getActionSender().sendMessage("ObjectId: " + player.objectId + " ObjectX: " + player.objectX + " ObjectY: " + player.objectY + " Objectclick = 3, Xoff: " + (player.getX() - player.objectX) + " Yoff: " + (player.getY() - player.objectY)); - } - - player.getObjects().thirdClickObject(player.objectId, player.objectX, player.objectY); - break; - - - case 4: - if (player.playerRights == 3) { - player.getActionSender().sendMessage("ObjectId: " + player.objectId + " ObjectX: " + player.objectX + " ObjectY: " + player.objectY + " Objectclick = 4, Xoff: " + (player.getX() - player.objectX) + " Yoff: " + (player.getY() - player.objectY)); - } - - player.getObjects().fourthClickObject(player.objectId, player.objectX, player.objectY); - break; - } - } - - - -} diff --git a/2006Redone Server/src/redone/net/packets/impl/ClickingInGame.java b/2006Redone Server/src/redone/net/packets/impl/ClickingInGame.java deleted file mode 100644 index f0d98702..00000000 --- a/2006Redone Server/src/redone/net/packets/impl/ClickingInGame.java +++ /dev/null @@ -1,16 +0,0 @@ -package redone.net.packets.impl; - -import redone.game.players.Client; -import redone.net.packets.PacketType; - -/** - * Clicking in game - **/ -public class ClickingInGame implements PacketType { - - @Override - public void processPacket(Client c, int packetType, int packetSize) { - - } - -} diff --git a/2006Redone Server/src/redone/net/packets/impl/Countdown.java b/2006Redone Server/src/redone/net/packets/impl/Countdown.java deleted file mode 100644 index de6c0358..00000000 --- a/2006Redone Server/src/redone/net/packets/impl/Countdown.java +++ /dev/null @@ -1,127 +0,0 @@ -package redone.net.packets.impl; - -/** - * @author Jayden - */ - -public class Countdown { - private long endMillis; - private long countdownMillis; - private long setMillis; - - public Countdown() { - endMillis = System.currentTimeMillis(); - } - - public Countdown(long endMillis) { - this.endMillis = endMillis; - } - - public void setTimeMillis(long millis) { - this.setMillis = millis; - } - - public void addDays(int days) { - endMillis += days * 24 * 60 * 60 * 1000; - } - - public void addHours(int hours) { - endMillis += hours * 60 * 60 * 1000; - } - - public void addMinutes(int minutes) { - endMillis += minutes * 60 * 1000; - } - - public void addSeconds(int seconds) { - endMillis += seconds * 1000; - } - - public void removeDays(int days) { - endMillis -= days * 24 * 60 * 60 * 1000; - } - - public void removeHours(int hours) { - endMillis -= hours * 60 * 60 * 1000; - } - - public void removeMinutes(int minutes) { - endMillis -= minutes * 60 * 1000; - } - - public void removeSeconds(int seconds) { - endMillis -= seconds * 1000; - } - - public int getSeconds() { - calculate(); - int seconds = (int) (countdownMillis / 1000); - if (seconds > 60) { - seconds = seconds % 60; - } - return seconds; - } - - public int getMinutes() { - calculate(); - int minutes = (int) (countdownMillis / (60 * 1000)); - if (minutes >= 60) { - minutes = minutes % 60; - } - return minutes; - } - - public int getHours() { - calculate(); - int hours = (int) (countdownMillis / (60 * 60 * 1000)); - if (hours >= 24) { - hours = hours % 24; - } - return hours; - } - - public int getDays() { - calculate(); - return (int) (countdownMillis / (24 * 60 * 60 * 1000)); - } - - public int getTotalSeconds() { - calculate(); - return (int) (countdownMillis / 1000); - } - - public int getTotalMinutes() { - calculate(); - return (int) (countdownMillis / (60 * 1000)); - } - - public String daysToString() { - int days = getDays(); - return (days == 0 ? "a day" : days + (days == 1 ? " day" : " days")); - } - - public String minutesToString() { - int minutes = getMinutes(); - return (minutes == 0 ? "a minute" : minutes + (minutes == 1 ? " minute" : " minutes")); - } - - public String secondsToString() { - int seconds = getSeconds(); - return (seconds + (seconds == 1 ? " second" : " seconds")); - } - - public long getEndMillis() { - return endMillis; - } - - public boolean finished() { - if (getDays() <= 0 && getHours() <= 0 && getMinutes() <= 0 && getSeconds() <= 0) { - return true; - } - return false; - } - - private void calculate() { - countdownMillis = endMillis - (System.currentTimeMillis() - setMillis); - } -} diff --git a/2006Redone Server/src/redone/net/packets/impl/FollowPlayer.java b/2006Redone Server/src/redone/net/packets/impl/FollowPlayer.java deleted file mode 100644 index 27bba90e..00000000 --- a/2006Redone Server/src/redone/net/packets/impl/FollowPlayer.java +++ /dev/null @@ -1,36 +0,0 @@ -package redone.net.packets.impl; - -import redone.game.players.Client; -import redone.game.players.PlayerHandler; -import redone.net.packets.PacketType; - -public class FollowPlayer implements PacketType { - - @Override - public void processPacket(Client c, int packetType, int packetSize) { - int followPlayer = c.getInStream().readUnsignedWordBigEndian(); - if (PlayerHandler.players[followPlayer] == null) { - return; - } - if (c.isBotting == true) { - c.getActionSender().sendMessage("You can't follow players, until you confirm you are not botting."); - c.getActionSender().sendMessage("If you need to you can type ::amibotting, to see if your botting."); - c.stopMovement(); - c.getPlayerAssistant().resetFollow(); - return; - } - /*if (c.performingAction) { - c.stopMovement(); - c.getPlayerAssistant().resetFollow(); - return; - }*/ - c.playerIndex = 0; - c.npcIndex = 0; - c.mageFollow = false; - c.usingBow = false; - c.usingRangeWeapon = false; - c.followDistance = 1; - c.followId = followPlayer; - c.endCurrentTask(); - } -} diff --git a/2006Redone Server/src/redone/net/packets/impl/IdleLogout.java b/2006Redone Server/src/redone/net/packets/impl/IdleLogout.java deleted file mode 100644 index 73767b42..00000000 --- a/2006Redone Server/src/redone/net/packets/impl/IdleLogout.java +++ /dev/null @@ -1,20 +0,0 @@ -package redone.net.packets.impl; - -import redone.game.players.Client; -import redone.net.packets.PacketType; - -/** - * @author Andrew - */ - -public class IdleLogout implements PacketType { - - @Override - public void processPacket(Client player, int packetType, int packetSize) { - if (player.underAttackBy > 0 || player.underAttackBy2 > 0 || player.isBot) { - return; - } else { - player.logout(); - } - } -} diff --git a/2006Redone Server/src/redone/net/packets/impl/Report.java b/2006Redone Server/src/redone/net/packets/impl/Report.java deleted file mode 100644 index f4826f77..00000000 --- a/2006Redone Server/src/redone/net/packets/impl/Report.java +++ /dev/null @@ -1,17 +0,0 @@ -package redone.net.packets.impl; - -import redone.game.players.Client; -import redone.net.packets.PacketType; - -public class Report implements PacketType { - - @Override - public void processPacket(Client c, int packetType, int packetSize) { - try { - ReportHandler.handleReport(c); - } catch (Exception e) { - e.printStackTrace(); - } - } - -} diff --git a/2006Redone Server/src/redone/net/packets/impl/SilentPacket.java b/2006Redone Server/src/redone/net/packets/impl/SilentPacket.java deleted file mode 100644 index a39b0929..00000000 --- a/2006Redone Server/src/redone/net/packets/impl/SilentPacket.java +++ /dev/null @@ -1,15 +0,0 @@ -package redone.net.packets.impl; - -import redone.game.players.Client; -import redone.net.packets.PacketType; - -/** - * Slient Packet - **/ -public class SilentPacket implements PacketType { - - @Override - public void processPacket(Client c, int packetType, int packetSize) { - - } -} diff --git a/2006Redone Server/src/redone/world/Clan.java b/2006Redone Server/src/redone/world/Clan.java deleted file mode 100644 index 678c709b..00000000 --- a/2006Redone Server/src/redone/world/Clan.java +++ /dev/null @@ -1,20 +0,0 @@ -package redone.world; - -import redone.game.players.Client; - -/** - * @author Sanity - */ - -public class Clan { - - public Clan(Client player, String name) { - this.owner = player.playerName; - this.name = name; - } - - public int[] members = new int[50]; - public String name; - public String owner; - public boolean lootshare; -} \ No newline at end of file diff --git a/2006Redone Server/src/redone/world/ClanChatHandler.java b/2006Redone Server/src/redone/world/ClanChatHandler.java deleted file mode 100644 index 16fe8e08..00000000 --- a/2006Redone Server/src/redone/world/ClanChatHandler.java +++ /dev/null @@ -1,206 +0,0 @@ -package redone.world; - -import redone.Connection; -import redone.game.items.Item; -import redone.game.players.Client; -import redone.game.players.PlayerHandler; - -/** - * @author Sanity - */ - -public class ClanChatHandler { - - public ClanChatHandler() { - - } - - public Clan[] clans = new Clan[100]; - - public void handleClanChat(Client player, String name) { - for (int j = 0; j < clans.length; j++) { - if (clans[j] != null) { - if (clans[j].name.equalsIgnoreCase(name)) { - addToClan(player.playerId, j); - return; - } - } - } - makeClan(player, name); - } - - public void makeClan(Client player, String name) { - if (openClan() >= 0) { - if (validName(name)) { - player.clanId = openClan(); - clans[player.clanId] = new Clan(player, name); - addToClan(player.playerId, player.clanId); - } else { - player.getActionSender().sendMessage("A clan with this name already exists."); - } - } else { - player.getActionSender().sendMessage("Your clan chat request could not be completed."); - } - } - - public void updateClanChat(int clanId) { - for (int j = 0; j < clans[clanId].members.length; j++) { - if (clans[clanId].members[j] <= 0) - continue; - if (PlayerHandler.players[clans[clanId].members[j]] != null) { - Client c = (Client) PlayerHandler.players[clans[clanId].members[j]]; - c.getPlayerAssistant().sendFrame126("Talking in: " + clans[clanId].name, - 18139); - c.getPlayerAssistant().sendFrame126("Owner: " + clans[clanId].owner, 18140); - int slotToFill = 18144; - for (int i = 0; i < clans[clanId].members.length; i++) { - if (clans[clanId].members[i] > 0) { - if (PlayerHandler.players[clans[clanId].members[i]] != null) { - c.getPlayerAssistant().sendFrame126(PlayerHandler.players[clans[clanId].members[i]].playerName, slotToFill); - slotToFill++; - } - } - } - for (int k = slotToFill; k < 18244; k++) - c.getPlayerAssistant().sendFrame126("", k); - } - } - } - - public int openClan() { - for (int j = 0; j < clans.length; j++) { - if (clans[j] == null || clans[j].owner == "") - return j; - } - return -1; - } - - public boolean validName(String name) { - for (int j = 0; j < clans.length; j++) { - if (clans[j] != null) { - if (clans[j].name.equalsIgnoreCase(name)) - return false; - } - } - return true; - } - - public void addToClan(int playerId, int clanId) { - if (clans[clanId] != null) { - for (int j = 0; j < clans[clanId].members.length; j++) { - if (clans[clanId].members[j] <= 0) { - clans[clanId].members[j] = playerId; - PlayerHandler.players[playerId].clanId = clanId; - // c.getActionSender().sendMessage("You have joined the clan chat: " + - // clans[clanId].name); - messageToClan( - PlayerHandler.players[playerId].playerName - + " has joined the channel.", clanId); - updateClanChat(clanId); - return; - } - } - } - } - - public void leaveClan(int playerId, int clanId) { - if (clanId < 0) { - Client c = (Client) PlayerHandler.players[playerId]; - c.getActionSender().sendMessage("You are not in a clan."); - return; - } - if (clans[clanId] != null) { - if (PlayerHandler.players[playerId].playerName - .equalsIgnoreCase(clans[clanId].owner)) { - messageToClan("The clan has been deleted by the owner.", clanId); - destructClan(PlayerHandler.players[playerId].clanId); - return; - } - for (int j = 0; j < clans[clanId].members.length; j++) { - if (clans[clanId].members[j] == playerId) { - clans[clanId].members[j] = -1; - } - } - if (PlayerHandler.players[playerId] != null) { - Client c = (Client) PlayerHandler.players[playerId]; - PlayerHandler.players[playerId].clanId = -1; - c.getActionSender().sendMessage("You have left the clan."); - c.getPlayerAssistant().clearClanChat(); - } - updateClanChat(clanId); - } else { - Client c = (Client) PlayerHandler.players[playerId]; - PlayerHandler.players[playerId].clanId = -1; - c.getActionSender().sendMessage("You are not in a clan."); - } - } - - public void destructClan(int clanId) { - if (clanId < 0) - return; - for (int j = 0; j < clans[clanId].members.length; j++) { - if (clanId < 0) - continue; - if (clans[clanId].members[j] <= 0) - continue; - if (PlayerHandler.players[clans[clanId].members[j]] != null) { - Client c = (Client) PlayerHandler.players[clans[clanId].members[j]]; - c.clanId = -1; - c.getPlayerAssistant().clearClanChat(); - } - } - clans[clanId].members = new int[50]; - clans[clanId].owner = ""; - clans[clanId].name = ""; - } - - public void messageToClan(String message, int clanId) { - if (clanId < 0) - return; - for (int j = 0; j < clans[clanId].members.length; j++) { - if (clans[clanId].members[j] < 0) - continue; - if (PlayerHandler.players[clans[clanId].members[j]] != null) { - Client c = (Client) PlayerHandler.players[clans[clanId].members[j]]; - c.getActionSender().sendMessage("@red@" + message); - } - } - } - - public void playerMessageToClan(Client c, int playerId, String message, int clanId) { - if (Connection.isMuted(c)) { - return; - } - if (clanId < 0) - return; - for (int j = 0; j < clans[clanId].members.length; j++) { - if (clans[clanId].members[j] <= 0) - continue; - if (PlayerHandler.players[clans[clanId].members[j]] != null) { - c = (Client) PlayerHandler.players[clans[clanId].members[j]]; - c.getActionSender().sendClan(PlayerHandler.players[playerId].playerName, - message, clans[clanId].name, - PlayerHandler.players[playerId].playerRights); - } - } - } - - public void sendLootShareMessage(int clanId, String message) { - if (clanId >= 0) { - for (int j = 0; j < clans[clanId].members.length; j++) { - if (clans[clanId].members[j] <= 0) - continue; - if (PlayerHandler.players[clans[clanId].members[j]] != null) { - Client c = (Client) PlayerHandler.players[clans[clanId].members[j]]; - c.getActionSender().sendClan("Lootshare", message, clans[clanId].name, 2); - } - } - } - } - - public void handleLootShare(Client c, int item, int amount) { - sendLootShareMessage(c.clanId, c.playerName + " has received " + amount - + "x " + Item.getItemName(item) + "."); - } - -} \ No newline at end of file